@sanity/vercel-protection-bypass 4.0.3 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @sanity/vercel-protection-bypass
2
2
 
3
+ ## 4.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`69a8d2f`](https://github.com/sanity-io/plugins/commit/69a8d2f8ce1e8f5b342e7066dbc79a20b6687abe) Thanks [@stipsan](https://github.com/stipsan)! - Declare support for Studio v5
8
+
9
+ ## 4.0.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [#130](https://github.com/sanity-io/plugins/pull/130) [`4399a30`](https://github.com/sanity-io/plugins/commit/4399a3093607d330942791e2f23981906cb8b56d) Thanks [@stipsan](https://github.com/stipsan)! - Improve quality of generated dts
14
+
3
15
  ## 4.0.3
4
16
 
5
17
  ### Patch Changes
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { useState, Suspense, useActionState, use, useTransition, useEffectEvent, useEffect, Activity } from "react";
4
- import { useClient } from "sanity";
5
3
  import { TrashIcon, AddIcon } from "@sanity/icons";
6
4
  import { apiVersion, fetchVercelProtectionBypassSecret, vercelProtectionBypassSchemaId, vercelProtectionBypassSchemaType, tag } from "@sanity/preview-url-secret/constants";
7
5
  import { Flex, Spinner, useToast, Heading, Box, Stack, Card, Text, Button, TextInput, Dialog } from "@sanity/ui";
