@sanity/vercel-protection-bypass 1.0.24 → 1.0.25

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,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.25](https://github.com/sanity-io/visual-editing/compare/vercel-protection-bypass-v1.0.24...vercel-protection-bypass-v1.0.25) (2025-07-17)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * The following workspace dependencies were updated
9
+ * dependencies
10
+ * @sanity/preview-url-secret bumped to 2.1.13
11
+
3
12
  ## [1.0.24](https://github.com/sanity-io/visual-editing/compare/vercel-protection-bypass-v1.0.23...vercel-protection-bypass-v1.0.24) (2025-07-10)
4
13
 
5
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"VercelProtectionBypassTool.cjs","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import {AddIcon, TrashIcon} from '@sanity/icons'\nimport {apiVersion} from '@sanity/preview-url-secret/constants'\nimport {\n disableVercelProtectionBypass,\n enableVercelProtectionBypass,\n subcribeToVercelProtectionBypass,\n} from '@sanity/preview-url-secret/toggle-vercel-protection-bypass'\nimport {Box, Button, Card, Dialog, Heading, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useEffect, useReducer} from 'react'\nimport {useClient} from 'sanity'\n\ninterface State {\n status:\n | 'loading'\n | 'disabled'\n | 'add-secret-dialog'\n | 'adding-secret'\n | 'enabled'\n | 'removing-secret'\n}\ntype Action =\n | {type: 'add-secret'}\n | {type: 'save-secret'}\n | {type: 'cancel-add-secret'}\n | {type: 'failed-add-secret'}\n | {type: 'saved-secret'}\n | {type: 'remove-secret'}\n | {type: 'failed-remove-secret'}\n | {type: 'removed-secret'}\n\nfunction reducer(prevState: State, action: Action): State {\n switch (action.type) {\n case 'removed-secret':\n return {...prevState, status: 'disabled'}\n case 'remove-secret':\n return {...prevState, status: 'removing-secret'}\n case 'saved-secret':\n return {...prevState, status: 'enabled'}\n case 'save-secret':\n return {...prevState, status: 'adding-secret'}\n case 'cancel-add-secret':\n return {...prevState, status: 'disabled'}\n case 'add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n case 'failed-remove-secret':\n return {...prevState, status: 'enabled'}\n case 'failed-add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n default:\n return prevState\n }\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n const {push: pushToast} = useToast()\n const [state, dispatch] = useReducer(reducer, {status: 'loading'})\n const adding = state.status === 'adding-secret'\n const removing = state.status === 'removing-secret'\n\n const handleEnable = (secret: string) => {\n dispatch({type: 'save-secret'})\n enableVercelProtectionBypass(client, secret)\n .then(() => {\n dispatch({type: 'saved-secret'})\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-add-secret'})\n })\n }\n\n useEffect(() => {\n const unsubscribe = subcribeToVercelProtectionBypass(client, (secret) =>\n dispatch({type: secret ? 'saved-secret' : 'removed-secret'}),\n )\n return () => unsubscribe()\n }, [client])\n\n const enabled = state.status === 'enabled' || removing\n\n return (\n <>\n <Box\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={removing}\n onClick={() => {\n dispatch({type: 'remove-secret'})\n disableVercelProtectionBypass(client)\n .then(() => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n dispatch({type: 'removed-secret'})\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-remove-secret'})\n })\n }}\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 loading={state.status === 'loading'}\n onClick={() => {\n dispatch({type: 'add-secret'})\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 {(state.status === 'add-secret-dialog' || state.status === 'adding-secret') && (\n <Dialog\n animate\n id=\"add-secret-dialog\"\n onClickOutside={() => dispatch({type: 'cancel-add-secret'})}\n >\n <Card padding={3}>\n <form\n onSubmit={(event) => {\n event.preventDefault()\n event.currentTarget.reportValidity()\n const formData = new FormData(event.currentTarget)\n const secret = formData.get('secret') as string\n if (secret) handleEnable(secret)\n }}\n >\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\"\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={adding}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={adding}\n text={adding ? 'Saving…' : 'Save'}\n tone=\"positive\"\n />\n </Stack>\n </form>\n </Card>\n </Dialog>\n )}\n </>\n )\n}\n"],"names":["reducer","prevState","action","type","status","VercelProtectionBypassTool","$","_c","t0","Symbol","for","apiVersion","client","useClient","push","pushToast","useToast","t1","state","dispatch","useReducer","adding","removing","t2","secret","enableVercelProtectionBypass","then","title","catch","reason","error","handleEnable","t3","t4","unsubscribe","subcribeToVercelProtectionBypass","secret_0","useEffect","enabled","t5","height","alignItems","justifyContent","flexDirection","t6","maxWidth","t7","t8","justifyItems","textWrap","jsx","Heading","t9","Box","Stack","Card","jsxs","Fragment","Text","Button","TrashIcon","disableVercelProtectionBypass","reason_0","AddIcon","t10","Dialog","event","preventDefault","currentTarget","reportValidity","secret_1","FormData","get","TextInput","_temp","_temp2","t11","event_1","setCustomValidity","value","length","required","event_0"],"mappings":"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"}
1
+ {"version":3,"file":"VercelProtectionBypassTool.cjs","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import {AddIcon, TrashIcon} from '@sanity/icons'\nimport {apiVersion} from '@sanity/preview-url-secret/constants'\nimport {\n disableVercelProtectionBypass,\n enableVercelProtectionBypass,\n subcribeToVercelProtectionBypass,\n} from '@sanity/preview-url-secret/toggle-vercel-protection-bypass'\nimport {Box, Button, Card, Dialog, Heading, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useEffect, useReducer} from 'react'\nimport {useClient} from 'sanity'\n\ninterface State {\n status:\n | 'loading'\n | 'disabled'\n | 'add-secret-dialog'\n | 'adding-secret'\n | 'enabled'\n | 'removing-secret'\n}\ntype Action =\n | {type: 'add-secret'}\n | {type: 'save-secret'}\n | {type: 'cancel-add-secret'}\n | {type: 'failed-add-secret'}\n | {type: 'saved-secret'}\n | {type: 'remove-secret'}\n | {type: 'failed-remove-secret'}\n | {type: 'removed-secret'}\n\nfunction reducer(prevState: State, action: Action): State {\n switch (action.type) {\n case 'removed-secret':\n return {...prevState, status: 'disabled'}\n case 'remove-secret':\n return {...prevState, status: 'removing-secret'}\n case 'saved-secret':\n return {...prevState, status: 'enabled'}\n case 'save-secret':\n return {...prevState, status: 'adding-secret'}\n case 'cancel-add-secret':\n return {...prevState, status: 'disabled'}\n case 'add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n case 'failed-remove-secret':\n return {...prevState, status: 'enabled'}\n case 'failed-add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n default:\n return prevState\n }\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n const {push: pushToast} = useToast()\n const [state, dispatch] = useReducer(reducer, {status: 'loading'})\n const adding = state.status === 'adding-secret'\n const removing = state.status === 'removing-secret'\n\n const handleEnable = (secret: string) => {\n dispatch({type: 'save-secret'})\n enableVercelProtectionBypass(client, secret)\n .then(() => {\n dispatch({type: 'saved-secret'})\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-add-secret'})\n })\n }\n\n useEffect(() => {\n const unsubscribe = subcribeToVercelProtectionBypass(client, (secret) =>\n dispatch({type: secret ? 'saved-secret' : 'removed-secret'}),\n )\n return () => unsubscribe()\n }, [client])\n\n const enabled = state.status === 'enabled' || removing\n\n return (\n <>\n <Box\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={removing}\n onClick={() => {\n dispatch({type: 'remove-secret'})\n disableVercelProtectionBypass(client)\n .then(() => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n dispatch({type: 'removed-secret'})\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-remove-secret'})\n })\n }}\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 loading={state.status === 'loading'}\n onClick={() => {\n dispatch({type: 'add-secret'})\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 {(state.status === 'add-secret-dialog' || state.status === 'adding-secret') && (\n <Dialog\n animate\n id=\"add-secret-dialog\"\n onClickOutside={() => dispatch({type: 'cancel-add-secret'})}\n >\n <Card padding={3}>\n <form\n onSubmit={(event) => {\n event.preventDefault()\n event.currentTarget.reportValidity()\n const formData = new FormData(event.currentTarget)\n const secret = formData.get('secret') as string\n if (secret) handleEnable(secret)\n }}\n >\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\"\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={adding}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={adding}\n text={adding ? 'Saving…' : 'Save'}\n tone=\"positive\"\n />\n </Stack>\n </form>\n </Card>\n </Dialog>\n )}\n </>\n )\n}\n"],"names":["reducer","prevState","action","type","status","VercelProtectionBypassTool","$","_c","t0","Symbol","for","apiVersion","client","useClient","push","pushToast","useToast","t1","state","dispatch","useReducer","adding","removing","t2","secret","enableVercelProtectionBypass","then","title","catch","reason","console","error","handleEnable","t3","t4","unsubscribe","subcribeToVercelProtectionBypass","secret_0","useEffect","enabled","t5","height","alignItems","justifyContent","flexDirection","t6","maxWidth","t7","t8","justifyItems","textWrap","Heading","t9","Box","jsx","Stack","Card","jsxs","Fragment","Text","Button","TrashIcon","disableVercelProtectionBypass","reason_0","AddIcon","t10","Dialog","event","preventDefault","currentTarget","reportValidity","secret_1","FormData","get","TextInput","_temp","_temp2","t11","event_1","setCustomValidity","value","length","required","event_0"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VercelProtectionBypassTool.js","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import {AddIcon, TrashIcon} from '@sanity/icons'\nimport {apiVersion} from '@sanity/preview-url-secret/constants'\nimport {\n disableVercelProtectionBypass,\n enableVercelProtectionBypass,\n subcribeToVercelProtectionBypass,\n} from '@sanity/preview-url-secret/toggle-vercel-protection-bypass'\nimport {Box, Button, Card, Dialog, Heading, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useEffect, useReducer} from 'react'\nimport {useClient} from 'sanity'\n\ninterface State {\n status:\n | 'loading'\n | 'disabled'\n | 'add-secret-dialog'\n | 'adding-secret'\n | 'enabled'\n | 'removing-secret'\n}\ntype Action =\n | {type: 'add-secret'}\n | {type: 'save-secret'}\n | {type: 'cancel-add-secret'}\n | {type: 'failed-add-secret'}\n | {type: 'saved-secret'}\n | {type: 'remove-secret'}\n | {type: 'failed-remove-secret'}\n | {type: 'removed-secret'}\n\nfunction reducer(prevState: State, action: Action): State {\n switch (action.type) {\n case 'removed-secret':\n return {...prevState, status: 'disabled'}\n case 'remove-secret':\n return {...prevState, status: 'removing-secret'}\n case 'saved-secret':\n return {...prevState, status: 'enabled'}\n case 'save-secret':\n return {...prevState, status: 'adding-secret'}\n case 'cancel-add-secret':\n return {...prevState, status: 'disabled'}\n case 'add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n case 'failed-remove-secret':\n return {...prevState, status: 'enabled'}\n case 'failed-add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n default:\n return prevState\n }\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n const {push: pushToast} = useToast()\n const [state, dispatch] = useReducer(reducer, {status: 'loading'})\n const adding = state.status === 'adding-secret'\n const removing = state.status === 'removing-secret'\n\n const handleEnable = (secret: string) => {\n dispatch({type: 'save-secret'})\n enableVercelProtectionBypass(client, secret)\n .then(() => {\n dispatch({type: 'saved-secret'})\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-add-secret'})\n })\n }\n\n useEffect(() => {\n const unsubscribe = subcribeToVercelProtectionBypass(client, (secret) =>\n dispatch({type: secret ? 'saved-secret' : 'removed-secret'}),\n )\n return () => unsubscribe()\n }, [client])\n\n const enabled = state.status === 'enabled' || removing\n\n return (\n <>\n <Box\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={removing}\n onClick={() => {\n dispatch({type: 'remove-secret'})\n disableVercelProtectionBypass(client)\n .then(() => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n dispatch({type: 'removed-secret'})\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-remove-secret'})\n })\n }}\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 loading={state.status === 'loading'}\n onClick={() => {\n dispatch({type: 'add-secret'})\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 {(state.status === 'add-secret-dialog' || state.status === 'adding-secret') && (\n <Dialog\n animate\n id=\"add-secret-dialog\"\n onClickOutside={() => dispatch({type: 'cancel-add-secret'})}\n >\n <Card padding={3}>\n <form\n onSubmit={(event) => {\n event.preventDefault()\n event.currentTarget.reportValidity()\n const formData = new FormData(event.currentTarget)\n const secret = formData.get('secret') as string\n if (secret) handleEnable(secret)\n }}\n >\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\"\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={adding}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={adding}\n text={adding ? 'Saving…' : 'Save'}\n tone=\"positive\"\n />\n </Stack>\n </form>\n </Card>\n </Dialog>\n )}\n </>\n )\n}\n"],"names":["reducer","prevState","action","type","status","VercelProtectionBypassTool","$","_c","t0","Symbol","for","apiVersion","client","useClient","push","pushToast","useToast","t1","state","dispatch","useReducer","adding","removing","t2","secret","enableVercelProtectionBypass","then","title","catch","reason","error","handleEnable","t3","t4","unsubscribe","subcribeToVercelProtectionBypass","secret_0","useEffect","enabled","t5","height","alignItems","justifyContent","flexDirection","t6","maxWidth","t7","t8","justifyItems","textWrap","t9","disableVercelProtectionBypass","reason_0","t10","event","preventDefault","currentTarget","reportValidity","secret_1","FormData","get","_temp","_temp2","t11","event_1","setCustomValidity","value","length","required","event_0"],"mappings":"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"}
1
+ {"version":3,"file":"VercelProtectionBypassTool.js","sources":["../../src/VercelProtectionBypassTool.tsx"],"sourcesContent":["import {AddIcon, TrashIcon} from '@sanity/icons'\nimport {apiVersion} from '@sanity/preview-url-secret/constants'\nimport {\n disableVercelProtectionBypass,\n enableVercelProtectionBypass,\n subcribeToVercelProtectionBypass,\n} from '@sanity/preview-url-secret/toggle-vercel-protection-bypass'\nimport {Box, Button, Card, Dialog, Heading, Stack, Text, TextInput, useToast} from '@sanity/ui'\nimport {useEffect, useReducer} from 'react'\nimport {useClient} from 'sanity'\n\ninterface State {\n status:\n | 'loading'\n | 'disabled'\n | 'add-secret-dialog'\n | 'adding-secret'\n | 'enabled'\n | 'removing-secret'\n}\ntype Action =\n | {type: 'add-secret'}\n | {type: 'save-secret'}\n | {type: 'cancel-add-secret'}\n | {type: 'failed-add-secret'}\n | {type: 'saved-secret'}\n | {type: 'remove-secret'}\n | {type: 'failed-remove-secret'}\n | {type: 'removed-secret'}\n\nfunction reducer(prevState: State, action: Action): State {\n switch (action.type) {\n case 'removed-secret':\n return {...prevState, status: 'disabled'}\n case 'remove-secret':\n return {...prevState, status: 'removing-secret'}\n case 'saved-secret':\n return {...prevState, status: 'enabled'}\n case 'save-secret':\n return {...prevState, status: 'adding-secret'}\n case 'cancel-add-secret':\n return {...prevState, status: 'disabled'}\n case 'add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n case 'failed-remove-secret':\n return {...prevState, status: 'enabled'}\n case 'failed-add-secret':\n return {...prevState, status: 'add-secret-dialog'}\n default:\n return prevState\n }\n}\n\nexport default function VercelProtectionBypassTool(): React.JSX.Element {\n const client = useClient({apiVersion: apiVersion})\n const {push: pushToast} = useToast()\n const [state, dispatch] = useReducer(reducer, {status: 'loading'})\n const adding = state.status === 'adding-secret'\n const removing = state.status === 'removing-secret'\n\n const handleEnable = (secret: string) => {\n dispatch({type: 'save-secret'})\n enableVercelProtectionBypass(client, secret)\n .then(() => {\n dispatch({type: 'saved-secret'})\n pushToast({\n status: 'success',\n title: 'Protection bypass is now enabled',\n })\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-add-secret'})\n })\n }\n\n useEffect(() => {\n const unsubscribe = subcribeToVercelProtectionBypass(client, (secret) =>\n dispatch({type: secret ? 'saved-secret' : 'removed-secret'}),\n )\n return () => unsubscribe()\n }, [client])\n\n const enabled = state.status === 'enabled' || removing\n\n return (\n <>\n <Box\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={removing}\n onClick={() => {\n dispatch({type: 'remove-secret'})\n disableVercelProtectionBypass(client)\n .then(() => {\n pushToast({\n status: 'warning',\n title: 'Protection bypass is now disabled',\n })\n dispatch({type: 'removed-secret'})\n })\n .catch((reason) => {\n // eslint-disable-next-line no-console\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 dispatch({type: 'failed-remove-secret'})\n })\n }}\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 loading={state.status === 'loading'}\n onClick={() => {\n dispatch({type: 'add-secret'})\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 {(state.status === 'add-secret-dialog' || state.status === 'adding-secret') && (\n <Dialog\n animate\n id=\"add-secret-dialog\"\n onClickOutside={() => dispatch({type: 'cancel-add-secret'})}\n >\n <Card padding={3}>\n <form\n onSubmit={(event) => {\n event.preventDefault()\n event.currentTarget.reportValidity()\n const formData = new FormData(event.currentTarget)\n const secret = formData.get('secret') as string\n if (secret) handleEnable(secret)\n }}\n >\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\"\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={adding}\n />\n </Stack>\n <Button\n type=\"submit\"\n loading={adding}\n text={adding ? 'Saving…' : 'Save'}\n tone=\"positive\"\n />\n </Stack>\n </form>\n </Card>\n </Dialog>\n )}\n </>\n )\n}\n"],"names":["reducer","prevState","action","type","status","VercelProtectionBypassTool","$","_c","t0","Symbol","for","apiVersion","client","useClient","push","pushToast","useToast","t1","state","dispatch","useReducer","adding","removing","t2","secret","enableVercelProtectionBypass","then","title","catch","reason","console","error","handleEnable","t3","t4","unsubscribe","subcribeToVercelProtectionBypass","secret_0","useEffect","enabled","t5","height","alignItems","justifyContent","flexDirection","t6","maxWidth","t7","t8","justifyItems","textWrap","t9","disableVercelProtectionBypass","reason_0","t10","event","preventDefault","currentTarget","reportValidity","secret_1","FormData","get","_temp","_temp2","t11","event_1","setCustomValidity","value","length","required","event_0"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {name, title, icon, ...config} = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name: name || 'vercel-protection-bypass',\n title: title || 'Vercel Protection Bypass',\n icon: icon,\n component: lazy(() => import('./VercelProtectionBypassTool')),\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n }\n },\n)\n"],"names":["id","vercelProtectionBypassTool","definePlugin","options","name","title","icon","config","tools","component","lazy","__internalApplicationType"],"mappings":";;;AAGA,MAAMA,KAAK,4BAQEC,6BAA6BC,OAAAA,aACvCC,CAAY,YAAA;AACL,QAAA;AAAA,IAACC;AAAAA,IAAMC;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAM,IAAIJ,WAAW,CAAC;AAC5C,SAAA;AAAA,IACLC,MAAM,8BAA8BJ,EAAE;AAAA,IACtCQ,OAAO,CACL;AAAA,MACEJ,MAAMA,QAAQ;AAAA,MACdC,OAAOA,SAAS;AAAA,MAChBC;AAAAA,MACAG,WAAWC,MAAAA,KAAK,MAAM,QAAO,QAAA,EAAA,KAAA,WAAA;AAAA,eAAA,QAAA,8CAA8B;AAAA,QAAC;AAAA,MAC5DP,SAASI;AAAAA,MACTI,2BAA2B,UAAUX,EAAE;AAAA,IACxC,CAAA;AAAA,EAEL;AACF,CACF;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {name, title, icon, ...config} = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name: name || 'vercel-protection-bypass',\n title: title || 'Vercel Protection Bypass',\n icon: icon,\n component: lazy(() => import('./VercelProtectionBypassTool')),\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n }\n },\n)\n"],"names":["id","vercelProtectionBypassTool","definePlugin","options","name","title","icon","config","tools","component","lazy","__internalApplicationType"],"mappings":";;;AAGA,MAAMA,KAAK,4BAQEC,6BAA6BC,OAAAA,aACvCC,CAAAA,YAAY;AACX,QAAM;AAAA,IAACC;AAAAA,IAAMC;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAAA,IAAUJ,WAAW,CAAA;AAClD,SAAO;AAAA,IACLC,MAAM,8BAA8BJ,EAAE;AAAA,IACtCQ,OAAO,CACL;AAAA,MACEJ,MAAMA,QAAQ;AAAA,MACdC,OAAOA,SAAS;AAAA,MAChBC;AAAAA,MACAG,WAAWC,MAAAA,KAAK,MAAM,QAAA,QAAA,EAAA,KAAA,WAAA;AAAA,eAAA,QAAO,8CAA8B;AAAA,QAAC;AAAA,MAC5DP,SAASI;AAAAA,MACTI,2BAA2B,UAAUX,EAAE;AAAA,IAAA,CACxC;AAAA,EAAA;AAGP,CACF;;"}
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} from 'sanity'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {name, title, icon, ...config} = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name: name || 'vercel-protection-bypass',\n title: title || 'Vercel Protection Bypass',\n icon: icon,\n component: lazy(() => import('./VercelProtectionBypassTool')),\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n }\n },\n)\n"],"names":["id","vercelProtectionBypassTool","definePlugin","options","name","title","icon","config","tools","component","lazy","__internalApplicationType"],"mappings":";;AAGA,MAAMA,KAAK,4BAQEC,6BAA6BC,aACvCC,CAAY,YAAA;AACL,QAAA;AAAA,IAACC;AAAAA,IAAMC;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAM,IAAIJ,WAAW,CAAC;AAC5C,SAAA;AAAA,IACLC,MAAM,8BAA8BJ,EAAE;AAAA,IACtCQ,OAAO,CACL;AAAA,MACEJ,MAAMA,QAAQ;AAAA,MACdC,OAAOA,SAAS;AAAA,MAChBC;AAAAA,MACAG,WAAWC,KAAK,MAAM,OAAO,4CAA8B,CAAC;AAAA,MAC5DP,SAASI;AAAAA,MACTI,2BAA2B,UAAUX,EAAE;AAAA,IACxC,CAAA;AAAA,EAEL;AACF,CACF;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {lazy} from 'react'\nimport {definePlugin} from 'sanity'\n\nconst id = 'vercel-protection-bypass'\n\nexport interface VercelProtectionBypassConfig {\n name?: string\n title?: string\n icon?: React.ComponentType\n}\n\nexport const vercelProtectionBypassTool = definePlugin<VercelProtectionBypassConfig | void>(\n (options) => {\n const {name, title, icon, ...config} = options || {}\n return {\n name: `@sanity/preview-url-secret/${id}`,\n tools: [\n {\n name: name || 'vercel-protection-bypass',\n title: title || 'Vercel Protection Bypass',\n icon: icon,\n component: lazy(() => import('./VercelProtectionBypassTool')),\n options: config,\n __internalApplicationType: `sanity/${id}`,\n },\n ],\n }\n },\n)\n"],"names":["id","vercelProtectionBypassTool","definePlugin","options","name","title","icon","config","tools","component","lazy","__internalApplicationType"],"mappings":";;AAGA,MAAMA,KAAK,4BAQEC,6BAA6BC,aACvCC,CAAAA,YAAY;AACX,QAAM;AAAA,IAACC;AAAAA,IAAMC;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAAA,IAAUJ,WAAW,CAAA;AAClD,SAAO;AAAA,IACLC,MAAM,8BAA8BJ,EAAE;AAAA,IACtCQ,OAAO,CACL;AAAA,MACEJ,MAAMA,QAAQ;AAAA,MACdC,OAAOA,SAAS;AAAA,MAChBC;AAAAA,MACAG,WAAWC,KAAK,MAAM,OAAO,4CAA8B,CAAC;AAAA,MAC5DP,SAASI;AAAAA,MACTI,2BAA2B,UAAUX,EAAE;AAAA,IAAA,CACxC;AAAA,EAAA;AAGP,CACF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/vercel-protection-bypass",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "homepage": "https://github.com/sanity-io/visual-editing/tree/main/packages/vercel-protection-bypass#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/sanity-io/visual-editing/issues"
@@ -42,17 +42,17 @@
42
42
  "root": true
43
43
  },
44
44
  "dependencies": {
45
- "@sanity/icons": "^3.7.0",
46
- "@sanity/ui": "^2.16.2",
45
+ "@sanity/icons": "^3.7.4",
46
+ "@sanity/ui": "^2.16.7",
47
47
  "react-compiler-runtime": "19.1.0-rc.2",
48
- "@sanity/preview-url-secret": "^2.1.12"
48
+ "@sanity/preview-url-secret": "^2.1.13"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@sanity/pkg-utils": "6.13.4",
52
52
  "babel-plugin-react-compiler": "19.1.0-rc.2",
53
53
  "eslint": "^8.57.1",
54
54
  "react": "^19.1.0",
55
- "sanity": "3.93.0",
55
+ "sanity": "^4.0.1",
56
56
  "typescript": "5.8.3",
57
57
  "vitest": "^3.2.4",
58
58
  "@repo/eslint-config": "0.0.0",