sanity-plugin-dashboard-widget-netlify 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 Sanity, Inc
3
+ Copyright (c) 2022 Sanity, Inc
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -61,7 +61,8 @@ To get dashboard support in Sanity Studio in general:
61
61
  - `buildHookId` - The id of a build hook you have created for your site within the Netlify administration panel (see *Site Settings > Build & Deploy > Continuous Deployment -> Build Hooks*).
62
62
  - `name` - The Netlify site name
63
63
  - `title` - Override the site name with a custom title
64
- - `url` - Optionally override site deployment url. By default it is inferred to be `https://netlify-site-name-netlify.app`.
64
+ - `url` - Optionally override site deployment url. By default it is inferred to be `https://netlify-site-name.netlify.app`.
65
+ - `branch` - Optionally pass the name of a branch to deploy
65
66
 
66
67
  ## Developing on this module
67
68
 
@@ -86,3 +87,13 @@ To simulate using your development version as a real module inside a studio, you
86
87
  * Start the studio
87
88
 
88
89
  When you are done and have published your new version, you can run `npm unlink` inside this repo, and `npm unlink sanity-plugin-dashboard-widget-netlify` inside the mono-repo or studio to get back to the normal state. Then run `npm run bootstrap` for the mono-repo or `npm install` inside the regular studio to use the published version.