6
+ import { useState, Suspense, useActionState, use, useTransition, useEffectEvent, useEffect, Activity } from "react";
7
+ import { useClient } from "sanity";
8
8
  async function enableVercelProtectionBypass(client, secret) {
9
9
  const patch = client.patch(vercelProtectionBypassSchemaId).set({
10
10
  secret
@@ -30,7 +30,7 @@ async function disableVercelProtectionBypass(client) {
30
30
  function VercelProtectionBypassTool() {
31
31
  const $ = c(9);
32
32
  let t0;
33
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = {
33
+ $[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t0 = {
34
34
  apiVersion
35
35
  }, $[0] = t0) : t0 = $[0];
36
36
  const client = useClient(t0);
@@ -54,7 +54,7 @@ function VercelProtectionBypassTool() {
54
54
  $[3] !== fetchSecret ? (t2 = () => fetchSecret(null), $[3] = fetchSecret, $[4] = t2) : t2 = $[4];
55
55
  const [initialStatePromise] = useState(t2);
56
56
  let t3;
57
- $[5] === Symbol.for("react.memo_cache_sentinel") ? (t3 = /* @__PURE__ */ jsx(Flex, { align: "center", direction: "column", height: "fill", justify: "center", style: {
57
+ $[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t3 = /* @__PURE__ */ jsx(Flex, { align: "center", direction: "column", height: "fill", justify: "center", style: {
58
58
  width: "100%"
59
59
  }, children: /* @__PURE__ */ jsx(Spinner, {}) }), $[5] = t3) : t3 = $[5];
60
60
  let t4;
@@ -68,7 +68,7 @@ function Layout(t0) {
68
68
  push: pushToast
69
69
  } = useToast(), [isDialogOpen, setIsDialogOpen] = useState(!1);
70
70
  let t1;
71
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t1 = {
71
+ $[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t1 = {
72
72
  apiVersion
73
73
  }, $[0] = t1) : t1 = $[0];
74
74
  const client = useClient(t1);
@@ -108,18 +108,18 @@ function Layout(t0) {
108
108
  }, $[1] = client, $[2] = fetchSecret, $[3] = pushToast, $[4] = t2) : t2 = $[4];
109
109
  const action_0 = t2, [formState, formAction, isPending] = useActionState(action_0, use(initialStatePromise)), isBackgroundRefetch = useRefetchOnLiveEvent(client, formState, formAction), loading = isPending && !isBackgroundRefetch, enabled = !!formState.secret;
110
110
  let t3;
111
- $[5] === Symbol.for("react.memo_cache_sentinel") ? (t3 = {
111
+ $[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t3 = {
112
112
  height: "100%",
113
113
  alignItems: "center",
114
114
  justifyContent: "center",
115
115
  flexDirection: "column"
116
116
  }, $[5] = t3) : t3 = $[5];
117
117
  let t4;
118
- $[6] === Symbol.for("react.memo_cache_sentinel") ? (t4 = {
118
+ $[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t4 = {
119
119
  maxWidth: 640
120
120
  }, $[6] = t4) : t4 = $[6];
121
121
  let t5, t6;
122
- $[7] === Symbol.for("react.memo_cache_sentinel") ? (t5 = {
122
+ $[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t5 = {
123
123
  justifyItems: "flex-start",
124
124
  textWrap: "pretty"
125
125
  }, t6 = /* @__PURE__ */ jsx(Heading, { children: "Vercel Protection Bypass" }), $[7] = t5, $[8] = t6) : (t5 = $[7], t6 = $[8]);
@@ -157,9 +157,9 @@ function Layout(t0) {
157
157
  ] }) }) }) }), $[9] = enabled, $[10] = loading, $[11] = t7) : t7 = $[11];
158
158
  const t8 = isDialogOpen ? "visible" : "hidden";
159
159
  let t9;
160
- $[12] === Symbol.for("react.memo_cache_sentinel") ? (t9 = () => setIsDialogOpen(!1), $[12] = t9) : t9 = $[12];
160
+ $[12] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t9 = () => setIsDialogOpen(!1), $[12] = t9) : t9 = $[12];
161
161
  let t10, t11;
162
- $[13] === Symbol.for("react.memo_cache_sentinel") ? (t10 = /* @__PURE__ */ jsx(Text, { as: "label", weight: "semibold", size: 1, children: "Add bypass secret" }), t11 = /* @__PURE__ */ jsx(Text, { muted: !0, size: 1, children: "Make sure it's the same secret the Vercel deployment is using that's loaded in the preview iframe." }), $[13] = t10, $[14] = t11) : (t10 = $[13], t11 = $[14]);
162
+ $[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t10 = /* @__PURE__ */ jsx(Text, { as: "label", weight: "semibold", size: 1, children: "Add bypass secret" }), t11 = /* @__PURE__ */ jsx(Text, { muted: !0, size: 1, children: "Make sure it's the same secret the Vercel deployment is using that's loaded in the preview iframe." }), $[13] = t10, $[14] = t11) : (t10 = $[13], t11 = $[14]);
163
163
  let t12;
164
164
  $[15] !== loading ? (t12 = /* @__PURE__ */ jsxs(Stack, { space: 2, children: [
165
165
  t10,
@@ -1 +1 @@
1
- {"version":3,"file":"VercelProtectionBypassTool.js","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import {\n Activity,\n Suspense,\n use,\n useActionState,\n useEffect,\n useEffectEvent,\n useState,\n useTransition,\n} from 'react'\nimport {useClient, type SanityClient} from 'sanity'\n\nimport type {SyncTag, LiveEvent} from '@sanity/client'\n\nimport {AddIcon, TrashIcon} from '@sanity/icons'\nimport {\n apiVersion,\n vercelProtectionBypassSchemaId as _id,\n vercelProtectionBypassSchemaType as _type,\n tag,\n fetchVercelProtectionBypassSecret,\n} from '@sanity/preview-url-secret/constants'\nimport {\n Box,\n Button,\n Card,\n Dialog,\n Flex,\n Heading,\n Spinner,\n Stack,\n Text,\n TextInput,\n useToast,\n} from '@sanity/ui'\n\nasync function enableVercelProtectionBypass(client: SanityClient, secret: string): Promise<void> {\n const patch = client.patch(_id).set({secret})\n await client.transaction().createIfNotExists({_id, _type}).patch(patch).commit({tag})\n}\n\nasync function disableVercelProtectionBypass(client: SanityClient): Promise<void> {\n const patch = client.patch(_id).set({secret: null})\n await client.transaction().createIfNotExists({_id, _type}).patch(patch).commit({tag})\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n\n async function fetchSecret(lastLiveEventId: string | null): Promise<FormState> {\n const {result, syncTags} = await client.fetch<string | null>(\n fetchVercelProtectionBypassSecret,\n {},\n {\n filterResponse: false,\n lastLiveEventId,\n tag: 'preview-url-secret.fetch-vercel-bypass-protection-secret',\n },\n )\n return {secret: result, syncTags: syncTags ?? []}\n }\n const [initialStatePromise] = useState(() => fetchSecret(null))\n\n return (\n <Suspense\n fallback={\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n style={{width: '100%'}}\n >\n <Spinner />\n </Flex>\n }\n >\n <Layout initialStatePromise={initialStatePromise} fetchSecret={fetchSecret} />\n </Suspense>\n )\n}\n\ntype FormAction = 'remove-secret' | 'add-secret' | 'refresh-secret'\ntype FormName = 'action' | 'lastLiveEventId' | 'secret'\ntype FormState = {secret: string | null; syncTags: SyncTag[]}\n\nfunction Layout({\n initialStatePromise,\n fetchSecret,\n}: {\n initialStatePromise: Promise<FormState>\n fetchSecret(this: void, lastLiveEventId: string | null): Promise<FormState>\n}) {\n const {push: pushToast} = useToast()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const client = useClient({apiVersion})\n\n const action = async (prevState: FormState, formData: FormData): Promise<FormState> => {\n const action = formData.get('action' satisfies FormName) as FormAction\n\n switch (action) {\n case 'remove-secret':\n return disableVercelProtectionBypass(client)\n .then((): FormState => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n return {...prevState, secret: null}\n })\n .catch((reason): FormState => {\n console.error(reason)\n pushToast({\n status: 'error',\n title:\n 'There was an error when trying to disable protection bypass. See the browser console for more information.',\n })\n return prevState\n })\n\n case 'add-secret': {\n const secret = formData.get('secret' satisfies FormName) as string\n return enableVercelProtectionBypass(client, secret)\n .then(() => {\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n setIsDialogOpen(false)\n return {...prevState, secret}\n })\n .catch((reason) => {\n console.error(reason)\n pushToast({\n status: 'error',\n title:\n 'There was an error when trying to enable protection bypass. See the browser console for more information.',\n })\n return prevState\n })\n }\n case 'refresh-secret':\n return fetchSecret(formData.get('lastLiveEventId' satisfies FormName) as string)\n default:\n // oxlint-disable-next-line typescript/restrict-template-expressions\n throw new Error(`Unknown action: ${action}`)\n }\n }\n\n const [formState, formAction, isPending] = useActionState(action, use(initialStatePromise))\n const isBackgroundRefetch = useRefetchOnLiveEvent(client, formState, formAction)\n\n const loading = isPending && !isBackgroundRefetch\n const enabled = Boolean(formState.secret)\n\n return (\n <>\n <Box\n as=\"form\"\n action={formAction}\n sizing=\"border\"\n display=\"flex\"\n style={{\n height: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n }}\n >\n <Stack space={5}>\n <Card padding={4} style={{maxWidth: 640}}>\n <Stack space={4} style={{justifyItems: 'flex-start', textWrap: 'pretty'}}>\n <Heading>Vercel Protection Bypass</Heading>\n {enabled ? (\n <>\n <Box>\n <Text style={{textWrap: 'pretty'}}>\n Sanity Presentation is setup to use{' '}\n <a\n href=\"https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n protection bypass for automation\n </a>{' '}\n in order to display protected deployments in its preview iframe for the\n current Sanity dataset.\n </Text>\n </Box>\n <Box>\n <Text>\n You can turn off automatic protection bypass at any time by clicking the\n button below.\n </Text>\n </Box>\n <Button\n mode=\"ghost\"\n tone=\"critical\"\n icon={<TrashIcon />}\n loading={loading}\n type=\"submit\"\n name={'action' satisfies FormName}\n value={'remove-secret' satisfies FormAction}\n text=\"Remove secret\"\n />\n <Text>\n Protection bypass remains enabled if this plugin is removed from your Sanity\n config.\n </Text>\n </>\n ) : (\n <>\n <Box>\n <Text style={{textWrap: 'pretty'}}>\n Follow the instructions on{' '}\n <a\n href=\"https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n how to enable protection bypass for automation\n </a>\n .\n </Text>\n </Box>\n <Box>\n <Text>\n This will setup a secret that Vercel exposes as an environment variable called\n VERCEL_AUTOMATION_BYPASS_SECRET, its value is the secret you need.\n </Text>\n </Box>\n <Button\n mode=\"ghost\"\n icon={<AddIcon />}\n onClick={() => {\n setIsDialogOpen(true)\n }}\n text=\"Add secret\"\n />\n <Text>\n If you&apos;re using Sanity Presentation Tool with multiple protected\n deployments ensure that they have the same secret set, as this tool will set a\n secret that is shared in your dataset with all instances of Presentation Tool.\n </Text>\n </>\n )}\n </Stack>\n </Card>\n </Stack>\n </Box>\n\n <Activity mode={isDialogOpen ? 'visible' : 'hidden'}>\n <Dialog animate id=\"add-secret-dialog\" onClickOutside={() => setIsDialogOpen(false)}>\n <Card as=\"form\" action={formAction} padding={3}>\n <Stack space={3}>\n <Stack space={2}>\n <Text as=\"label\" weight=\"semibold\" size={1}>\n Add bypass secret\n </Text>\n <Text muted size={1}>\n {`Make sure it's the same secret the Vercel deployment is using that's loaded in the preview iframe.`}\n </Text>\n <TextInput\n name={'secret' satisfies FormName}\n onFocus={(event) => {\n event.currentTarget.setCustomValidity('')\n }}\n onBlur={(event) => {\n event.currentTarget.setCustomValidity(\n event.currentTarget.value.length == 32\n ? ''\n : 'Secret must be 32 characters long',\n )\n event.currentTarget.required = true\n }}\n minLength={32}\n maxLength={32}\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n disabled={loading}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={loading}\n text={loading ? 'Saving…' : 'Save'}\n tone=\"positive\"\n name={'action' satisfies FormName}\n value={'add-secret' satisfies FormAction}\n />\n </Stack>\n </Card>\n </Dialog>\n </Activity>\n </>\n )\n}\n\ntype isBackgroundRefetch = boolean\nfunction useRefetchOnLiveEvent(\n client: SanityClient,\n formState: FormState,\n action: (formData: FormData) => void,\n): isBackgroundRefetch {\n const [isBackgroundRefetch, startTransition] = useTransition()\n const handleLiveEvent = useEffectEvent((event: LiveEvent) => {\n if (event.type === 'message' && event.tags.some((tag) => formState.syncTags.includes(tag))) {\n const formData = new FormData()\n formData.set('action' satisfies FormName, 'refresh-secret' satisfies FormAction)\n formData.set('lastLiveEventId' satisfies FormName, event.id)\n startTransition(() => action(formData))\n }\n })\n useEffect(() => {\n const subscription = client.live.events().subscribe({\n next: handleLiveEvent,\n error: (reason) => console.error(reason),\n })\n\n return () => subscription.unsubscribe()\n }, [client])\n return isBackgroundRefetch\n}\n"],"names":["enableVercelProtectionBypass","client","secret","patch","_id","set","transaction","createIfNotExists","_type","commit","tag","disableVercelProtectionBypass","VercelProtectionBypassTool","$","_c","t0","Symbol","for","apiVersion","useClient","t1","lastLiveEventId","result","syncTags","fetch","fetchVercelProtectionBypassSecret","filterResponse","fetchSecret","t2","initialStatePromise","useState","t3","width","t4","Layout","push","pushToast","useToast","isDialogOpen","setIsDialogOpen","prevState","formData","action","get","then","status","title","catch","reason_0","console","error","reason","Error","action_0","formState","formAction","isPending","useActionState","use","isBackgroundRefetch","useRefetchOnLiveEvent","loading","enabled","Boolean","height","alignItems","justifyContent","flexDirection","maxWidth","t5","t6","justifyItems","textWrap","t7","t8","t9","t10","t11","t12","_temp","_temp2","t13","t14","t15","t16","t17","event_0","event","currentTarget","setCustomValidity","value","length","required","startTransition","useTransition","type","tags","some","includes","FormData","id","handleLiveEvent","useEffectEvent","live","subscription","events","subscribe","next","_temp3","unsubscribe","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"VercelProtectionBypassTool.js","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import type {SyncTag, LiveEvent} from '@sanity/client'\n\nimport {AddIcon, TrashIcon} from '@sanity/icons'\nimport {\n apiVersion,\n vercelProtectionBypassSchemaId as _id,\n vercelProtectionBypassSchemaType as _type,\n tag,\n fetchVercelProtectionBypassSecret,\n} from '@sanity/preview-url-secret/constants'\nimport {\n Box,\n Button,\n Card,\n Dialog,\n Flex,\n Heading,\n Spinner,\n Stack,\n Text,\n TextInput,\n useToast,\n} from '@sanity/ui'\nimport {\n Activity,\n Suspense,\n use,\n useActionState,\n useEffect,\n useEffectEvent,\n useState,\n useTransition,\n} from 'react'\nimport {useClient, type SanityClient} from 'sanity'\n\nasync function enableVercelProtectionBypass(client: SanityClient, secret: string): Promise<void> {\n const patch = client.patch(_id).set({secret})\n await client.transaction().createIfNotExists({_id, _type}).patch(patch).commit({tag})\n}\n\nasync function disableVercelProtectionBypass(client: SanityClient): Promise<void> {\n const patch = client.patch(_id).set({secret: null})\n await client.transaction().createIfNotExists({_id, _type}).patch(patch).commit({tag})\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n\n async function fetchSecret(lastLiveEventId: string | null): Promise<FormState> {\n const {result, syncTags} = await client.fetch<string | null>(\n fetchVercelProtectionBypassSecret,\n {},\n {\n filterResponse: false,\n lastLiveEventId,\n tag: 'preview-url-secret.fetch-vercel-bypass-protection-secret',\n },\n )\n return {secret: result, syncTags: syncTags ?? []}\n }\n const [initialStatePromise] = useState(() => fetchSecret(null))\n\n return (\n <Suspense\n fallback={\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n style={{width: '100%'}}\n >\n <Spinner />\n </Flex>\n }\n >\n <Layout initialStatePromise={initialStatePromise} fetchSecret={fetchSecret} />\n </Suspense>\n )\n}\n\ntype FormAction = 'remove-secret' | 'add-secret' | 'refresh-secret'\ntype FormName = 'action' | 'lastLiveEventId' | 'secret'\ntype FormState = {secret: string | null; syncTags: SyncTag[]}\n\nfunction Layout({\n initialStatePromise,\n fetchSecret,\n}: {\n initialStatePromise: Promise<FormState>\n fetchSecret(this: void, lastLiveEventId: string | null): Promise<FormState>\n}) {\n const {push: pushToast} = useToast()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const client = useClient({apiVersion})\n\n const action = async (prevState: FormState, formData: FormData): Promise<FormState> => {\n const action = formData.get('action' satisfies FormName) as FormAction\n\n switch (action) {\n case 'remove-secret':\n return disableVercelProtectionBypass(client)\n .then((): FormState => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n return {...prevState, secret: null}\n })\n .catch((reason): FormState => {\n console.error(reason)\n pushToast({\n status: 'error',\n title:\n 'There was an error when trying to disable protection bypass. See the browser console for more information.',\n })\n return prevState\n })\n\n case 'add-secret': {\n const secret = formData.get('secret' satisfies FormName) as string\n return enableVercelProtectionBypass(client, secret)\n .then(() => {\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n setIsDialogOpen(false)\n return {...prevState, secret}\n })\n .catch((reason) => {\n console.error(reason)\n pushToast({\n status: 'error',\n title:\n 'There was an error when trying to enable protection bypass. See the browser console for more information.',\n })\n return prevState\n })\n }\n case 'refresh-secret':\n return fetchSecret(formData.get('lastLiveEventId' satisfies FormName) as string)\n default:\n // oxlint-disable-next-line typescript/restrict-template-expressions\n throw new Error(`Unknown action: ${action}`)\n }\n }\n\n const [formState, formAction, isPending] = useActionState(action, use(initialStatePromise))\n const isBackgroundRefetch = useRefetchOnLiveEvent(client, formState, formAction)\n\n const loading = isPending && !isBackgroundRefetch\n const enabled = Boolean(formState.secret)\n\n return (\n <>\n <Box\n as=\"form\"\n action={formAction}\n sizing=\"border\"\n display=\"flex\"\n style={{\n height: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n }}\n >\n <Stack space={5}>\n <Card padding={4} style={{maxWidth: 640}}>\n <Stack space={4} style={{justifyItems: 'flex-start', textWrap: 'pretty'}}>\n <Heading>Vercel Protection Bypass</Heading>\n {enabled ? (\n <>\n <Box>\n <Text style={{textWrap: 'pretty'}}>\n Sanity Presentation is setup to use{' '}\n <a\n href=\"https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n protection bypass for automation\n </a>{' '}\n in order to display protected deployments in its preview iframe for the\n current Sanity dataset.\n </Text>\n </Box>\n <Box>\n <Text>\n You can turn off automatic protection bypass at any time by clicking the\n button below.\n </Text>\n </Box>\n <Button\n mode=\"ghost\"\n tone=\"critical\"\n icon={<TrashIcon />}\n loading={loading}\n type=\"submit\"\n name={'action' satisfies FormName}\n value={'remove-secret' satisfies FormAction}\n text=\"Remove secret\"\n />\n <Text>\n Protection bypass remains enabled if this plugin is removed from your Sanity\n config.\n </Text>\n </>\n ) : (\n <>\n <Box>\n <Text style={{textWrap: 'pretty'}}>\n Follow the instructions on{' '}\n <a\n href=\"https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n how to enable protection bypass for automation\n </a>\n .\n </Text>\n </Box>\n <Box>\n <Text>\n This will setup a secret that Vercel exposes as an environment variable called\n VERCEL_AUTOMATION_BYPASS_SECRET, its value is the secret you need.\n </Text>\n </Box>\n <Button\n mode=\"ghost\"\n icon={<AddIcon />}\n onClick={() => {\n setIsDialogOpen(true)\n }}\n text=\"Add secret\"\n />\n <Text>\n If you&apos;re using Sanity Presentation Tool with multiple protected\n deployments ensure that they have the same secret set, as this tool will set a\n secret that is shared in your dataset with all instances of Presentation Tool.\n </Text>\n </>\n )}\n </Stack>\n </Card>\n </Stack>\n </Box>\n\n <Activity mode={isDialogOpen ? 'visible' : 'hidden'}>\n <Dialog animate id=\"add-secret-dialog\" onClickOutside={() => setIsDialogOpen(false)}>\n <Card as=\"form\" action={formAction} padding={3}>\n <Stack space={3}>\n <Stack space={2}>\n <Text as=\"label\" weight=\"semibold\" size={1}>\n Add bypass secret\n </Text>\n <Text muted size={1}>\n {`Make sure it's the same secret the Vercel deployment is using that's loaded in the preview iframe.`}\n </Text>\n <TextInput\n name={'secret' satisfies FormName}\n onFocus={(event) => {\n event.currentTarget.setCustomValidity('')\n }}\n onBlur={(event) => {\n event.currentTarget.setCustomValidity(\n event.currentTarget.value.length == 32\n ? ''\n : 'Secret must be 32 characters long',\n )\n event.currentTarget.required = true\n }}\n minLength={32}\n maxLength={32}\n autoComplete=\"off\"\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n disabled={loading}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={loading}\n text={loading ? 'Saving…' : 'Save'}\n tone=\"positive\"\n name={'action' satisfies FormName}\n value={'add-secret' satisfies FormAction}\n />\n </Stack>\n </Card>\n </Dialog>\n </Activity>\n </>\n )\n}\n\ntype isBackgroundRefetch = boolean\nfunction useRefetchOnLiveEvent(\n client: SanityClient,\n formState: FormState,\n action: (formData: FormData) => void,\n): isBackgroundRefetch {\n const [isBackgroundRefetch, startTransition] = useTransition()\n const handleLiveEvent = useEffectEvent((event: LiveEvent) => {\n if (event.type === 'message' && event.tags.some((tag) => formState.syncTags.includes(tag))) {\n const formData = new FormData()\n formData.set('action' satisfies FormName, 'refresh-secret' satisfies FormAction)\n formData.set('lastLiveEventId' satisfies FormName, event.id)\n startTransition(() => action(formData))\n }\n })\n useEffect(() => {\n const subscription = client.live.events().subscribe({\n next: handleLiveEvent,\n error: (reason) => console.error(reason),\n })\n\n return () => subscription.unsubscribe()\n }, [client])\n return isBackgroundRefetch\n}\n"],"names":["enableVercelProtectionBypass","client","secret","patch","_id","set","transaction","createIfNotExists","_type","commit","tag","disableVercelProtectionBypass","VercelProtectionBypassTool","$","_c","t0","for","apiVersion","useClient","t1","lastLiveEventId","result","syncTags","fetch","fetchVercelProtectionBypassSecret","filterResponse","fetchSecret","t2","initialStatePromise","useState","t3","width","t4","Layout","push","pushToast","useToast","isDialogOpen","setIsDialogOpen","prevState","formData","action","get","then","status","title","catch","reason_0","console","error","reason","Error","action_0","formState","formAction","isPending","useActionState","use","isBackgroundRefetch","useRefetchOnLiveEvent","loading","enabled","Boolean","height","alignItems","justifyContent","flexDirection","maxWidth","t5","t6","justifyItems","textWrap","t7","t8","t9","t10","t11","t12","_temp","_temp2","t13","t14","t15","t16","t17","event_0","event","currentTarget","setCustomValidity","value","length","required","startTransition","useTransition","type","tags","some","includes","FormData","id","handleLiveEvent","useEffectEvent","live","subscription","events","subscribe","next","_temp3","unsubscribe","useEffect"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,4 +5,5 @@ interface VercelProtectionBypassConfig {
5
5
  icon?: React.ComponentType;
6
6
  }
7
7
  declare const vercelProtectionBypassTool: sanity0.Plugin<void | VercelProtectionBypassConfig>;
8
- export { VercelProtectionBypassConfig, vercelProtectionBypassTool };
8
+ export { VercelProtectionBypassConfig, vercelProtectionBypassTool };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":["VercelProtectionBypassConfig","React","ComponentType","vercelProtectionBypassTool","sanity0","Plugin"],"sources":["../src/index.d.ts"],"sourcesContent":["export interface VercelProtectionBypassConfig {\n name?: string;\n title?: string;\n icon?: React.ComponentType;\n}\nexport declare const vercelProtectionBypassTool: import(\"sanity\").Plugin<void | VercelProtectionBypassConfig>;\n//# sourceMappingURL=index.d.ts.map"],"mappings":";UAAiBA,4BAAAA;;EAAAA,KAAAA,CAAAA,EAAAA,MAAAA;EAKIG,IAAAA,CAAAA,EAFVF,KAAAA,CAAMC,aAEIC;;cAAAA,4BAAuFC,OAAAA,CAA1CC,cAAcL"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { lazy } from "react";
2
- import { defineType, definePlugin } from "sanity";
3
1
  import { LockIcon, CheckmarkCircleIcon, CloseCircleIcon } from "@sanity/icons";
4
2
  import { vercelProtectionBypassSchemaType } from "@sanity/preview-url-secret/constants";
3
+ import { lazy } from "react";
4
+ import { defineType, definePlugin } from "sanity";
5
5
  const id = "vercel-protection-bypass", defaultTitle = "Vercel Protection Bypass", schema = defineType({
6
6
  type: "document",
7
7
  icon: LockIcon,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {lazy} from 'react'\nimport {definePlugin, defineType} from 'sanity'\n\nimport {CheckmarkCircleIcon, CloseCircleIcon, LockIcon} from '@sanity/icons'\nimport {\n vercelProtectionBypassSchemaId as _id,\n vercelProtectionBypassSchemaType as type,\n} from '@sanity/preview-url-secret/constants'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nconst defaultTitle = 'Vercel Protection Bypass'\nconst schema = defineType({\n type: 'document',\n icon: LockIcon,\n name: type,\n title: defaultTitle,\n readOnly: true,\n fields: [\n {\n type: 'string',\n name: 'secret',\n title: 'Secret',\n },\n ],\n preview: {\n select: {\n secret: 'secret',\n },\n prepare(data) {\n const enabled = data.secret !== null\n return {\n title: enabled ? 'Enabled' : 'Disabled',\n subtitle: defaultTitle,\n media: enabled ? CheckmarkCircleIcon : CloseCircleIcon,\n }\n },\n },\n})\n\nconst VercelProtectionBypassTool = lazy(() => import('./VercelProtectionBypassTool'))\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {\n name = 'vercel-protection-bypass',\n title = 'Vercel Protection Bypass',\n icon = LockIcon,\n ...config\n } = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name,\n title,\n icon: icon,\n component: VercelProtectionBypassTool,\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n document: {\n actions: (prev, context) => {\n if (context.schemaType !== type) {\n return prev\n }\n return []\n },\n },\n schema: {types: [schema]},\n }\n },\n)\n"],"names":["id","defaultTitle","schema","defineType","type","icon","LockIcon","name","title","readOnly","fields","preview","select","secret","prepare","data","enabled","subtitle","media","CheckmarkCircleIcon","CloseCircleIcon","VercelProtectionBypassTool","lazy","vercelProtectionBypassTool","definePlugin","options","config","tools","component","__internalApplicationType","document","actions","prev","context","schemaType","types"],"mappings":";;;;AASA,MAAMA,KAAK,4BAQLC,eAAe,4BACfC,SAASC,WAAW;AAAA,EACxBC,MAAM;AAAA,EACNC,MAAMC;AAAAA,EACNC,MAAMH;AAAAA,EACNI,OAAOP;AAAAA,EACPQ,UAAU;AAAA,EACVC,QAAQ,CACN;AAAA,IACEN,MAAM;AAAA,IACNG,MAAM;AAAA,IACNC,OAAO;AAAA,EAAA,CACR;AAAA,EAEHG,SAAS;AAAA,IACPC,QAAQ;AAAA,MACNC,QAAQ;AAAA,IAAA;AAAA,IAEVC,QAAQC,MAAM;AACZ,YAAMC,UAAUD,KAAKF,WAAW;AAChC,aAAO;AAAA,QACLL,OAAOQ,UAAU,YAAY;AAAA,QAC7BC,UAAUhB;AAAAA,QACViB,OAAOF,UAAUG,sBAAsBC;AAAAA,MAAAA;AAAAA,IAE3C;AAAA,EAAA;AAEJ,CAAC,GAEKC,6BAA6BC,KAAK,MAAM,OAAO,4CAA8B,CAAC,GAEvEC,6BAA6BC,aACvCC,CAAAA,YAAY;AACX,QAAM;AAAA,IACJlB,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRH,OAAOC;AAAAA,IACP,GAAGoB;AAAAA,EAAAA,IACDD,WAAW,CAAA;AACf,SAAO;AAAA,IACLlB,MAAM,8BAA8BP,EAAE;AAAA,IACtC2B,OAAO,CACL;AAAA,MACEpB;AAAAA,MACAC;AAAAA,MACAH;AAAAA,MACAuB,WAAWP;AAAAA,MACXI,SAASC;AAAAA,MACTG,2BAA2B,UAAU7B,EAAE;AAAA,IAAA,CACxC;AAAA,IAEH8B,UAAU;AAAA,MACRC,SAASA,CAACC,MAAMC,YACVA,QAAQC,eAAe9B,mCAClB4B,OAEF,CAAA;AAAA,IAAA;AAAA,IAGX9B,QAAQ;AAAA,MAACiC,OAAO,CAACjC,MAAM;AAAA,IAAA;AAAA,EAAC;AAE5B,CACF;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {CheckmarkCircleIcon, CloseCircleIcon, LockIcon} from '@sanity/icons'\nimport {\n vercelProtectionBypassSchemaId as _id,\n vercelProtectionBypassSchemaType as type,\n} from '@sanity/preview-url-secret/constants'\nimport {lazy} from 'react'\nimport {definePlugin, defineType} from 'sanity'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nconst defaultTitle = 'Vercel Protection Bypass'\nconst schema = defineType({\n type: 'document',\n icon: LockIcon,\n name: type,\n title: defaultTitle,\n readOnly: true,\n fields: [\n {\n type: 'string',\n name: 'secret',\n title: 'Secret',\n },\n ],\n preview: {\n select: {\n secret: 'secret',\n },\n prepare(data) {\n const enabled = data.secret !== null\n return {\n title: enabled ? 'Enabled' : 'Disabled',\n subtitle: defaultTitle,\n media: enabled ? CheckmarkCircleIcon : CloseCircleIcon,\n }\n },\n },\n})\n\nconst VercelProtectionBypassTool = lazy(() => import('./VercelProtectionBypassTool'))\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {\n name = 'vercel-protection-bypass',\n title = 'Vercel Protection Bypass',\n icon = LockIcon,\n ...config\n } = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name,\n title,\n icon: icon,\n component: VercelProtectionBypassTool,\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n document: {\n actions: (prev, context) => {\n if (context.schemaType !== type) {\n return prev\n }\n return []\n },\n },\n schema: {types: [schema]},\n }\n },\n)\n"],"names":["id","defaultTitle","schema","defineType","type","icon","LockIcon","name","title","readOnly","fields","preview","select","secret","prepare","data","enabled","subtitle","media","CheckmarkCircleIcon","CloseCircleIcon","VercelProtectionBypassTool","lazy","vercelProtectionBypassTool","definePlugin","options","config","tools","component","__internalApplicationType","document","actions","prev","context","schemaType","types"],"mappings":";;;;AAQA,MAAMA,KAAK,4BAQLC,eAAe,4BACfC,SAASC,WAAW;AAAA,EACxBC,MAAM;AAAA,EACNC,MAAMC;AAAAA,EACNC,MAAMH;AAAAA,EACNI,OAAOP;AAAAA,EACPQ,UAAU;AAAA,EACVC,QAAQ,CACN;AAAA,IACEN,MAAM;AAAA,IACNG,MAAM;AAAA,IACNC,OAAO;AAAA,EAAA,CACR;AAAA,EAEHG,SAAS;AAAA,IACPC,QAAQ;AAAA,MACNC,QAAQ;AAAA,IAAA;AAAA,IAEVC,QAAQC,MAAM;AACZ,YAAMC,UAAUD,KAAKF,WAAW;AAChC,aAAO;AAAA,QACLL,OAAOQ,UAAU,YAAY;AAAA,QAC7BC,UAAUhB;AAAAA,QACViB,OAAOF,UAAUG,sBAAsBC;AAAAA,MAAAA;AAAAA,IAE3C;AAAA,EAAA;AAEJ,CAAC,GAEKC,6BAA6BC,KAAK,MAAM,OAAO,4CAA8B,CAAC,GAEvEC,6BAA6BC,aACvCC,CAAAA,YAAY;AACX,QAAM;AAAA,IACJlB,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRH,OAAOC;AAAAA,IACP,GAAGoB;AAAAA,EAAAA,IACDD,WAAW,CAAA;AACf,SAAO;AAAA,IACLlB,MAAM,8BAA8BP,EAAE;AAAA,IACtC2B,OAAO,CACL;AAAA,MACEpB;AAAAA,MACAC;AAAAA,MACAH;AAAAA,MACAuB,WAAWP;AAAAA,MACXI,SAASC;AAAAA,MACTG,2BAA2B,UAAU7B,EAAE;AAAA,IAAA,CACxC;AAAA,IAEH8B,UAAU;AAAA,MACRC,SAASA,CAACC,MAAMC,YACVA,QAAQC,eAAe9B,mCAClB4B,OAEF,CAAA;AAAA,IAAA;AAAA,IAGX9B,QAAQ;AAAA,MAACiC,OAAO,CAACjC,MAAM;AAAA,IAAA;AAAA,EAAC;AAE5B,CACF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/vercel-protection-bypass",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "homepage": "https://github.com/sanity-io/plugins/tree/main/plugins/%40sanity/vercel-protection-bypass#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/sanity-io/plugins/issues"
@@ -20,10 +20,7 @@
20
20
  "author": "Sanity.io <hello@sanity.io>",
21
21
  "type": "module",
22
22
  "exports": {
23
- ".": {
24
- "source": "./src/index.ts",
25
- "default": "./dist/index.js"
26
- },
23
+ ".": "./dist/index.js",
27
24
  "./package.json": "./package.json"
28
25
  },
29
26
  "types": "./dist/index.d.ts",
@@ -37,29 +34,26 @@
37
34
  "@sanity/ui": "^3.1.11"
38
35
  },
39
36
  "devDependencies": {
40
- "@sanity/client": "^7.13.0",
41
- "@sanity/pkg-utils": "^9.1.1",
42
- "@types/react": "^19.2.6",
43
- "@typescript/native-preview": "7.0.0-dev.20251122.1",
37
+ "@sanity/client": "7.13.1",
38
+ "@sanity/pkg-utils": "^10.1.2",
39
+ "@types/react": "^19.2.7",
40
+ "@typescript/native-preview": "7.0.0-dev.20251205.1",
44
41
  "babel-plugin-react-compiler": "^1.0.0",
45
42
  "eslint": "^9.39.1",
46
- "react": "^19.2.0",
47
- "sanity": "^4.17.0",
43
+ "react": "^19.2.1",
44
+ "sanity": "^4.20.3",
48
45
  "typescript": "5.9.3",
49
- "@repo/eslint-config": "0.0.1",
46
+ "@repo/eslint-config": "0.0.5",
50
47
  "@repo/package.config": "0.0.0",
51
- "@repo/tsconfig": "0.0.0"
48
+ "@repo/tsconfig": "1.0.0"
52
49
  },
53
50
  "peerDependencies": {
54
51
  "react": "^19.2",
55
- "sanity": "^4"
52
+ "sanity": "^4.0.0-0 || ^5.0.0-0"
56
53
  },
57
54
  "engines": {
58
55
  "node": ">=20.19 <22 || >=22.12"
59
56
  },
60
- "publishConfig": {
61
- "access": "public"
62
- },
63
57
  "scripts": {
64
58
  "build": "pkg build --strict --check --clean",
65
59
  "lint": "eslint .",