sanity-plugin-dashboard-widget-vercel 4.0.5 → 4.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";iBASgB,YAAA,CAAa,MAAA;EAAS,MAAA,GAAS,YAAA;AAAA,IAAqB,eAAe"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";iBAIgB,YAAA,CAAa,MAAA;EAAS,MAAA,GAAS,YAAA;AAAA,IAAqB,eAAe"}
package/dist/index.js CHANGED
@@ -1,5 +1,3 @@
1
- import TimeAgo from "javascript-time-ago";
2
- import en from "javascript-time-ago/locale/en";
3
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
4
2
  import { c } from "react/compiler-runtime";
5
3
  import { UploadIcon, LinkIcon, EditIcon, ErrorOutlineIcon, AddIcon } from "@sanity/icons";
@@ -1364,7 +1362,6 @@ const DeploymentTarget = (props) => {
1364
1362
  t19
1365
1363
  ] }) }), $[49] = t17, $[50] = t18, $[51] = t19, $[52] = t20) : t20 = $[52], t20;
1366
1364
  };
1367
- TimeAgo.addDefaultLocale(en);
1368
1365
  function vercelWidget(config = {}) {
1369
1366
  return {
1370
1367
  name: "vercel",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/client.ts","../src/utils/fetcher.ts","../src/hooks/useDeployments.ts","../src/machines/refresh.ts","../src/utils/useCardColor.ts","../src/machines/deploy.ts","../src/components/StateDebug/index.tsx","../src/components/DeployButton/index.tsx","../src/components/StatusDot/index.tsx","../src/components/TableCell/index.tsx","../src/components/Deployment/index.tsx","../src/components/PlaceholderAvatar/index.tsx","../src/components/PlaceholderText/index.tsx","../src/components/DeploymentPlaceholder/index.tsx","../src/components/Deployments/index.tsx","../src/components/DeploymentTarget/index.tsx","../src/components/DeploymentTargets/index.tsx","../src/machines/form.ts","../src/utils/sanitizeFormData.ts","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/DialogForm/index.tsx","../src/machines/deploymentTargetList.ts","../src/machines/dialog.ts","../src/app.tsx","../src/index.ts"],"sourcesContent":["// https://vercel.com/docs/platform/limits\nexport const API_ENDPOINT_DEPLOYMENTS = 'https://api.vercel.com/v5/now/deployments'\nexport const API_ENDPOINT_ALIASES = 'https://api.vercel.com/v3/now/aliases'\n\n// Sanity API version\nexport const API_VERSION = '1'\n\nexport const DEBUG_MODE = false\n\nexport const DEPLOYMENT_TARGET_DOCUMENT_TYPE = 'vercel.deploymentTarget'\n\nexport const VERCEL_STATUS_COLORS = {\n BUILDING: '#f5a623',\n CANCELED: '#ff0000',\n ERROR: '#ff0000',\n READY: '#50e3c2',\n QUEUED: '#333',\n}\n\n// Name displayed in toasts\nexport const WIDGET_NAME = 'Vercel (dashboard)'\n\n// NOTE: Manually set plugin z-index values to be higher than Sanity's header search field\n// (which is currently 500202). Also ensure toasts always sit above dialogs.\nexport const Z_INDEX_DIALOG = 600001\nexport const Z_INDEX_TOAST_PROVIDER = 600002\n","import {type SanityClient, useClient} from 'sanity'\n\nimport {API_VERSION} from './constants'\n\nexport function useSanityClient(): SanityClient {\n return useClient({apiVersion: API_VERSION})\n}\n","import {type Sanity} from '../types'\n\nconst fetcher =\n (deploymentTarget: Sanity.DeploymentTargetConfig) =>\n async (url: string, extraParams?: URLSearchParams) => {\n const params = new URLSearchParams()\n params.set('projectId', deploymentTarget.projectId)\n if (deploymentTarget.teamId) {\n params.set('teamId', deploymentTarget.teamId)\n }\n\n if (extraParams) {\n for (const [k, v] of extraParams.entries()) {\n params.append(k, v)\n }\n }\n\n const response = await fetch(`${url}?${params.toString()}`, {\n headers: {\n Authorization: `Bearer ${deploymentTarget.token}`,\n },\n })\n\n // Manually throw on non-OK responses for react-query\n // https://react-query.tanstack.com/guides/query-functions#usage-with-fetch-and-others-clients-that-do-not-throw-by-default\n if (!response.ok) {\n throw new Error('Response not OK')\n }\n\n try {\n return await response.json()\n } catch (err) {\n throw new Error('Unable to parse response as JSON', {cause: err})\n }\n }\n\nexport default fetcher\n","import {useQuery} from '@tanstack/react-query'\nimport hash from 'object-hash'\n\nimport {API_ENDPOINT_ALIASES, API_ENDPOINT_DEPLOYMENTS} from '../constants'\nimport {type Sanity, type Vercel} from '../types'\nimport fetcher from '../utils/fetcher'\n\ntype Options = {\n enabled?: boolean\n}\n\nconst useDeployments = (deploymentTarget: Sanity.DeploymentTargetConfig, options?: Options) => {\n const fetchUrl = fetcher(deploymentTarget)\n\n // Fetch deployments\n const deployParams = new URLSearchParams()\n deployParams.set('limit', String(deploymentTarget?.deployLimit))\n\n const {\n data: deploymentsData,\n isFetching: deploymentsIsFetching,\n isSuccess: deploymentsIsSuccess,\n error: deploymentsError,\n refetch,\n } = useQuery<{deployments: Vercel.Deployment[]}>({\n queryKey: [hash(deploymentTarget)],\n queryFn: () => fetchUrl(API_ENDPOINT_DEPLOYMENTS, deployParams),\n enabled: options?.enabled ?? true,\n refetchInterval: 20000, // ms\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n refetchOnReconnect: 'always',\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n // Fetch aliases (only if deployments have been retrieved)\n const aliasParams = new URLSearchParams()\n aliasParams.set('limit', '20')\n\n const {\n data: aliasesData,\n isFetching: aliasesIsFetching,\n isSuccess: aliasesIsSuccess,\n error: aliasesError,\n } = useQuery<{\n aliases: Vercel.Alias[]\n pagination: {\n count: number\n next?: number\n prev?: number\n }\n }>({\n queryKey: [hash(deploymentTarget), 'aliases'],\n queryFn: () => fetchUrl(API_ENDPOINT_ALIASES, aliasParams),\n enabled: !!deploymentsData,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n const aliases = aliasesData?.aliases\n\n let deploymentsWithAlias: Vercel.DeploymentWithAlias[] | undefined\n\n if (aliases) {\n deploymentsWithAlias = deploymentsData?.deployments?.map((val: Vercel.DeploymentWithAlias) => {\n const alias = aliases.find((a) => a.deploymentId === val.uid)\n return Object.assign(val, {alias: alias?.alias})\n })\n }\n\n return {\n deployments: deploymentsWithAlias,\n error: aliasesError || deploymentsError,\n isFetching: aliasesIsFetching || deploymentsIsFetching,\n isSuccess: aliasesIsSuccess && deploymentsIsSuccess,\n refetch,\n }\n}\n\nexport default useDeployments\n","import {setup} from 'xstate'\n\ntype Event = {type: 'ERROR'} | {type: 'REFRESH'} | {type: 'REFRESHED'} | {type: 'RETRY'}\n\nconst refreshMachine = setup({\n types: {\n events: {} as Event,\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAJQFEAxBgZQAkBtABgF1FQADgHtYuAC64h+fiAAeiAIwAmAGwkuGrkoAsAZhVKlAVm0KAHABoQAT0QBOJSRN27XFXaMmz2twF9fVmhYeISkAE5gAGYRsCFQ1PS0tADytNx8SCDCohJSMvIIPnYkxhpKXGZ22kY6xla2CAq6CiQudgDsRnYqKroVfe3+gRg4BMQkEdFwcXRMrGz0ACLpMtniktKZBUUlRmUVVTXadTaISrqObUY97QodvWa6QyBBo6ETUTHYkLPM9OwrTJrXKbUDbJTFLjtMzmWraOx3doqeqKMyOeHdXp3BTHXTVZ6vELjMBhMJCMK-eaAwQidZ5LaIY6Q6Gw47wxHI04IGEkDFma5NbTtY7ufwBED4IQQOAyQljIirWkg-KIAC0nIa6oJIyJpHIVEVOQ2KsKShRCDsunUGLcHi8PhU2uC8o+U1iBCghrpoLkZ2uTk0XCq7SRRl0Zg19itXHhIZ85lMEaUTre40mX0gXuVDIQnmKRhZKk6PmaVXN2PUaLsZhj2hUOJU-JTupIJLJYSzxpzeacheLXFL2nNrkrfW8SKFnhDYt8QA */\n initial: 'idle',\n states: {\n idle: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n refreshing: {\n on: {\n ERROR: {\n target: 'error',\n },\n REFRESHED: {\n target: 'refreshed',\n },\n },\n },\n refreshed: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n error: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n },\n})\n\nexport default refreshMachine\n","import {useTheme_v2} from '@sanity/ui'\n\nexport function useCardColor(): {border: string} {\n const {color} = useTheme_v2()\n return {border: color.border}\n}\n","import {assign, setup, fromPromise} from 'xstate'\n\nimport {type Vercel} from '../types'\n\ntype Context = {\n deployHook: string\n disabled: boolean\n feedback?: string\n label?: string\n error?: string\n}\n\ntype Event = {type: 'DEPLOY'}\n\ninterface DeployActorInput {\n deployHook: string\n}\n\nexport const deployMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n input: {} as DeployActorInput,\n },\n actors: {\n deploy: fromPromise(async ({input, signal}: {input: DeployActorInput; signal: AbortSignal}) => {\n try {\n if (!input.deployHook) {\n throw new Error('No deployHook URL defined')\n }\n const res = await fetch(input.deployHook, {method: 'POST', signal})\n const data: {error?: Vercel.Error} | null = await res.json()\n if (!res.ok) {\n const errorMessage = data?.error?.message || res.statusText\n throw errorMessage\n }\n } catch (err) {\n if (typeof err === 'string') {\n throw err\n }\n console.error('Unable to deploy with error:', err)\n throw new Error('Please check the developer console for more information', {cause: err})\n }\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QTABwDYHsCeA6AlhOmAMQAiAogAoAyA8gJoDaADALqKiqaz4Au+TADtOIAB6IATCxa4AnADYAHAHYArArUslAZjksNAGhDZEARk3yVmhSxVyHC-QBYAvq+MoMOXF6zZ8ISgSCGEwAiEAN0wAa3C-HwSAoIRA6IBjAEMBYVY2PNFuXhyRJHFENTMzXElFJSUzNTVnWx0FY1MESXVcZzUdM2k1OTUVBoV3TzR-X2mcQOCwACclzCXcDGyAMzWAW1nvPCSF1KjMLJK8grKi-kFS0AkESura5QamlpY2jvMB+QcDkqLH0wxYEw8ICSuFgAFd0uk4LByNR6Mx2IUeHdhKIns1ZN9BtYQVpRnJfl1JM55P1BnY1Ep9CpGpMoXM8MtVksUbRGNcuFiSriKs4CQNurYRgZ7BSGr1ASNupIzEo+kp3JChJgUPAyklMcV7sKEABadomRAmtQAhW2wE6VnQwjEA3Yh7lBDOSQUsxeqyaPoWYbWFSO9kHfwLV1CspPHSSHQ1ZyA1UKJzJlQ+iz+5oKewKWrfNyQ6FwhFI6NG2OINOSXDiypKAxtMyZi1dEE1Qk6L0FpTSUMl8OctaVnHVhC1+uDRvNhStin6XDaHQ9liSXTJiUa1xAA */\n id: 'deploy',\n initial: 'idle',\n context: ({input}) => ({\n disabled: false,\n feedback: undefined,\n label: undefined,\n error: undefined,\n deployHook: input.deployHook,\n }),\n states: {\n idle: {\n entry: assign({\n feedback: () => undefined,\n label: () => 'Deploy',\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n deploying: {\n entry: assign({\n disabled: () => true,\n label: () => 'Deploying',\n }),\n exit: assign({\n disabled: () => false,\n label: () => 'Deploy',\n }),\n invoke: {\n src: 'deploy',\n input: ({context}) => ({deployHook: context.deployHook}),\n onDone: {\n target: 'success',\n },\n onError: {\n target: 'error',\n actions: assign({\n error: ({event}) => {\n if ('error' in event) {\n const {error} = event\n if (typeof error === 'string') {\n return error\n }\n if (error instanceof Error) {\n return error.message\n }\n }\n return 'Unknown error'\n },\n }),\n },\n },\n },\n success: {\n entry: assign({\n feedback: () => 'Successfully started!',\n }),\n exit: assign({\n feedback: () => undefined,\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n error: {\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n },\n})\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {DEBUG_MODE} from '../../constants'\n\ntype Props = {\n name: string\n state: any // TODO: type correctly\n}\n\nconst StateDebug = (props: Props) => {\n const {name, state} = props\n\n if (!DEBUG_MODE) {\n return null\n }\n\n return (\n <Card\n scheme=\"dark\"\n style={{\n backgroundColor: 'rgba(0, 0, 255, 0.9)',\n borderRadius: '3px',\n fontSize: 1,\n fontWeight: 500,\n lineHeight: 'body',\n right: 0,\n opacity: 0.75,\n pointerEvents: 'none',\n position: 'absolute',\n textAlign: 'left',\n top: 0,\n zIndex: 9000,\n }}\n >\n <Box padding={2}>\n <Stack gap={2}>\n <Text size={0}>Name: {name}</Text>\n <Text size={0}>state.value: {JSON.stringify(state.value)}</Text>\n </Stack>\n </Box>\n </Card>\n )\n}\n\nexport default StateDebug\n","import {UploadIcon} from '@sanity/icons'\nimport {Box, Button, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect} from 'react'\n\nimport {WIDGET_NAME} from '../../constants'\nimport {deployMachine} from '../../machines/deploy'\nimport StateDebug from '../StateDebug'\n\ntype Props = {\n deployHook: string\n onDeploySuccess?: () => void\n targetName: string\n}\n\nconst DeployButton = (props: Props) => {\n const {deployHook, onDeploySuccess, targetName} = props\n\n const [deployState, deployStateTransition, deployStateInterpreter] = useMachine(deployMachine, {\n input: {deployHook},\n })\n\n const toast = useToast()\n\n const isError = deployState.matches('error')\n const isSuccess = deployState.matches('success')\n\n // Callbacks\n const handleDeploy = () => {\n deployStateTransition({type: 'DEPLOY'})\n }\n\n // Effects\n useEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to queue deploy for ${targetName}: ${deployState.context.error}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n\n if (isSuccess) {\n toast.push({\n closable: true,\n description: `Deploy queued for ${targetName}`,\n duration: 8000,\n status: 'success',\n title: WIDGET_NAME,\n })\n }\n }, [isError, isSuccess, toast, targetName, deployState.context.error])\n\n useEffect(() => {\n const subscription = deployStateInterpreter.subscribe((state) => {\n if (state.value === 'success') {\n if (onDeploySuccess) {\n onDeploySuccess()\n }\n }\n })\n\n return () => subscription.unsubscribe()\n }, [deployStateInterpreter, onDeploySuccess])\n\n return (\n <Box padding={3} style={{position: 'relative'}}>\n <StateDebug name=\"Deploy\" state={deployState} />\n\n <Button\n disabled={deployState.context.disabled}\n fontSize={1}\n icon={UploadIcon}\n mode=\"ghost\"\n onClick={handleDeploy}\n padding={3}\n text={`${deployState.context.label} ${targetName}`}\n tone=\"default\"\n />\n </Box>\n )\n}\n\nexport default DeployButton\n","import {Box} from '@sanity/ui'\n\nimport {VERCEL_STATUS_COLORS} from '../../constants'\nimport {type Vercel} from '../../types'\n\ntype Props = {\n state: Vercel.DeploymentState\n}\n\nconst StatusDot = ({state}: Props) => (\n <Box\n style={{\n backgroundColor: VERCEL_STATUS_COLORS[state],\n borderRadius: '20px',\n height: '9px',\n width: '9px',\n }}\n />\n)\n\nexport default StatusDot\n","import {Box, Label} from '@sanity/ui'\nimport type {ReactNode} from 'react'\n\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n children: ReactNode\n colSpan?: number\n header?: boolean\n variant?: 'age' | 'branch' | 'creator' | 'state'\n}\n\nconst TableCell = (props: Props) => {\n const {children, colSpan, header, variant} = props\n\n let display: Sanity.BoxDisplay | Sanity.BoxDisplay[] = 'table-cell'\n let cellWidth: string = 'auto'\n\n switch (variant) {\n case 'age':\n cellWidth = '50px'\n break\n case 'branch':\n cellWidth = '300px'\n display = ['none', 'none', 'none', 'table-cell']\n break\n case 'creator':\n cellWidth = '80px'\n break\n case 'state':\n cellWidth = '110px'\n display = ['none', 'none', 'none', 'none', 'table-cell']\n break\n default:\n break\n }\n\n const {border} = useCardColor()\n\n if (header) {\n return (\n <Box\n as=\"th\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={2}\n style={{\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n <Label size={0}>{children}</Label>\n </Box>\n )\n }\n return (\n <Box\n as=\"td\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={[2, 2, 3]}\n style={{\n borderTop: `1px solid ${border}`,\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default TableCell\n","import {LinkIcon} from '@sanity/icons'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport ReactTimeAgo from 'react-time-ago'\n\nimport {type Vercel} from '../../types'\nimport StatusDot from '../StatusDot'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deployment: Vercel.DeploymentWithAlias\n}\n\nconst Deployment = (props: Props) => {\n const {deployment} = props\n\n const date = useMemo(() => new Date(deployment.created), [deployment.created])\n\n const commitMessage = deployment?.meta?.['githubCommitMessage']\n const commitRef = deployment?.meta?.['githubCommitRef']\n\n const targetUrl = deployment.alias ?? deployment.url\n\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <Flex align=\"center\">\n <Box\n display={['block', 'block', 'block', 'block', 'none']}\n marginRight={3}\n style={{flexShrink: 0}}\n >\n <StatusDot state={deployment.state} />\n </Box>\n\n {targetUrl ? (\n <>\n {/* Alias icon */}\n {deployment.alias && <LinkIcon />}\n\n <Box marginLeft={deployment.alias ? 1 : 0}>\n <Text\n muted={!(deployment.state === 'READY')}\n size={1}\n style={{\n textDecoration:\n deployment.state === 'CANCELED' || deployment.state === 'ERROR'\n ? 'line-through'\n : 'normal',\n }}\n textOverflow=\"ellipsis\"\n >\n {deployment.state === 'READY' ? (\n <a href={`https://${targetUrl}`} rel=\"noopener noreferrer\" target=\"_blank\">\n {targetUrl}\n </a>\n ) : (\n targetUrl\n )}\n </Text>\n </Box>\n </>\n ) : (\n <Text size={1}>Uploading...</Text>\n )}\n </Flex>\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <Flex align=\"center\">\n <StatusDot state={deployment.state} />\n <Box marginLeft={2}>\n <Text size={1}>\n {deployment.state\n .trim()\n .toLowerCase()\n .replace(/^[a-z]/i, (t) => t.toUpperCase())}\n </Text>\n </Box>\n </Flex>\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <Stack gap={2}>\n <Text size={1} textOverflow=\"ellipsis\">\n {commitRef}\n </Text>\n {commitMessage && (\n <Text muted size={1} textOverflow=\"ellipsis\">\n {commitMessage}\n </Text>\n )}\n </Stack>\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <Flex align=\"center\">\n <Text size={1}>\n <ReactTimeAgo date={date} locale=\"en-US\" timeStyle=\"mini\" />\n </Text>\n </Flex>\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex align=\"center\" justify=\"center\">\n <img\n alt={deployment?.creator?.username || 'Deployment creator avatar'}\n draggable={false}\n src={`https://vercel.com/api/www/avatar/${deployment?.creator?.uid}?&s=48`}\n style={{\n borderRadius: '20px',\n height: '20px',\n width: '20px',\n }}\n />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default Deployment\n","import {Box} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\nconst PlaceholderAvatar = () => {\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '20px',\n height: '20px',\n userSelect: 'none',\n width: '20px',\n }}\n />\n )\n}\n\nexport default PlaceholderAvatar\n","import {Box, Stack, Text} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n rows: number\n}\n\nconst PlaceholderText = (props: Props) => {\n const {rows} = props\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '3px',\n userSelect: 'none',\n width: '100%',\n }}\n >\n <Stack gap={2}>\n {Array.from({length: rows}, (_, index) => (\n <Text key={index} size={1}>\n &nbsp;\n </Text>\n ))}\n </Stack>\n </Box>\n )\n}\n\nexport default PlaceholderText\n","import {Flex} from '@sanity/ui'\n\nimport PlaceholderAvatar from '../PlaceholderAvatar'\nimport PlaceholderText from '../PlaceholderText'\nimport TableCell from '../TableCell'\n\nconst DeploymentPlaceholder = () => {\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <PlaceholderText rows={2} />\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex justify=\"center\">\n <PlaceholderAvatar />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default DeploymentPlaceholder\n","import {Box, Text, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect, useRef} from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {WIDGET_NAME} from '../../constants'\nimport useDeployments from '../../hooks/useDeployments'\nimport refreshMachine from '../../machines/refresh'\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\nimport DeployButton from '../DeployButton'\nimport Deployment from '../Deployment'\nimport DeploymentPlaceholder from '../DeploymentPlaceholder'\nimport StateDebug from '../StateDebug'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deploymentTarget: Sanity.DeploymentTargetConfig\n}\n\nconst Deployments = (props: Props) => {\n const {deploymentTarget} = props\n\n // Refs\n const refTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // XState\n const [refreshState, refreshStateTransition] = useMachine(refreshMachine)\n\n // Fetch deployments - disable hook / auto-refetching on error state\n const {deployments, error, isFetching, isSuccess, refetch} = useDeployments(deploymentTarget, {\n enabled: !refreshState.matches('error'),\n })\n\n const toast = useToast()\n const isError = refreshState.matches('error')\n\n const handleDeploySuccess = () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n refTimeout.current = setTimeout(() => {\n void refetch({\n cancelRefetch: true,\n throwOnError: true,\n })\n }, 4000)\n }\n\n useEffect(() => {\n return () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n }\n }, [])\n\n useEffect(() => {\n if (error) {\n refreshStateTransition({type: 'ERROR'})\n }\n\n if (isFetching) {\n refreshStateTransition({type: 'REFRESH'})\n }\n\n if (!isFetching && isSuccess) {\n refreshStateTransition({type: 'REFRESHED'})\n }\n }, [error, isFetching, isSuccess, refreshStateTransition])\n\n useDeepCompareEffect(() => {\n if (!refreshState.matches('refreshing')) {\n refreshStateTransition({type: 'REFRESH'})\n }\n }, [deploymentTarget])\n\n useDeepCompareEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to fetch deployments for ${deploymentTarget.name}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n }, [deploymentTarget, isError])\n\n const hasFetched = typeof deployments !== 'undefined'\n const hasDeployments = deployments && deployments.length > 0\n\n const {border} = useCardColor()\n return (\n <Box marginTop={3} style={{position: 'relative'}}>\n {/* xstate debug */}\n <StateDebug name=\"Refresh\" state={refreshState} />\n\n {!refreshState.matches('error') && (\n <>\n <Box\n as=\"table\"\n style={{\n borderBottom: `1px solid ${border}`,\n borderCollapse: 'collapse',\n display: 'table',\n tableLayout: 'fixed',\n width: '100%',\n }}\n >\n <Box as=\"thead\" style={{display: 'table-header-group'}}>\n <tr>\n {/* Deployment */}\n <TableCell header>Deployment</TableCell>\n\n {/* State */}\n <TableCell header variant=\"state\">\n State\n </TableCell>\n\n {/* Branch */}\n <TableCell header variant=\"branch\">\n Branch\n </TableCell>\n\n {/* Age */}\n <TableCell header variant=\"age\">\n Age\n </TableCell>\n\n {/* Creator */}\n <TableCell header variant=\"creator\">\n Creator\n </TableCell>\n </tr>\n </Box>\n\n <Box as=\"tbody\" style={{display: 'table-row-group'}}>\n {/* Placeholders */}\n {!deployments &&\n Array.from({length: deploymentTarget.deployLimit}, (_, index) => (\n <DeploymentPlaceholder key={index} />\n ))}\n {/* Deployments */}\n {hasDeployments &&\n deployments?.map((deployment) => (\n <Deployment deployment={deployment} key={deployment.uid} />\n ))}\n </Box>\n </Box>\n\n {/* No results */}\n {hasFetched && !hasDeployments && (\n <Box padding={3} style={{width: '100%'}}>\n <Text muted size={1}>\n No deployments found. Don't forget to specify a valid team ID if your project\n belongs to a team.\n </Text>\n </Box>\n )}\n </>\n )}\n\n {/* Error message */}\n {refreshState.matches('error') && (\n <Box padding={3}>\n <Text muted size={1}>\n Unable to fetch recent deployments. Please check your network and deployment settings.\n </Text>\n </Box>\n )}\n\n {/* Deploy button */}\n {!refreshState.matches('error') && deploymentTarget.deployHook && (\n <Box>\n <DeployButton\n deployHook={deploymentTarget.deployHook}\n onDeploySuccess={handleDeploySuccess}\n targetName={deploymentTarget.name}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default Deployments\n","import {EditIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\n\nimport {type Sanity} from '../../types'\nimport Deployments from '../Deployments'\n\ntype Props = {\n item: Sanity.DeploymentTarget\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTarget: FC<Props> = (props: Props) => {\n const {item, onDialogEdit} = props\n\n const deploymentTarget: Sanity.DeploymentTargetConfig = {\n deployHook: item.deployHook,\n deployLimit: item.deployLimit,\n name: item.name,\n projectId: item.projectId,\n teamId: item.teamId,\n token: item.token,\n }\n\n return (\n <Box style={{position: 'relative'}}>\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" marginTop={2} paddingX={3}>\n <Text size={2}>{item.name}</Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Edit deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={EditIcon} mode=\"bleed\" onClick={() => onDialogEdit(item)} />\n </Tooltip>\n </Flex>\n\n {/* Content */}\n <Deployments deploymentTarget={deploymentTarget} />\n </Box>\n )\n}\n\nexport default DeploymentTarget\n","import {Stack} from '@sanity/ui'\n\nimport {type Sanity} from '../../types'\nimport DeploymentTarget from '../DeploymentTarget'\n\ntype Props = {\n items: Sanity.DeploymentTarget[]\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTargets = (props: Props) => {\n const {items, onDialogEdit} = props\n\n return (\n <Stack gap={5}>\n {items?.map((item) => (\n <DeploymentTarget item={item} key={item._id} onDialogEdit={onDialogEdit} />\n ))}\n </Stack>\n )\n}\n\nexport default DeploymentTargets\n","import {uuid} from '@sanity/uuid'\nimport type {SanityClient} from 'sanity'\nimport {assertEvent, assign, fromPromise, setup} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport type {Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n document?: Sanity.DeploymentTarget\n id?: string\n formData?: Record<string, any>\n message: string\n}\n\ntype Event =\n | {type: 'CREATE'; formData: Record<string, any>}\n | {type: 'UPDATE'; id: string; formData: Record<string, any>}\n | {type: 'DELETE'; id: string}\n\ninterface Input {\n client: SanityClient\n}\n\nexport const formMachine = setup({\n types: {} as {\n children: {\n createDocumentActor: 'create document'\n updateDocumentActor: 'update document'\n deleteDocumentActor: 'delete document'\n }\n context: Context\n events: Event\n input: Input\n tags: 'busy'\n },\n actions: {\n setId: assign({\n id: ({event}) => {\n assertEvent(event, ['UPDATE', 'DELETE'])\n return event.id\n },\n }),\n setFormData: assign({\n formData: ({event}) => {\n assertEvent(event, ['CREATE', 'UPDATE'])\n return event.formData\n },\n }),\n setMessage: assign({\n message: ({event}) => {\n if (\n 'data' in event &&\n event.data &&\n typeof event.data === 'object' &&\n 'details' in event.data &&\n event.data.details &&\n typeof event.data.details === 'object' &&\n 'description' in event.data.details\n ) {\n return event.data.details.description as string\n }\n return 'An error occurred'\n },\n }),\n setDocument: assign({\n document: ({event}) => {\n // @ts-expect-error - fix typings later\n return event.output\n },\n }),\n },\n actors: {\n 'create document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'formData'>>}) => {\n return input.client.create({\n _id: `vercel.${uuid()}`,\n _type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n ...input.formData,\n })\n },\n ),\n 'update document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'id' | 'formData'>>}) => {\n return input.client.patch(input.id).set(input.formData).commit()\n },\n ),\n 'delete document': fromPromise(({input}: {input: Required<Pick<Context, 'client' | 'id'>>}) => {\n return input.client.delete(input.id)\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAIwBmAGwkuGjQFYALAE4AHACYdWgwYA0IAJ6IjKgOwkdXFUYVa9h-Ua5KAvv5WaFh4hKTkVNQAqgAKACJsnLwywqISUjLyCMpqmtr6xqbmVrYIBgokWvlGWkpaCgZeKoHBGDgExGSUNPGMADKM7Nx8SCBp4pLSY9m56vm6hiZmljaIOipqdXpcDk1aWiYqBlqtICEd4SSYAE5g6BL4UNQQUmBk+ABuQgDW77f3MRgeJCTAAV1QYHwYmYmDEQhuI1SIkmmRmiGOShIDiUOh0SiaCgUegcDj0pTsjhI5iMewUpPsTSMZwuYS6AIeBGeYBuNwRJAEFAeADMEahrncHsDQRCoTC4QikWMJhlpqBspjsbj8YTiaTyWsEKouNT6noiX5zUpiQEgud2mzSGCBBBOU8Xm8Pt8-iRna6gSDwZDobD4YiUsqUaqshiDFicXiCea9WSKeVKiSVIclEYlIY-BUWQ7Ok6XW7ubz+YKRWLfWWAzLg-Kw0rBFGpjGEJqEzrkyTU4b6ToSHojHos7VXEc6kXQiWSBAwFRHs9XoQvb93ovl9Kg3LQ4qI230h30V241rE7r+wayro1A4dO4VHotA5fPTTnbWfPt2AV9QPJ8jcApCmIoo3OKf4NnuIYKuGozHqiapyLG8bakmRI3mmpjxk0XAuEoXAHI+DgtGc+BCIu8BjD+4TIieaLqogAC0Khpmxs6XF0kRgAxyGdk+aYKLSVR7Fweg6A4IkGFwChcY6EqAly-HRmeY7DnSY5GHGL4qFwRhpjpJpmriDjVMRLgGAp84ckCECqaezEIHoObUuZuwKH4xGPgoRnmCQpmOAcqhmPJ37Flcfrlo5TGoQgY4mgYHkeAS+iqH5hqSc4dSuCo+I6SoSjvjZUX1pAsUodkrlGO51TSd5b46JlZRebVuG7IcjRmA05FtHOVzQSpkaMVVdivs4CibHGxg6biSg4ZsJD2AccaFEVGwOKVXTQRVI0CWeNV1Z5jW+WmujDj4HjmMRnhEttpBAQilWdkdyX1V5RFNS1iAEpU1pHER9JWjogSBEAA */\n context: ({input}) => ({\n client: input.client,\n formData: {},\n message: '',\n }),\n initial: 'idle',\n states: {\n idle: {\n on: {\n CREATE: {\n actions: ['setFormData'],\n target: 'creating',\n },\n UPDATE: {\n actions: ['setId', 'setFormData'],\n target: 'updating',\n },\n DELETE: {\n actions: 'setId',\n target: 'deleting',\n },\n },\n },\n creating: {\n tags: ['busy'],\n invoke: {\n src: 'create document',\n id: 'createDocumentActor',\n input: ({context}) => ({client: context.client, formData: context.formData!}),\n onDone: {actions: 'setDocument', target: 'created'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n created: {type: 'final'},\n updating: {\n tags: ['busy'],\n invoke: {\n src: 'update document',\n id: 'updateDocumentActor',\n input: ({context}) => ({\n client: context.client,\n id: context.id!,\n formData: context.formData!,\n }),\n onDone: {actions: 'setDocument', target: 'updated'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n updated: {type: 'final'},\n deleting: {\n tags: ['busy'],\n invoke: {\n src: 'delete document',\n id: 'deleteDocumentActor',\n input: ({context}) => ({client: context.client, id: context.id!}),\n onDone: {target: 'deleted'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n deleted: {type: 'final'},\n error: {type: 'final'},\n },\n})\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fields\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n return Object.keys(formData).reduce((acc: FormData, key) => {\n const val = formData[key]\n\n // TODO: refactor\n if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n acc[key] = sanitizeFormData(val)\n } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n acc[key] = null\n } else if (typeof val === 'string' && val) {\n acc[key] = formData[key].trim()\n } else {\n acc[key] = formData[key]\n }\n\n return acc\n }, {})\n}\n\nexport default sanitizeFormData\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\ntype Props = {\n description?: string\n error?: FieldError\n label: string\n name: string\n}\n\nconst errorIconStyle = {color: red[500].hex}\n\nconst FormFieldInputLabel: FC<Props> = (props: Props) => {\n const {description, error, label, name} = props\n\n return (\n <Box marginBottom={3}>\n {/* Label */}\n <Inline gap={2}>\n <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n {label}\n </Text>\n\n {/* Error icon + tooltip */}\n {error && (\n <Text size={1}>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n <ErrorOutlineIcon style={{...errorIconStyle, marginRight: '0.1em'}} />\n {error.message}\n </Text>\n </Box>\n }\n fallbackPlacements={['top', 'left']}\n placement=\"right\"\n portal\n >\n <ErrorOutlineIcon style={errorIconStyle} />\n </Tooltip>\n </Text>\n )}\n </Inline>\n\n {/* Description */}\n {description && (\n <Box marginY={3}>\n <Text as=\"p\" muted size={1}>\n {description}\n </Text>\n </Box>\n )}\n </Box>\n )\n}\n\nexport default FormFieldInputLabel\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, forwardRef} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: FieldError\n label: string\n name: string\n placeholder?: string\n value?: string\n onChange?: ChangeEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n}\n\nconst FormFieldInputText = forwardRef<HTMLInputElement, Props>((props: Props, ref) => {\n const {description, disabled, error, label, name, placeholder, value, onChange, onBlur} = props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n {/* Input */}\n <TextInput\n autoComplete=\"off\"\n autoFocus\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n />\n </Box>\n )\n})\n\nexport default FormFieldInputText\n","import {yupResolver} from '@hookform/resolvers/yup'\nimport {Box, Button, Dialog, Flex, Stack, useToast} from '@sanity/ui'\nimport {useActor} from '@xstate/react'\nimport {type FC, useEffect} from 'react'\nimport {useForm} from 'react-hook-form'\nimport {toPromise} from 'xstate'\nimport * as yup from 'yup'\n\nimport {useSanityClient} from '../../client'\nimport {Z_INDEX_DIALOG} from '../../constants'\nimport {formMachine} from '../../machines/form'\nimport {type Sanity} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport FormFieldInputText from '../FormFieldInputText'\n\ntype Props = {\n deploymentTarget?: Sanity.DeploymentTarget\n onClose: () => void\n onCreate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n onDelete?: (id: string) => void\n onUpdate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\ntype FormData = yup.InferType<typeof formSchema>\n\nconst formSchema = yup.object().shape({\n deployHook: yup.string().url('Deploy hook must be a valid URL'),\n deployLimit: yup\n .number()\n .positive()\n .integer()\n .min(1, 'Deploy limit must no less than 1')\n .max(15, 'Deploy limit must no higher than 15')\n .typeError('Deploy limit must be a number')\n .required('Deploy limit must be a positive integer between 1 and 15'),\n name: yup.string().required('Name cannot be empty'),\n projectId: yup.string().required('Vercel Project ID cannot be empty'),\n teamId: yup.string(),\n token: yup.string().required('Vercel Account Token cannot be empty'),\n})\n\nconst DialogForm: FC<Props> = (props: Props) => {\n const {deploymentTarget, onClose, onCreate, onDelete, onUpdate} = props\n const client = useSanityClient()\n const toast = useToast()\n\n const [formState, formStateTransition, formStateActorRef] = useActor(formMachine, {\n input: {client},\n })\n\n const formUpdating = formState.hasTag('busy')\n\n // react-hook-form v7\n const {\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n } = useForm<FormData>({\n // @ts-expect-error - fix typings later\n defaultValues: {\n deployHook: deploymentTarget?.deployHook || '',\n deployLimit: deploymentTarget?.deployLimit || 5,\n name: deploymentTarget?.name || '',\n projectId: deploymentTarget?.projectId || '',\n teamId: deploymentTarget?.teamId || '',\n token: deploymentTarget?.token || '',\n },\n mode: 'onChange',\n resolver: yupResolver(formSchema),\n })\n\n /**\n * Handle errors and reaching the done state\n */\n useEffect(() => {\n if (formState.matches('error')) {\n toast.push({\n status: 'error',\n title: formState.context.message || 'An error occurred',\n })\n }\n /**\n * If the machine is done it means it reached updated, created, deleted or error state.\n * We don't care which one, we just want to close the dialog\n */\n if (formState.status === 'done') {\n onClose()\n }\n }, [formState, onClose, toast])\n\n // Callbacks\n // - submit react-hook-form\n const onSubmit = async (formData: FormData) => {\n const sanitizedFormData = sanitizeFormData(formData)\n if (deploymentTarget) {\n formStateTransition({type: 'UPDATE', id: deploymentTarget._id, formData: sanitizedFormData})\n } else {\n formStateTransition({type: 'CREATE', formData: sanitizedFormData})\n }\n await toPromise(formStateActorRef)\n const snapshot = formStateActorRef.getSnapshot()\n const {document} = snapshot.context\n if (!document) return\n if (snapshot.matches('created')) {\n onCreate?.(document)\n } else if (snapshot.matches('updated')) {\n onUpdate?.(document)\n }\n }\n\n const handleDelete = async () => {\n if (!deploymentTarget) {\n return\n }\n const id = deploymentTarget._id\n formStateTransition({type: 'DELETE', id})\n await toPromise(formStateActorRef)\n if (formStateActorRef.getSnapshot().matches('deleted')) {\n onDelete?.(id)\n }\n }\n\n return (\n <Dialog\n footer={\n <Box padding={3}>\n <Flex justify={deploymentTarget ? 'space-between' : 'flex-end'}>\n {/* Delete button */}\n {deploymentTarget && (\n <Button\n loading={formState.matches('deleting')}\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n )}\n\n {/* Submit button */}\n <Button\n loading={formState.matches('creating') || formState.matches('updating')}\n disabled={!isDirty || !isValid}\n fontSize={1}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onClick={handleSubmit(onSubmit)}\n text={deploymentTarget ? 'Update and close' : 'Create'}\n tone=\"primary\"\n />\n </Flex>\n </Box>\n }\n header={`${deploymentTarget ? 'Edit' : 'Create'} deployment target`}\n id=\"create\"\n onClose={onClose}\n width={1}\n zOffset={Z_INDEX_DIALOG}\n >\n {/* We reverse direction to ensure that inline links dont autofocus before other form elements */}\n <Box\n as=\"form\"\n padding={4}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Hidden button to enable enter key submissions */}\n <button aria-label=\"Submit\" style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Form fields */}\n <Stack gap={5}>\n {/* Title */}\n <FormFieldInputText\n disabled={formUpdating}\n description=\"Name displayed in this plugin (e.g. production, staging)\"\n error={errors?.name}\n label=\"Name\"\n // @ts-expect-error - fix typings later\n {...register('name')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.token}\n label=\"Vercel Account Token\"\n // @ts-expect-error - fix typings later\n {...register('token')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.projectId}\n label=\"Vercel Project ID\"\n // @ts-expect-error - fix typings later\n {...register('projectId')}\n />\n\n <FormFieldInputText\n description=\"Required only if your project is owned by a team account\"\n disabled={formUpdating}\n error={errors?.teamId}\n label=\"Vercel Team ID (optional)\"\n // @ts-expect-error - fix typings later\n {...register('teamId')}\n />\n\n <FormFieldInputText\n description=\"Enter a valid deploy hook URL to enable manual deploys\"\n disabled={formUpdating}\n error={errors?.deployHook}\n label=\"Vercel Deploy Hook (optional)\"\n // @ts-expect-error - fix typings later\n {...register('deployHook')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.deployLimit}\n label=\"Number of deploys to display\"\n // @ts-expect-error - fix typings later\n {...register('deployLimit', {valueAsNumber: true})}\n />\n </Stack>\n </Box>\n </Dialog>\n )\n}\n\nexport default DialogForm\n","import type {SanityClient} from 'sanity'\nimport {assign, setup, fromPromise, assertEvent} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport {type Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n results: Sanity.DeploymentTarget[] // TODO: type correctly\n}\n\ntype Event =\n | {type: 'CLOSE'}\n | {type: 'CREATE'; deploymentTarget: Sanity.DeploymentTarget}\n | {type: 'DELETE'; id: string}\n | {type: 'FETCH'}\n | {type: 'UPDATE'; deploymentTarget: Sanity.DeploymentTarget}\n\ninterface Input {\n client: SanityClient\n}\n\nconst sortByTargetName = (items: Sanity.DeploymentTarget[]) => {\n return items.sort((a, b) => {\n if (a.name > b.name) {\n return 1\n }\n if (a.name < b.name) {\n return -1\n }\n return 0\n })\n}\n\nexport const deploymentTargetListMachine = setup({\n types: {} as {\n children: {fetchData: 'fetch data'}\n context: Context\n events: Event\n input: Input\n },\n actions: {\n targetCreate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'CREATE')\n return sortByTargetName([...context.results, event.deploymentTarget])\n },\n }),\n targetDelete: assign({\n results: ({context, event}) => {\n assertEvent(event, 'DELETE')\n return context.results.filter((target) => target._id !== event.id)\n },\n }),\n targetUpdate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'UPDATE')\n const {deploymentTarget} = event\n const index = context.results.findIndex((target) => target._id === deploymentTarget._id)\n const updatedResults = Object.assign([], context.results, {\n [index]: deploymentTarget,\n })\n return sortByTargetName(updatedResults)\n },\n }),\n },\n guards: {\n hasData: ({context}) => {\n return context?.results?.length > 0\n },\n hasNoData: ({context}) => {\n return context?.results?.length === 0\n },\n },\n actors: {\n 'fetch data': fromPromise(\n ({input, signal}: {input: {client: SanityClient}; signal: AbortSignal}) => {\n return input.client\n .fetch<Sanity.DeploymentTarget[]>(\n '*[_type == $type] | order(name asc)',\n {\n type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n },\n {signal},\n )\n .catch((error) => {\n if (error instanceof Error && error.name === 'AbortError') {\n return []\n }\n console.error('Failed to fetch deployment targets', error)\n throw error\n })\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOgAcx8ICoBiCAe0JIIDcGBrMEgMzABccAEXT90AbQAMAXUSgyDWLn64mckAA9EAZkkBOEgHYAjAA5DAFgBsFgEwnJAVkMAaEAE9Ep4yUeT-klbGesbaoYaGAL6RbmhYeISkFFQ0tGAATukM6eQANqI82ai8AsKiEjLqCkoqakiaOvpGZpY29sZOrh6IxpYkFo5h2oaOpnqOxraSFtGxGDgExCTpYOgQ7rQAwgBKAKIAggAqu1Ky9dXKqvjqWggWHSS9eoaS9ibao6aObp4IVh8kL56OzGII2PT-WYgOILRLLVbrWhCXYAGV2x1OVUUlzqoFu90kRm8tlM2gsL1eJJ+iEGBj0gVsFm0YWmVkctihMISSxWaw2AFUAApCI4nSrnbG1a71fGSUz9WzBezTFWvb7dO5MkjjMITZykwxjTnzbmkXnrEgAV3wHHwDAA7vhaJiJTUrjces9fFZGc9TLYrGqA9SEM9CcT7sznH5HHpjfFFmaEe4rTa7Y7ncYzvJJe6ZZ7DN7fYaA0GrCHvD4xs4S+yPnGYtCTYn4XySPblNgRGJneKc27cQ0EI4BiQ2T77noAzXyxrTIESGFGd4rP9DONTPHYTzk+3OwxLfxu+he9mQBcpR7h6Px4ylWyIrPfl9bIvJhZJIYA-7zFZoo27QgOB1C5RMsQHaU8UQABaYIQ2gv9G1AuFkmofAoHAnFIKHOwQz0bRtUMcd-j8WwpnuLdTVbdZMMvfMEFsPQQxMeViQmZkLC+f0oiQ5s4XNFNrVtB1sIvPMoIQCIK1BIsmXXWxtFJcZKJbAS934Ltylo8ShysfDHl9PRxjlekrC6Z9BhIBk5MkXpzFBFT+N3DsNIPI8tNdLCr20L0Wmscw5V0e5pMJYwBiI8kwrDRC5gTOEeHQXBckgbTB1uZwQw6RwrEBd9bEcQZYzsRDoiAA */\n context: ({input}) => ({\n client: input.client,\n results: [],\n }),\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'fetch data',\n id: 'fetchData',\n input: ({context}) => ({client: context.client}),\n onDone: {\n actions: assign({results: ({event}) => event.output}),\n target: 'ready',\n },\n onError: {\n target: 'failed',\n },\n },\n },\n ready: {\n initial: 'unknown',\n on: {\n CREATE: {\n actions: 'targetCreate',\n },\n DELETE: {\n actions: 'targetDelete',\n },\n UPDATE: {\n actions: 'targetUpdate',\n },\n },\n states: {\n unknown: {\n always: [\n {target: 'withData', guard: 'hasData'},\n {target: 'withoutData', guard: 'hasNoData'},\n ],\n },\n withData: {\n always: [{target: 'withoutData', guard: 'hasNoData'}],\n },\n withoutData: {\n always: [{target: 'withData', guard: 'hasData'}],\n },\n },\n },\n failed: {\n type: 'final',\n },\n },\n})\n","import {assertEvent, assign, setup} from 'xstate'\n\nimport {type Sanity} from '../types'\n\ntype Context = {\n editDeploymentTarget?: Sanity.DeploymentTarget\n}\n\ntype Event =\n | {type: 'CREATE'}\n | {type: 'CLOSE'}\n | {type: 'EDIT'; deploymentTarget: Sanity.DeploymentTarget}\n\nexport const dialogMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n },\n actions: {\n setEditDeploymentTarget: assign({\n editDeploymentTarget: ({event}) => {\n assertEvent(event, 'EDIT')\n return event.deploymentTarget\n },\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAEwKArCQCcANgAcAdmUbNOhVx0BGLQBoQAT0SmAzApJcXXexoAsW5fbWaFAL4BVmhYeISk5FTUjAAiAJKs3HxIIMKiElIy8ghKqpq6+obGZpY2ivb2zq4e5moeXKZc3kEhGDgExCSQ4nQAMgDyAMqcvDLp4pLSqTn2DSQefn7uyq5aWvZWtgjmTqsuvnU6XMoK9q0goR0RJJgATmDoYjS0gyPJ4yKTWTOIc1wLJZqFZrDZbRBaUwkfZuew6SFcepuILBED4IQQOAyK7hYifDJTbKIAC0GnBCFJFxxnUilDA+O+01AOQ8CnJGxIGn29lMpjUxhcCh0VPauNIPTEDMyTLkiA8PhIxh5Cg8DS8pgM5L5UOalSMah0cP05hFYRptweT3pqQm0qJCHlVSVphVashmvKCDUAN17j0XNMqrUyhRASAA */\n context: {\n editDeploymentTarget: undefined,\n },\n initial: 'idle',\n states: {\n idle: {\n entry: assign({\n editDeploymentTarget: () => undefined,\n }),\n on: {\n CREATE: {\n target: 'create',\n },\n EDIT: {\n actions: 'setEditDeploymentTarget',\n target: 'edit',\n },\n },\n },\n edit: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n create: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n },\n})\n","import {AddIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Text, ToastProvider, Tooltip} from '@sanity/ui'\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query'\nimport {useMachine} from '@xstate/react'\n\nimport {useSanityClient} from './client'\nimport DeploymentTargets from './components/DeploymentTargets'\nimport DialogForm from './components/DialogForm'\nimport StateDebug from './components/StateDebug'\nimport {Z_INDEX_TOAST_PROVIDER} from './constants'\nimport {deploymentTargetListMachine} from './machines/deploymentTargetList'\nimport {dialogMachine} from './machines/dialog'\nimport {type Sanity} from './types'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n gcTime: 0,\n staleTime: 0,\n },\n },\n})\n\nconst Widget = () => {\n const client = useSanityClient()\n\n const [deploymentTargetListState, deploymentTargetListStateTransition] = useMachine(\n deploymentTargetListMachine,\n {input: {client}},\n )\n const [dialogState, dialogStateTransition] = useMachine(dialogMachine)\n\n // Callbacks\n const handleDialogClose = () => {\n dialogStateTransition({type: 'CLOSE'})\n }\n const handleDialogShowCreate = () => {\n dialogStateTransition({type: 'CREATE'})\n }\n const handleDialogShowEdit = (deploymentTarget: Sanity.DeploymentTarget) => {\n dialogStateTransition({type: 'EDIT', deploymentTarget})\n }\n const handleTargetCreate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'CREATE', deploymentTarget})\n }\n const handleTargetDelete = (id: string) => {\n deploymentTargetListStateTransition({type: 'DELETE', id})\n }\n const handleTargetUpdate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'UPDATE', deploymentTarget})\n }\n\n return (\n <ToastProvider zOffset={Z_INDEX_TOAST_PROVIDER}>\n <QueryClientProvider client={queryClient}>\n <Card radius={2} style={{overflow: 'hidden '}}>\n {/* xstate debug */}\n <StateDebug name=\"List\" state={deploymentTargetListState} />\n\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" paddingX={3} paddingY={2}>\n <Text size={5} weight=\"semibold\">\n Vercel deployments\n </Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Create new deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={AddIcon} onClick={handleDialogShowCreate} mode=\"bleed\" />\n </Tooltip>\n </Flex>\n\n <Box>\n {deploymentTargetListState.matches('pending') && (\n <Box paddingX={3} paddingY={4}>\n <Text>Loading...</Text>\n </Box>\n )}\n\n {deploymentTargetListState.matches({ready: 'withoutData'}) && (\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={4}>\n <Text>No deployment targets found.</Text>\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleDialogShowCreate}\n text=\"Create a new target\"\n />\n </Flex>\n )}\n\n {deploymentTargetListState.matches({ready: 'withData'}) && (\n <DeploymentTargets\n items={deploymentTargetListState.context.results}\n onDialogEdit={handleDialogShowEdit}\n />\n )}\n\n {deploymentTargetListState.matches('failed') && (\n <Box paddingX={3} paddingY={4}>\n <Text>\n Failed to retrieve deployment targets. Please check the developer console log for\n more information.\n </Text>\n </Box>\n )}\n </Box>\n </Card>\n\n {/* Dialogs */}\n {dialogState.matches('create') && (\n <DialogForm onClose={handleDialogClose} onCreate={handleTargetCreate} />\n )}\n\n {dialogState.matches('edit') && (\n <DialogForm\n deploymentTarget={dialogState.context.editDeploymentTarget}\n onClose={handleDialogClose}\n onDelete={handleTargetDelete}\n onUpdate={handleTargetUpdate}\n />\n )}\n </QueryClientProvider>\n </ToastProvider>\n )\n}\n\nexport default Widget\n","import {type DashboardWidget, type LayoutConfig} from '@sanity/dashboard'\n// Initialize `javascript-time-ago` locale (required for react-time-ago)\nimport TimeAgo from 'javascript-time-ago'\nimport en from 'javascript-time-ago/locale/en'\n\nimport Widget from './app'\n\nTimeAgo.addDefaultLocale(en)\n\nexport function vercelWidget(config: {layout?: LayoutConfig} = {}): DashboardWidget {\n return {\n name: 'vercel',\n component: Widget,\n layout: config.layout ?? {width: 'full'},\n }\n}\n"],"names":["API_ENDPOINT_DEPLOYMENTS","API_ENDPOINT_ALIASES","API_VERSION","DEPLOYMENT_TARGET_DOCUMENT_TYPE","VERCEL_STATUS_COLORS","BUILDING","CANCELED","ERROR","READY","QUEUED","WIDGET_NAME","Z_INDEX_DIALOG","Z_INDEX_TOAST_PROVIDER","useSanityClient","$","_c","t0","for","apiVersion","useClient","fetcher","deploymentTarget","url","extraParams","params","URLSearchParams","set","projectId","teamId","k","v","entries","append","response","fetch","toString","headers","Authorization","token","ok","Error","json","err","cause","useDeployments","options","fetchUrl","deployParams","deployLimit","String","t1","hash","t2","t3","t4","enabled","t5","queryKey","queryFn","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retry","data","deploymentsData","isFetching","deploymentsIsFetching","isSuccess","deploymentsIsSuccess","error","deploymentsError","refetch","useQuery","aliasParams","Symbol","t6","t7","t8","t9","t10","aliasesData","aliasesIsFetching","aliasesIsSuccess","aliasesError","aliases","deploymentsWithAlias","t11","deployments","map","val","alias","find","a","deploymentId","uid","Object","assign","t12","t13","t14","refreshMachine","setup","types","events","createMachine","initial","states","idle","on","REFRESH","target","refreshing","REFRESHED","refreshed","useCardColor","color","useTheme_v2","border","deployMachine","context","input","actors","deploy","fromPromise","signal","deployHook","res","method","message","statusText","console","id","disabled","feedback","undefined","label","entry","DEPLOY","deploying","exit","invoke","src","onDone","onError","actions","event","success","StateDebug","props","DeployButton","onDeploySuccess","targetName","deployState","deployStateTransition","deployStateInterpreter","useMachine","toast","useToast","matches","isError","type","handleDeploy","push","closable","description","duration","status","title","useEffect","subscription","subscribe","state","value","unsubscribe","position","UploadIcon","StatusDot","backgroundColor","borderRadius","height","width","TableCell","children","colSpan","header","variant","display","cellWidth","bb0","maxWidth","textAlign","borderTop","Deployment","deployment","created","Date","date","commitMessage","meta","githubCommitMessage","commitRef","githubCommitRef","targetUrl","flexShrink","textDecoration","trim","toLowerCase","replace","_temp","creator","username","t15","t16","t17","t18","t","toUpperCase","PlaceholderAvatar","userSelect","PlaceholderText","rows","Array","from","length","_","index","DeploymentPlaceholder","Deployments","refTimeout","useRef","refreshState","refreshStateTransition","current","clearTimeout","setTimeout","cancelRefetch","throwOnError","handleDeploySuccess","useDeepCompareEffect","name","hasFetched","hasDeployments","borderBottom","borderCollapse","tableLayout","_temp2","DeploymentTarget","item","onDialogEdit","EditIcon","DeploymentTargets","items","_id","formMachine","setId","assertEvent","setFormData","formData","setMessage","details","setDocument","document","output","client","create","uuid","_type","patch","commit","delete","CREATE","UPDATE","DELETE","creating","tags","updating","updated","deleting","deleted","sanitizeFormData","keys","reduce","acc","key","constructor","errorIconStyle","red","hex","FormFieldInputLabel","marginRight","FormFieldInputText","forwardRef","ref","placeholder","onChange","onBlur","formSchema","yup","object","shape","string","number","positive","integer","min","max","typeError","required","DialogForm","onClose","onCreate","onDelete","onUpdate","formState","formStateTransition","formStateActorRef","useActor","hasTag","formUpdating","yupResolver","defaultValues","mode","resolver","handleSubmit","register","useForm","errors","isDirty","isValid","sanitizedFormData","toPromise","snapshot","getSnapshot","onSubmit","handleDelete","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","valueAsNumber","t44","t45","t46","t47","sortByTargetName","sort","b","deploymentTargetListMachine","targetCreate","results","targetDelete","filter","targetUpdate","findIndex","updatedResults","guards","hasData","hasNoData","catch","pending","ready","unknown","always","guard","withData","withoutData","failed","dialogMachine","setEditDeploymentTarget","editDeploymentTarget","EDIT","edit","CLOSE","queryClient","QueryClient","defaultOptions","queries","gcTime","staleTime","Widget","deploymentTargetListState","deploymentTargetListStateTransition","dialogState","dialogStateTransition","handleDialogClose","handleDialogShowCreate","handleDialogShowEdit","deploymentTarget_0","handleTargetCreate","handleTargetDelete","deploymentTarget_1","handleTargetUpdate","overflow","AddIcon","TimeAgo","addDefaultLocale","en","vercelWidget","config","component","layout"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/client.ts","../src/utils/fetcher.ts","../src/hooks/useDeployments.ts","../src/machines/refresh.ts","../src/utils/useCardColor.ts","../src/machines/deploy.ts","../src/components/StateDebug/index.tsx","../src/components/DeployButton/index.tsx","../src/components/StatusDot/index.tsx","../src/components/TableCell/index.tsx","../src/components/Deployment/index.tsx","../src/components/PlaceholderAvatar/index.tsx","../src/components/PlaceholderText/index.tsx","../src/components/DeploymentPlaceholder/index.tsx","../src/components/Deployments/index.tsx","../src/components/DeploymentTarget/index.tsx","../src/components/DeploymentTargets/index.tsx","../src/machines/form.ts","../src/utils/sanitizeFormData.ts","../src/components/FormFieldInputLabel/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/DialogForm/index.tsx","../src/machines/deploymentTargetList.ts","../src/machines/dialog.ts","../src/app.tsx","../src/index.ts"],"sourcesContent":["// https://vercel.com/docs/platform/limits\nexport const API_ENDPOINT_DEPLOYMENTS = 'https://api.vercel.com/v5/now/deployments'\nexport const API_ENDPOINT_ALIASES = 'https://api.vercel.com/v3/now/aliases'\n\n// Sanity API version\nexport const API_VERSION = '1'\n\nexport const DEBUG_MODE = false\n\nexport const DEPLOYMENT_TARGET_DOCUMENT_TYPE = 'vercel.deploymentTarget'\n\nexport const VERCEL_STATUS_COLORS = {\n BUILDING: '#f5a623',\n CANCELED: '#ff0000',\n ERROR: '#ff0000',\n READY: '#50e3c2',\n QUEUED: '#333',\n}\n\n// Name displayed in toasts\nexport const WIDGET_NAME = 'Vercel (dashboard)'\n\n// NOTE: Manually set plugin z-index values to be higher than Sanity's header search field\n// (which is currently 500202). Also ensure toasts always sit above dialogs.\nexport const Z_INDEX_DIALOG = 600001\nexport const Z_INDEX_TOAST_PROVIDER = 600002\n","import {type SanityClient, useClient} from 'sanity'\n\nimport {API_VERSION} from './constants'\n\nexport function useSanityClient(): SanityClient {\n return useClient({apiVersion: API_VERSION})\n}\n","import {type Sanity} from '../types'\n\nconst fetcher =\n (deploymentTarget: Sanity.DeploymentTargetConfig) =>\n async (url: string, extraParams?: URLSearchParams) => {\n const params = new URLSearchParams()\n params.set('projectId', deploymentTarget.projectId)\n if (deploymentTarget.teamId) {\n params.set('teamId', deploymentTarget.teamId)\n }\n\n if (extraParams) {\n for (const [k, v] of extraParams.entries()) {\n params.append(k, v)\n }\n }\n\n const response = await fetch(`${url}?${params.toString()}`, {\n headers: {\n Authorization: `Bearer ${deploymentTarget.token}`,\n },\n })\n\n // Manually throw on non-OK responses for react-query\n // https://react-query.tanstack.com/guides/query-functions#usage-with-fetch-and-others-clients-that-do-not-throw-by-default\n if (!response.ok) {\n throw new Error('Response not OK')\n }\n\n try {\n return await response.json()\n } catch (err) {\n throw new Error('Unable to parse response as JSON', {cause: err})\n }\n }\n\nexport default fetcher\n","import {useQuery} from '@tanstack/react-query'\nimport hash from 'object-hash'\n\nimport {API_ENDPOINT_ALIASES, API_ENDPOINT_DEPLOYMENTS} from '../constants'\nimport {type Sanity, type Vercel} from '../types'\nimport fetcher from '../utils/fetcher'\n\ntype Options = {\n enabled?: boolean\n}\n\nconst useDeployments = (deploymentTarget: Sanity.DeploymentTargetConfig, options?: Options) => {\n const fetchUrl = fetcher(deploymentTarget)\n\n // Fetch deployments\n const deployParams = new URLSearchParams()\n deployParams.set('limit', String(deploymentTarget?.deployLimit))\n\n const {\n data: deploymentsData,\n isFetching: deploymentsIsFetching,\n isSuccess: deploymentsIsSuccess,\n error: deploymentsError,\n refetch,\n } = useQuery<{deployments: Vercel.Deployment[]}>({\n queryKey: [hash(deploymentTarget)],\n queryFn: () => fetchUrl(API_ENDPOINT_DEPLOYMENTS, deployParams),\n enabled: options?.enabled ?? true,\n refetchInterval: 20000, // ms\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n refetchOnReconnect: 'always',\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n // Fetch aliases (only if deployments have been retrieved)\n const aliasParams = new URLSearchParams()\n aliasParams.set('limit', '20')\n\n const {\n data: aliasesData,\n isFetching: aliasesIsFetching,\n isSuccess: aliasesIsSuccess,\n error: aliasesError,\n } = useQuery<{\n aliases: Vercel.Alias[]\n pagination: {\n count: number\n next?: number\n prev?: number\n }\n }>({\n queryKey: [hash(deploymentTarget), 'aliases'],\n queryFn: () => fetchUrl(API_ENDPOINT_ALIASES, aliasParams),\n enabled: !!deploymentsData,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n retry: false,\n })\n\n const aliases = aliasesData?.aliases\n\n let deploymentsWithAlias: Vercel.DeploymentWithAlias[] | undefined\n\n if (aliases) {\n deploymentsWithAlias = deploymentsData?.deployments?.map((val: Vercel.DeploymentWithAlias) => {\n const alias = aliases.find((a) => a.deploymentId === val.uid)\n return Object.assign(val, {alias: alias?.alias})\n })\n }\n\n return {\n deployments: deploymentsWithAlias,\n error: aliasesError || deploymentsError,\n isFetching: aliasesIsFetching || deploymentsIsFetching,\n isSuccess: aliasesIsSuccess && deploymentsIsSuccess,\n refetch,\n }\n}\n\nexport default useDeployments\n","import {setup} from 'xstate'\n\ntype Event = {type: 'ERROR'} | {type: 'REFRESH'} | {type: 'REFRESHED'} | {type: 'RETRY'}\n\nconst refreshMachine = setup({\n types: {\n events: {} as Event,\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAJQFEAxBgZQAkBtABgF1FQADgHtYuAC64h+fiAAeiAIwAmAGwkuGrkoAsAZhVKlAVm0KAHABoQAT0QBOJSRN27XFXaMmz2twF9fVmhYeISkAE5gAGYRsCFQ1PS0tADytNx8SCDCohJSMvIIPnYkxhpKXGZ22kY6xla2CAq6CiQudgDsRnYqKroVfe3+gRg4BMQkEdFwcXRMrGz0ACLpMtniktKZBUUlRmUVVTXadTaISrqObUY97QodvWa6QyBBo6ETUTHYkLPM9OwrTJrXKbUDbJTFLjtMzmWraOx3doqeqKMyOeHdXp3BTHXTVZ6vELjMBhMJCMK-eaAwQidZ5LaIY6Q6Gw47wxHI04IGEkDFma5NbTtY7ufwBED4IQQOAyQljIirWkg-KIAC0nIa6oJIyJpHIVEVOQ2KsKShRCDsunUGLcHi8PhU2uC8o+U1iBCghrpoLkZ2uTk0XCq7SRRl0Zg19itXHhIZ85lMEaUTre40mX0gXuVDIQnmKRhZKk6PmaVXN2PUaLsZhj2hUOJU-JTupIJLJYSzxpzeacheLXFL2nNrkrfW8SKFnhDYt8QA */\n initial: 'idle',\n states: {\n idle: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n refreshing: {\n on: {\n ERROR: {\n target: 'error',\n },\n REFRESHED: {\n target: 'refreshed',\n },\n },\n },\n refreshed: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n error: {\n on: {\n REFRESH: {\n target: 'refreshing',\n },\n },\n },\n },\n})\n\nexport default refreshMachine\n","import {useTheme_v2} from '@sanity/ui'\n\nexport function useCardColor(): {border: string} {\n const {color} = useTheme_v2()\n return {border: color.border}\n}\n","import {assign, setup, fromPromise} from 'xstate'\n\nimport {type Vercel} from '../types'\n\ntype Context = {\n deployHook: string\n disabled: boolean\n feedback?: string\n label?: string\n error?: string\n}\n\ntype Event = {type: 'DEPLOY'}\n\ninterface DeployActorInput {\n deployHook: string\n}\n\nexport const deployMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n input: {} as DeployActorInput,\n },\n actors: {\n deploy: fromPromise(async ({input, signal}: {input: DeployActorInput; signal: AbortSignal}) => {\n try {\n if (!input.deployHook) {\n throw new Error('No deployHook URL defined')\n }\n const res = await fetch(input.deployHook, {method: 'POST', signal})\n const data: {error?: Vercel.Error} | null = await res.json()\n if (!res.ok) {\n const errorMessage = data?.error?.message || res.statusText\n throw errorMessage\n }\n } catch (err) {\n if (typeof err === 'string') {\n throw err\n }\n console.error('Unable to deploy with error:', err)\n throw new Error('Please check the developer console for more information', {cause: err})\n }\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QTABwDYHsCeA6AlhOmAMQAiAogAoAyA8gJoDaADALqKiqaz4Au+TADtOIAB6IATCxa4AnADYAHAHYArArUslAZjksNAGhDZEARk3yVmhSxVyHC-QBYAvq+MoMOXF6zZ8ISgSCGEwAiEAN0wAa3C-HwSAoIRA6IBjAEMBYVY2PNFuXhyRJHFENTMzXElFJSUzNTVnWx0FY1MESXVcZzUdM2k1OTUVBoV3TzR-X2mcQOCwACclzCXcDGyAMzWAW1nvPCSF1KjMLJK8grKi-kFS0AkESura5QamlpY2jvMB+QcDkqLH0wxYEw8ICSuFgAFd0uk4LByNR6Mx2IUeHdhKIns1ZN9BtYQVpRnJfl1JM55P1BnY1Ep9CpGpMoXM8MtVksUbRGNcuFiSriKs4CQNurYRgZ7BSGr1ASNupIzEo+kp3JChJgUPAyklMcV7sKEABadomRAmtQAhW2wE6VnQwjEA3Yh7lBDOSQUsxeqyaPoWYbWFSO9kHfwLV1CspPHSSHQ1ZyA1UKJzJlQ+iz+5oKewKWrfNyQ6FwhFI6NG2OINOSXDiypKAxtMyZi1dEE1Qk6L0FpTSUMl8OctaVnHVhC1+uDRvNhStin6XDaHQ9liSXTJiUa1xAA */\n id: 'deploy',\n initial: 'idle',\n context: ({input}) => ({\n disabled: false,\n feedback: undefined,\n label: undefined,\n error: undefined,\n deployHook: input.deployHook,\n }),\n states: {\n idle: {\n entry: assign({\n feedback: () => undefined,\n label: () => 'Deploy',\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n deploying: {\n entry: assign({\n disabled: () => true,\n label: () => 'Deploying',\n }),\n exit: assign({\n disabled: () => false,\n label: () => 'Deploy',\n }),\n invoke: {\n src: 'deploy',\n input: ({context}) => ({deployHook: context.deployHook}),\n onDone: {\n target: 'success',\n },\n onError: {\n target: 'error',\n actions: assign({\n error: ({event}) => {\n if ('error' in event) {\n const {error} = event\n if (typeof error === 'string') {\n return error\n }\n if (error instanceof Error) {\n return error.message\n }\n }\n return 'Unknown error'\n },\n }),\n },\n },\n },\n success: {\n entry: assign({\n feedback: () => 'Successfully started!',\n }),\n exit: assign({\n feedback: () => undefined,\n }),\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n error: {\n on: {\n DEPLOY: {\n target: 'deploying',\n },\n },\n },\n },\n})\n","import {Box, Card, Stack, Text} from '@sanity/ui'\n\nimport {DEBUG_MODE} from '../../constants'\n\ntype Props = {\n name: string\n state: any // TODO: type correctly\n}\n\nconst StateDebug = (props: Props) => {\n const {name, state} = props\n\n if (!DEBUG_MODE) {\n return null\n }\n\n return (\n <Card\n scheme=\"dark\"\n style={{\n backgroundColor: 'rgba(0, 0, 255, 0.9)',\n borderRadius: '3px',\n fontSize: 1,\n fontWeight: 500,\n lineHeight: 'body',\n right: 0,\n opacity: 0.75,\n pointerEvents: 'none',\n position: 'absolute',\n textAlign: 'left',\n top: 0,\n zIndex: 9000,\n }}\n >\n <Box padding={2}>\n <Stack gap={2}>\n <Text size={0}>Name: {name}</Text>\n <Text size={0}>state.value: {JSON.stringify(state.value)}</Text>\n </Stack>\n </Box>\n </Card>\n )\n}\n\nexport default StateDebug\n","import {UploadIcon} from '@sanity/icons'\nimport {Box, Button, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect} from 'react'\n\nimport {WIDGET_NAME} from '../../constants'\nimport {deployMachine} from '../../machines/deploy'\nimport StateDebug from '../StateDebug'\n\ntype Props = {\n deployHook: string\n onDeploySuccess?: () => void\n targetName: string\n}\n\nconst DeployButton = (props: Props) => {\n const {deployHook, onDeploySuccess, targetName} = props\n\n const [deployState, deployStateTransition, deployStateInterpreter] = useMachine(deployMachine, {\n input: {deployHook},\n })\n\n const toast = useToast()\n\n const isError = deployState.matches('error')\n const isSuccess = deployState.matches('success')\n\n // Callbacks\n const handleDeploy = () => {\n deployStateTransition({type: 'DEPLOY'})\n }\n\n // Effects\n useEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to queue deploy for ${targetName}: ${deployState.context.error}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n\n if (isSuccess) {\n toast.push({\n closable: true,\n description: `Deploy queued for ${targetName}`,\n duration: 8000,\n status: 'success',\n title: WIDGET_NAME,\n })\n }\n }, [isError, isSuccess, toast, targetName, deployState.context.error])\n\n useEffect(() => {\n const subscription = deployStateInterpreter.subscribe((state) => {\n if (state.value === 'success') {\n if (onDeploySuccess) {\n onDeploySuccess()\n }\n }\n })\n\n return () => subscription.unsubscribe()\n }, [deployStateInterpreter, onDeploySuccess])\n\n return (\n <Box padding={3} style={{position: 'relative'}}>\n <StateDebug name=\"Deploy\" state={deployState} />\n\n <Button\n disabled={deployState.context.disabled}\n fontSize={1}\n icon={UploadIcon}\n mode=\"ghost\"\n onClick={handleDeploy}\n padding={3}\n text={`${deployState.context.label} ${targetName}`}\n tone=\"default\"\n />\n </Box>\n )\n}\n\nexport default DeployButton\n","import {Box} from '@sanity/ui'\n\nimport {VERCEL_STATUS_COLORS} from '../../constants'\nimport {type Vercel} from '../../types'\n\ntype Props = {\n state: Vercel.DeploymentState\n}\n\nconst StatusDot = ({state}: Props) => (\n <Box\n style={{\n backgroundColor: VERCEL_STATUS_COLORS[state],\n borderRadius: '20px',\n height: '9px',\n width: '9px',\n }}\n />\n)\n\nexport default StatusDot\n","import {Box, Label} from '@sanity/ui'\nimport type {ReactNode} from 'react'\n\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n children: ReactNode\n colSpan?: number\n header?: boolean\n variant?: 'age' | 'branch' | 'creator' | 'state'\n}\n\nconst TableCell = (props: Props) => {\n const {children, colSpan, header, variant} = props\n\n let display: Sanity.BoxDisplay | Sanity.BoxDisplay[] = 'table-cell'\n let cellWidth: string = 'auto'\n\n switch (variant) {\n case 'age':\n cellWidth = '50px'\n break\n case 'branch':\n cellWidth = '300px'\n display = ['none', 'none', 'none', 'table-cell']\n break\n case 'creator':\n cellWidth = '80px'\n break\n case 'state':\n cellWidth = '110px'\n display = ['none', 'none', 'none', 'none', 'table-cell']\n break\n default:\n break\n }\n\n const {border} = useCardColor()\n\n if (header) {\n return (\n <Box\n as=\"th\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={2}\n style={{\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n <Label size={0}>{children}</Label>\n </Box>\n )\n }\n return (\n <Box\n as=\"td\"\n colSpan={colSpan}\n // @ts-expect-error -- local `display` allows 'table-cell', which is not part of @sanity/ui's `BoxDisplay` union\n display={display}\n paddingX={3}\n paddingY={[2, 2, 3]}\n style={{\n borderTop: `1px solid ${border}`,\n maxWidth: cellWidth,\n position: 'relative',\n textAlign: 'left',\n width: cellWidth,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default TableCell\n","import {LinkIcon} from '@sanity/icons'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n// oxlint-disable-next-line import/no-unassigned-import\nimport 'react-time-ago/locale/en'\nimport ReactTimeAgo from 'react-time-ago'\n\nimport {type Vercel} from '../../types'\nimport StatusDot from '../StatusDot'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deployment: Vercel.DeploymentWithAlias\n}\n\nconst Deployment = (props: Props) => {\n const {deployment} = props\n\n const date = useMemo(() => new Date(deployment.created), [deployment.created])\n\n const commitMessage = deployment?.meta?.['githubCommitMessage']\n const commitRef = deployment?.meta?.['githubCommitRef']\n\n const targetUrl = deployment.alias ?? deployment.url\n\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <Flex align=\"center\">\n <Box\n display={['block', 'block', 'block', 'block', 'none']}\n marginRight={3}\n style={{flexShrink: 0}}\n >\n <StatusDot state={deployment.state} />\n </Box>\n\n {targetUrl ? (\n <>\n {/* Alias icon */}\n {deployment.alias && <LinkIcon />}\n\n <Box marginLeft={deployment.alias ? 1 : 0}>\n <Text\n muted={!(deployment.state === 'READY')}\n size={1}\n style={{\n textDecoration:\n deployment.state === 'CANCELED' || deployment.state === 'ERROR'\n ? 'line-through'\n : 'normal',\n }}\n textOverflow=\"ellipsis\"\n >\n {deployment.state === 'READY' ? (\n <a href={`https://${targetUrl}`} rel=\"noopener noreferrer\" target=\"_blank\">\n {targetUrl}\n </a>\n ) : (\n targetUrl\n )}\n </Text>\n </Box>\n </>\n ) : (\n <Text size={1}>Uploading...</Text>\n )}\n </Flex>\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <Flex align=\"center\">\n <StatusDot state={deployment.state} />\n <Box marginLeft={2}>\n <Text size={1}>\n {deployment.state\n .trim()\n .toLowerCase()\n .replace(/^[a-z]/i, (t) => t.toUpperCase())}\n </Text>\n </Box>\n </Flex>\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <Stack gap={2}>\n <Text size={1} textOverflow=\"ellipsis\">\n {commitRef}\n </Text>\n {commitMessage && (\n <Text muted size={1} textOverflow=\"ellipsis\">\n {commitMessage}\n </Text>\n )}\n </Stack>\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <Flex align=\"center\">\n <Text size={1}>\n <ReactTimeAgo date={date} locale=\"en-US\" timeStyle=\"mini\" />\n </Text>\n </Flex>\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex align=\"center\" justify=\"center\">\n <img\n alt={deployment?.creator?.username || 'Deployment creator avatar'}\n draggable={false}\n src={`https://vercel.com/api/www/avatar/${deployment?.creator?.uid}?&s=48`}\n style={{\n borderRadius: '20px',\n height: '20px',\n width: '20px',\n }}\n />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default Deployment\n","import {Box} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\nconst PlaceholderAvatar = () => {\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '20px',\n height: '20px',\n userSelect: 'none',\n width: '20px',\n }}\n />\n )\n}\n\nexport default PlaceholderAvatar\n","import {Box, Stack, Text} from '@sanity/ui'\n\nimport {useCardColor} from '../../utils/useCardColor'\n\ntype Props = {\n rows: number\n}\n\nconst PlaceholderText = (props: Props) => {\n const {rows} = props\n const {border} = useCardColor()\n return (\n <Box\n style={{\n backgroundColor: border,\n borderRadius: '3px',\n userSelect: 'none',\n width: '100%',\n }}\n >\n <Stack gap={2}>\n {Array.from({length: rows}, (_, index) => (\n <Text key={index} size={1}>\n &nbsp;\n </Text>\n ))}\n </Stack>\n </Box>\n )\n}\n\nexport default PlaceholderText\n","import {Flex} from '@sanity/ui'\n\nimport PlaceholderAvatar from '../PlaceholderAvatar'\nimport PlaceholderText from '../PlaceholderText'\nimport TableCell from '../TableCell'\n\nconst DeploymentPlaceholder = () => {\n return (\n <tr>\n {/* Deployment - alias or regular deployment URL */}\n <TableCell>\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* State */}\n <TableCell variant=\"state\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Branch */}\n <TableCell variant=\"branch\">\n <PlaceholderText rows={2} />\n </TableCell>\n\n {/* Age */}\n <TableCell variant=\"age\">\n <PlaceholderText rows={1} />\n </TableCell>\n\n {/* Creator */}\n <TableCell variant=\"creator\">\n <Flex justify=\"center\">\n <PlaceholderAvatar />\n </Flex>\n </TableCell>\n </tr>\n )\n}\n\nexport default DeploymentPlaceholder\n","import {Box, Text, useToast} from '@sanity/ui'\nimport {useMachine} from '@xstate/react'\nimport {useEffect, useRef} from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {WIDGET_NAME} from '../../constants'\nimport useDeployments from '../../hooks/useDeployments'\nimport refreshMachine from '../../machines/refresh'\nimport {type Sanity} from '../../types'\nimport {useCardColor} from '../../utils/useCardColor'\nimport DeployButton from '../DeployButton'\nimport Deployment from '../Deployment'\nimport DeploymentPlaceholder from '../DeploymentPlaceholder'\nimport StateDebug from '../StateDebug'\nimport TableCell from '../TableCell'\n\ntype Props = {\n deploymentTarget: Sanity.DeploymentTargetConfig\n}\n\nconst Deployments = (props: Props) => {\n const {deploymentTarget} = props\n\n // Refs\n const refTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // XState\n const [refreshState, refreshStateTransition] = useMachine(refreshMachine)\n\n // Fetch deployments - disable hook / auto-refetching on error state\n const {deployments, error, isFetching, isSuccess, refetch} = useDeployments(deploymentTarget, {\n enabled: !refreshState.matches('error'),\n })\n\n const toast = useToast()\n const isError = refreshState.matches('error')\n\n const handleDeploySuccess = () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n refTimeout.current = setTimeout(() => {\n void refetch({\n cancelRefetch: true,\n throwOnError: true,\n })\n }, 4000)\n }\n\n useEffect(() => {\n return () => {\n if (refTimeout.current) {\n clearTimeout(refTimeout.current)\n }\n }\n }, [])\n\n useEffect(() => {\n if (error) {\n refreshStateTransition({type: 'ERROR'})\n }\n\n if (isFetching) {\n refreshStateTransition({type: 'REFRESH'})\n }\n\n if (!isFetching && isSuccess) {\n refreshStateTransition({type: 'REFRESHED'})\n }\n }, [error, isFetching, isSuccess, refreshStateTransition])\n\n useDeepCompareEffect(() => {\n if (!refreshState.matches('refreshing')) {\n refreshStateTransition({type: 'REFRESH'})\n }\n }, [deploymentTarget])\n\n useDeepCompareEffect(() => {\n if (isError) {\n toast.push({\n closable: true,\n description: `Unable to fetch deployments for ${deploymentTarget.name}`,\n duration: 8000,\n status: 'error',\n title: WIDGET_NAME,\n })\n }\n }, [deploymentTarget, isError])\n\n const hasFetched = typeof deployments !== 'undefined'\n const hasDeployments = deployments && deployments.length > 0\n\n const {border} = useCardColor()\n return (\n <Box marginTop={3} style={{position: 'relative'}}>\n {/* xstate debug */}\n <StateDebug name=\"Refresh\" state={refreshState} />\n\n {!refreshState.matches('error') && (\n <>\n <Box\n as=\"table\"\n style={{\n borderBottom: `1px solid ${border}`,\n borderCollapse: 'collapse',\n display: 'table',\n tableLayout: 'fixed',\n width: '100%',\n }}\n >\n <Box as=\"thead\" style={{display: 'table-header-group'}}>\n <tr>\n {/* Deployment */}\n <TableCell header>Deployment</TableCell>\n\n {/* State */}\n <TableCell header variant=\"state\">\n State\n </TableCell>\n\n {/* Branch */}\n <TableCell header variant=\"branch\">\n Branch\n </TableCell>\n\n {/* Age */}\n <TableCell header variant=\"age\">\n Age\n </TableCell>\n\n {/* Creator */}\n <TableCell header variant=\"creator\">\n Creator\n </TableCell>\n </tr>\n </Box>\n\n <Box as=\"tbody\" style={{display: 'table-row-group'}}>\n {/* Placeholders */}\n {!deployments &&\n Array.from({length: deploymentTarget.deployLimit}, (_, index) => (\n <DeploymentPlaceholder key={index} />\n ))}\n {/* Deployments */}\n {hasDeployments &&\n deployments?.map((deployment) => (\n <Deployment deployment={deployment} key={deployment.uid} />\n ))}\n </Box>\n </Box>\n\n {/* No results */}\n {hasFetched && !hasDeployments && (\n <Box padding={3} style={{width: '100%'}}>\n <Text muted size={1}>\n No deployments found. Don't forget to specify a valid team ID if your project\n belongs to a team.\n </Text>\n </Box>\n )}\n </>\n )}\n\n {/* Error message */}\n {refreshState.matches('error') && (\n <Box padding={3}>\n <Text muted size={1}>\n Unable to fetch recent deployments. Please check your network and deployment settings.\n </Text>\n </Box>\n )}\n\n {/* Deploy button */}\n {!refreshState.matches('error') && deploymentTarget.deployHook && (\n <Box>\n <DeployButton\n deployHook={deploymentTarget.deployHook}\n onDeploySuccess={handleDeploySuccess}\n targetName={deploymentTarget.name}\n />\n </Box>\n )}\n </Box>\n )\n}\n\nexport default Deployments\n","import {EditIcon} from '@sanity/icons'\nimport {Box, Button, Flex, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\n\nimport {type Sanity} from '../../types'\nimport Deployments from '../Deployments'\n\ntype Props = {\n item: Sanity.DeploymentTarget\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTarget: FC<Props> = (props: Props) => {\n const {item, onDialogEdit} = props\n\n const deploymentTarget: Sanity.DeploymentTargetConfig = {\n deployHook: item.deployHook,\n deployLimit: item.deployLimit,\n name: item.name,\n projectId: item.projectId,\n teamId: item.teamId,\n token: item.token,\n }\n\n return (\n <Box style={{position: 'relative'}}>\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" marginTop={2} paddingX={3}>\n <Text size={2}>{item.name}</Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Edit deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={EditIcon} mode=\"bleed\" onClick={() => onDialogEdit(item)} />\n </Tooltip>\n </Flex>\n\n {/* Content */}\n <Deployments deploymentTarget={deploymentTarget} />\n </Box>\n )\n}\n\nexport default DeploymentTarget\n","import {Stack} from '@sanity/ui'\n\nimport {type Sanity} from '../../types'\nimport DeploymentTarget from '../DeploymentTarget'\n\ntype Props = {\n items: Sanity.DeploymentTarget[]\n onDialogEdit: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\nconst DeploymentTargets = (props: Props) => {\n const {items, onDialogEdit} = props\n\n return (\n <Stack gap={5}>\n {items?.map((item) => (\n <DeploymentTarget item={item} key={item._id} onDialogEdit={onDialogEdit} />\n ))}\n </Stack>\n )\n}\n\nexport default DeploymentTargets\n","import {uuid} from '@sanity/uuid'\nimport type {SanityClient} from 'sanity'\nimport {assertEvent, assign, fromPromise, setup} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport type {Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n document?: Sanity.DeploymentTarget\n id?: string\n formData?: Record<string, any>\n message: string\n}\n\ntype Event =\n | {type: 'CREATE'; formData: Record<string, any>}\n | {type: 'UPDATE'; id: string; formData: Record<string, any>}\n | {type: 'DELETE'; id: string}\n\ninterface Input {\n client: SanityClient\n}\n\nexport const formMachine = setup({\n types: {} as {\n children: {\n createDocumentActor: 'create document'\n updateDocumentActor: 'update document'\n deleteDocumentActor: 'delete document'\n }\n context: Context\n events: Event\n input: Input\n tags: 'busy'\n },\n actions: {\n setId: assign({\n id: ({event}) => {\n assertEvent(event, ['UPDATE', 'DELETE'])\n return event.id\n },\n }),\n setFormData: assign({\n formData: ({event}) => {\n assertEvent(event, ['CREATE', 'UPDATE'])\n return event.formData\n },\n }),\n setMessage: assign({\n message: ({event}) => {\n if (\n 'data' in event &&\n event.data &&\n typeof event.data === 'object' &&\n 'details' in event.data &&\n event.data.details &&\n typeof event.data.details === 'object' &&\n 'description' in event.data.details\n ) {\n return event.data.details.description as string\n }\n return 'An error occurred'\n },\n }),\n setDocument: assign({\n document: ({event}) => {\n // @ts-expect-error - fix typings later\n return event.output\n },\n }),\n },\n actors: {\n 'create document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'formData'>>}) => {\n return input.client.create({\n _id: `vercel.${uuid()}`,\n _type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n ...input.formData,\n })\n },\n ),\n 'update document': fromPromise(\n ({input}: {input: Required<Pick<Context, 'client' | 'id' | 'formData'>>}) => {\n return input.client.patch(input.id).set(input.formData).commit()\n },\n ),\n 'delete document': fromPromise(({input}: {input: Required<Pick<Context, 'client' | 'id'>>}) => {\n return input.client.delete(input.id)\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAIwBmAGwkuGjQFYALAE4AHACYdWgwYA0IAJ6IjKgOwkdXFUYVa9h-Ua5KAvv5WaFh4hKTkVNQAqgAKACJsnLwywqISUjLyCMpqmtr6xqbmVrYIBgokWvlGWkpaCgZeKoHBGDgExGSUNPGMADKM7Nx8SCBp4pLSY9m56vm6hiZmljaIOipqdXpcDk1aWiYqBlqtICEd4SSYAE5g6BL4UNQQUmBk+ABuQgDW77f3MRgeJCTAAV1QYHwYmYmDEQhuI1SIkmmRmiGOShIDiUOh0SiaCgUegcDj0pTsjhI5iMewUpPsTSMZwuYS6AIeBGeYBuNwRJAEFAeADMEahrncHsDQRCoTC4QikWMJhlpqBspjsbj8YTiaTyWsEKouNT6noiX5zUpiQEgud2mzSGCBBBOU8Xm8Pt8-iRna6gSDwZDobD4YiUsqUaqshiDFicXiCea9WSKeVKiSVIclEYlIY-BUWQ7Ok6XW7ubz+YKRWLfWWAzLg-Kw0rBFGpjGEJqEzrkyTU4b6ToSHojHos7VXEc6kXQiWSBAwFRHs9XoQvb93ovl9Kg3LQ4qI230h30V241rE7r+wayro1A4dO4VHotA5fPTTnbWfPt2AV9QPJ8jcApCmIoo3OKf4NnuIYKuGozHqiapyLG8bakmRI3mmpjxk0XAuEoXAHI+DgtGc+BCIu8BjD+4TIieaLqogAC0Khpmxs6XF0kRgAxyGdk+aYKLSVR7Fweg6A4IkGFwChcY6EqAly-HRmeY7DnSY5GHGL4qFwRhpjpJpmriDjVMRLgGAp84ckCECqaezEIHoObUuZuwKH4xGPgoRnmCQpmOAcqhmPJ37Flcfrlo5TGoQgY4mgYHkeAS+iqH5hqSc4dSuCo+I6SoSjvjZUX1pAsUodkrlGO51TSd5b46JlZRebVuG7IcjRmA05FtHOVzQSpkaMVVdivs4CibHGxg6biSg4ZsJD2AccaFEVGwOKVXTQRVI0CWeNV1Z5jW+WmujDj4HjmMRnhEttpBAQilWdkdyX1V5RFNS1iAEpU1pHER9JWjogSBEAA */\n context: ({input}) => ({\n client: input.client,\n formData: {},\n message: '',\n }),\n initial: 'idle',\n states: {\n idle: {\n on: {\n CREATE: {\n actions: ['setFormData'],\n target: 'creating',\n },\n UPDATE: {\n actions: ['setId', 'setFormData'],\n target: 'updating',\n },\n DELETE: {\n actions: 'setId',\n target: 'deleting',\n },\n },\n },\n creating: {\n tags: ['busy'],\n invoke: {\n src: 'create document',\n id: 'createDocumentActor',\n input: ({context}) => ({client: context.client, formData: context.formData!}),\n onDone: {actions: 'setDocument', target: 'created'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n created: {type: 'final'},\n updating: {\n tags: ['busy'],\n invoke: {\n src: 'update document',\n id: 'updateDocumentActor',\n input: ({context}) => ({\n client: context.client,\n id: context.id!,\n formData: context.formData!,\n }),\n onDone: {actions: 'setDocument', target: 'updated'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n updated: {type: 'final'},\n deleting: {\n tags: ['busy'],\n invoke: {\n src: 'delete document',\n id: 'deleteDocumentActor',\n input: ({context}) => ({client: context.client, id: context.id!}),\n onDone: {target: 'deleted'},\n onError: {actions: 'setMessage', target: 'error'},\n },\n },\n deleted: {type: 'final'},\n error: {type: 'final'},\n },\n})\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fields\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n return Object.keys(formData).reduce((acc: FormData, key) => {\n const val = formData[key]\n\n // TODO: refactor\n if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n acc[key] = sanitizeFormData(val)\n } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n acc[key] = null\n } else if (typeof val === 'string' && val) {\n acc[key] = formData[key].trim()\n } else {\n acc[key] = formData[key]\n }\n\n return acc\n }, {})\n}\n\nexport default sanitizeFormData\n","import {red} from '@sanity/color'\nimport {ErrorOutlineIcon} from '@sanity/icons'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport type {FC} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\ntype Props = {\n description?: string\n error?: FieldError\n label: string\n name: string\n}\n\nconst errorIconStyle = {color: red[500].hex}\n\nconst FormFieldInputLabel: FC<Props> = (props: Props) => {\n const {description, error, label, name} = props\n\n return (\n <Box marginBottom={3}>\n {/* Label */}\n <Inline gap={2}>\n <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n {label}\n </Text>\n\n {/* Error icon + tooltip */}\n {error && (\n <Text size={1}>\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n <ErrorOutlineIcon style={{...errorIconStyle, marginRight: '0.1em'}} />\n {error.message}\n </Text>\n </Box>\n }\n fallbackPlacements={['top', 'left']}\n placement=\"right\"\n portal\n >\n <ErrorOutlineIcon style={errorIconStyle} />\n </Tooltip>\n </Text>\n )}\n </Inline>\n\n {/* Description */}\n {description && (\n <Box marginY={3}>\n <Text as=\"p\" muted size={1}>\n {description}\n </Text>\n </Box>\n )}\n </Box>\n )\n}\n\nexport default FormFieldInputLabel\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, forwardRef} from 'react'\nimport {type FieldError} from 'react-hook-form'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n description?: string\n disabled?: boolean\n error?: FieldError\n label: string\n name: string\n placeholder?: string\n value?: string\n onChange?: ChangeEventHandler<HTMLInputElement>\n onBlur?: FocusEventHandler<HTMLInputElement>\n}\n\nconst FormFieldInputText = forwardRef<HTMLInputElement, Props>((props: Props, ref) => {\n const {description, disabled, error, label, name, placeholder, value, onChange, onBlur} = props\n\n return (\n <Box>\n {/* Label */}\n <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n {/* Input */}\n <TextInput\n autoComplete=\"off\"\n autoFocus\n defaultValue={value}\n disabled={disabled}\n id={name}\n name={name}\n placeholder={placeholder}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n />\n </Box>\n )\n})\n\nexport default FormFieldInputText\n","import {yupResolver} from '@hookform/resolvers/yup'\nimport {Box, Button, Dialog, Flex, Stack, useToast} from '@sanity/ui'\nimport {useActor} from '@xstate/react'\nimport {type FC, useEffect} from 'react'\nimport {useForm} from 'react-hook-form'\nimport {toPromise} from 'xstate'\nimport * as yup from 'yup'\n\nimport {useSanityClient} from '../../client'\nimport {Z_INDEX_DIALOG} from '../../constants'\nimport {formMachine} from '../../machines/form'\nimport {type Sanity} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport FormFieldInputText from '../FormFieldInputText'\n\ntype Props = {\n deploymentTarget?: Sanity.DeploymentTarget\n onClose: () => void\n onCreate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n onDelete?: (id: string) => void\n onUpdate?: (deploymentTarget: Sanity.DeploymentTarget) => void\n}\n\ntype FormData = yup.InferType<typeof formSchema>\n\nconst formSchema = yup.object().shape({\n deployHook: yup.string().url('Deploy hook must be a valid URL'),\n deployLimit: yup\n .number()\n .positive()\n .integer()\n .min(1, 'Deploy limit must no less than 1')\n .max(15, 'Deploy limit must no higher than 15')\n .typeError('Deploy limit must be a number')\n .required('Deploy limit must be a positive integer between 1 and 15'),\n name: yup.string().required('Name cannot be empty'),\n projectId: yup.string().required('Vercel Project ID cannot be empty'),\n teamId: yup.string(),\n token: yup.string().required('Vercel Account Token cannot be empty'),\n})\n\nconst DialogForm: FC<Props> = (props: Props) => {\n const {deploymentTarget, onClose, onCreate, onDelete, onUpdate} = props\n const client = useSanityClient()\n const toast = useToast()\n\n const [formState, formStateTransition, formStateActorRef] = useActor(formMachine, {\n input: {client},\n })\n\n const formUpdating = formState.hasTag('busy')\n\n // react-hook-form v7\n const {\n formState: {errors, isDirty, isValid},\n handleSubmit,\n register,\n } = useForm<FormData>({\n // @ts-expect-error - fix typings later\n defaultValues: {\n deployHook: deploymentTarget?.deployHook || '',\n deployLimit: deploymentTarget?.deployLimit || 5,\n name: deploymentTarget?.name || '',\n projectId: deploymentTarget?.projectId || '',\n teamId: deploymentTarget?.teamId || '',\n token: deploymentTarget?.token || '',\n },\n mode: 'onChange',\n resolver: yupResolver(formSchema),\n })\n\n /**\n * Handle errors and reaching the done state\n */\n useEffect(() => {\n if (formState.matches('error')) {\n toast.push({\n status: 'error',\n title: formState.context.message || 'An error occurred',\n })\n }\n /**\n * If the machine is done it means it reached updated, created, deleted or error state.\n * We don't care which one, we just want to close the dialog\n */\n if (formState.status === 'done') {\n onClose()\n }\n }, [formState, onClose, toast])\n\n // Callbacks\n // - submit react-hook-form\n const onSubmit = async (formData: FormData) => {\n const sanitizedFormData = sanitizeFormData(formData)\n if (deploymentTarget) {\n formStateTransition({type: 'UPDATE', id: deploymentTarget._id, formData: sanitizedFormData})\n } else {\n formStateTransition({type: 'CREATE', formData: sanitizedFormData})\n }\n await toPromise(formStateActorRef)\n const snapshot = formStateActorRef.getSnapshot()\n const {document} = snapshot.context\n if (!document) return\n if (snapshot.matches('created')) {\n onCreate?.(document)\n } else if (snapshot.matches('updated')) {\n onUpdate?.(document)\n }\n }\n\n const handleDelete = async () => {\n if (!deploymentTarget) {\n return\n }\n const id = deploymentTarget._id\n formStateTransition({type: 'DELETE', id})\n await toPromise(formStateActorRef)\n if (formStateActorRef.getSnapshot().matches('deleted')) {\n onDelete?.(id)\n }\n }\n\n return (\n <Dialog\n footer={\n <Box padding={3}>\n <Flex justify={deploymentTarget ? 'space-between' : 'flex-end'}>\n {/* Delete button */}\n {deploymentTarget && (\n <Button\n loading={formState.matches('deleting')}\n disabled={formUpdating}\n fontSize={1}\n mode=\"bleed\"\n onClick={handleDelete}\n text=\"Delete\"\n tone=\"critical\"\n />\n )}\n\n {/* Submit button */}\n <Button\n loading={formState.matches('creating') || formState.matches('updating')}\n disabled={!isDirty || !isValid}\n fontSize={1}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onClick={handleSubmit(onSubmit)}\n text={deploymentTarget ? 'Update and close' : 'Create'}\n tone=\"primary\"\n />\n </Flex>\n </Box>\n }\n header={`${deploymentTarget ? 'Edit' : 'Create'} deployment target`}\n id=\"create\"\n onClose={onClose}\n width={1}\n zOffset={Z_INDEX_DIALOG}\n >\n {/* We reverse direction to ensure that inline links dont autofocus before other form elements */}\n <Box\n as=\"form\"\n padding={4}\n // @ts-expect-error - yup 0.32 schema types do not line up with @hookform/resolvers, fix typings later\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Hidden button to enable enter key submissions */}\n <button aria-label=\"Submit\" style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n {/* Form fields */}\n <Stack gap={5}>\n {/* Title */}\n <FormFieldInputText\n disabled={formUpdating}\n description=\"Name displayed in this plugin (e.g. production, staging)\"\n error={errors?.name}\n label=\"Name\"\n // @ts-expect-error - fix typings later\n {...register('name')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.token}\n label=\"Vercel Account Token\"\n // @ts-expect-error - fix typings later\n {...register('token')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.projectId}\n label=\"Vercel Project ID\"\n // @ts-expect-error - fix typings later\n {...register('projectId')}\n />\n\n <FormFieldInputText\n description=\"Required only if your project is owned by a team account\"\n disabled={formUpdating}\n error={errors?.teamId}\n label=\"Vercel Team ID (optional)\"\n // @ts-expect-error - fix typings later\n {...register('teamId')}\n />\n\n <FormFieldInputText\n description=\"Enter a valid deploy hook URL to enable manual deploys\"\n disabled={formUpdating}\n error={errors?.deployHook}\n label=\"Vercel Deploy Hook (optional)\"\n // @ts-expect-error - fix typings later\n {...register('deployHook')}\n />\n\n <FormFieldInputText\n disabled={formUpdating}\n error={errors?.deployLimit}\n label=\"Number of deploys to display\"\n // @ts-expect-error - fix typings later\n {...register('deployLimit', {valueAsNumber: true})}\n />\n </Stack>\n </Box>\n </Dialog>\n )\n}\n\nexport default DialogForm\n","import type {SanityClient} from 'sanity'\nimport {assign, setup, fromPromise, assertEvent} from 'xstate'\n\nimport {DEPLOYMENT_TARGET_DOCUMENT_TYPE} from '../constants'\nimport {type Sanity} from '../types'\n\ntype Context = {\n client: SanityClient\n results: Sanity.DeploymentTarget[] // TODO: type correctly\n}\n\ntype Event =\n | {type: 'CLOSE'}\n | {type: 'CREATE'; deploymentTarget: Sanity.DeploymentTarget}\n | {type: 'DELETE'; id: string}\n | {type: 'FETCH'}\n | {type: 'UPDATE'; deploymentTarget: Sanity.DeploymentTarget}\n\ninterface Input {\n client: SanityClient\n}\n\nconst sortByTargetName = (items: Sanity.DeploymentTarget[]) => {\n return items.sort((a, b) => {\n if (a.name > b.name) {\n return 1\n }\n if (a.name < b.name) {\n return -1\n }\n return 0\n })\n}\n\nexport const deploymentTargetListMachine = setup({\n types: {} as {\n children: {fetchData: 'fetch data'}\n context: Context\n events: Event\n input: Input\n },\n actions: {\n targetCreate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'CREATE')\n return sortByTargetName([...context.results, event.deploymentTarget])\n },\n }),\n targetDelete: assign({\n results: ({context, event}) => {\n assertEvent(event, 'DELETE')\n return context.results.filter((target) => target._id !== event.id)\n },\n }),\n targetUpdate: assign({\n results: ({context, event}) => {\n assertEvent(event, 'UPDATE')\n const {deploymentTarget} = event\n const index = context.results.findIndex((target) => target._id === deploymentTarget._id)\n const updatedResults = Object.assign([], context.results, {\n [index]: deploymentTarget,\n })\n return sortByTargetName(updatedResults)\n },\n }),\n },\n guards: {\n hasData: ({context}) => {\n return context?.results?.length > 0\n },\n hasNoData: ({context}) => {\n return context?.results?.length === 0\n },\n },\n actors: {\n 'fetch data': fromPromise(\n ({input, signal}: {input: {client: SanityClient}; signal: AbortSignal}) => {\n return input.client\n .fetch<Sanity.DeploymentTarget[]>(\n '*[_type == $type] | order(name asc)',\n {\n type: DEPLOYMENT_TARGET_DOCUMENT_TYPE,\n },\n {signal},\n )\n .catch((error) => {\n if (error instanceof Error && error.name === 'AbortError') {\n return []\n }\n console.error('Failed to fetch deployment targets', error)\n throw error\n })\n },\n ),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOgAcx8ICoBiCAe0JIIDcGBrMEgMzABccAEXT90AbQAMAXUSgyDWLn64mckAA9EAZkkBOEgHYAjAA5DAFgBsFgEwnJAVkMAaEAE9Ep4yUeT-klbGesbaoYaGAL6RbmhYeISkFFQ0tGAATukM6eQANqI82ai8AsKiEjLqCkoqakiaOvpGZpY29sZOrh6IxpYkFo5h2oaOpnqOxraSFtGxGDgExCTpYOgQ7rQAwgBKAKIAggAqu1Ky9dXKqvjqWggWHSS9eoaS9ibao6aObp4IVh8kL56OzGII2PT-WYgOILRLLVbrWhCXYAGV2x1OVUUlzqoFu90kRm8tlM2gsL1eJJ+iEGBj0gVsFm0YWmVkctihMISSxWaw2AFUAApCI4nSrnbG1a71fGSUz9WzBezTFWvb7dO5MkjjMITZykwxjTnzbmkXnrEgAV3wHHwDAA7vhaJiJTUrjces9fFZGc9TLYrGqA9SEM9CcT7sznH5HHpjfFFmaEe4rTa7Y7ncYzvJJe6ZZ7DN7fYaA0GrCHvD4xs4S+yPnGYtCTYn4XySPblNgRGJneKc27cQ0EI4BiQ2T77noAzXyxrTIESGFGd4rP9DONTPHYTzk+3OwxLfxu+he9mQBcpR7h6Px4ylWyIrPfl9bIvJhZJIYA-7zFZoo27QgOB1C5RMsQHaU8UQABaYIQ2gv9G1AuFkmofAoHAnFIKHOwQz0bRtUMcd-j8WwpnuLdTVbdZMMvfMEFsPQQxMeViQmZkLC+f0oiQ5s4XNFNrVtB1sIvPMoIQCIK1BIsmXXWxtFJcZKJbAS934Ltylo8ShysfDHl9PRxjlekrC6Z9BhIBk5MkXpzFBFT+N3DsNIPI8tNdLCr20L0Wmscw5V0e5pMJYwBiI8kwrDRC5gTOEeHQXBckgbTB1uZwQw6RwrEBd9bEcQZYzsRDoiAA */\n context: ({input}) => ({\n client: input.client,\n results: [],\n }),\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'fetch data',\n id: 'fetchData',\n input: ({context}) => ({client: context.client}),\n onDone: {\n actions: assign({results: ({event}) => event.output}),\n target: 'ready',\n },\n onError: {\n target: 'failed',\n },\n },\n },\n ready: {\n initial: 'unknown',\n on: {\n CREATE: {\n actions: 'targetCreate',\n },\n DELETE: {\n actions: 'targetDelete',\n },\n UPDATE: {\n actions: 'targetUpdate',\n },\n },\n states: {\n unknown: {\n always: [\n {target: 'withData', guard: 'hasData'},\n {target: 'withoutData', guard: 'hasNoData'},\n ],\n },\n withData: {\n always: [{target: 'withoutData', guard: 'hasNoData'}],\n },\n withoutData: {\n always: [{target: 'withData', guard: 'hasData'}],\n },\n },\n },\n failed: {\n type: 'final',\n },\n },\n})\n","import {assertEvent, assign, setup} from 'xstate'\n\nimport {type Sanity} from '../types'\n\ntype Context = {\n editDeploymentTarget?: Sanity.DeploymentTarget\n}\n\ntype Event =\n | {type: 'CREATE'}\n | {type: 'CLOSE'}\n | {type: 'EDIT'; deploymentTarget: Sanity.DeploymentTarget}\n\nexport const dialogMachine = setup({\n types: {\n context: {} as Context,\n events: {} as Event,\n },\n actions: {\n setEditDeploymentTarget: assign({\n editDeploymentTarget: ({event}) => {\n assertEvent(event, 'EDIT')\n return event.deploymentTarget\n },\n }),\n },\n}).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QAoC2BDAxgCwJYDswBKAOlwgBswBiAYQCUBRAQQBVGBtABgF1FQADgHtYuAC64h+fiAAeiAEwKArCQCcANgAcAdmUbNOhVx0BGLQBoQAT0SmAzApJcXXexoAsW5fbWaFAL4BVmhYeISk5FTUjAAiAJKs3HxIIMKiElIy8ghKqpq6+obGZpY2ivb2zq4e5moeXKZc3kEhGDgExCSQ4nQAMgDyAMqcvDLp4pLSqTn2DSQefn7uyq5aWvZWtgjmTqsuvnU6XMoK9q0goR0RJJgATmDoYjS0gyPJ4yKTWTOIc1wLJZqFZrDZbRBaUwkfZuew6SFcepuILBED4IQQOAyK7hYifDJTbKIAC0GnBCFJFxxnUilDA+O+01AOQ8CnJGxIGn29lMpjUxhcCh0VPauNIPTEDMyTLkiA8PhIxh5Cg8DS8pgM5L5UOalSMah0cP05hFYRptweT3pqQm0qJCHlVSVphVashmvKCDUAN17j0XNMqrUyhRASAA */\n context: {\n editDeploymentTarget: undefined,\n },\n initial: 'idle',\n states: {\n idle: {\n entry: assign({\n editDeploymentTarget: () => undefined,\n }),\n on: {\n CREATE: {\n target: 'create',\n },\n EDIT: {\n actions: 'setEditDeploymentTarget',\n target: 'edit',\n },\n },\n },\n edit: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n create: {\n on: {\n CLOSE: {\n target: 'idle',\n },\n },\n },\n },\n})\n","import {AddIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Text, ToastProvider, Tooltip} from '@sanity/ui'\nimport {QueryClient, QueryClientProvider} from '@tanstack/react-query'\nimport {useMachine} from '@xstate/react'\n\nimport {useSanityClient} from './client'\nimport DeploymentTargets from './components/DeploymentTargets'\nimport DialogForm from './components/DialogForm'\nimport StateDebug from './components/StateDebug'\nimport {Z_INDEX_TOAST_PROVIDER} from './constants'\nimport {deploymentTargetListMachine} from './machines/deploymentTargetList'\nimport {dialogMachine} from './machines/dialog'\nimport {type Sanity} from './types'\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n gcTime: 0,\n staleTime: 0,\n },\n },\n})\n\nconst Widget = () => {\n const client = useSanityClient()\n\n const [deploymentTargetListState, deploymentTargetListStateTransition] = useMachine(\n deploymentTargetListMachine,\n {input: {client}},\n )\n const [dialogState, dialogStateTransition] = useMachine(dialogMachine)\n\n // Callbacks\n const handleDialogClose = () => {\n dialogStateTransition({type: 'CLOSE'})\n }\n const handleDialogShowCreate = () => {\n dialogStateTransition({type: 'CREATE'})\n }\n const handleDialogShowEdit = (deploymentTarget: Sanity.DeploymentTarget) => {\n dialogStateTransition({type: 'EDIT', deploymentTarget})\n }\n const handleTargetCreate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'CREATE', deploymentTarget})\n }\n const handleTargetDelete = (id: string) => {\n deploymentTargetListStateTransition({type: 'DELETE', id})\n }\n const handleTargetUpdate = (deploymentTarget: Sanity.DeploymentTarget) => {\n deploymentTargetListStateTransition({type: 'UPDATE', deploymentTarget})\n }\n\n return (\n <ToastProvider zOffset={Z_INDEX_TOAST_PROVIDER}>\n <QueryClientProvider client={queryClient}>\n <Card radius={2} style={{overflow: 'hidden '}}>\n {/* xstate debug */}\n <StateDebug name=\"List\" state={deploymentTargetListState} />\n\n {/* Header */}\n <Flex align=\"center\" justify=\"space-between\" paddingX={3} paddingY={2}>\n <Text size={5} weight=\"semibold\">\n Vercel deployments\n </Text>\n\n <Tooltip\n content={\n <Box padding={2}>\n <Text muted size={1}>\n Create new deployment target\n </Text>\n </Box>\n }\n placement=\"left\"\n >\n <Button fontSize={1} icon={AddIcon} onClick={handleDialogShowCreate} mode=\"bleed\" />\n </Tooltip>\n </Flex>\n\n <Box>\n {deploymentTargetListState.matches('pending') && (\n <Box paddingX={3} paddingY={4}>\n <Text>Loading...</Text>\n </Box>\n )}\n\n {deploymentTargetListState.matches({ready: 'withoutData'}) && (\n <Flex align=\"center\" gap={3} paddingX={3} paddingY={4}>\n <Text>No deployment targets found.</Text>\n <Button\n fontSize={1}\n mode=\"ghost\"\n onClick={handleDialogShowCreate}\n text=\"Create a new target\"\n />\n </Flex>\n )}\n\n {deploymentTargetListState.matches({ready: 'withData'}) && (\n <DeploymentTargets\n items={deploymentTargetListState.context.results}\n onDialogEdit={handleDialogShowEdit}\n />\n )}\n\n {deploymentTargetListState.matches('failed') && (\n <Box paddingX={3} paddingY={4}>\n <Text>\n Failed to retrieve deployment targets. Please check the developer console log for\n more information.\n </Text>\n </Box>\n )}\n </Box>\n </Card>\n\n {/* Dialogs */}\n {dialogState.matches('create') && (\n <DialogForm onClose={handleDialogClose} onCreate={handleTargetCreate} />\n )}\n\n {dialogState.matches('edit') && (\n <DialogForm\n deploymentTarget={dialogState.context.editDeploymentTarget}\n onClose={handleDialogClose}\n onDelete={handleTargetDelete}\n onUpdate={handleTargetUpdate}\n />\n )}\n </QueryClientProvider>\n </ToastProvider>\n )\n}\n\nexport default Widget\n","import {type DashboardWidget, type LayoutConfig} from '@sanity/dashboard'\n\nimport Widget from './app'\n\nexport function vercelWidget(config: {layout?: LayoutConfig} = {}): DashboardWidget {\n return {\n name: 'vercel',\n component: Widget,\n layout: config.layout ?? {width: 'full'},\n }\n}\n"],"names":["API_ENDPOINT_DEPLOYMENTS","API_ENDPOINT_ALIASES","API_VERSION","DEPLOYMENT_TARGET_DOCUMENT_TYPE","VERCEL_STATUS_COLORS","BUILDING","CANCELED","ERROR","READY","QUEUED","WIDGET_NAME","Z_INDEX_DIALOG","Z_INDEX_TOAST_PROVIDER","useSanityClient","$","_c","t0","for","apiVersion","useClient","fetcher","deploymentTarget","url","extraParams","params","URLSearchParams","set","projectId","teamId","k","v","entries","append","response","fetch","toString","headers","Authorization","token","ok","Error","json","err","cause","useDeployments","options","fetchUrl","deployParams","deployLimit","String","t1","hash","t2","t3","t4","enabled","t5","queryKey","queryFn","refetchInterval","refetchIntervalInBackground","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retry","data","deploymentsData","isFetching","deploymentsIsFetching","isSuccess","deploymentsIsSuccess","error","deploymentsError","refetch","useQuery","aliasParams","Symbol","t6","t7","t8","t9","t10","aliasesData","aliasesIsFetching","aliasesIsSuccess","aliasesError","aliases","deploymentsWithAlias","t11","deployments","map","val","alias","find","a","deploymentId","uid","Object","assign","t12","t13","t14","refreshMachine","setup","types","events","createMachine","initial","states","idle","on","REFRESH","target","refreshing","REFRESHED","refreshed","useCardColor","color","useTheme_v2","border","deployMachine","context","input","actors","deploy","fromPromise","signal","deployHook","res","method","message","statusText","console","id","disabled","feedback","undefined","label","entry","DEPLOY","deploying","exit","invoke","src","onDone","onError","actions","event","success","StateDebug","props","DeployButton","onDeploySuccess","targetName","deployState","deployStateTransition","deployStateInterpreter","useMachine","toast","useToast","matches","isError","type","handleDeploy","push","closable","description","duration","status","title","useEffect","subscription","subscribe","state","value","unsubscribe","position","UploadIcon","StatusDot","backgroundColor","borderRadius","height","width","TableCell","children","colSpan","header","variant","display","cellWidth","bb0","maxWidth","textAlign","borderTop","Deployment","deployment","created","Date","date","commitMessage","meta","githubCommitMessage","commitRef","githubCommitRef","targetUrl","flexShrink","textDecoration","trim","toLowerCase","replace","_temp","creator","username","t15","t16","t17","t18","t","toUpperCase","PlaceholderAvatar","userSelect","PlaceholderText","rows","Array","from","length","_","index","DeploymentPlaceholder","Deployments","refTimeout","useRef","refreshState","refreshStateTransition","current","clearTimeout","setTimeout","cancelRefetch","throwOnError","handleDeploySuccess","useDeepCompareEffect","name","hasFetched","hasDeployments","borderBottom","borderCollapse","tableLayout","_temp2","DeploymentTarget","item","onDialogEdit","EditIcon","DeploymentTargets","items","_id","formMachine","setId","assertEvent","setFormData","formData","setMessage","details","setDocument","document","output","client","create","uuid","_type","patch","commit","delete","CREATE","UPDATE","DELETE","creating","tags","updating","updated","deleting","deleted","sanitizeFormData","keys","reduce","acc","key","constructor","errorIconStyle","red","hex","FormFieldInputLabel","marginRight","FormFieldInputText","forwardRef","ref","placeholder","onChange","onBlur","formSchema","yup","object","shape","string","number","positive","integer","min","max","typeError","required","DialogForm","onClose","onCreate","onDelete","onUpdate","formState","formStateTransition","formStateActorRef","useActor","hasTag","formUpdating","yupResolver","defaultValues","mode","resolver","handleSubmit","register","useForm","errors","isDirty","isValid","sanitizedFormData","toPromise","snapshot","getSnapshot","onSubmit","handleDelete","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","valueAsNumber","t44","t45","t46","t47","sortByTargetName","sort","b","deploymentTargetListMachine","targetCreate","results","targetDelete","filter","targetUpdate","findIndex","updatedResults","guards","hasData","hasNoData","catch","pending","ready","unknown","always","guard","withData","withoutData","failed","dialogMachine","setEditDeploymentTarget","editDeploymentTarget","EDIT","edit","CLOSE","queryClient","QueryClient","defaultOptions","queries","gcTime","staleTime","Widget","deploymentTargetListState","deploymentTargetListStateTransition","dialogState","dialogStateTransition","handleDialogClose","handleDialogShowCreate","handleDialogShowEdit","deploymentTarget_0","handleTargetCreate","handleTargetDelete","deploymentTarget_1","handleTargetUpdate","overflow","AddIcon","vercelWidget","config","component","layout"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-dashboard-widget-vercel",
3
- "version": "4.0.5",
3
+ "version": "4.0.6",
4
4
  "description": "View your recent Vercel deployments and manually trigger builds directly from your Sanity dashboard.",
5
5
  "keywords": [
6
6
  "dashboard",
@@ -35,9 +35,8 @@
35
35
  "@sanity/icons": "^3.7.4",
36
36
  "@sanity/ui": "^3.2.0",
37
37
  "@sanity/uuid": "^3.0.3",
38
- "@tanstack/react-query": "^5.67.2",
38
+ "@tanstack/react-query": "^5.101.0",
39
39
  "@xstate/react": "^6.1.0",
40
- "javascript-time-ago": "^2.6.4",
41
40
  "object-hash": "3.0.0",
42
41
  "react-hook-form": "^7.79.0",
43
42
  "react-time-ago": "^7.4.4",
@@ -46,7 +45,7 @@
46
45
  "yup": "^0.32.11"
47
46
  },
48
47
  "devDependencies": {
49
- "@sanity/pkg-utils": "^10.5.7",
48
+ "@sanity/pkg-utils": "^10.5.8",
50
49
  "@types/object-hash": "^3.0.6",
51
50
  "@types/react": "^19.2.17",
52
51
  "@types/react-dom": "^19.2.3",
@@ -56,9 +55,9 @@
56
55
  "react-dom": "^19.2.7",
57
56
  "sanity": "^6.1.0",
58
57
  "styled-components": "^6.4.2",
59
- "@repo/package.config": "0.0.0",
60
58
  "@repo/tsconfig": "0.0.0",
61
- "@sanity/dashboard": "6.0.3"
59
+ "@sanity/dashboard": "6.0.3",
60
+ "@repo/package.config": "0.0.0"
62
61
  },
63
62
  "peerDependencies": {
64
63
  "react": "^19.2",