void 0.22.0 → 0.23.0
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/README.md +5 -1
- package/dist/{account-cmd-CjyxcGkM.mjs → account-cmd-C84Ee8cO.mjs} +4 -4
- package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
- package/dist/application-routing-B7QEjqSR.mjs +27 -0
- package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
- package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
- package/dist/{auth-link-BLO4ptzo.mjs → auth-link-CioEg6uY.mjs} +4 -4
- package/dist/{auth-router-ZUg9MF_U.mjs → auth-router-BsR981d4.mjs} +4 -4
- package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
- package/dist/{build-cmd-BxR5FROK.mjs → build-cmd-LzvNJORH.mjs} +17 -5
- package/dist/{cache-D0sWhgKI.mjs → cache-C4MvnrMH.mjs} +2 -2
- package/dist/{cancel-deploy-D4NUqFbi.mjs → cancel-deploy-abUxpP2n.mjs} +2 -2
- package/dist/{cf-build-output-BJ6yGEIS.mjs → cf-build-output-BPqOT964.mjs} +2 -1
- package/dist/cf-build-output-_0HNWysu.mjs +2 -0
- package/dist/cli/cli.mjs +80 -455
- package/dist/cli/{cf-compat.mjs → cloudflare-operation-process.mjs} +442 -421
- package/dist/cli/env-schema-probe.d.mts +2 -1
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/client-Cu7jWiF1.mjs +2 -0
- package/dist/{client-BTZ3XkrB.mjs → client-RV8NVeB8.mjs} +140 -21
- package/dist/{cloudflare-auth-DQkqoMYa.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -38
- package/dist/{cloudflare-cmd-BKlfGHAy.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +5 -5
- package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
- package/dist/{cloudflare-connect-Ctmrw579.mjs → cloudflare-connect-B8uPZ4nx.mjs} +3 -3
- package/dist/{cloudflare-operations-BT6OWFBk.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
- package/dist/{cloudflare-operations-B9tzgjmf.mjs → cloudflare-operations-fxHb-byx.mjs} +116 -172
- package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
- package/dist/{config-VavjpDnp.d.mts → config-BMHb8RCj.d.mts} +1 -0
- package/dist/config-C_XRIPx2.mjs +89 -0
- package/dist/config-entry.d.mts +1 -1
- package/dist/{connect-Dg-WkW-C.mjs → connect-Bd4kJd9U.mjs} +5 -5
- package/dist/{create-project-DdoqwFLF.mjs → create-project-Boczwj5r.mjs} +1 -1
- package/dist/{create-project-l9J7pbtm.mjs → create-project-bMf6ffLZ.mjs} +2 -2
- package/dist/{db-gp2sCXyN.mjs → db-8uG64XLl.mjs} +21 -21
- package/dist/{delete-TTedbH6B.mjs → delete-NvbiyeJf.mjs} +2 -2
- package/dist/{deploy-CH-o2CaZ.mjs → deploy-DzAIwqNU.mjs} +908 -582
- package/dist/{deploy-B19L2Bra.mjs → deploy-bjXdFCtn.mjs} +1 -1
- package/dist/{domain-JRF59P_r.mjs → domain-y5Tvydvo.mjs} +3 -3
- package/dist/{email-Bo6G9LOZ.mjs → email-B3umsW75.mjs} +13 -28
- package/dist/{env-BYOrWQnv.mjs → env-BS6qYHDb.mjs} +4 -4
- package/dist/{env-public-BxU_0yTL.d.mts → env-public-BX_r8HR6.d.mts} +1 -1
- package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
- package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
- package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
- package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
- package/dist/{gen-sCtlCOdA.mjs → gen-B580--vC.mjs} +2 -2
- package/dist/gen-BVaUUumi.mjs +2 -0
- package/dist/{github-cmd-0-7PexDq.mjs → github-cmd-v45BdfKX.mjs} +2 -2
- package/dist/{handler-HEcZsaij.d.mts → handler-CZ4nAylQ.d.mts} +1 -1
- package/dist/help-DofyZuY7.mjs +2 -0
- package/dist/{help-GKtwl07I.mjs → help-daGKjXGk.mjs} +229 -747
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +288 -1502
- package/dist/info-B97bTX9N.mjs +113 -0
- package/dist/{init-FZx3Elvz.mjs → init-Bvy7zrBo.mjs} +46 -15
- package/dist/limits-Bq5LG8Id.d.mts +27 -0
- package/dist/limits-Cjuk2VPm.mjs +68 -0
- package/dist/{link-BrQfb_CU.mjs → link-CDqqCjFl.mjs} +3 -3
- package/dist/{list-D44jmIAM.mjs → list-CZj0dzKY.mjs} +3 -3
- package/dist/{live-CKJlvlNp.d.mts → live-Chw1eIMv.d.mts} +1 -1
- package/dist/{local-d1-Bg9OzEEO.mjs → local-d1-2CMnpuW_.mjs} +2 -2
- package/dist/login-DYt_An22.mjs +2 -0
- package/dist/{login-CAsAsQ-_.mjs → login-UZKFM_u7.mjs} +3 -3
- package/dist/{logs-BjKvFnVM.mjs → logs-CUZ6t9t3.mjs} +3 -3
- package/dist/migrate-8_2u55MD.mjs +2 -0
- package/dist/{migrate-BPITvDJN.mjs → migrate-DHul7PRV.mjs} +2 -1
- package/dist/{node-Dt7z256D.mjs → node-BkyRWRx8.mjs} +1 -1
- package/dist/operator-args-CLgKGlwU.mjs +690 -0
- package/dist/{operator-cmd-BK5CCiT9.mjs → operator-cmd-DBA6dl0m.mjs} +68 -22
- package/dist/pages/client.d.mts +34 -2
- package/dist/pages/client.mjs +59 -3
- package/dist/pages/index.d.mts +1 -1
- package/dist/pages/index.mjs +1 -1
- package/dist/pages/islands-plugin.mjs +1 -1
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -308
- package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
- package/dist/plan-D1Q5rf-r.mjs +2 -0
- package/dist/plan-NPpwZ_kc.mjs +58 -0
- package/dist/platform-args-BJdRtlLq.mjs +506 -0
- package/dist/platform-args-D3RXyR6h.mjs +2 -0
- package/dist/{platform-auth-config-BlN8xTdD.mjs → platform-auth-config-B56E9YP1.mjs} +3 -3
- package/dist/{platform-auth-protection-7d5aV2Jg.mjs → platform-auth-protection-BDWO_aER.mjs} +2 -2
- package/dist/{platform-auth-recovery-Dxij8ZbR.mjs → platform-auth-recovery-1gg4CSRe.mjs} +3 -3
- package/dist/{platform-cmd-E0FuL212.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
- package/dist/{platform-cmd-B3hwKrFK.mjs → platform-cmd-DMcQStSc.mjs} +24 -3
- package/dist/{platform-domain-D6Xcy9ZX.mjs → platform-domain-BNkcz0OB.mjs} +2 -2
- package/dist/{platform-lifecycle-k0E0xoxx.mjs → platform-lifecycle-9OyBALhH.mjs} +327 -215
- package/dist/{platform-lifecycle-DMh_qrry.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
- package/dist/{platform-management-Brz_BDiT.mjs → platform-management-CjwLVQwN.mjs} +6 -3
- package/dist/{platform-management-DOtss0BN.mjs → platform-management-CnyTdcWX.mjs} +1 -1
- package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
- package/dist/{platform-recovery-BvtcXON5.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
- package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
- package/dist/{prepare-C-6YZyyg.mjs → prepare-B5Mkic5u.mjs} +1 -1
- package/dist/{prepare-CRhJbVrG.mjs → prepare-DOsL0CC9.mjs} +4 -20
- package/dist/prepare-cgvDMtSb.mjs +2 -0
- package/dist/{project-cmd-BZLCqOqw.mjs → project-cmd-CNzrqvBv.mjs} +16 -16
- package/dist/{project-team-BvgM0WoX.mjs → project-team-DQOWPfQT.mjs} +2 -2
- package/dist/{project-token-l5DqK6Az.mjs → project-token-CTDYU0Cc.mjs} +2 -2
- package/dist/{project-zero-trust-v6Mvpp8y.mjs → project-zero-trust-BNAkW-_0.mjs} +2 -2
- package/dist/{protocol-BBa6cstI.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
- package/dist/protocol-U7bfjHmA.mjs +331 -0
- package/dist/{provision-Fr9pRqce.mjs → provision-C4ORE7G7.mjs} +1 -1
- package/dist/{provision-C4IGqkBf.mjs → provision-CJFgTZY8.mjs} +89 -198
- package/dist/{requests-DN-BbNiM.mjs → requests-MhxYnau8.mjs} +2 -2
- package/dist/resource-name-C7LVpcRm.mjs +11 -0
- package/dist/{rollback-D7rzSaZM.mjs → rollback-CJ6iSDoU.mjs} +3 -3
- package/dist/route-url-CG7U-cRN.mjs +15 -0
- package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
- package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
- package/dist/runtime/ai.d.mts +12 -8
- package/dist/runtime/ai.mjs +84 -17
- package/dist/runtime/better-auth-mysql.mjs +1 -1
- package/dist/runtime/better-auth-pg.mjs +1 -1
- package/dist/runtime/better-auth.mjs +1 -1
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/durable.d.mts +3 -1
- package/dist/runtime/durable.mjs +4 -1
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/kv.mjs +0 -1
- package/dist/runtime/limits.d.mts +2 -0
- package/dist/runtime/limits.mjs +2 -0
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-server.mjs +25 -16
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/migration-handler.mjs +62 -42
- package/dist/runtime/route-url.d.mts +4 -0
- package/dist/runtime/route-url.mjs +2 -0
- package/dist/runtime/routing.d.mts +180 -0
- package/dist/runtime/routing.mjs +1082 -0
- package/dist/runtime/sandbox-container.d.mts +1 -1
- package/dist/runtime/sandbox-container.mjs +1 -1
- package/dist/runtime/sandbox.d.mts +3 -3
- package/dist/runtime/sandbox.mjs +75 -45
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +4 -2
- package/dist/runtime/ws-server.mjs +27 -2
- package/dist/runtime/ws.d.mts +2 -2
- package/dist/runtime/ws.mjs +8 -6
- package/dist/{sandbox-qpNBT8a3.d.mts → sandbox-XZAqzFlG.d.mts} +11 -8
- package/dist/{sandbox-container-DdNEBfCc.d.mts → sandbox-container-Bo0eiFKz.d.mts} +2 -1
- package/dist/{sandbox-container-4fdqLnyb.mjs → sandbox-container-C6ItmVuN.mjs} +4 -2
- package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
- package/dist/{secret-BOtOl_cb.mjs → secret-Dli5fP0B.mjs} +4 -4
- package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
- package/dist/validate-Dq_L3s0S.mjs +2 -0
- package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
- package/dist/{wrangler-DQF1vKyf.mjs → wrangler-7K-bW_DL.mjs} +8 -239
- package/dist/{ws-BoY7vQML.d.mts → ws-CL1w7GXU.d.mts} +13 -2
- package/package.json +15 -8
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
- package/skills/void/SKILL.md +50 -135
- package/skills/void/docs/guide/ai.md +94 -84
- package/skills/void/docs/guide/app-types.md +3 -32
- package/skills/void/docs/guide/auth.md +12 -116
- package/skills/void/docs/guide/database/d1.md +9 -54
- package/skills/void/docs/guide/database/mysql.md +1 -1
- package/skills/void/docs/guide/database/postgresql.md +5 -26
- package/skills/void/docs/guide/database.md +23 -75
- package/skills/void/docs/guide/deployment.md +27 -113
- package/skills/void/docs/guide/durable-state.md +43 -18
- package/skills/void/docs/guide/edge/headers.md +3 -47
- package/skills/void/docs/guide/edge/prerendering.md +5 -20
- package/skills/void/docs/guide/edge/redirects.md +11 -64
- package/skills/void/docs/guide/edge/revalidation.md +5 -18
- package/skills/void/docs/guide/edge/rewrites.md +56 -284
- package/skills/void/docs/guide/edge/static-assets.md +22 -72
- package/skills/void/docs/guide/email/domains.md +112 -0
- package/skills/void/docs/guide/email/receiving.md +139 -0
- package/skills/void/docs/guide/email/sending.md +231 -0
- package/skills/void/docs/guide/email.md +13 -619
- package/skills/void/docs/guide/env-migration.md +11 -11
- package/skills/void/docs/guide/env-vars.md +9 -29
- package/skills/void/docs/guide/index.md +0 -15
- package/skills/void/docs/guide/jobs.md +3 -18
- package/skills/void/docs/guide/kv.md +5 -11
- package/skills/void/docs/guide/live.md +5 -56
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
- package/skills/void/docs/guide/pages-routing/head.md +10 -10
- package/skills/void/docs/guide/pages-routing/islands.md +6 -36
- package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
- package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
- package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
- package/skills/void/docs/guide/pages-routing/overview.md +7 -17
- package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
- package/skills/void/docs/guide/platform/administration/access.md +1 -4
- package/skills/void/docs/guide/platform/administration/email.md +35 -8
- package/skills/void/docs/guide/platform/administration/operations.md +26 -4
- package/skills/void/docs/guide/platform/administration/plans.md +126 -0
- package/skills/void/docs/guide/platform/administration/projects.md +5 -2
- package/skills/void/docs/guide/platform/administration/zero-trust.md +23 -152
- package/skills/void/docs/guide/platform/development/runtime.md +3 -13
- package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
- package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
- package/skills/void/docs/guide/platform/installation/domains.md +30 -2
- package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -0
- package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
- package/skills/void/docs/guide/platform/installation/prerequisites.md +20 -15
- package/skills/void/docs/guide/platform/installation/setup.md +9 -5
- package/skills/void/docs/guide/platform-administration.md +1 -0
- package/skills/void/docs/guide/queues.md +7 -9
- package/skills/void/docs/guide/quickstart.md +38 -37
- package/skills/void/docs/guide/remote-dev.md +4 -9
- package/skills/void/docs/guide/sandboxes.md +29 -21
- package/skills/void/docs/guide/server-routing.md +9 -72
- package/skills/void/docs/guide/sse.md +4 -18
- package/skills/void/docs/guide/ssg.md +3 -15
- package/skills/void/docs/guide/ssr.md +14 -62
- package/skills/void/docs/guide/storage.md +9 -4
- package/skills/void/docs/guide/type-safety.md +3 -14
- package/skills/void/docs/guide/typed-fetch.md +3 -7
- package/skills/void/docs/guide/websockets.md +68 -40
- package/skills/void/docs/integrations/agents.md +3 -3
- package/skills/void/docs/integrations/cloudflare.md +85 -316
- package/skills/void/docs/integrations/frameworks/analog.md +5 -64
- package/skills/void/docs/integrations/frameworks/astro.md +4 -73
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
- package/skills/void/docs/integrations/frameworks/overview.md +11 -54
- package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
- package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
- package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
- package/skills/void/docs/reference/api/auth.md +156 -0
- package/skills/void/docs/reference/api/client.md +87 -0
- package/skills/void/docs/reference/api/database.md +95 -0
- package/skills/void/docs/reference/api/durable.md +46 -0
- package/skills/void/docs/reference/api/env.md +50 -0
- package/skills/void/docs/reference/api/handlers.md +254 -0
- package/skills/void/docs/reference/api/pages.md +241 -0
- package/skills/void/docs/reference/api/plugin.md +39 -0
- package/skills/void/docs/reference/api/resources.md +109 -0
- package/skills/void/docs/reference/api/rewrites.md +76 -0
- package/skills/void/docs/reference/api/types.md +92 -0
- package/skills/void/docs/reference/api.md +56 -1218
- package/skills/void/docs/reference/cli/auth.md +88 -0
- package/skills/void/docs/reference/cli/database.md +128 -0
- package/skills/void/docs/reference/cli/deploy.md +85 -0
- package/skills/void/docs/reference/cli/domains.md +41 -0
- package/skills/void/docs/reference/cli/email.md +129 -0
- package/skills/void/docs/reference/cli/generate.md +116 -0
- package/skills/void/docs/reference/cli/github.md +189 -0
- package/skills/void/docs/reference/cli/platform-config.md +92 -0
- package/skills/void/docs/reference/cli/platform-email.md +81 -0
- package/skills/void/docs/reference/cli/platform-installation.md +127 -0
- package/skills/void/docs/reference/cli/platform-operations.md +90 -0
- package/skills/void/docs/reference/cli/platform-users.md +89 -0
- package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
- package/skills/void/docs/reference/cli/platform.md +70 -0
- package/skills/void/docs/reference/cli/project.md +214 -0
- package/skills/void/docs/reference/cli/secrets.md +76 -0
- package/skills/void/docs/reference/cli/setup.md +70 -0
- package/skills/void/docs/reference/cli.md +32 -1682
- package/skills/void/docs/reference/config.md +12 -18
- package/skills/void/docs/reference/resource-inference.md +3 -58
- package/skills/void/docs/reference/structure.md +14 -41
- package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
- package/dist/client-Czz8o5jP.mjs +0 -2
- package/dist/gen-CNJ62MM7.mjs +0 -2
- package/dist/help-CmZzxUba.mjs +0 -2
- package/dist/login-CGcRKEoi.mjs +0 -2
- package/dist/migrate-CYfbKkXh.mjs +0 -2
- package/dist/plan-BEZ8VJW0.mjs +0 -256
- package/dist/plan-DpuOr14e.mjs +0 -2
- package/dist/prepare-Bm3iq-u4.mjs +0 -2
- package/dist/validate-EKmJWxmy.mjs +0 -2
- /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as join, t as basename } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { A as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE, y as readRootWranglerConfig } from "./wrangler-7K-bW_DL.mjs";
|
|
3
3
|
import { I as select, W as isCancel, j as log } from "./dist-CTBk70IR.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { i as ensureCloudflareAuthentication, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-Qdc7tw8F.mjs";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
//#region src/cli/cloudflare-connect.ts
|
|
7
7
|
async function connectCloudflare(root, interactive = Boolean(process.stdin.isTTY)) {
|
|
@@ -24,7 +24,7 @@ async function connectCloudflare(root, interactive = Boolean(process.stdin.isTTY
|
|
|
24
24
|
interactive,
|
|
25
25
|
requireAccounts: true,
|
|
26
26
|
runWrangler: createBundledCloudflareAuthRunner(root),
|
|
27
|
-
|
|
27
|
+
configPath: existingConfigPath
|
|
28
28
|
});
|
|
29
29
|
let account = accounts.find((entry) => entry.id === pinnedAccount);
|
|
30
30
|
if (pinnedAccount && !account) throw new Error(`connect: The signed-in Cloudflare session cannot access account ${pinnedAccount}.`);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-
|
|
1
|
+
import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-fxHb-byx.mjs";
|
|
2
2
|
export { activateCloudflareExistingVersion, applyCloudflareD1Migrations, changeCloudflareDomain, deleteCloudflareSecret, executeCloudflareD1Sql, listCloudflareDomains, listCloudflareSecrets, putCloudflareSecret, readCloudflareD1Migrations, readCloudflareWorkerStatus, resolveCloudflareD1Context, resolveCloudflareOperationContext, syncCloudflareSecrets, tailCloudflareWorker };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-Bktvwtpf.mjs";
|
|
3
|
+
import { C as readWranglerPublishedTrafficSnapshot, j as writeWranglerPublishedTrafficSnapshot, k as updateWranglerCustomDomain, x as readWranglerCustomDomains } from "./wrangler-7K-bW_DL.mjs";
|
|
3
4
|
import { r as scanWranglerDotenvKeys } from "./dotenv-VQxupEUv.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { _ as resolvePinnedApiBaseUrl, g as provisionEnv, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware } from "./provision-
|
|
5
|
+
import { t as createCloudflareProcessRunner } from "./cloudflare-process-B-wekeR6.mjs";
|
|
6
|
+
import { _ as resolvePinnedApiBaseUrl, g as provisionEnv, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware } from "./provision-CJFgTZY8.mjs";
|
|
6
7
|
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
7
8
|
import { tmpdir } from "node:os";
|
|
8
|
-
import { spawnSync } from "node:child_process";
|
|
9
9
|
import { deployCloudflareVersionTraffic, encodeCloudflareVersionMessage, parseCloudflareVersionMessage, parseRootWranglerConfig, readBindingFieldPresence, readCloudflareTriggerConfig, readWranglerTopLevelString, resolveD1MigrateTarget, stabilizeCloudflareVersionTriggers } from "@void/deploy-cloudflare";
|
|
10
10
|
//#region src/cli/cloudflare-operations.ts
|
|
11
11
|
function resolveCloudflareOperationContext(root, runner) {
|
|
@@ -28,13 +28,11 @@ function resolveCloudflareOperationContext(root, runner) {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
async function listCloudflareSecrets(context) {
|
|
31
|
-
const parsed = parseJson((await run(context,
|
|
32
|
-
"secret",
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"json"
|
|
37
|
-
])).stdout, "Cloudflare secret list");
|
|
31
|
+
const parsed = parseJson((await run(context, {
|
|
32
|
+
type: "secret.list",
|
|
33
|
+
configPath: context.configPath,
|
|
34
|
+
workerName: context.workerName
|
|
35
|
+
})).data, "Cloudflare secret list");
|
|
38
36
|
if (!Array.isArray(parsed)) throw new Error("Cloudflare secret list returned an unexpected response.");
|
|
39
37
|
return parsed.map((entry) => {
|
|
40
38
|
if (typeof entry !== "object" || entry === null) return null;
|
|
@@ -43,28 +41,28 @@ async function listCloudflareSecrets(context) {
|
|
|
43
41
|
}).filter((name) => name !== null).sort();
|
|
44
42
|
}
|
|
45
43
|
async function putCloudflareSecret(context, name, value) {
|
|
46
|
-
await run(context,
|
|
47
|
-
"secret",
|
|
48
|
-
"put",
|
|
44
|
+
await run(context, {
|
|
45
|
+
type: "secret.put",
|
|
49
46
|
name,
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
configPath: context.configPath,
|
|
48
|
+
workerName: context.workerName
|
|
49
|
+
}, { input: value });
|
|
52
50
|
}
|
|
53
51
|
async function syncCloudflareSecrets(context, secrets) {
|
|
54
52
|
const values = Object.fromEntries(secrets.map(({ name, value }) => [name, value]));
|
|
55
|
-
await run(context,
|
|
56
|
-
"secret",
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
await run(context, {
|
|
54
|
+
type: "secret.bulk",
|
|
55
|
+
configPath: context.configPath,
|
|
56
|
+
workerName: context.workerName
|
|
57
|
+
}, { input: `${JSON.stringify(values)}\n` });
|
|
60
58
|
}
|
|
61
59
|
async function deleteCloudflareSecret(context, name) {
|
|
62
|
-
await run(context,
|
|
63
|
-
"secret",
|
|
64
|
-
"delete",
|
|
60
|
+
await run(context, {
|
|
61
|
+
type: "secret.delete",
|
|
65
62
|
name,
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
configPath: context.configPath,
|
|
64
|
+
workerName: context.workerName
|
|
65
|
+
});
|
|
68
66
|
}
|
|
69
67
|
function resolveCloudflareD1Context(root, binding, runner) {
|
|
70
68
|
const operation = resolveCloudflareOperationContext(root, runner);
|
|
@@ -84,18 +82,12 @@ function resolveCloudflareD1Context(root, binding, runner) {
|
|
|
84
82
|
};
|
|
85
83
|
}
|
|
86
84
|
async function executeCloudflareD1Sql(context, sql) {
|
|
87
|
-
const parsed = parseJson((await run(context.operation,
|
|
88
|
-
"d1",
|
|
89
|
-
|
|
90
|
-
context.migrateToken,
|
|
91
|
-
"--remote",
|
|
92
|
-
"--command",
|
|
85
|
+
const parsed = parseJson((await run(context.operation, {
|
|
86
|
+
type: "d1.execute",
|
|
87
|
+
database: context.migrateToken,
|
|
93
88
|
sql,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
context.operation.configPath,
|
|
97
|
-
"--env="
|
|
98
|
-
])).stdout, "Cloudflare D1 execute");
|
|
89
|
+
configPath: context.operation.configPath
|
|
90
|
+
})).data, "Cloudflare D1 execute");
|
|
99
91
|
if (!Array.isArray(parsed)) throw new Error("Cloudflare D1 execute returned an unexpected response.");
|
|
100
92
|
const rows = [];
|
|
101
93
|
for (const item of parsed) {
|
|
@@ -116,46 +108,38 @@ async function readCloudflareD1Migrations(context) {
|
|
|
116
108
|
}
|
|
117
109
|
}
|
|
118
110
|
async function applyCloudflareD1Migrations(context) {
|
|
119
|
-
await run(context.operation,
|
|
120
|
-
"d1",
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
"--remote",
|
|
125
|
-
"-c",
|
|
126
|
-
context.operation.configPath,
|
|
127
|
-
"--env="
|
|
128
|
-
], { capture: false });
|
|
111
|
+
await run(context.operation, {
|
|
112
|
+
type: "d1.migrations.apply",
|
|
113
|
+
database: context.migrateToken,
|
|
114
|
+
configPath: context.operation.configPath
|
|
115
|
+
}, { capture: false });
|
|
129
116
|
}
|
|
130
117
|
async function readCloudflareWorkerStatus(context) {
|
|
131
118
|
const [deployment, deployments, versions] = await Promise.all([
|
|
132
|
-
run(context,
|
|
133
|
-
"deployments",
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
...targetArgs(context),
|
|
148
|
-
"--json"
|
|
149
|
-
])
|
|
119
|
+
run(context, {
|
|
120
|
+
type: "deployments.status",
|
|
121
|
+
configPath: context.configPath,
|
|
122
|
+
workerName: context.workerName
|
|
123
|
+
}),
|
|
124
|
+
run(context, {
|
|
125
|
+
type: "deployments.list",
|
|
126
|
+
configPath: context.configPath,
|
|
127
|
+
workerName: context.workerName
|
|
128
|
+
}),
|
|
129
|
+
run(context, {
|
|
130
|
+
type: "versions.list",
|
|
131
|
+
configPath: context.configPath,
|
|
132
|
+
workerName: context.workerName
|
|
133
|
+
})
|
|
150
134
|
]);
|
|
151
|
-
const activeVersionId = parseActiveVersionId(deployment.
|
|
152
|
-
const deployedVersionIds = parseCloudflareDeployedVersionIds(deployments.
|
|
135
|
+
const activeVersionId = parseActiveVersionId(deployment.data);
|
|
136
|
+
const deployedVersionIds = parseCloudflareDeployedVersionIds(deployments.data);
|
|
153
137
|
if (activeVersionId && !deployedVersionIds.includes(activeVersionId)) deployedVersionIds.push(activeVersionId);
|
|
154
138
|
return {
|
|
155
139
|
workerName: context.workerName,
|
|
156
140
|
activeVersionId,
|
|
157
141
|
deployedVersionIds,
|
|
158
|
-
versions: parseCloudflareVersions(versions.
|
|
142
|
+
versions: parseCloudflareVersions(versions.data)
|
|
159
143
|
};
|
|
160
144
|
}
|
|
161
145
|
/** Return only versions that Cloudflare records as members of a production deployment. */
|
|
@@ -221,15 +205,16 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
221
205
|
const expectedVersionId = current?.id ?? await readActiveCloudflareVersionId(context);
|
|
222
206
|
const ownerBeforeActivation = await readActiveCloudflareVersionId(context);
|
|
223
207
|
if (ownerBeforeActivation !== expectedVersionId) throw new Error(`Cloudflare production changed from ${expectedVersionId ?? "no active version"} to ${ownerBeforeActivation ?? "no active version"} before rollback activation. Retry from fresh deployment status.`);
|
|
224
|
-
await run(context,
|
|
225
|
-
"versions",
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
208
|
+
await run(context, {
|
|
209
|
+
type: "versions.deploy",
|
|
210
|
+
versions: [{
|
|
211
|
+
versionId: target.id,
|
|
212
|
+
percentage: 100
|
|
213
|
+
}],
|
|
214
|
+
configPath: context.configPath,
|
|
215
|
+
workerName: context.workerName,
|
|
216
|
+
message
|
|
217
|
+
}, { capture: false });
|
|
233
218
|
const knownTriggerConfigs = { [target.id]: targetTriggerConfig };
|
|
234
219
|
if (currentTriggerConfig && current) knownTriggerConfigs[current.id] = currentTriggerConfig;
|
|
235
220
|
const triggers = await stabilizeCloudflareVersionTriggers({
|
|
@@ -272,15 +257,16 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
272
257
|
}
|
|
273
258
|
let recoveryFailure = null;
|
|
274
259
|
try {
|
|
275
|
-
await run(context,
|
|
276
|
-
"versions",
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
260
|
+
await run(context, {
|
|
261
|
+
type: "versions.deploy",
|
|
262
|
+
versions: [{
|
|
263
|
+
versionId: current.id,
|
|
264
|
+
percentage: 100
|
|
265
|
+
}],
|
|
266
|
+
configPath: context.configPath,
|
|
267
|
+
workerName: context.workerName,
|
|
268
|
+
message: `Void automatic rollback after trigger synchronization failed.`
|
|
269
|
+
}, { capture: false });
|
|
284
270
|
const restoredTriggers = await stabilizeCloudflareVersionTriggers({
|
|
285
271
|
runWrangler: context.runWrangler,
|
|
286
272
|
workerName: context.workerName,
|
|
@@ -305,27 +291,21 @@ async function activateCloudflareExistingVersion(context, target, current) {
|
|
|
305
291
|
throw new Error(recoveryFailure ? `Cloudflare trigger synchronization failed after activating ${target.id}, and automatic recovery also failed: ${recoveryFailure}` : `Cloudflare trigger synchronization failed after activating ${target.id}; traffic and triggers were restored to ${current.id}.`);
|
|
306
292
|
}
|
|
307
293
|
async function readActiveCloudflareVersionId(context) {
|
|
308
|
-
return parseActiveVersionId((await run(context,
|
|
309
|
-
"deployments",
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
])).stdout);
|
|
294
|
+
return parseActiveVersionId((await run(context, {
|
|
295
|
+
type: "deployments.status",
|
|
296
|
+
configPath: context.configPath,
|
|
297
|
+
workerName: context.workerName
|
|
298
|
+
})).data);
|
|
314
299
|
}
|
|
315
300
|
async function tailCloudflareWorker(context, options) {
|
|
316
|
-
|
|
317
|
-
"tail",
|
|
318
|
-
context.workerName,
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
];
|
|
325
|
-
if (options.filter) args.push("--search", options.filter);
|
|
326
|
-
if (options.versionId) args.push("--version-id", options.versionId);
|
|
327
|
-
if (options.status) args.push("--status", options.status);
|
|
328
|
-
await run(context, args, { capture: false });
|
|
301
|
+
await run(context, {
|
|
302
|
+
type: "tail",
|
|
303
|
+
workerName: context.workerName,
|
|
304
|
+
configPath: context.configPath,
|
|
305
|
+
search: options.filter,
|
|
306
|
+
versionId: options.versionId,
|
|
307
|
+
status: options.status
|
|
308
|
+
}, { capture: false });
|
|
329
309
|
}
|
|
330
310
|
function listCloudflareDomains(root) {
|
|
331
311
|
return readWranglerCustomDomains(root).domains;
|
|
@@ -344,15 +324,11 @@ async function changeCloudflareDomain(root, hostname, action, runner, emptyDomai
|
|
|
344
324
|
return;
|
|
345
325
|
}
|
|
346
326
|
writeDomainTriggerConfig(context, before.configPath, triggerConfigPath);
|
|
347
|
-
await run(context,
|
|
348
|
-
"triggers",
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
"--env=",
|
|
353
|
-
"--name",
|
|
354
|
-
context.workerName
|
|
355
|
-
], { capture: false });
|
|
327
|
+
await run(context, {
|
|
328
|
+
type: "triggers.deploy",
|
|
329
|
+
configPath: triggerConfigPath,
|
|
330
|
+
workerName: context.workerName
|
|
331
|
+
}, { capture: false });
|
|
356
332
|
};
|
|
357
333
|
try {
|
|
358
334
|
await deployRoutes();
|
|
@@ -385,11 +361,11 @@ async function changeCloudflareDomain(root, hostname, action, runner, emptyDomai
|
|
|
385
361
|
* explicitly using the same verified browser/API credentials as other commands.
|
|
386
362
|
*/
|
|
387
363
|
async function publishEmptyCloudflareCustomDomainSet(context) {
|
|
388
|
-
await run(context,
|
|
389
|
-
"triggers",
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
364
|
+
await run(context, {
|
|
365
|
+
type: "triggers.clear-domains",
|
|
366
|
+
configPath: context.configPath,
|
|
367
|
+
workerName: context.workerName
|
|
368
|
+
});
|
|
393
369
|
}
|
|
394
370
|
/** Adapt the direct empty-domain API call to the deployment package's result contract. */
|
|
395
371
|
function createCloudflareEmptyDomainPublisher(context) {
|
|
@@ -415,11 +391,11 @@ function createCloudflareEmptyDomainPublisher(context) {
|
|
|
415
391
|
function createCloudflareEmptyCronPublisher(context) {
|
|
416
392
|
return async () => {
|
|
417
393
|
try {
|
|
418
|
-
return await run(context,
|
|
419
|
-
"triggers",
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
394
|
+
return await run(context, {
|
|
395
|
+
type: "triggers.clear-crons",
|
|
396
|
+
configPath: context.configPath,
|
|
397
|
+
workerName: context.workerName
|
|
398
|
+
});
|
|
423
399
|
} catch (error) {
|
|
424
400
|
return {
|
|
425
401
|
status: 1,
|
|
@@ -450,15 +426,6 @@ function writeDomainTriggerConfig(context, sourceConfigPath, triggerConfigPath)
|
|
|
450
426
|
if (compatibilityDate) config.compatibility_date = compatibilityDate;
|
|
451
427
|
writeFileSync(triggerConfigPath, `${JSON.stringify(config, null, 2)}\n`);
|
|
452
428
|
}
|
|
453
|
-
function targetArgs(context) {
|
|
454
|
-
return [
|
|
455
|
-
"-c",
|
|
456
|
-
context.configPath,
|
|
457
|
-
"--env=",
|
|
458
|
-
"--name",
|
|
459
|
-
context.workerName
|
|
460
|
-
];
|
|
461
|
-
}
|
|
462
429
|
async function run(context, args, options) {
|
|
463
430
|
const result = await Promise.resolve(context.runWrangler(args, {
|
|
464
431
|
capture: options?.capture ?? true,
|
|
@@ -466,44 +433,24 @@ async function run(context, args, options) {
|
|
|
466
433
|
}));
|
|
467
434
|
if (result.status !== 0 || result.signal != null || result.error !== void 0 && result.error !== null && result.error !== "") {
|
|
468
435
|
const detail = result.stderr.trim() || result.stdout.trim() || result.error || "unknown error";
|
|
469
|
-
throw new Error(`Cloudflare command failed (${args.
|
|
436
|
+
throw new Error(`Cloudflare command failed (${args.type}, exit ${result.status}): ${detail}`);
|
|
470
437
|
}
|
|
471
438
|
return result;
|
|
472
439
|
}
|
|
473
440
|
function createCloudflareOperationRunner(root, accountId, apiBaseUrl) {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
env
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
encoding: "utf-8",
|
|
488
|
-
input: options.input,
|
|
489
|
-
stdio: options.input !== void 0 ? [
|
|
490
|
-
"pipe",
|
|
491
|
-
options.capture ? "pipe" : "inherit",
|
|
492
|
-
options.capture ? "pipe" : "inherit"
|
|
493
|
-
] : options.capture ? [
|
|
494
|
-
"ignore",
|
|
495
|
-
"pipe",
|
|
496
|
-
"pipe"
|
|
497
|
-
] : "inherit"
|
|
498
|
-
});
|
|
499
|
-
return {
|
|
500
|
-
status: typeof result.status === "number" ? result.status : 1,
|
|
501
|
-
stdout: result.stdout ?? "",
|
|
502
|
-
stderr: result.stderr ?? "",
|
|
503
|
-
signal: result.signal ?? null,
|
|
504
|
-
error: result.error?.message ?? null
|
|
505
|
-
};
|
|
506
|
-
};
|
|
441
|
+
return createCloudflareProcessRunner({
|
|
442
|
+
root,
|
|
443
|
+
accountId,
|
|
444
|
+
apiBaseUrl,
|
|
445
|
+
env: () => {
|
|
446
|
+
const env = provisionEnv({
|
|
447
|
+
accountId,
|
|
448
|
+
apiBaseUrl
|
|
449
|
+
});
|
|
450
|
+
deleteEnvVarCaseAware(env, "WRANGLER_CI_OVERRIDE_NAME");
|
|
451
|
+
return env;
|
|
452
|
+
}
|
|
453
|
+
});
|
|
507
454
|
}
|
|
508
455
|
function discoverRootWranglerConfig(root) {
|
|
509
456
|
return materializeCloudflareConfig(root);
|
|
@@ -522,11 +469,8 @@ function assertNoOperationConfigOverride(root) {
|
|
|
522
469
|
}
|
|
523
470
|
}
|
|
524
471
|
function parseJson(value, label) {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
} catch {
|
|
528
|
-
throw new Error(`${label} did not return valid JSON.`);
|
|
529
|
-
}
|
|
472
|
+
if (value === void 0) throw new Error(label + " did not return structured data.");
|
|
473
|
+
return value;
|
|
530
474
|
}
|
|
531
475
|
function errorMessage(error) {
|
|
532
476
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { a as join, l as relative, n as dirname, u as resolve } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-DXfiT1jV.mjs";
|
|
4
3
|
import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-CF5wvH4w.mjs";
|
|
4
|
+
import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-DXfiT1jV.mjs";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { spawnSync } from "node:child_process";
|
|
7
8
|
//#region src/cli/preset.ts
|
|
8
9
|
/**
|
|
9
10
|
* Known output conventions for SSGs.
|
|
@@ -133,12 +134,12 @@ function shellQuoteExecutable(value) {
|
|
|
133
134
|
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
134
135
|
}
|
|
135
136
|
/** Resolve the bundled cf transport without consulting project dependencies. */
|
|
136
|
-
function
|
|
137
|
+
function resolveCloudflareOperationArgv(_root) {
|
|
137
138
|
const directory = dirname(fileURLToPath(import.meta.url));
|
|
138
139
|
const entry = [
|
|
139
|
-
join(directory, "
|
|
140
|
-
join(directory, "
|
|
141
|
-
join(directory, "cli", "
|
|
140
|
+
join(directory, "cloudflare-operation-process.ts"),
|
|
141
|
+
join(directory, "cloudflare-operation-process.mjs"),
|
|
142
|
+
join(directory, "cli", "cloudflare-operation-process.mjs")
|
|
142
143
|
].find((candidate) => existsSync(candidate));
|
|
143
144
|
if (!entry) throw new Error(`Void's bundled Cloudflare tooling is unavailable. Reinstall the project's dependencies from its trusted lockfile, then retry.`);
|
|
144
145
|
return [process.execPath, entry];
|
|
@@ -300,4 +301,90 @@ function hasBackendFiles(root) {
|
|
|
300
301
|
return false;
|
|
301
302
|
}
|
|
302
303
|
//#endregion
|
|
303
|
-
|
|
304
|
+
//#region src/cli/cloudflare-process.ts
|
|
305
|
+
/** Operations contain public targets only. Secret values travel through stdin. */
|
|
306
|
+
function encodeCloudflareOperation(operation) {
|
|
307
|
+
return [JSON.stringify(operation)];
|
|
308
|
+
}
|
|
309
|
+
/** Decode the private process envelope once, retaining cancellation provenance. */
|
|
310
|
+
function decodeCloudflareOperationResult(result) {
|
|
311
|
+
if (result.signal || result.error || result.status === null) return result;
|
|
312
|
+
if (!result.stdout.trim() && result.status !== 0) return result;
|
|
313
|
+
try {
|
|
314
|
+
const value = JSON.parse(result.stdout);
|
|
315
|
+
if (!value || typeof value !== "object" || Array.isArray(value) || !("operationResult" in value) || value.operationResult !== 1) throw new Error("Invalid operation envelope.");
|
|
316
|
+
const envelope = value;
|
|
317
|
+
if (envelope.output !== void 0 && typeof envelope.output !== "string" || envelope.signal != null && typeof envelope.signal !== "string" || envelope.error != null && typeof envelope.error !== "string" || envelope.errorCode !== void 0 && !Number.isSafeInteger(envelope.errorCode) || envelope.failure !== void 0 && ![
|
|
318
|
+
"not-found",
|
|
319
|
+
"durable-migration",
|
|
320
|
+
"containers-unavailable"
|
|
321
|
+
].includes(envelope.failure) || envelope.errors !== void 0 && (!Array.isArray(envelope.errors) || envelope.errors.some((error) => !error || typeof error !== "object" || typeof error.message !== "string" || error.code !== void 0 && !Number.isSafeInteger(error.code)))) throw new Error("Invalid operation envelope fields.");
|
|
322
|
+
if (envelope.signal || envelope.error) return {
|
|
323
|
+
...result,
|
|
324
|
+
status: 1,
|
|
325
|
+
stdout: "",
|
|
326
|
+
signal: envelope.signal,
|
|
327
|
+
error: envelope.error
|
|
328
|
+
};
|
|
329
|
+
return {
|
|
330
|
+
...result,
|
|
331
|
+
stdout: envelope.output ?? "",
|
|
332
|
+
data: envelope.data,
|
|
333
|
+
errorCode: envelope.errorCode,
|
|
334
|
+
errors: envelope.errors,
|
|
335
|
+
failure: envelope.failure
|
|
336
|
+
};
|
|
337
|
+
} catch {
|
|
338
|
+
return {
|
|
339
|
+
...result,
|
|
340
|
+
status: 1,
|
|
341
|
+
stdout: "",
|
|
342
|
+
stderr: [result.stderr, "Cloudflare tooling returned an invalid operation response."].filter(Boolean).join("\n")
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function createCloudflareProcessRunner(options) {
|
|
347
|
+
const [command, ...prefix] = resolveCloudflareOperationArgv(options.root);
|
|
348
|
+
return (operation, run) => {
|
|
349
|
+
const streaming = !run.capture && (operation.type === "auth.login" || operation.type === "tail");
|
|
350
|
+
const env = typeof options.env === "function" ? options.env() : options.env ?? process.env;
|
|
351
|
+
const result = spawnSync(command, [...prefix, ...encodeCloudflareOperation(operation)], {
|
|
352
|
+
cwd: run.cwd ?? options.root,
|
|
353
|
+
env: {
|
|
354
|
+
...env,
|
|
355
|
+
...options.accountId ? { CLOUDFLARE_ACCOUNT_ID: options.accountId } : {},
|
|
356
|
+
...options.apiBaseUrl ? { CLOUDFLARE_API_BASE_URL: options.apiBaseUrl } : {}
|
|
357
|
+
},
|
|
358
|
+
input: run.input,
|
|
359
|
+
encoding: "utf8",
|
|
360
|
+
shell: false,
|
|
361
|
+
windowsHide: true,
|
|
362
|
+
maxBuffer: 33554432,
|
|
363
|
+
stdio: streaming ? [
|
|
364
|
+
"inherit",
|
|
365
|
+
"inherit",
|
|
366
|
+
"inherit"
|
|
367
|
+
] : [
|
|
368
|
+
"pipe",
|
|
369
|
+
"pipe",
|
|
370
|
+
"pipe"
|
|
371
|
+
]
|
|
372
|
+
});
|
|
373
|
+
const raw = {
|
|
374
|
+
status: result.status ?? 1,
|
|
375
|
+
stdout: result.stdout ?? "",
|
|
376
|
+
stderr: result.stderr ?? "",
|
|
377
|
+
signal: result.signal,
|
|
378
|
+
error: result.error?.message
|
|
379
|
+
};
|
|
380
|
+
if (streaming) return raw;
|
|
381
|
+
const decoded = decodeCloudflareOperationResult(raw);
|
|
382
|
+
if (!run.capture) {
|
|
383
|
+
if (decoded.stdout) process.stdout.write(decoded.stdout);
|
|
384
|
+
if (decoded.stderr) process.stderr.write(decoded.stderr);
|
|
385
|
+
}
|
|
386
|
+
return decoded;
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
//#endregion
|
|
390
|
+
export { detectPreset as a, resolveCloudflareOperationArgv as c, FRAMEWORK_PRESETS as i, resolveProjectCommand as l, decodeCloudflareOperationResult as n, formatProjectCommand as o, encodeCloudflareOperation as r, hasBackendFiles as s, createCloudflareProcessRunner as t };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import "./types-CKWnYgfy.mjs";
|
|
2
2
|
import { t as VoidAuthProvider } from "./providers-BNKRacMr.mjs";
|
|
3
3
|
import { t as HeadConfig } from "./head-Do8P4puT.mjs";
|
|
4
|
+
import "@void/deploy-core";
|
|
4
5
|
import { RewriteDestination } from "void/routes";
|
|
5
6
|
//#region src/sandbox/config.d.ts
|
|
6
7
|
type SandboxInstanceType = "lite" | "standard-1" | "standard-2" | "standard-3" | "standard-4";
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { a as join, i as isAbsolute } from "./dist-BVqXeR_h.mjs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { isSandboxRegistryImage } from "@void/deploy-core";
|
|
4
|
+
//#region src/sandbox/config.ts
|
|
5
|
+
const DEFAULT_SANDBOX_BINDING = "SANDBOX";
|
|
6
|
+
const DEFAULT_SANDBOX_CLASS_NAME = "SandboxV1";
|
|
7
|
+
const SANDBOX_MIGRATION_TAG = "void-sandbox-v2";
|
|
8
|
+
function isSandboxEnabled(config) {
|
|
9
|
+
return config.sandbox !== void 0 && config.sandbox !== false;
|
|
10
|
+
}
|
|
11
|
+
function getDefaultSandboxImage() {
|
|
12
|
+
return fileURLToPath(new URL("../../sandbox.Dockerfile", import.meta.resolve("void/sandbox")));
|
|
13
|
+
}
|
|
14
|
+
function getDefaultSandboxPlatformImage() {
|
|
15
|
+
return "cloudflare/debian-trixie";
|
|
16
|
+
}
|
|
17
|
+
function isLocalSandboxImage(image) {
|
|
18
|
+
const lowerImage = image.toLowerCase();
|
|
19
|
+
return isAbsolute(image) || image.startsWith("./") || image.startsWith("../") || lowerImage === "dockerfile" || lowerImage.includes("dockerfile") || lowerImage.endsWith("/dockerfile") || lowerImage.endsWith("\\dockerfile");
|
|
20
|
+
}
|
|
21
|
+
function requiresSandboxPlatformImage(config) {
|
|
22
|
+
if (typeof config.sandbox !== "object" || config.sandbox === null) return false;
|
|
23
|
+
return typeof config.sandbox.image === "string" && isLocalSandboxImage(config.sandbox.image) && config.sandbox.platformImage === void 0;
|
|
24
|
+
}
|
|
25
|
+
function resolveSandboxConfig(config, root = process.cwd()) {
|
|
26
|
+
const raw = typeof config.sandbox === "object" ? config.sandbox : {};
|
|
27
|
+
const image = raw.image ?? getDefaultSandboxImage();
|
|
28
|
+
const imageBuildContext = raw.imageBuildContext;
|
|
29
|
+
const platformImage = raw.platformImage ?? (raw.image && !isLocalSandboxImage(raw.image) ? raw.image : getDefaultSandboxPlatformImage());
|
|
30
|
+
if (!isLocalSandboxImage(image) && !isSandboxRegistryImage(image)) throw new Error("sandbox.image must be a Dockerfile or a digest-pinned Cloudflare registry image (registry.cloudflare.com/<account>/<image>@sha256:<digest>).");
|
|
31
|
+
if (platformImage !== getDefaultSandboxPlatformImage() && !isSandboxRegistryImage(platformImage)) throw new Error("sandbox.platformImage must be a digest-pinned Cloudflare registry image (registry.cloudflare.com/<account>/<image>@sha256:<digest>).");
|
|
32
|
+
return {
|
|
33
|
+
binding: raw.binding ?? "SANDBOX",
|
|
34
|
+
className: raw.className ?? "SandboxV1",
|
|
35
|
+
containerName: raw.containerName ?? "void-sandbox-v1",
|
|
36
|
+
image: resolveSandboxImage(image, root),
|
|
37
|
+
platformImage,
|
|
38
|
+
...imageBuildContext && { imageBuildContext: isAbsolute(imageBuildContext) ? imageBuildContext : join(root, imageBuildContext) },
|
|
39
|
+
...raw.instanceType && { instanceType: raw.instanceType }
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function resolveSandboxImage(image, root) {
|
|
43
|
+
if (!isLocalSandboxImage(image) || isAbsolute(image)) return image;
|
|
44
|
+
return join(root, image);
|
|
45
|
+
}
|
|
46
|
+
function sandboxContainerConfig(sandbox) {
|
|
47
|
+
return {
|
|
48
|
+
name: sandbox.containerName,
|
|
49
|
+
class_name: sandbox.className,
|
|
50
|
+
scheduling_policy: "durable_object",
|
|
51
|
+
images: { default: isLocalSandboxImage(sandbox.image) ? {
|
|
52
|
+
dockerfile: sandbox.image,
|
|
53
|
+
...sandbox.imageBuildContext && { build_context: sandbox.imageBuildContext }
|
|
54
|
+
} : { image: sandbox.image } }
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Resolve the final local storage kind without recreating a renamed or deleted class. */
|
|
58
|
+
function resolveSandboxMigrationStorage(migrations, className) {
|
|
59
|
+
const storage = /* @__PURE__ */ new Map();
|
|
60
|
+
for (const migration of migrations) {
|
|
61
|
+
for (const name of migration.new_classes ?? []) storage.set(name, "legacy-kv");
|
|
62
|
+
for (const name of migration.new_sqlite_classes ?? []) storage.set(name, "sqlite");
|
|
63
|
+
for (const rename of migration.renamed_classes ?? []) {
|
|
64
|
+
const sqlite = storage.get(rename.from);
|
|
65
|
+
storage.delete(rename.from);
|
|
66
|
+
storage.set(rename.to, sqlite ?? "unknown");
|
|
67
|
+
}
|
|
68
|
+
for (const transfer of migration.transferred_classes ?? []) storage.set(transfer.to, "unknown");
|
|
69
|
+
for (const name of migration.deleted_classes ?? []) storage.delete(name);
|
|
70
|
+
}
|
|
71
|
+
return storage.get(className);
|
|
72
|
+
}
|
|
73
|
+
function hasSandboxSqliteMigration(migrations, className) {
|
|
74
|
+
return resolveSandboxMigrationStorage(migrations, className) === "sqlite";
|
|
75
|
+
}
|
|
76
|
+
/** Refuse namespace reuse before either uploader can change a live Worker. */
|
|
77
|
+
function assertSandboxNamespaceConfig(config, sandbox) {
|
|
78
|
+
const containers = Array.isArray(config.containers) ? config.containers : [];
|
|
79
|
+
const durable = config.durable_objects;
|
|
80
|
+
const binding = durable?.bindings?.find((entry) => entry.name === sandbox.binding);
|
|
81
|
+
if (binding && (binding.script_name !== void 0 || binding.environment !== void 0)) throw new Error(`sandbox: binding '${sandbox.binding}' must reference the local '${sandbox.className}' class. Choose another sandbox.binding name to preserve the existing external Durable Object.`);
|
|
82
|
+
const migrations = Array.isArray(config.migrations) ? config.migrations : [];
|
|
83
|
+
const storage = resolveSandboxMigrationStorage(migrations, sandbox.className);
|
|
84
|
+
if (storage === "legacy-kv" || storage === "unknown") throw new Error(`sandbox: class '${sandbox.className}' needs SQLite storage, but its existing namespace has ${storage} storage. Preserve the existing migration history and choose a fresh Worker name or a new sandbox.className and sandbox.binding.`);
|
|
85
|
+
if (storage !== "sqlite" && migrations.some((migration) => migration.tag === "void-sandbox-v2")) throw new Error(`sandbox: migration tag '${SANDBOX_MIGRATION_TAG}' is already configured for another class. Keep the existing history and choose a fresh Worker for Sandbox.`);
|
|
86
|
+
if (containers.some((container) => container.class_name === sandbox.className && container.scheduling_policy !== "durable_object") || durable?.bindings?.some((binding) => binding.name === sandbox.binding && binding.class_name !== sandbox.className)) throw new Error("Sandbox SDK 1.0 needs a new Durable Object namespace. Back up existing Sandbox data and deploy to a fresh Worker name with the new Sandbox configuration; remove legacy Sandbox bindings, containers, and migrations from that new Worker configuration. See https://developers.cloudflare.com/containers/guides/migrate-to-durable-object-scheduling-policy/.");
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { hasSandboxSqliteMigration as a, resolveSandboxConfig as c, assertSandboxNamespaceConfig as i, sandboxContainerConfig as l, DEFAULT_SANDBOX_CLASS_NAME as n, isSandboxEnabled as o, SANDBOX_MIGRATION_TAG as r, requiresSandboxPlatformImage as s, DEFAULT_SANDBOX_BINDING as t };
|
package/dist/config-entry.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as VoidConfig } from "./config-
|
|
1
|
+
import { t as VoidConfig } from "./config-BMHb8RCj.mjs";
|
|
2
2
|
//#region src/config-entry.d.ts
|
|
3
3
|
/** Define a typed Void project configuration without loading the Vite plugin. */
|
|
4
4
|
export declare function defineConfig<const T extends VoidConfig>(config: T): T;
|