90
+
91
+ ## Developing plugin kit
92
+
93
+ ### Release new version
94
+
95
+ Run ["CI & Release" workflow](https://github.com/sanity-io/sanity-plugin-dashboard-widget-netlify/actions/workflows/main.yml).
96
+ Make sure to select the main (or v3) branch and check "Release new version".
97
+
98
+ Semantic release will only release on configured branches, so it is safe to run release on any branch.
99
+
@@ -53,14 +53,17 @@ function NetlifyWidget(props) {
53
53
  }, /*#__PURE__*/_react.default.createElement(ContentCard, {
54
54
  paddingY: 1
55
55
  }, description && /*#__PURE__*/_react.default.createElement(_ui.Box, {
56
- paddingY: 2,
56
+ paddingY: 3,
57
57
  paddingX: 3
58
58
  }, /*#__PURE__*/_react.default.createElement(_ui.Text, {
59
59
  as: "p",
60
+ size: 1,
61
+ muted: true
62
+ }, /*#__PURE__*/_react.default.createElement("span", {
60
63
  dangerouslySetInnerHTML: {
61
64
  __html: description
62
65
  }
63
- })), /*#__PURE__*/_react.default.createElement(_SiteList.default, {
66
+ }))), /*#__PURE__*/_react.default.createElement(_SiteList.default, {
64
67
  isLoading: isLoading,
65
68
  onDeploy: onDeploy,
66
69
  sites: sites
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/NetlifyWidget.tsx"],"names":["ContentCard","Card","NetlifyWidget","props","netlifySitesUrl","title","description","isLoading","sites","onDeploy","footer","undefined","__html"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,WAAW,GAAG,+BAAOC,QAAP,CAAH,4FAAjB;;AAIe,SAASC,aAAT,CAAuBC,KAAvB,EAAqC;AAClD,MAAMC,eAAe,GAAG,uCAAxB;AADkD,MAE3CC,KAF2C,GAEOF,KAFP,CAE3CE,KAF2C;AAAA,MAEpCC,WAFoC,GAEOH,KAFP,CAEpCG,WAFoC;AAAA,MAEvBC,SAFuB,GAEOJ,KAFP,CAEvBI,SAFuB;AAAA,MAEZC,KAFY,GAEOL,KAFP,CAEZK,KAFY;AAAA,MAELC,QAFK,GAEON,KAFP,CAELM,QAFK;;AAIlD,MAAMC,MAAM,gBACV,6BAAC,QAAD;AAAM,IAAA,SAAS,EAAC,QAAhB;AAAyB,IAAA,KAAK,EAAC;AAA/B,kBACE,6BAAC,UAAD;AACE,IAAA,EAAE,EAAC,GADL;AAEE,IAAA,IAAI,EAAEH,SAAS,GAAGI,SAAH,GAAeP,eAFhC;AAGE,IAAA,QAAQ,EAAEG,SAHZ;AAIE,IAAA,QAAQ,EAAE,CAJZ;AAKE,IAAA,QAAQ,EAAE,CALZ;AAME,IAAA,IAAI,EAAC,OANP;AAOE,IAAA,IAAI,EAAC,SAPP;AAQE,IAAA,IAAI,EAAC,yBARP;AASE,IAAA,OAAO,EAAEA,SATX;AAUE,IAAA,MAAM,EAAC;AAVT,IADF,CADF;;AAiBA,sBACE,6BAAC,0BAAD;AAAiB,IAAA,MAAM,EAAEF,KAAzB;AAAgC,IAAA,MAAM,EAAEK;AAAxC,kBACE,6BAAC,WAAD;AAAa,IAAA,QAAQ,EAAE;AAAvB,KACGJ,WAAW,iBACV,6BAAC,OAAD;AAAK,IAAA,QAAQ,EAAE,CAAf;AAAkB,IAAA,QAAQ,EAAE;AAA5B,kBAA+B,6BAAC,QAAD;AAAM,IAAA,EAAE,EAAC,GAAT;AAAa,IAAA,uBAAuB,EAAE;AAACM,MAAAA,MAAM,EAAEN;AAAT;AAAtC,IAA/B,CAFJ,eAIE,6BAAC,iBAAD;AAAU,IAAA,SAAS,EAAEC,SAArB;AAAgC,IAAA,QAAQ,EAAEE,QAA1C;AAAoD,IAAA,KAAK,EAAED;AAA3D,IAJF,CADF,CADF;AAUD","sourcesContent":["import React from 'react'\nimport {Props} from '../types'\nimport SiteList from './SiteList'\nimport {DashboardWidget} from '@sanity/dashboard'\nimport styled from 'styled-components'\nimport {Button, Flex, Card, Text, Box} from '@sanity/ui'\n\nconst ContentCard = styled(Card)`\n min-height: 66px;\n`\n\nexport default function NetlifyWidget(props: Props) {\n const netlifySitesUrl = 'https://app.netlify.com/account/sites'\n const {title, description, isLoading, sites, onDeploy} = props\n\n const footer = (\n <Flex direction=\"column\" align=\"stretch\">\n <Button\n as=\"a\"\n href={isLoading ? undefined : netlifySitesUrl}\n disabled={isLoading}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage sites at Netlify\"\n loading={isLoading}\n target=\"_blank\"\n />\n </Flex>\n )\n\n return (\n <DashboardWidget header={title} footer={footer}>\n <ContentCard paddingY={1}>\n {description && (\n <Box paddingY={2} paddingX={3}><Text as=\"p\" dangerouslySetInnerHTML={{__html: description}} /></Box>\n )}\n <SiteList isLoading={isLoading} onDeploy={onDeploy} sites={sites} />\n </ContentCard>\n </DashboardWidget>\n )\n}\n"],"file":"NetlifyWidget.js"}
1
+ {"version":3,"sources":["../../src/components/NetlifyWidget.tsx"],"names":["ContentCard","Card","NetlifyWidget","props","netlifySitesUrl","title","description","isLoading","sites","onDeploy","footer","undefined","__html"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,WAAW,GAAG,+BAAOC,QAAP,CAAH,4FAAjB;;AAIe,SAASC,aAAT,CAAuBC,KAAvB,EAAqC;AAClD,MAAMC,eAAe,GAAG,uCAAxB;AADkD,MAE3CC,KAF2C,GAEOF,KAFP,CAE3CE,KAF2C;AAAA,MAEpCC,WAFoC,GAEOH,KAFP,CAEpCG,WAFoC;AAAA,MAEvBC,SAFuB,GAEOJ,KAFP,CAEvBI,SAFuB;AAAA,MAEZC,KAFY,GAEOL,KAFP,CAEZK,KAFY;AAAA,MAELC,QAFK,GAEON,KAFP,CAELM,QAFK;;AAIlD,MAAMC,MAAM,gBACV,6BAAC,QAAD;AAAM,IAAA,SAAS,EAAC,QAAhB;AAAyB,IAAA,KAAK,EAAC;AAA/B,kBACE,6BAAC,UAAD;AACE,IAAA,EAAE,EAAC,GADL;AAEE,IAAA,IAAI,EAAEH,SAAS,GAAGI,SAAH,GAAeP,eAFhC;AAGE,IAAA,QAAQ,EAAEG,SAHZ;AAIE,IAAA,QAAQ,EAAE,CAJZ;AAKE,IAAA,QAAQ,EAAE,CALZ;AAME,IAAA,IAAI,EAAC,OANP;AAOE,IAAA,IAAI,EAAC,SAPP;AAQE,IAAA,IAAI,EAAC,yBARP;AASE,IAAA,OAAO,EAAEA,SATX;AAUE,IAAA,MAAM,EAAC;AAVT,IADF,CADF;;AAiBA,sBACE,6BAAC,0BAAD;AAAiB,IAAA,MAAM,EAAEF,KAAzB;AAAgC,IAAA,MAAM,EAAEK;AAAxC,kBACE,6BAAC,WAAD;AAAa,IAAA,QAAQ,EAAE;AAAvB,KACGJ,WAAW,iBACV,6BAAC,OAAD;AAAK,IAAA,QAAQ,EAAE,CAAf;AAAkB,IAAA,QAAQ,EAAE;AAA5B,kBAA+B,6BAAC,QAAD;AAAM,IAAA,EAAE,EAAC,GAAT;AAAa,IAAA,IAAI,EAAE,CAAnB;AAAsB,IAAA,KAAK;AAA3B,kBAA4B;AAAM,IAAA,uBAAuB,EAAE;AAACM,MAAAA,MAAM,EAAEN;AAAT;AAA/B,IAA5B,CAA/B,CAFJ,eAIE,6BAAC,iBAAD;AAAU,IAAA,SAAS,EAAEC,SAArB;AAAgC,IAAA,QAAQ,EAAEE,QAA1C;AAAoD,IAAA,KAAK,EAAED;AAA3D,IAJF,CADF,CADF;AAUD","sourcesContent":["import React from 'react'\nimport {Props} from '../types'\nimport SiteList from './SiteList'\nimport {DashboardWidget} from '@sanity/dashboard'\nimport styled from 'styled-components'\nimport {Button, Flex, Card, Text, Box} from '@sanity/ui'\n\nconst ContentCard = styled(Card)`\n min-height: 66px;\n`\n\nexport default function NetlifyWidget(props: Props) {\n const netlifySitesUrl = 'https://app.netlify.com/account/sites'\n const {title, description, isLoading, sites, onDeploy} = props\n\n const footer = (\n <Flex direction=\"column\" align=\"stretch\">\n <Button\n as=\"a\"\n href={isLoading ? undefined : netlifySitesUrl}\n disabled={isLoading}\n paddingX={2}\n paddingY={4}\n mode=\"bleed\"\n tone=\"primary\"\n text=\"Manage sites at Netlify\"\n loading={isLoading}\n target=\"_blank\"\n />\n </Flex>\n )\n\n return (\n <DashboardWidget header={title} footer={footer}>\n <ContentCard paddingY={1}>\n {description && (\n <Box paddingY={3} paddingX={3}><Text as=\"p\" size={1} muted><span dangerouslySetInnerHTML={{__html: description}} /></Text></Box>\n )}\n <SiteList isLoading={isLoading} onDeploy={onDeploy} sites={sites} />\n </ContentCard>\n </DashboardWidget>\n )\n}\n"],"file":"NetlifyWidget.js"}
@@ -32,19 +32,20 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
32
  var IMAGE_PULL_INTERVAL = 10000;
33
33
  exports.IMAGE_PULL_INTERVAL = IMAGE_PULL_INTERVAL;
34
34
 
35
- var getImageUrl = siteId => {
35
+ var getImageUrl = (siteId, branchName) => {
36
36
  var baseUrl = "https://api.netlify.com/api/v1/badges/".concat(siteId, "/deploy-status");
37
37
  var time = new Date().getTime();
38
- return "".concat(baseUrl, "?").concat(time);
38
+ var branch = "branch=".concat(branchName);
39
+ return branchName ? "".concat(baseUrl, "?").concat(time, "&").concat(branch) : "".concat(baseUrl, "?").concat(time);
39
40
  };
40
41
 
41
- var useBadgeImage = siteId => {
42
- var _useState = (0, _react.useState)(() => getImageUrl(siteId)),
42
+ var useBadgeImage = (siteId, branchName) => {
43
+ var _useState = (0, _react.useState)(() => getImageUrl(siteId, branchName)),
43
44
  _useState2 = _slicedToArray(_useState, 2),
44
45
  src = _useState2[0],
45
46
  setSrc = _useState2[1];
46
47
 
47
- var update = (0, _react.useCallback)(() => setSrc(getImageUrl(siteId)), [siteId]);
48
+ var update = (0, _react.useCallback)(() => setSrc(getImageUrl(siteId, branchName)), [siteId]);
48
49
  (0, _react.useEffect)(() => {
49
50
  var interval = window.setInterval(update, IMAGE_PULL_INTERVAL);
50
51
  return () => window.clearInterval(interval);
@@ -74,9 +75,10 @@ var SiteItem = props => {
74
75
  title = site.title,
75
76
  url = site.url,
76
77
  adminUrl = site.adminUrl,
77
- buildHookId = site.buildHookId;
78
+ buildHookId = site.buildHookId,
79
+ branch = site.branch;
78
80
 
79
- var _useBadgeImage = useBadgeImage(id),
81
+ var _useBadgeImage = useBadgeImage(id, branch),
80
82
  _useBadgeImage2 = _slicedToArray(_useBadgeImage, 2),
81
83
  badge = _useBadgeImage2[0],
82
84
  updateBadge = _useBadgeImage2[1];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SiteItem/index.tsx"],"names":["IMAGE_PULL_INTERVAL","getImageUrl","siteId","baseUrl","time","Date","getTime","useBadgeImage","src","setSrc","update","interval","window","setInterval","clearInterval","useDeploy","site","onDeploy","updateBadge","timeoutRef","clearTimeout","current","setTimeout","SiteItem","props","hasBadgeError","setHasBadgeError","id","name","title","url","adminUrl","buildHookId","badge","handleDeploy","handleBadgeError"],"mappings":"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","sourcesContent":["import React, {FunctionComponent, useCallback, useEffect, useRef, useState} from 'react'\nimport {Button, Flex, Box, Card, Text, Stack, Label} from '@sanity/ui'\nimport {DeployAction, Site} from '../../types'\nimport Links from './Links'\n\ninterface Props {\n site: Site\n onDeploy: DeployAction\n}\n\nexport const IMAGE_PULL_INTERVAL = 10000\n\nconst getImageUrl = (siteId: string) => {\n const baseUrl = `https://api.netlify.com/api/v1/badges/${siteId}/deploy-status`\n const time = new Date().getTime()\n\n return `${baseUrl}?${time}`\n}\n\nconst useBadgeImage = (siteId: string) => {\n const [src, setSrc] = useState(() => getImageUrl(siteId))\n const update = useCallback(() => setSrc(getImageUrl(siteId)), [siteId])\n\n useEffect(() => {\n const interval = window.setInterval(update, IMAGE_PULL_INTERVAL)\n return () => window.clearInterval(interval)\n }, [update])\n\n return [src, update] as const\n}\n\nconst useDeploy = (site: Site, onDeploy: DeployAction, updateBadge: () => void) => {\n const timeoutRef = useRef(-1)\n useEffect(() => () => window.clearTimeout(timeoutRef.current), [])\n\n return useCallback(() => {\n onDeploy(site)\n timeoutRef.current = window.setTimeout(updateBadge, 1000)\n }, [site, onDeploy, updateBadge])\n}\n\nconst SiteItem: FunctionComponent<Props> = (props) => {\n const [hasBadgeError, setHasBadgeError] = useState(false)\n const {site, onDeploy} = props\n const {id, name, title, url, adminUrl, buildHookId} = site\n\n const [badge, updateBadge] = useBadgeImage(id)\n const handleDeploy = useDeploy(site, onDeploy, updateBadge)\n const handleBadgeError = () => {\n setHasBadgeError(true)\n }\n\n return (\n <Flex as=\"li\">\n <Box flex={1} paddingY={2} paddingX={3}>\n <Stack space={2}>\n <Text as=\"h4\">\n {title || name}\n <Links url={url} adminUrl={adminUrl} />\n </Text>\n\n <Flex justify=\"flex-start\">\n {!hasBadgeError && <img src={badge} onError={handleBadgeError} alt=\"Badge\" />}\n {hasBadgeError && <Card tone=\"critical\" radius={2} padding={2}><Label size={0} muted>Failed to load badge</Label></Card>}\n </Flex>\n </Stack>\n </Box>\n\n {buildHookId ? (\n <Box paddingY={2} paddingX={3}>\n <Button mode=\"ghost\" onClick={handleDeploy} text=\"Deploy\" />\n </Box>\n ) : null}\n </Flex>\n )\n}\n\nexport default SiteItem\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/components/SiteItem/index.tsx"],"names":["IMAGE_PULL_INTERVAL","getImageUrl","siteId","branchName","baseUrl","time","Date","getTime","branch","useBadgeImage","src","setSrc","update","interval","window","setInterval","clearInterval","useDeploy","site","onDeploy","updateBadge","timeoutRef","clearTimeout","current","setTimeout","SiteItem","props","hasBadgeError","setHasBadgeError","id","name","title","url","adminUrl","buildHookId","badge","handleDeploy","handleBadgeError"],"mappings":"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","sourcesContent":["import React, {FunctionComponent, useCallback, useEffect, useRef, useState} from 'react'\nimport {Button, Flex, Box, Card, Text, Stack, Label} from '@sanity/ui'\nimport {DeployAction, Site} from '../../types'\nimport Links from './Links'\n\ninterface Props {\n site: Site\n onDeploy: DeployAction\n}\n\nexport const IMAGE_PULL_INTERVAL = 10000\n\nconst getImageUrl = (siteId: string, branchName?: string) => {\n const baseUrl = `https://api.netlify.com/api/v1/badges/${siteId}/deploy-status`\n const time = new Date().getTime()\n const branch = `branch=${branchName}`\n\n return branchName ? `${baseUrl}?${time}&${branch}` : `${baseUrl}?${time}`\n}\n\nconst useBadgeImage = (siteId: string, branchName?: string ) => {\n const [src, setSrc] = useState(() => getImageUrl(siteId, branchName))\n const update = useCallback(() => setSrc(getImageUrl(siteId, branchName)), [siteId])\n\n useEffect(() => {\n const interval = window.setInterval(update, IMAGE_PULL_INTERVAL)\n return () => window.clearInterval(interval)\n }, [update])\n\n return [src, update] as const\n}\n\nconst useDeploy = (site: Site, onDeploy: DeployAction, updateBadge: () => void) => {\n const timeoutRef = useRef(-1)\n useEffect(() => () => window.clearTimeout(timeoutRef.current), [])\n\n return useCallback(() => {\n onDeploy(site)\n timeoutRef.current = window.setTimeout(updateBadge, 1000)\n }, [site, onDeploy, updateBadge])\n}\n\nconst SiteItem: FunctionComponent<Props> = (props) => {\n const [hasBadgeError, setHasBadgeError] = useState(false)\n const {site, onDeploy} = props\n const {id, name, title, url, adminUrl, buildHookId, branch} = site\n\n const [badge, updateBadge] = useBadgeImage(id, branch)\n const handleDeploy = useDeploy(site, onDeploy, updateBadge)\n const handleBadgeError = () => {\n setHasBadgeError(true)\n }\n\n return (\n <Flex as=\"li\">\n <Box flex={1} paddingY={2} paddingX={3}>\n <Stack space={2}>\n <Text as=\"h4\">\n {title || name}\n <Links url={url} adminUrl={adminUrl} />\n </Text>\n\n <Flex justify=\"flex-start\">\n {!hasBadgeError && <img src={badge} onError={handleBadgeError} alt=\"Badge\" />}\n {hasBadgeError && <Card tone=\"critical\" radius={2} padding={2}><Label size={0} muted>Failed to load badge</Label></Card>}\n </Flex>\n </Stack>\n </Box>\n\n {buildHookId ? (\n <Box paddingY={2} paddingX={3}>\n <Button mode=\"ghost\" onClick={handleDeploy} text=\"Deploy\" />\n </Box>\n ) : null}\n </Flex>\n )\n}\n\nexport default SiteItem\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/http/utils/createAbortController.ts"],"names":["createAbortController","window","AbortControllerPolyfill","AbortController"],"mappings":";;;;;;;AAAA;;;;AAEO,IAAMA,qBAAqB,GAAG,MAAuB;AAC1D,MAAI,EAAE,qBAAqBC,MAAvB,CAAJ,EAAoC;AAClC,WAAO,IAAIC,wBAAJ,EAAP;AACD;;AACD,SAAO,IAAIC,eAAJ,EAAP;AACD,CALM","sourcesContent":["import AbortControllerPolyfill from 'abort-controller'\n\nexport const createAbortController = (): AbortController => {\n if (!('AbortController' in window)) {\n return new AbortControllerPolyfill()\n }\n return new AbortController()\n}\n"],"file":"createAbortController.js"}
1
+ {"version":3,"sources":["../../../src/http/utils/createAbortController.ts"],"names":["createAbortController","window","AbortControllerPolyfill","AbortController"],"mappings":";;;;;;;AAAA;;;;AAEO,IAAMA,qBAAqB,GAAG,MAAuB;AAC1D,MAAI,EAAE,qBAAqBC,MAAvB,CAAJ,EAAoC;AAClC,WAAO,IAAIC,wBAAJ,EAAP;AACD;;AACD,SAAO,IAAIC,eAAJ,EAAP;AACD,CALM","sourcesContent":["import AbortControllerPolyfill from 'abort-controller'\n\nexport const createAbortController = (): AbortController => {\n if (!('AbortController' in window)) {\n return new AbortControllerPolyfill() as AbortController\n }\n return new AbortController()\n}\n"],"file":"createAbortController.js"}
package/dist/props.js CHANGED
@@ -48,8 +48,9 @@ var props$ = options => {
48
48
  name: site.name,
49
49
  title: site.title,
50
50
  buildHookId: site.buildHookId,
51
- url: site.url || site.name && "https://".concat(site.name, ".netlify.app/"),
52
- adminUrl: site.name && "https://app.netlify.com/sites/".concat(site.name)
51
+ url: site.url || site.branch && "https://".concat(site.branch, "--").concat(site.name, ".netlify.app/") || site.name && "https://".concat(site.name, ".netlify.app/"),
52
+ adminUrl: site.name && "https://app.netlify.com/sites/".concat(site.name),
53
+ branch: site.branch
53
54
  }));
54
55
 
55
56
  var _createEventHandler = (0, _reactPropsStream.createEventHandler)(),
package/dist/props.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/props.ts"],"names":["noop","undefined","INITIAL_PROPS","title","sites","isLoading","onDeploy","props$","options","configuredSites","map","site","id","apiId","name","buildHookId","url","adminUrl","onDeploy$","setSitesAction$","pipe","type","deployAction$","deployResult$","deployCompletedAction$","result","error","stateReducer$","subscribe","description"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,IAAI,GAAG,MAAMC,SAAnB;;AAEA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,KAAK,EAAE,eADa;AAEpBC,EAAAA,KAAK,EAAE,EAFa;AAGpBC,EAAAA,SAAS,EAAE,IAHS;AAIpBC,EAAAA,QAAQ,EAAEN;AAJU,CAAtB,C,CAOA;;AACO,IAAMO,MAAM,GAAIC,OAAD,IAA4B;AAChD,MAAMC,eAAe,GAAG,CAACD,OAAO,CAACJ,KAAR,IAAiB,EAAlB,EAAsBM,GAAtB,CAA2BC,IAAD,KAAW;AAC3DC,IAAAA,EAAE,EAAED,IAAI,CAACE,KADkD;AAE3DC,IAAAA,IAAI,EAAEH,IAAI,CAACG,IAFgD;AAG3DX,IAAAA,KAAK,EAAEQ,IAAI,CAACR,KAH+C;AAI3DY,IAAAA,WAAW,EAAEJ,IAAI,CAACI,WAJyC;AAK3DC,IAAAA,GAAG,EAAEL,IAAI,CAACK,GAAL,IAAaL,IAAI,CAACG,IAAL,sBAAwBH,IAAI,CAACG,IAA7B,kBALyC;AAM3DG,IAAAA,QAAQ,EAAEN,IAAI,CAACG,IAAL,4CAA8CH,IAAI,CAACG,IAAnD;AANiD,GAAX,CAA1B,CAAxB;;AADgD,4BAUlB,2CAVkB;AAAA;AAAA,MAUzCI,SAVyC;AAAA,MAU9BZ,QAV8B;;AAWhD,MAAMa,eAAe,GAAG,cAAGV,eAAH,EAAoBW,IAApB,CAAyB,oBAAKhB,KAAD,KAAY;AAACiB,IAAAA,IAAI,EAAE,UAAP;AAAmBjB,IAAAA;AAAnB,GAAZ,CAAJ,CAAzB,CAAxB;AACA,MAAMkB,aAAa,GAAGJ,SAAS,CAACE,IAAV,CAAe,oBAAKT,IAAD,KAAW;AAACU,IAAAA,IAAI,EAAE,gBAAP;AAAyBV,IAAAA;AAAzB,GAAX,CAAJ,CAAf,CAAtB;AACA,MAAMY,aAAa,GAAGL,SAAS,CAACE,IAAV,CAAe,0BAAWT,IAAD,IAAU,oBAAOA,IAAP,CAApB,CAAf,CAAtB;AACA,MAAMa,sBAAsB,GAAGD,aAAa,CAACH,IAAd,CAC7B,oBACGK,MAAD;AAAcJ,IAAAA,IAAI,EAAE;AAApB,KAA2CI,MAA3C,CADF,EAEE,2BAAYC,KAAD,IAAW,cAAG;AAACL,IAAAA,IAAI,EAAE,eAAP;AAAwBK,IAAAA;AAAxB,GAAH,CAAtB,CAFF,CAD6B,CAA/B;AAOA,mBAAMP,eAAN,EAAuBG,aAAvB,EAAsCE,sBAAtC,EAA8DJ,IAA9D,CAAmEO,uBAAnE,EAAkFC,SAAlF;AAEA,SAAO,cAAGnB,eAAH,EAAoBW,IAApB,CACL,oBAAKhB,KAAD,KAAY;AACdA,IAAAA,KADc;AAEdD,IAAAA,KAAK,EAAEK,OAAO,CAACL,KAAR,IAAiBD,aAAa,CAACC,KAFxB;AAGd0B,IAAAA,WAAW,EAAErB,OAAO,CAACqB,WAHP;AAIdxB,IAAAA,SAAS,EAAE,KAJG;AAKdC,IAAAA;AALc,GAAZ,CAAJ,CADK,EAQL,0BAAUJ,aAAV,CARK,CAAP;AAUD,CAjCM","sourcesContent":["import {merge, of} from 'rxjs'\nimport {createEventHandler} from 'react-props-stream'\nimport {catchError, map, startWith, switchMap} from 'rxjs/operators'\nimport {deploy} from './datastores/deploy'\nimport {Site, WidgetOptions} from './types'\nimport {stateReducer$} from './reducers'\n\nconst noop = () => undefined\n\nconst INITIAL_PROPS = {\n title: 'Netlify sites',\n sites: [],\n isLoading: true,\n onDeploy: noop,\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const props$ = (options: WidgetOptions) => {\n const configuredSites = (options.sites || []).map((site) => ({\n id: site.apiId,\n name: site.name,\n title: site.title,\n buildHookId: site.buildHookId,\n url: site.url || (site.name && `https://${site.name}.netlify.app/`),\n adminUrl: site.name && `https://app.netlify.com/sites/${site.name}`,\n }))\n\n const [onDeploy$, onDeploy] = createEventHandler<Site>()\n const setSitesAction$ = of(configuredSites).pipe(map((sites) => ({type: 'setSites', sites})))\n const deployAction$ = onDeploy$.pipe(map((site) => ({type: 'deploy/started', site})))\n const deployResult$ = onDeploy$.pipe(switchMap((site) => deploy(site)))\n const deployCompletedAction$ = deployResult$.pipe(\n map(\n (result) => ({type: 'deploy/completed', ...result}),\n catchError((error) => of({type: 'deploy/failed', error}))\n )\n )\n\n merge(setSitesAction$, deployAction$, deployCompletedAction$).pipe(stateReducer$).subscribe()\n\n return of(configuredSites).pipe(\n map((sites) => ({\n sites,\n title: options.title || INITIAL_PROPS.title,\n description: options.description,\n isLoading: false,\n onDeploy,\n })),\n startWith(INITIAL_PROPS)\n )\n}\n"],"file":"props.js"}
1
+ {"version":3,"sources":["../src/props.ts"],"names":["noop","undefined","INITIAL_PROPS","title","sites","isLoading","onDeploy","props$","options","configuredSites","map","site","id","apiId","name","buildHookId","url","branch","adminUrl","onDeploy$","setSitesAction$","pipe","type","deployAction$","deployResult$","deployCompletedAction$","result","error","stateReducer$","subscribe","description"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,IAAI,GAAG,MAAMC,SAAnB;;AAEA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,KAAK,EAAE,eADa;AAEpBC,EAAAA,KAAK,EAAE,EAFa;AAGpBC,EAAAA,SAAS,EAAE,IAHS;AAIpBC,EAAAA,QAAQ,EAAEN;AAJU,CAAtB,C,CAOA;;AACO,IAAMO,MAAM,GAAIC,OAAD,IAA4B;AAChD,MAAMC,eAAe,GAAG,CAACD,OAAO,CAACJ,KAAR,IAAiB,EAAlB,EAAsBM,GAAtB,CAA2BC,IAAD,KAAW;AAC3DC,IAAAA,EAAE,EAAED,IAAI,CAACE,KADkD;AAE3DC,IAAAA,IAAI,EAAEH,IAAI,CAACG,IAFgD;AAG3DX,IAAAA,KAAK,EAAEQ,IAAI,CAACR,KAH+C;AAI3DY,IAAAA,WAAW,EAAEJ,IAAI,CAACI,WAJyC;AAK3DC,IAAAA,GAAG,EAAEL,IAAI,CAACK,GAAL,IAAaL,IAAI,CAACM,MAAL,sBAA0BN,IAAI,CAACM,MAA/B,eAA0CN,IAAI,CAACG,IAA/C,kBAAb,IAAqFH,IAAI,CAACG,IAAL,sBAAwBH,IAAI,CAACG,IAA7B,kBAL/B;AAM3DI,IAAAA,QAAQ,EAAEP,IAAI,CAACG,IAAL,4CAA8CH,IAAI,CAACG,IAAnD,CANiD;AAO3DG,IAAAA,MAAM,EAAEN,IAAI,CAACM;AAP8C,GAAX,CAA1B,CAAxB;;AADgD,4BAWlB,2CAXkB;AAAA;AAAA,MAWzCE,SAXyC;AAAA,MAW9Bb,QAX8B;;AAYhD,MAAMc,eAAe,GAAG,cAAGX,eAAH,EAAoBY,IAApB,CAAyB,oBAAKjB,KAAD,KAAY;AAACkB,IAAAA,IAAI,EAAE,UAAP;AAAmBlB,IAAAA;AAAnB,GAAZ,CAAJ,CAAzB,CAAxB;AACA,MAAMmB,aAAa,GAAGJ,SAAS,CAACE,IAAV,CAAe,oBAAKV,IAAD,KAAW;AAACW,IAAAA,IAAI,EAAE,gBAAP;AAAyBX,IAAAA;AAAzB,GAAX,CAAJ,CAAf,CAAtB;AACA,MAAMa,aAAa,GAAGL,SAAS,CAACE,IAAV,CAAe,0BAAWV,IAAD,IAAU,oBAAOA,IAAP,CAApB,CAAf,CAAtB;AACA,MAAMc,sBAAsB,GAAGD,aAAa,CAACH,IAAd,CAC7B,oBACGK,MAAD;AAAcJ,IAAAA,IAAI,EAAE;AAApB,KAA2CI,MAA3C,CADF,EAEE,2BAAYC,KAAD,IAAW,cAAG;AAACL,IAAAA,IAAI,EAAE,eAAP;AAAwBK,IAAAA;AAAxB,GAAH,CAAtB,CAFF,CAD6B,CAA/B;AAOA,mBAAMP,eAAN,EAAuBG,aAAvB,EAAsCE,sBAAtC,EAA8DJ,IAA9D,CAAmEO,uBAAnE,EAAkFC,SAAlF;AAEA,SAAO,cAAGpB,eAAH,EAAoBY,IAApB,CACL,oBAAKjB,KAAD,KAAY;AACdA,IAAAA,KADc;AAEdD,IAAAA,KAAK,EAAEK,OAAO,CAACL,KAAR,IAAiBD,aAAa,CAACC,KAFxB;AAGd2B,IAAAA,WAAW,EAAEtB,OAAO,CAACsB,WAHP;AAIdzB,IAAAA,SAAS,EAAE,KAJG;AAKdC,IAAAA;AALc,GAAZ,CAAJ,CADK,EAQL,0BAAUJ,aAAV,CARK,CAAP;AAUD,CAlCM","sourcesContent":["import {merge, of} from 'rxjs'\nimport {createEventHandler} from 'react-props-stream'\nimport {catchError, map, startWith, switchMap} from 'rxjs/operators'\nimport {deploy} from './datastores/deploy'\nimport {Site, WidgetOptions} from './types'\nimport {stateReducer$} from './reducers'\n\nconst noop = () => undefined\n\nconst INITIAL_PROPS = {\n title: 'Netlify sites',\n sites: [],\n isLoading: true,\n onDeploy: noop,\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const props$ = (options: WidgetOptions) => {\n const configuredSites = (options.sites || []).map((site) => ({\n id: site.apiId,\n name: site.name,\n title: site.title,\n buildHookId: site.buildHookId,\n url: site.url || (site.branch && `https://${site.branch}--${site.name}.netlify.app/`) || (site.name && `https://${site.name}.netlify.app/`),\n adminUrl: site.name && `https://app.netlify.com/sites/${site.name}`,\n branch: site.branch\n }))\n\n const [onDeploy$, onDeploy] = createEventHandler<Site>()\n const setSitesAction$ = of(configuredSites).pipe(map((sites) => ({type: 'setSites', sites})))\n const deployAction$ = onDeploy$.pipe(map((site) => ({type: 'deploy/started', site})))\n const deployResult$ = onDeploy$.pipe(switchMap((site) => deploy(site)))\n const deployCompletedAction$ = deployResult$.pipe(\n map(\n (result) => ({type: 'deploy/completed', ...result}),\n catchError((error) => of({type: 'deploy/failed', error}))\n )\n )\n\n merge(setSitesAction$, deployAction$, deployCompletedAction$).pipe(stateReducer$).subscribe()\n\n return of(configuredSites).pipe(\n map((sites) => ({\n sites,\n title: options.title || INITIAL_PROPS.title,\n description: options.description,\n isLoading: false,\n onDeploy,\n })),\n startWith(INITIAL_PROPS)\n )\n}\n"],"file":"props.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-dashboard-widget-netlify",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "Sanity Studio Dashboard Widget for triggering Netlify builds",
5
5
  "keywords": [
6
6
  "sanity",
@@ -38,7 +38,9 @@
38
38
  "test": "jest --coverage",
39
39
  "test:watch": "jest --coverage --watch",
40
40
  "test:prod": "npm run lint && npm run test -- --no-cache",
41
- "prepublishOnly": "npm run build"
41
+ "prepublishOnly": "npm run compile && npm run build",
42
+ "prepare": "husky install",
43
+ "compile": "tsc --noEmit"
42
44
  },
43
45
  "prettier": {
44
46
  "semi": false,
@@ -59,7 +61,10 @@
59
61
  "styled-components": "^5.2.0"
60
62
  },
61
63
  "devDependencies": {
64
+ "@commitlint/cli": "^17.1.2",
65
+ "@commitlint/config-conventional": "^17.1.0",
62
66
  "@sanity/dashboard": ">=2.13.0",
67
+ "@sanity/semantic-release-preset": "^2.0.1",
63
68
  "@sanity/ui": "^0.36.12",
64
69
  "@testing-library/jest-dom": "^5.11.4",
65
70
  "@testing-library/react": "^11.0.4",
@@ -74,8 +79,10 @@
74
79
  "eslint-config-prettier": "^8.1.0",
75
80
  "eslint-config-sanity": "^5.1.0",
76
81
  "eslint-plugin-prettier": "^3.3.1",
82
+ "husky": "^8.0.1",
77
83
  "jest": "^26.0.0",
78
84
  "jest-date-mock": "^1.0.8",
85
+ "lint-staged": "^13.0.3",
79
86
  "prettier": "^2.0.0",
80
87
  "react": "^17.0.0",
81
88
  "react-dom": "^17.0.0",