@sanity/vercel-protection-bypass
5.0.135.0.14
dist/VercelProtectionBypassTool.js−
dist/VercelProtectionBypassTool.jsDeleted−276
Index: package/dist/VercelProtectionBypassTool.js
===================================================================
--- package/dist/VercelProtectionBypassTool.js
+++ package/dist/VercelProtectionBypassTool.js
@@ -1,276 +0,0 @@
-import { apiVersion, fetchVercelProtectionBypassSecret, tag, vercelProtectionBypassSchemaId, vercelProtectionBypassSchemaType } from "@sanity/preview-url-secret/constants";
-import { Activity, Suspense, use, useActionState, useEffect, useEffectEvent, useState, useTransition } from "react";
-import { useClient } from "sanity";
-import { c } from "react/compiler-runtime";
-import { AddIcon } from "@sanity/icons/Add";
-import { TrashIcon } from "@sanity/icons/Trash";
-import { Box, Button, Card, Dialog, Flex, Heading, Spinner, Stack, Text, TextInput, useToast } from "@sanity/ui";
-import { Fragment, jsx, jsxs } from "react/jsx-runtime";
-async function enableVercelProtectionBypass(client, secret) {
- let patch = client.patch(vercelProtectionBypassSchemaId).set({ secret });
- await client.transaction().createIfNotExists({
- _id: vercelProtectionBypassSchemaId,
- _type: vercelProtectionBypassSchemaType
- }).patch(patch).commit({ tag });
-}
-async function disableVercelProtectionBypass(client) {
- let patch = client.patch(vercelProtectionBypassSchemaId).set({ secret: null });
- await client.transaction().createIfNotExists({
- _id: vercelProtectionBypassSchemaId,
- _type: vercelProtectionBypassSchemaType
- }).patch(patch).commit({ tag });
-}
-function VercelProtectionBypassTool() {
- let $ = c(9), t0;
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = { apiVersion }, $[0] = t0) : t0 = $[0];
- let client = useClient(t0), t1;
- $[1] === client ? t1 = $[2] : (t1 = async function(lastLiveEventId) {
- let { result, syncTags } = await client.fetch(fetchVercelProtectionBypassSecret, {}, {
- filterResponse: !1,
- lastLiveEventId: typeof lastLiveEventId == "string" ? lastLiveEventId : null,
- tag: "preview-url-secret.fetch-vercel-bypass-protection-secret"
- });
- return {
- secret: result,
- syncTags: syncTags ?? []
- };
- }, $[1] = client, $[2] = t1);
- let fetchSecret = t1, t2;
- $[3] === fetchSecret ? t2 = $[4] : (t2 = () => fetchSecret(null), $[3] = fetchSecret, $[4] = t2);
- let [initialStatePromise] = useState(t2), t3;
- $[5] === Symbol.for("react.memo_cache_sentinel") ? (t3 = /* @__PURE__ */ jsx(Flex, {
- align: "center",
- direction: "column",
- height: "fill",
- justify: "center",
- style: { width: "100%" },
- children: /* @__PURE__ */ jsx(Spinner, {})
- }), $[5] = t3) : t3 = $[5];
- let t4;
- return $[6] !== fetchSecret || $[7] !== initialStatePromise ? (t4 = /* @__PURE__ */ jsx(Suspense, {
- fallback: t3,
- children: /* @__PURE__ */ jsx(Layout, {
- initialStatePromise,
- fetchSecret
- })
- }), $[6] = fetchSecret, $[7] = initialStatePromise, $[8] = t4) : t4 = $[8], t4;
-}
-function Layout(t0) {
- let $ = c(29), { initialStatePromise, fetchSecret } = t0, { push: pushToast } = useToast(), [isDialogOpen, setIsDialogOpen] = useState(!1), t1;
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t1 = { apiVersion }, $[0] = t1) : t1 = $[0];
- let client = useClient(t1), t2;
- $[1] !== client || $[2] !== fetchSecret || $[3] !== pushToast ? (t2 = async (prevState, formData) => {
- let action = formData.get("action");
- if (typeof action != "string") throw Error("Action is not a string");
- switch (action) {
- case "remove-secret": return disableVercelProtectionBypass(client).then(() => (pushToast({
- status: "warning",
- title: "Protection bypass is now disabled"
- }), {
- ...prevState,
- secret: null
- })).catch((reason_0) => (console.error(reason_0), pushToast({
- status: "error",
- title: "There was an error when trying to disable protection bypass. See the browser console for more information."
- }), prevState));
- case "add-secret": {
- let secret = formData.get("secret");
- if (typeof secret != "string") throw Error("Secret is not a string");
- return enableVercelProtectionBypass(client, secret).then(() => (pushToast({
- status: "success",
- title: "Protection bypass is now enabled"
- }), setIsDialogOpen(!1), {
- ...prevState,
- secret
- })).catch((reason) => (console.error(reason), pushToast({
- status: "error",
- title: "There was an error when trying to enable protection bypass. See the browser console for more information."
- }), prevState));
- }
- case "refresh-secret": return fetchSecret(formData.get("lastLiveEventId"));
- default: throw Error(`Unknown action: ${action}`);
- }
- }, $[1] = client, $[2] = fetchSecret, $[3] = pushToast, $[4] = t2) : t2 = $[4];
- let [formState, formAction, isPending] = useActionState(t2, use(initialStatePromise)), isBackgroundRefetch = useRefetchOnLiveEvent(client, formState, formAction), loading = isPending && !isBackgroundRefetch, enabled = !!formState.secret, t3;
- $[5] === Symbol.for("react.memo_cache_sentinel") ? (t3 = {
- height: "100%",
- alignItems: "center",
- justifyContent: "center",
- flexDirection: "column"
- }, $[5] = t3) : t3 = $[5];
- let t4;
- $[6] === Symbol.for("react.memo_cache_sentinel") ? (t4 = { maxWidth: 640 }, $[6] = t4) : t4 = $[6];
- let t5, t6;
- $[7] === Symbol.for("react.memo_cache_sentinel") ? (t5 = {
- justifyItems: "flex-start",
- textWrap: "pretty"
- }, t6 = /* @__PURE__ */ jsx(Heading, { children: "Vercel Protection Bypass" }), $[7] = t5, $[8] = t6) : (t5 = $[7], t6 = $[8]);
- let t7;
- $[9] !== enabled || $[10] !== loading ? (t7 = /* @__PURE__ */ jsx(Box, {
- as: "form",
- action: formAction,
- sizing: "border",
- display: "flex",
- style: t3,
- children: /* @__PURE__ */ jsx(Stack, {
- gap: 5,
- children: /* @__PURE__ */ jsx(Card, {
- padding: 4,
- style: t4,
- children: /* @__PURE__ */ jsxs(Stack, {
- gap: 4,
- style: t5,
- children: [t6, enabled ? /* @__PURE__ */ jsxs(Fragment, { children: [
- /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Text, {
- style: { textWrap: "pretty" },
- children: [
- "Sanity Presentation is setup to use",
- " ",
- /* @__PURE__ */ jsx("a", {
- href: "https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation",
- target: "_blank",
- rel: "noreferrer",
- children: "protection bypass for automation"
- }),
- " ",
- "in order to display protected deployments in its preview iframe for the current Sanity dataset."
- ]
- }) }),
- /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: "You can turn off automatic protection bypass at any time by clicking the button below." }) }),
- /* @__PURE__ */ jsx(Button, {
- mode: "ghost",
- tone: "critical",
- icon: /* @__PURE__ */ jsx(TrashIcon, {}),
- loading,
- type: "submit",
- name: "action",
- value: "remove-secret",
- text: "Remove secret"
- }),
- /* @__PURE__ */ jsx(Text, { children: "Protection bypass remains enabled if this plugin is removed from your Sanity config." })
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
- /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(Text, {
- style: { textWrap: "pretty" },
- children: [
- "Follow the instructions on",
- " ",
- /* @__PURE__ */ jsx("a", {
- href: "https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation",
- target: "_blank",
- rel: "noreferrer",
- children: "how to enable protection bypass for automation"
- }),
- "."
- ]
- }) }),
- /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: "This will setup a secret that Vercel exposes as an environment variable called VERCEL_AUTOMATION_BYPASS_SECRET, its value is the secret you need." }) }),
- /* @__PURE__ */ jsx(Button, {
- mode: "ghost",
- icon: /* @__PURE__ */ jsx(AddIcon, {}),
- onClick: () => {
- setIsDialogOpen(!0);
- },
- text: "Add secret"
- }),
- /* @__PURE__ */ jsx(Text, { children: "If you're using Sanity Presentation Tool with multiple protected deployments ensure that they have the same secret set, as this tool will set a secret that is shared in your dataset with all instances of Presentation Tool." })
- ] })]
- })
- })
- })
- }), $[9] = enabled, $[10] = loading, $[11] = t7) : t7 = $[11];
- let t8 = isDialogOpen ? "visible" : "hidden", t9;
- $[12] === Symbol.for("react.memo_cache_sentinel") ? (t9 = () => setIsDialogOpen(!1), $[12] = t9) : t9 = $[12];
- let t10, t11;
- $[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]);
- let t12;
- $[15] === loading ? t12 = $[16] : (t12 = /* @__PURE__ */ jsxs(Stack, {
- gap: 2,
- children: [
- t10,
- t11,
- /* @__PURE__ */ jsx(TextInput, {
- name: "secret",
- onFocus: _temp,
- onBlur: _temp2,
- minLength: 32,
- maxLength: 32,
- autoComplete: "off",
- autoCapitalize: "off",
- autoCorrect: "off",
- spellCheck: "false",
- disabled: loading
- })
- ]
- }), $[15] = loading, $[16] = t12);
- let t13 = loading ? "Saving…" : "Save", t14;
- $[17] !== loading || $[18] !== t13 ? (t14 = /* @__PURE__ */ jsx(Button, {
- type: "submit",
- loading,
- text: t13,
- tone: "positive",
- name: "action",
- value: "add-secret"
- }), $[17] = loading, $[18] = t13, $[19] = t14) : t14 = $[19];
- let t15;
- $[20] !== t12 || $[21] !== t14 ? (t15 = /* @__PURE__ */ jsx(Dialog, {
- animate: !0,
- id: "add-secret-dialog",
- onClickOutside: t9,
- children: /* @__PURE__ */ jsx(Card, {
- as: "form",
- action: formAction,
- padding: 3,
- children: /* @__PURE__ */ jsxs(Stack, {
- gap: 3,
- children: [t12, t14]
- })
- })
- }), $[20] = t12, $[21] = t14, $[22] = t15) : t15 = $[22];
- let t16;
- $[23] !== t15 || $[24] !== t8 ? (t16 = /* @__PURE__ */ jsx(Activity, {
- mode: t8,
- children: t15
- }), $[23] = t15, $[24] = t8, $[25] = t16) : t16 = $[25];
- let t17;
- return $[26] !== t16 || $[27] !== t7 ? (t17 = /* @__PURE__ */ jsxs(Fragment, { children: [t7, t16] }), $[26] = t16, $[27] = t7, $[28] = t17) : t17 = $[28], t17;
-}
-function _temp2(event_0) {
- event_0.currentTarget.setCustomValidity(event_0.currentTarget.value.length == 32 ? "" : "Secret must be 32 characters long"), event_0.currentTarget.required = !0;
-}
-function _temp(event) {
- event.currentTarget.setCustomValidity("");
-}
-function useRefetchOnLiveEvent(client, formState, action) {
- let $ = c(8), [isBackgroundRefetch, startTransition] = useTransition(), t0;
- $[0] !== action || $[1] !== formState ? (t0 = (event) => {
- if (event.type === "message" && event.tags.some((tag) => formState.syncTags.includes(tag))) {
- let formData = new FormData();
- formData.set("action", "refresh-secret"), formData.set("lastLiveEventId", event.id), startTransition(() => action(formData));
- }
- }, $[0] = action, $[1] = formState, $[2] = t0) : t0 = $[2];
- let handleLiveEvent = useEffectEvent(t0), t1;
- $[3] !== client.live || $[4] !== handleLiveEvent ? (t1 = () => {
- let subscription = client.live.events().subscribe({
- next: handleLiveEvent,
- error: _temp3
- });
- return () => subscription.unsubscribe();
- }, $[3] = client.live, $[4] = handleLiveEvent, $[5] = t1) : t1 = $[5];
- let t2;
- return $[6] === client ? t2 = $[7] : (t2 = [client], $[6] = client, $[7] = t2), useEffect(t1, t2), isBackgroundRefetch;
-}
-function _temp3(reason) {
- return console.error(reason);
-}
-export { VercelProtectionBypassTool as default };
-
-//# sourceMappingURL=VercelProtectionBypassTool.js.map
\ No newline at end of file