UNPKG

sanity-nextjs-do-deploy

Version:

Trigger DigitalOcean Deployments from your NextJS + Sanity Studio.

1 lines 6.18 kB
{"version":3,"sources":["/Users/wvgg/Sites/_open_source_projects/sanity-nextjs-do-deploy/dist/sanity/index.cjs","../../src/sanity/DeployTool.tsx","../../src/sanity/WrappedDeployTool.tsx"],"names":["jsxs"],"mappings":"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","file":"/Users/wvgg/Sites/_open_source_projects/sanity-nextjs-do-deploy/dist/sanity/index.cjs","sourcesContent":[null,"import React from \"react\"\nimport { Button, useToast } from \"@sanity/ui\"\nimport { VscRocket } from \"react-icons/vsc\"\nimport { useEffect, type PropsWithChildren } from \"react\"\nimport type { DeployToolOptions } from \"./types\"\n\nexport const DeployTool = ({ options }: { options?: DeployToolOptions }) => {\n const { successOrErrorDuration, checkProgressInterval, estimatedDeploymentDurationMessage, suppressToasts, apiEndpoint } = {\n successOrErrorDuration: 600000, // 1m\n checkProgressInterval: 30000, // 30s\n estimatedDeploymentDurationMessage: \"Est. 8 minutes\",\n suppressToasts: false,\n apiEndpoint: \"/api/deploy\",\n ...options,\n }\n\n const PAUSE_BEFORE_INTERVAL = 5000 // 5s\n\n const toast = useToast()\n\n let interval: number\n let timeoutId: number\n let deploymentId: string | undefined = undefined\n\n const deploy = async () => {\n !suppressToasts &&\n toast.push({\n title: <Label>Deployment: initializing</Label>,\n duration: PAUSE_BEFORE_INTERVAL + 500,\n })\n\n const { status } = await fetch(\"/api/deploy\", { method: \"POST\" })\n\n if (status !== 200) {\n !suppressToasts &&\n toast.push({\n title: <Label>Deployment: failed initialization</Label>,\n status: \"error\",\n duration: successOrErrorDuration,\n closable: true,\n })\n }\n\n // give DO a chance to start; if we check too fast, the check might return previous deployment\n timeoutId = window.setTimeout(() => {\n check()\n interval = window.setInterval(check, checkProgressInterval)\n }, PAUSE_BEFORE_INTERVAL)\n }\n\n const check = async () => {\n try {\n if (!deploymentId) {\n const response = await fetch(apiEndpoint, { method: \"GET\" })\n const data = await response.json()\n deploymentId = data.deployments[0].id\n }\n if (deploymentId) {\n const response = await fetch(`${apiEndpoint}?id=${deploymentId}`, { method: \"GET\" })\n const data = await response.json()\n !suppressToasts &&\n toast.push({\n title: <Label>Deployment: {data.deployment.phase.replace(\"_\", \" \").toLowerCase()}</Label>,\n status: data.deployment.phase === \"ACTIVE\" ? \"success\" : data.deployment.phase === \"CANCELED\" ? \"error\" : \"info\",\n description: data.deployment.phase === \"BUILDING\" ? estimatedDeploymentDurationMessage : undefined,\n duration: [\"ACTIVE\", \"CANCELED\"].includes(data.deployment.phase) ? successOrErrorDuration : checkProgressInterval,\n closable: [\"ACTIVE\", \"CANCELED\"].includes(data.deployment.phase) ? true : undefined,\n })\n if ([\"ACTIVE\", \"CANCELED\"].includes(data.deployment.phase)) {\n clearInterval(interval)\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n\n useEffect(() => {\n return () => {\n clearInterval(interval)\n clearTimeout(timeoutId)\n }\n }, [])\n\n return <Button fontSize={1} iconRight={VscRocket} text=\"Deploy\" mode=\"bleed\" tone=\"default\" style={{ cursor: \"pointer\" }} onClick={() => deploy()} />\n}\n\nconst Label = ({ children }: PropsWithChildren) => (\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <VscRocket />\n <div>{children}</div>\n </div>\n)\n","import React from \"react\"\nimport type { DeployToolOptions } from \"./types\"\nimport { DeployTool } from \"./DeployTool\"\n\nexport const WrappedDeployTool = (options?: DeployToolOptions) => (props: any) =>\n (\n <div style={{ display: \"flex\", flexDirection: \"row\" }}>\n {props.renderDefault(props)}\n <DeployTool options={options} />\n </div>\n )\n"]}