void 0.21.9 → 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-DZZGK80W.mjs → account-cmd-C84Ee8cO.mjs} +5 -5
- 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-B_CeugBw.mjs → auth-link-CioEg6uY.mjs} +5 -5
- package/dist/{auth-router-BgEFRuvZ.mjs → auth-router-BsR981d4.mjs} +5 -5
- package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
- package/dist/{build-cmd-Dpt0jd-x.mjs → build-cmd-LzvNJORH.mjs} +19 -7
- package/dist/{cache-7_UeZdTk.mjs → cache-C4MvnrMH.mjs} +4 -4
- package/dist/{cancel-deploy-D23R1RXT.mjs → cancel-deploy-abUxpP2n.mjs} +4 -4
- package/dist/{cf-build-output-CGT03qCD.mjs → cf-build-output-BPqOT964.mjs} +141 -63
- package/dist/cf-build-output-_0HNWysu.mjs +2 -0
- package/dist/cli/cli.mjs +114 -460
- package/dist/cli/cloudflare-operation-process.mjs +1103 -0
- 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-QTl6ko_D.mjs → client-RV8NVeB8.mjs} +165 -21
- package/dist/{cloudflare-auth-C4_GPZr0.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -43
- package/dist/{cloudflare-cmd-bSmZ1d5L.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +9 -10
- package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
- package/dist/{cloudflare-connect-jAwacxxP.mjs → cloudflare-connect-B8uPZ4nx.mjs} +4 -4
- package/dist/{cloudflare-operations-BipGMJ5O.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
- package/dist/{cloudflare-operations-sMZXpk_S.mjs → cloudflare-operations-fxHb-byx.mjs} +118 -203
- package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
- package/dist/{config-CF69HgXc.d.mts → config-BMHb8RCj.d.mts} +2 -2
- package/dist/{config-CafTW6Cz.mjs → config-Br_JZD6u.mjs} +2 -7
- package/dist/config-C_XRIPx2.mjs +89 -0
- package/dist/{config-s7Xj7tPb.mjs → config-CyQ-wVd7.mjs} +1 -1
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-BSduPMY8.mjs → config-write-B1f88wJA.mjs} +1 -1
- package/dist/{connect-BsUSRzln.mjs → connect-Bd4kJd9U.mjs} +6 -6
- package/dist/{create-project-BniEV0OW.mjs → create-project-Boczwj5r.mjs} +1 -1
- package/dist/{create-project-DBfFSZKY.mjs → create-project-bMf6ffLZ.mjs} +9 -5
- package/dist/{db-hRrvZaq_.mjs → db-8uG64XLl.mjs} +26 -26
- package/dist/{delete-D6dZ9B6B.mjs → delete-NvbiyeJf.mjs} +4 -4
- package/dist/{deploy-WaAQez1O.mjs → deploy-DzAIwqNU.mjs} +944 -607
- package/dist/{deploy-DDz7c8LK.mjs → deploy-bjXdFCtn.mjs} +1 -1
- package/dist/{dist-BR1quN_w.mjs → dist-AoCzRTJE.mjs} +226 -60
- package/dist/{dist-C5fND3R0.mjs → dist-BuDuKZJv.mjs} +1 -1
- package/dist/{dist-Dn6nn2IU.mjs → dist-CTBk70IR.mjs} +42 -42
- package/dist/{domain-Dmhvb2oU.mjs → domain-y5Tvydvo.mjs} +5 -5
- package/dist/{email-DFi-s2t4.mjs → email-B3umsW75.mjs} +15 -30
- package/dist/{env-Csi-tMbT.mjs → env-BS6qYHDb.mjs} +6 -6
- package/dist/{env-public-D_6u46fX.d.mts → env-public-BX_r8HR6.d.mts} +2 -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-Dz3X1Qab.mjs → gen-B580--vC.mjs} +5 -5
- package/dist/gen-BVaUUumi.mjs +2 -0
- package/dist/{github-cmd-BED3_9JD.mjs → github-cmd-v45BdfKX.mjs} +6 -8
- package/dist/{handler-BXJTXd02.d.mts → handler-CZ4nAylQ.d.mts} +2 -1
- package/dist/{headers-BOg_velo.mjs → headers-DWi2IXWx.mjs} +1 -1
- package/dist/help-DofyZuY7.mjs +2 -0
- package/dist/{help-DC7gdz7L.mjs → help-daGKjXGk.mjs} +268 -666
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +305 -1490
- package/dist/info-B97bTX9N.mjs +113 -0
- package/dist/{init-WO0JlPx8.mjs → init-Bvy7zrBo.mjs} +51 -20
- package/dist/limits-Bq5LG8Id.d.mts +27 -0
- package/dist/limits-Cjuk2VPm.mjs +68 -0
- package/dist/{link-CsHOinF7.mjs → link-CDqqCjFl.mjs} +5 -5
- package/dist/{list-CDb-4bZ1.mjs → list-CZj0dzKY.mjs} +5 -5
- package/dist/{live-CKiJilLr.d.mts → live-Chw1eIMv.d.mts} +1 -1
- package/dist/{local-d1-CC8sKFGu.mjs → local-d1-2CMnpuW_.mjs} +2 -2
- package/dist/login-DYt_An22.mjs +2 -0
- package/dist/{login-DvqXsfGs.mjs → login-UZKFM_u7.mjs} +5 -5
- package/dist/{logs-BdfiOezj.mjs → logs-CUZ6t9t3.mjs} +5 -5
- package/dist/migrate-8_2u55MD.mjs +2 -0
- package/dist/{migrate-B8KuoYsO.mjs → migrate-DHul7PRV.mjs} +5 -4
- package/dist/{node-BM43oz4G.mjs → node-BkyRWRx8.mjs} +2 -2
- package/dist/operator-args-CLgKGlwU.mjs +690 -0
- package/dist/{operator-cmd-03819ATr.mjs → operator-cmd-DBA6dl0m.mjs} +69 -23
- package/dist/output-Dm_A4Tbv.mjs +81 -0
- 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 +3 -3
- package/dist/pages/islands-plugin.d.mts +16 -6
- package/dist/pages/islands-plugin.mjs +2 -2
- 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/{output-CCH48AMM.mjs → picocolors-BTps1_gs.mjs} +2 -76
- 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-z92h63q5.mjs → platform-auth-config-B56E9YP1.mjs} +4 -4
- package/dist/{platform-auth-protection-DeE3yr2R.mjs → platform-auth-protection-BDWO_aER.mjs} +3 -3
- package/dist/{platform-auth-recovery-o_340Ixx.mjs → platform-auth-recovery-1gg4CSRe.mjs} +4 -4
- package/dist/{platform-cmd-C4ZV3Vpy.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
- package/dist/{platform-cmd-DNl8WosH.mjs → platform-cmd-DMcQStSc.mjs} +26 -5
- package/dist/{platform-domain-CU1JtJkW.mjs → platform-domain-BNkcz0OB.mjs} +36 -9
- package/dist/{platform-lifecycle-Bc047IeT.mjs → platform-lifecycle-9OyBALhH.mjs} +850 -276
- package/dist/{platform-lifecycle-Bs2qx1E3.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
- package/dist/{platform-management-CVpGI9Y5.mjs → platform-management-CjwLVQwN.mjs} +59 -11
- package/dist/{platform-management-C8tt6D8h.mjs → platform-management-CnyTdcWX.mjs} +1 -1
- package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
- package/dist/{platform-recovery-dvUaptLr.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
- package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
- package/dist/{prepare-DyZ-Yok5.mjs → prepare-B5Mkic5u.mjs} +3 -3
- package/dist/{prepare-C3kt3Rst.mjs → prepare-DOsL0CC9.mjs} +4 -20
- package/dist/prepare-cgvDMtSb.mjs +2 -0
- package/dist/{project-cmd-B44I8J_W.mjs → project-cmd-CNzrqvBv.mjs} +30 -16
- package/dist/{project-team-BkbYIsXN.mjs → project-team-DQOWPfQT.mjs} +4 -4
- package/dist/{project-token-C8xEEQnB.mjs → project-token-CTDYU0Cc.mjs} +4 -4
- package/dist/project-zero-trust-BNAkW-_0.mjs +63 -0
- package/dist/{protocol-ZH3jP4a7.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
- package/dist/protocol-U7bfjHmA.mjs +331 -0
- package/dist/{provision-DNtrtaVD.mjs → provision-C4ORE7G7.mjs} +1 -1
- package/dist/{provision-BhreDAOS.mjs → provision-CJFgTZY8.mjs} +111 -215
- package/dist/{requests-DFyhBMaf.mjs → requests-MhxYnau8.mjs} +4 -4
- package/dist/resource-name-C7LVpcRm.mjs +11 -0
- package/dist/{rollback-DHHxXZiS.mjs → rollback-CJ6iSDoU.mjs} +5 -5
- 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 +3 -0
- package/dist/runtime/sandbox-container.mjs +2 -0
- package/dist/runtime/sandbox.d.mts +4 -32
- package/dist/runtime/sandbox.mjs +151 -75
- 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-XZAqzFlG.d.mts +52 -0
- package/dist/sandbox-container-Bo0eiFKz.d.mts +73 -0
- package/dist/sandbox-container-C6ItmVuN.mjs +281 -0
- package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
- package/dist/{secret-DN9sSNiV.mjs → secret-Dli5fP0B.mjs} +6 -6
- package/dist/{skills-O6FUaizK.mjs → skills-D1II1Juz.mjs} +1 -1
- package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
- package/dist/{subcommand-prompt-BuGYkAkC.mjs → subcommand-prompt-CY1C4fvl.mjs} +2 -2
- package/dist/validate-Dq_L3s0S.mjs +2 -0
- package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
- package/dist/{wrangler-BymcxrRa.mjs → wrangler-7K-bW_DL.mjs} +14 -235
- package/dist/{ws-BwcqizuH.d.mts → ws-CL1w7GXU.d.mts} +13 -2
- package/package.json +48 -33
- package/sandbox.Dockerfile +4 -0
- package/schema.json +10 -22
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
- package/skills/void/SKILL.md +50 -133
- 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 +6 -19
- package/skills/void/docs/guide/edge/rewrites.md +56 -284
- package/skills/void/docs/guide/edge/static-assets.md +23 -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 +189 -0
- package/skills/void/docs/guide/platform/development/local.md +2 -2
- 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 +31 -3
- package/skills/void/docs/guide/platform/installation/first-deployment.md +6 -0
- package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
- package/skills/void/docs/guide/platform/installation/prerequisites.md +21 -16
- package/skills/void/docs/guide/platform/installation/setup.md +9 -5
- package/skills/void/docs/guide/platform/installation/uninstall.md +17 -2
- package/skills/void/docs/guide/platform-administration.md +2 -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 +78 -41
- 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 +33 -1621
- package/skills/void/docs/reference/config.md +26 -32
- 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/cli/cf-compat.mjs +0 -968
- package/dist/client-4cDVv7BO.mjs +0 -2
- package/dist/gen-Vnv2f65C.mjs +0 -2
- package/dist/help-DQMfeKMz.mjs +0 -2
- package/dist/login-DFQk7rbW.mjs +0 -2
- package/dist/migrate-TsHGBnDA.mjs +0 -2
- package/dist/plan-BEZ8VJW0.mjs +0 -256
- package/dist/plan-DpuOr14e.mjs +0 -2
- package/dist/prepare-BZXkjdNe.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,228 +1,12 @@
|
|
|
1
|
-
import { a as join,
|
|
1
|
+
import { a as join, n as dirname, o as normalize, t as basename } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { m as readConfig } from "./config-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { m as readConfig } from "./config-Br_JZD6u.mjs";
|
|
4
|
+
import { a as hasSandboxSqliteMigration, c as resolveSandboxConfig, i as assertSandboxNamespaceConfig, l as sandboxContainerConfig, r as SANDBOX_MIGRATION_TAG } from "./config-C_XRIPx2.mjs";
|
|
5
|
+
import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-Bktvwtpf.mjs";
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
6
7
|
import { appendSqliteClassMigration } from "@void/deploy-core";
|
|
7
|
-
import { createHash
|
|
8
|
+
import { createHash } from "node:crypto";
|
|
8
9
|
import { SyntaxKind, applyEdits, createScanner, findNodeAtLocation, modify, parse, parseTree } from "jsonc-parser";
|
|
9
|
-
import { isDeepStrictEqual } from "node:util";
|
|
10
|
-
//#region src/cloudflare-config.ts
|
|
11
|
-
const MATERIALIZED_CLOUDFLARE_FILE = ".void-wrangler.jsonc";
|
|
12
|
-
const VOID_LOCK_FILE = "void.lock.json";
|
|
13
|
-
const PREVIEW_POINTER_FILE = "preview-deploy-config.json";
|
|
14
|
-
function isObject(value) {
|
|
15
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
-
}
|
|
17
|
-
function arrayIdentity(value) {
|
|
18
|
-
if (isObject(value)) {
|
|
19
|
-
for (const key of [
|
|
20
|
-
"binding",
|
|
21
|
-
"name",
|
|
22
|
-
"tag",
|
|
23
|
-
"class_name",
|
|
24
|
-
"pattern",
|
|
25
|
-
"route"
|
|
26
|
-
]) if (typeof value[key] === "string") return `${key}:${value[key]}`;
|
|
27
|
-
}
|
|
28
|
-
return JSON.stringify(value) ?? String(value);
|
|
29
|
-
}
|
|
30
|
-
/** Keep authored values authoritative while retaining fields produced by Void. */
|
|
31
|
-
function mergeConfig(previous, resolved, authored) {
|
|
32
|
-
if (isDeepStrictEqual(previous, authored)) return resolved;
|
|
33
|
-
if (Array.isArray(previous) && Array.isArray(resolved) && Array.isArray(authored)) {
|
|
34
|
-
const previousByIdentity = new Map(previous.map((item) => [arrayIdentity(item), item]));
|
|
35
|
-
const resolvedByIdentity = new Map(resolved.map((item) => [arrayIdentity(item), item]));
|
|
36
|
-
const authoredIdentities = new Set(authored.map(arrayIdentity));
|
|
37
|
-
return [...authored.map((item) => {
|
|
38
|
-
const identity = arrayIdentity(item);
|
|
39
|
-
return previousByIdentity.has(identity) && resolvedByIdentity.has(identity) ? mergeConfig(previousByIdentity.get(identity), resolvedByIdentity.get(identity), item) : item;
|
|
40
|
-
}), ...resolved.filter((item) => {
|
|
41
|
-
const identity = arrayIdentity(item);
|
|
42
|
-
return !previousByIdentity.has(identity) && !authoredIdentities.has(identity);
|
|
43
|
-
})];
|
|
44
|
-
}
|
|
45
|
-
if (isObject(previous) && isObject(resolved) && isObject(authored)) {
|
|
46
|
-
const result = {};
|
|
47
|
-
for (const key of /* @__PURE__ */ new Set([
|
|
48
|
-
...Object.keys(previous),
|
|
49
|
-
...Object.keys(resolved),
|
|
50
|
-
...Object.keys(authored)
|
|
51
|
-
])) {
|
|
52
|
-
if (!(key in authored)) {
|
|
53
|
-
if (!(key in previous) && key in resolved) Object.defineProperty(result, key, {
|
|
54
|
-
value: resolved[key],
|
|
55
|
-
enumerable: true,
|
|
56
|
-
writable: true,
|
|
57
|
-
configurable: true
|
|
58
|
-
});
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
const value = mergeConfig(previous[key], resolved[key], authored[key]);
|
|
62
|
-
Object.defineProperty(result, key, {
|
|
63
|
-
value,
|
|
64
|
-
enumerable: true,
|
|
65
|
-
writable: true,
|
|
66
|
-
configurable: true
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
return authored;
|
|
72
|
-
}
|
|
73
|
-
function parseCloudflareText(text, path) {
|
|
74
|
-
const errors = [];
|
|
75
|
-
const value = parse(text.replace(/^\uFEFF/, ""), errors, { allowTrailingComma: true });
|
|
76
|
-
if (errors.length > 0 || !isObject(value)) throw new Error(`config: ${path} must contain a valid JSON/JSONC object.`);
|
|
77
|
-
return value;
|
|
78
|
-
}
|
|
79
|
-
function readState(root) {
|
|
80
|
-
const path = join(root, VOID_LOCK_FILE);
|
|
81
|
-
if (!existsSync(path)) return;
|
|
82
|
-
let value;
|
|
83
|
-
try {
|
|
84
|
-
value = JSON.parse(readFileSync(path, "utf8"));
|
|
85
|
-
} catch {
|
|
86
|
-
throw new Error(`config: Invalid ${VOID_LOCK_FILE}. Fix or restore it before continuing.`);
|
|
87
|
-
}
|
|
88
|
-
if (!isObject(value) || value.version !== 1 || !isObject(value.source) || !isObject(value.resolved) || typeof value.text !== "string") throw new Error(`config: Invalid ${VOID_LOCK_FILE}. Fix or restore it before continuing.`);
|
|
89
|
-
const state = value;
|
|
90
|
-
if (!isDeepStrictEqual(parseCloudflareText(state.text, "void.lock.json"), state.resolved)) state.text = `${provenance(state.text)}${JSON.stringify(state.resolved, null, 2)}\n`;
|
|
91
|
-
return state;
|
|
92
|
-
}
|
|
93
|
-
function writeAtomic(path, content) {
|
|
94
|
-
const temporary = `${path}.${randomUUID()}.tmp`;
|
|
95
|
-
writeFileSync(temporary, content, { flag: "wx" });
|
|
96
|
-
try {
|
|
97
|
-
renameSync(temporary, path);
|
|
98
|
-
} finally {
|
|
99
|
-
rmSync(temporary, { force: true });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function writeState(root, state) {
|
|
103
|
-
const path = join(root, VOID_LOCK_FILE);
|
|
104
|
-
const content = `${JSON.stringify(state, null, 2)}\n`;
|
|
105
|
-
if (existsSync(path)) try {
|
|
106
|
-
if (isDeepStrictEqual(JSON.parse(readFileSync(path, "utf8")), state)) return;
|
|
107
|
-
} catch {}
|
|
108
|
-
writeAtomic(path, content);
|
|
109
|
-
}
|
|
110
|
-
/** Keep Vite preview usable without leaving Wrangler's implicit deploy pointer after a build. */
|
|
111
|
-
function stashCloudflareDeployPointer(root) {
|
|
112
|
-
const pointer = join(root, ".wrangler", "deploy", "config.json");
|
|
113
|
-
if (!existsSync(pointer)) return;
|
|
114
|
-
const directory = join(root, ".void");
|
|
115
|
-
mkdirSync(directory, { recursive: true });
|
|
116
|
-
writeAtomic(join(directory, PREVIEW_POINTER_FILE), readFileSync(pointer, "utf8"));
|
|
117
|
-
rmSync(pointer, { force: true });
|
|
118
|
-
}
|
|
119
|
-
function restoreCloudflarePreviewPointer(root) {
|
|
120
|
-
const saved = join(root, ".void", PREVIEW_POINTER_FILE);
|
|
121
|
-
if (!existsSync(saved)) return false;
|
|
122
|
-
const directory = join(root, ".wrangler", "deploy");
|
|
123
|
-
mkdirSync(directory, { recursive: true });
|
|
124
|
-
writeAtomic(join(directory, "config.json"), readFileSync(saved, "utf8"));
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
/** Preserve Void's JSONC provenance comments when authored settings change. */
|
|
128
|
-
function provenance(text) {
|
|
129
|
-
const lines = text.match(/^\s*\/\/ void:(?:managed-queues|published-traffic):v1:[A-Za-z0-9_-]+\s*$/gm);
|
|
130
|
-
return lines ? `${lines.join("\n")}\n` : "";
|
|
131
|
-
}
|
|
132
|
-
/** Resolve the config file passed to Cloudflare tooling. Typed projects use a generated file. */
|
|
133
|
-
function materializeCloudflareConfig(root) {
|
|
134
|
-
if (!existsSync(join(root, "void.config.ts"))) {
|
|
135
|
-
for (const name of ["wrangler.jsonc", "wrangler.json"]) if (existsSync(join(root, name))) return join(root, name);
|
|
136
|
-
return join(root, "wrangler.jsonc");
|
|
137
|
-
}
|
|
138
|
-
if (["wrangler.jsonc", "wrangler.json"].some((name) => existsSync(join(root, name)))) throw new Error("config: Run `void migrate` to move the root Wrangler config into void.config.ts.");
|
|
139
|
-
const authored = readConfig(root).cloudflare ?? {};
|
|
140
|
-
const state = readState(root);
|
|
141
|
-
const resolved = state ? mergeConfig(state.source, state.resolved, authored) : authored;
|
|
142
|
-
const text = state && isDeepStrictEqual(resolved, state.resolved) && isDeepStrictEqual(authored, state.source) ? state.text : `${provenance(state?.text ?? "")}${JSON.stringify(resolved, null, 2)}\n`;
|
|
143
|
-
const path = join(root, MATERIALIZED_CLOUDFLARE_FILE);
|
|
144
|
-
if (!existsSync(path) || readFileSync(path, "utf8") !== text) writeAtomic(path, text);
|
|
145
|
-
if (state) writeState(root, {
|
|
146
|
-
version: 1,
|
|
147
|
-
source: authored,
|
|
148
|
-
resolved,
|
|
149
|
-
text
|
|
150
|
-
});
|
|
151
|
-
return path;
|
|
152
|
-
}
|
|
153
|
-
/** Record Cloudflare settings written by Void so later builds reproduce them. */
|
|
154
|
-
function persistCloudflareConfig(root) {
|
|
155
|
-
if (!existsSync(join(root, "void.config.ts"))) return;
|
|
156
|
-
const path = join(root, MATERIALIZED_CLOUDFLARE_FILE);
|
|
157
|
-
if (!existsSync(path)) throw new Error(`config: Missing generated ${MATERIALIZED_CLOUDFLARE_FILE}.`);
|
|
158
|
-
const text = readFileSync(path, "utf8");
|
|
159
|
-
const resolved = parseCloudflareText(text, path);
|
|
160
|
-
const authored = readConfig(root).cloudflare ?? {};
|
|
161
|
-
if (readState(root) || !isDeepStrictEqual(resolved, authored) || text !== `${JSON.stringify(authored, null, 2)}\n`) writeState(root, {
|
|
162
|
-
version: 1,
|
|
163
|
-
source: authored,
|
|
164
|
-
resolved,
|
|
165
|
-
text
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
/** Seed the checked-in lock from a root Wrangler file during migration. */
|
|
169
|
-
function seedCloudflareConfig(root, source, text) {
|
|
170
|
-
const existing = readState(root);
|
|
171
|
-
if (existing) {
|
|
172
|
-
if (isDeepStrictEqual(existing.source, source) && isDeepStrictEqual(existing.resolved, source)) return;
|
|
173
|
-
throw new Error(`migrate: ${VOID_LOCK_FILE} already exists with different settings. Resolve it before migrating.`);
|
|
174
|
-
}
|
|
175
|
-
if (!isDeepStrictEqual(parseCloudflareText(text, ".void-wrangler.jsonc"), source)) throw new Error("migrate: The Cloudflare config changed during migration. Retry.");
|
|
176
|
-
writeState(root, {
|
|
177
|
-
version: 1,
|
|
178
|
-
source,
|
|
179
|
-
resolved: source,
|
|
180
|
-
text
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
const SANDBOX_MIGRATION_TAG = "void-sandbox-v1";
|
|
184
|
-
const require = createRequire(import.meta.url);
|
|
185
|
-
function isSandboxEnabled(config) {
|
|
186
|
-
return config.sandbox !== void 0 && config.sandbox !== false;
|
|
187
|
-
}
|
|
188
|
-
function getDefaultSandboxImage() {
|
|
189
|
-
return getDefaultSandboxPlatformImage();
|
|
190
|
-
}
|
|
191
|
-
function getDefaultSandboxPlatformImage() {
|
|
192
|
-
return `docker.io/cloudflare/sandbox:${JSON.parse(readFileSync(join(getSandboxPackageRoot(), "package.json"), "utf-8")).version ?? "latest"}`;
|
|
193
|
-
}
|
|
194
|
-
function isLocalSandboxImage(image) {
|
|
195
|
-
const lowerImage = image.toLowerCase();
|
|
196
|
-
return isAbsolute(image) || image.startsWith("./") || image.startsWith("../") || lowerImage === "dockerfile" || lowerImage.includes("dockerfile") || lowerImage.endsWith("/dockerfile") || lowerImage.endsWith("\\dockerfile");
|
|
197
|
-
}
|
|
198
|
-
function requiresSandboxPlatformImage(config) {
|
|
199
|
-
if (typeof config.sandbox !== "object" || config.sandbox === null) return false;
|
|
200
|
-
return typeof config.sandbox.image === "string" && isLocalSandboxImage(config.sandbox.image) && config.sandbox.platformImage === void 0;
|
|
201
|
-
}
|
|
202
|
-
function resolveSandboxConfig(config, root = process.cwd()) {
|
|
203
|
-
const raw = typeof config.sandbox === "object" ? config.sandbox : {};
|
|
204
|
-
const image = raw.image ?? getDefaultSandboxImage();
|
|
205
|
-
const imageBuildContext = raw.imageBuildContext;
|
|
206
|
-
const platformImage = raw.platformImage ?? (raw.image && !isLocalSandboxImage(raw.image) ? raw.image : getDefaultSandboxPlatformImage());
|
|
207
|
-
return {
|
|
208
|
-
binding: raw.binding ?? "SANDBOX",
|
|
209
|
-
className: raw.className ?? "Sandbox",
|
|
210
|
-
containerName: raw.containerName ?? "void-sandbox",
|
|
211
|
-
image: resolveSandboxImage(image, root),
|
|
212
|
-
platformImage,
|
|
213
|
-
...imageBuildContext && { imageBuildContext: isAbsolute(imageBuildContext) ? imageBuildContext : join(root, imageBuildContext) },
|
|
214
|
-
...raw.instanceType && { instanceType: raw.instanceType },
|
|
215
|
-
...raw.maxInstances != null && { maxInstances: raw.maxInstances }
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
function getSandboxPackageRoot() {
|
|
219
|
-
return join(dirname(require.resolve("@cloudflare/sandbox")), "..");
|
|
220
|
-
}
|
|
221
|
-
function resolveSandboxImage(image, root) {
|
|
222
|
-
if (!isLocalSandboxImage(image) || isAbsolute(image)) return image;
|
|
223
|
-
return join(root, image);
|
|
224
|
-
}
|
|
225
|
-
//#endregion
|
|
226
10
|
//#region src/cli/wrangler.ts
|
|
227
11
|
const COMPAT_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
228
12
|
/** UTF-8 byte-order mark. Node's utf-8 read preserves a leading one. */
|
|
@@ -588,7 +372,8 @@ function syncWranglerBindings(root, bindings, options) {
|
|
|
588
372
|
if (bindings.needsSandbox) {
|
|
589
373
|
const sandbox = options?.sandbox ?? resolveSandboxConfig({ sandbox: true }, root);
|
|
590
374
|
const bindingName = options?.bindingNames?.sandbox ?? sandbox?.binding ?? "SANDBOX";
|
|
591
|
-
const className = sandbox
|
|
375
|
+
const className = sandbox.className;
|
|
376
|
+
assertSandboxNamespaceConfig(parsed, sandbox);
|
|
592
377
|
const existingDurableObjectBindings = parsed.durable_objects?.bindings ?? [];
|
|
593
378
|
if (!existingDurableObjectBindings.some((binding) => binding.name === bindingName)) {
|
|
594
379
|
parsed.durable_objects = { bindings: [...existingDurableObjectBindings, {
|
|
@@ -598,19 +383,13 @@ function syncWranglerBindings(root, bindings, options) {
|
|
|
598
383
|
modified = true;
|
|
599
384
|
}
|
|
600
385
|
const existingContainers = parsed.containers ?? [];
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
class_name: className,
|
|
605
|
-
image: sandbox?.image,
|
|
606
|
-
...sandbox?.imageBuildContext && { image_build_context: sandbox.imageBuildContext },
|
|
607
|
-
...sandbox?.instanceType && { instance_type: sandbox.instanceType },
|
|
608
|
-
...sandbox?.maxInstances != null && { max_instances: sandbox.maxInstances }
|
|
609
|
-
}];
|
|
386
|
+
const containers = [...existingContainers.filter((container) => container.class_name !== className), sandboxContainerConfig(sandbox)];
|
|
387
|
+
if (JSON.stringify(containers) !== JSON.stringify(existingContainers)) {
|
|
388
|
+
parsed.containers = containers;
|
|
610
389
|
modified = true;
|
|
611
390
|
}
|
|
612
391
|
const migrations = Array.isArray(parsed.migrations) ? parsed.migrations : [];
|
|
613
|
-
if (!migrations
|
|
392
|
+
if (!hasSandboxSqliteMigration(migrations, className)) {
|
|
614
393
|
parsed.migrations = [...migrations, {
|
|
615
394
|
tag: SANDBOX_MIGRATION_TAG,
|
|
616
395
|
new_sqlite_classes: [className]
|
|
@@ -675,7 +454,7 @@ function readWranglerWebSocketTombstones(root, websockets) {
|
|
|
675
454
|
if (!configPath) return [];
|
|
676
455
|
const parsed = parseJsonc(readFileSync(configPath, "utf-8"));
|
|
677
456
|
const migrations = Array.isArray(parsed.migrations) ? parsed.migrations : [];
|
|
678
|
-
const historicalClasses = new Set(migrations.
|
|
457
|
+
const historicalClasses = new Set(migrations.flatMap((migration) => /^void-ws-v1(?:-\d+)?$/.test(migration.tag ?? "") ? [...migration.new_classes ?? [], ...migration.new_sqlite_classes ?? []] : []));
|
|
679
458
|
const currentClasses = new Set(websockets.map((route) => route.className));
|
|
680
459
|
const bindings = parsed.durable_objects?.bindings;
|
|
681
460
|
return [...new Set((Array.isArray(bindings) ? bindings : []).flatMap((binding) => typeof binding.class_name === "string" && historicalClasses.has(binding.class_name) && !currentClasses.has(binding.class_name) ? [binding.class_name] : []))].sort();
|
|
@@ -1981,4 +1760,4 @@ function canonicalize(value) {
|
|
|
1981
1760
|
return value;
|
|
1982
1761
|
}
|
|
1983
1762
|
//#endregion
|
|
1984
|
-
export {
|
|
1763
|
+
export { writeProvisionedWranglerConfig as A, readWranglerPublishedTrafficSnapshot as C, syncWranglerDurableObjects as D, syncWranglerBindings as E, syncWranglerWebSockets as O, readWranglerManagedQueueCleanupCandidates as S, resolveLiveBindingConfig as T, readExistingLiveBindingConfig as _, LIVE_MIGRATION_TAG as a, readWranglerCompat as b, bindingEntriesForField as c, ensureWranglerCompatibilityDate as d, ensureWranglerNodejsAlsFlag as f, normalizeWranglerCompatibilityFlags as g, nextDurableObjectMigrationTag as h, LATEST_KNOWN_COMPAT_DATE as i, writeWranglerPublishedTrafficSnapshot as j, updateWranglerCustomDomain as k, bindingNamesForField as l, hasDurableObjectSqliteMigration as m, DEFAULT_LIVE_CLASS as n, acknowledgeWranglerManagedQueueRemovals as o, findBindingNameOwner as p, FRIENDLY_BINDING_NAMES as r, assertNoDuplicateMembers as s, DEFAULT_LIVE_BINDING as t, ensureWranglerCompat as u, readProvisionedBindingEntry as v, readWranglerWebSocketTombstones as w, readWranglerCustomDomains as x, readRootWranglerConfig as y };
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { t as StandardSchemaV1 } from "./standard-schema-Fo_vCAZh.mjs";
|
|
2
2
|
import { r as AuthUser } from "./auth-DkcFflXV.mjs";
|
|
3
|
-
import { a as CloudEnv } from "./handler-
|
|
3
|
+
import { a as CloudEnv } from "./handler-CZ4nAylQ.mjs";
|
|
4
4
|
import { WebSocketRouteMap } from "void/routes";
|
|
5
5
|
//#region src/runtime/ws.d.ts
|
|
6
6
|
type MaybePromise<T> = T | Promise<T>;
|
|
7
7
|
type ParamsRecord = Record<string, string>;
|
|
8
|
+
type WebSocketInstanceKey = (context: {
|
|
9
|
+
params: ParamsRecord;
|
|
10
|
+
}) => string;
|
|
8
11
|
type WsEntry<P extends keyof WebSocketRouteMap> = WebSocketRouteMap[P];
|
|
9
12
|
type ParamsOf<P extends keyof WebSocketRouteMap> = WsEntry<P> extends {
|
|
10
13
|
params: infer T;
|
|
@@ -45,6 +48,10 @@ type SocketContext<ServerEvent = unknown> = WebSocketBaseContext & {
|
|
|
45
48
|
};
|
|
46
49
|
type RoomDefinition<ClientSchema extends StandardSchemaV1 = StandardSchemaV1, ServerSchema extends StandardSchemaV1 = StandardSchemaV1> = {
|
|
47
50
|
readonly __kind: "room";
|
|
51
|
+
/** Optional persistent resource name. Pin the name reported by `void info` before moving this route. */
|
|
52
|
+
readonly name?: string;
|
|
53
|
+
/** Optional instance key; preserve existing keys when renaming route parameters. */
|
|
54
|
+
readonly key?: WebSocketInstanceKey;
|
|
48
55
|
readonly messages: {
|
|
49
56
|
client: ClientSchema;
|
|
50
57
|
server: ServerSchema;
|
|
@@ -61,6 +68,10 @@ type RoomDefinition<ClientSchema extends StandardSchemaV1 = StandardSchemaV1, Se
|
|
|
61
68
|
};
|
|
62
69
|
type SocketDefinition<ClientSchema extends StandardSchemaV1 = StandardSchemaV1, ServerSchema extends StandardSchemaV1 = StandardSchemaV1> = {
|
|
63
70
|
readonly __kind: "socket";
|
|
71
|
+
/** Optional persistent resource name. Pin the name reported by `void info` before moving this route. */
|
|
72
|
+
readonly name?: string;
|
|
73
|
+
/** Optional instance key; preserve existing keys when renaming route parameters. */
|
|
74
|
+
readonly key?: WebSocketInstanceKey;
|
|
64
75
|
readonly messages: {
|
|
65
76
|
client: ClientSchema;
|
|
66
77
|
server: ServerSchema;
|
|
@@ -119,4 +130,4 @@ declare class VoidSocket<P extends keyof WebSocketRouteMap & string> {
|
|
|
119
130
|
declare function connect<P extends keyof WebSocketRouteMap & string>(path: HasParams<P> extends false ? P : never): VoidSocket<P>;
|
|
120
131
|
declare function connect<P extends keyof WebSocketRouteMap & string>(path: P, options: ConnectOptions<P>): VoidSocket<P>;
|
|
121
132
|
//#endregion
|
|
122
|
-
export { RoomDefinition as a, VoidSocket as c, WebSocketConnection as d,
|
|
133
|
+
export { RoomDefinition as a, VoidSocket as c, WebSocketConnection as d, WebSocketInstanceKey as f, defineWebSocket as h, RoomController as i, VoidSocketCloseEvent as l, defineRoom as m, ConnectCommonOptions as n, SocketContext as o, connect as p, RoomContext as r, SocketDefinition as s, AnyWebSocketDefinition as t, WebSocketBaseContext as u };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "void",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/voidzero-dev/void.git",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"schema.json",
|
|
15
15
|
"skills",
|
|
16
16
|
"AGENTS_TEMPLATE.md",
|
|
17
|
-
"README.md"
|
|
17
|
+
"README.md",
|
|
18
|
+
"sandbox.Dockerfile"
|
|
18
19
|
],
|
|
19
20
|
"type": "module",
|
|
20
21
|
"imports": {
|
|
@@ -38,10 +39,12 @@
|
|
|
38
39
|
"#self/runtime/live-server": "./dist/runtime/live-server.mjs",
|
|
39
40
|
"#self/runtime/fetch": "./dist/runtime/fetch.mjs",
|
|
40
41
|
"#self/runtime/fetch-stream": "./dist/runtime/fetch-stream.mjs",
|
|
42
|
+
"#self/runtime/route-url": "./dist/runtime/route-url.mjs",
|
|
41
43
|
"#self/runtime/migration-handler": "./dist/runtime/migration-handler.mjs",
|
|
42
44
|
"#self/runtime/migration-handler-pg": "./dist/runtime/migration-handler-pg.mjs",
|
|
43
45
|
"#self/runtime/migration-handler-mysql": "./dist/runtime/migration-handler-mysql.mjs",
|
|
44
|
-
"#self/runtime/ws-server": "./dist/runtime/ws-server.mjs"
|
|
46
|
+
"#self/runtime/ws-server": "./dist/runtime/ws-server.mjs",
|
|
47
|
+
"#self/runtime/routing": "./dist/runtime/routing.mjs"
|
|
45
48
|
},
|
|
46
49
|
"exports": {
|
|
47
50
|
".": {
|
|
@@ -316,57 +319,69 @@
|
|
|
316
319
|
"types": "./dist/runtime/db-mysql.d.mts",
|
|
317
320
|
"import": "./dist/runtime/db-mysql.mjs",
|
|
318
321
|
"require": "./dist/runtime/db-mysql.mjs"
|
|
322
|
+
},
|
|
323
|
+
"./_sandbox-container": {
|
|
324
|
+
"types": "./dist/runtime/sandbox-container.d.mts",
|
|
325
|
+
"import": "./dist/runtime/sandbox-container.mjs"
|
|
326
|
+
},
|
|
327
|
+
"./limits": {
|
|
328
|
+
"types": "./dist/runtime/limits.d.mts",
|
|
329
|
+
"import": "./dist/runtime/limits.mjs",
|
|
330
|
+
"require": "./dist/runtime/limits.mjs"
|
|
319
331
|
}
|
|
320
332
|
},
|
|
321
333
|
"dependencies": {
|
|
322
|
-
"@cloudflare/build-output-utils": "0.8.
|
|
323
|
-
"@cloudflare/
|
|
324
|
-
"@cloudflare/
|
|
325
|
-
"@cloudflare/
|
|
334
|
+
"@cloudflare/build-output-utils": "0.8.4",
|
|
335
|
+
"@cloudflare/codemods": "0.3.0",
|
|
336
|
+
"@cloudflare/config": "0.22.0",
|
|
337
|
+
"@cloudflare/sandbox": "1.0.0",
|
|
338
|
+
"@cloudflare/vite-plugin": "1.62.2",
|
|
339
|
+
"@cloudflare/workers-auth": "0.9.5",
|
|
326
340
|
"@cloudflare/workers-types": "^4.20260702.1",
|
|
327
|
-
"@napi-rs/keyring": "2.
|
|
328
|
-
"@void/deploy-cloudflare": "0.
|
|
329
|
-
"@void/deploy-core": "0.
|
|
330
|
-
"@void/edge": "0.
|
|
331
|
-
"@void/isr": "0.
|
|
332
|
-
"@void/platform": "0.
|
|
333
|
-
"acorn": "^8.
|
|
334
|
-
"better-auth": "^1.7.
|
|
341
|
+
"@napi-rs/keyring": "2.1.0",
|
|
342
|
+
"@void/deploy-cloudflare": "0.23.0",
|
|
343
|
+
"@void/deploy-core": "0.23.0",
|
|
344
|
+
"@void/edge": "0.23.0",
|
|
345
|
+
"@void/isr": "0.23.0",
|
|
346
|
+
"@void/platform": "0.23.0",
|
|
347
|
+
"acorn": "^8.18.0",
|
|
348
|
+
"better-auth": "^1.7.6",
|
|
335
349
|
"better-sqlite3": "^13.0.3",
|
|
336
350
|
"blake3-jit": "^1.1.0",
|
|
337
|
-
"cf": "1.0.0-beta.
|
|
351
|
+
"cf": "1.0.0-beta.9",
|
|
338
352
|
"drizzle-arktype": "^0.1.3",
|
|
339
|
-
"drizzle-kit": "^0.31.
|
|
340
|
-
"drizzle-orm": "^0.45.
|
|
353
|
+
"drizzle-kit": "^0.31.11",
|
|
354
|
+
"drizzle-orm": "^0.45.3",
|
|
341
355
|
"drizzle-valibot": "^0.4.2",
|
|
342
356
|
"drizzle-zod": "^0.8.3",
|
|
343
357
|
"email-validator": "^2.0.4",
|
|
344
358
|
"es-module-lexer": "^3.0.2",
|
|
345
|
-
"hono": "^4.13.
|
|
346
|
-
"ignore": "^7.0.
|
|
359
|
+
"hono": "^4.13.11",
|
|
360
|
+
"ignore": "^7.0.10",
|
|
347
361
|
"jiti": "^2.7.0",
|
|
348
362
|
"jsonc-parser": "3.3.1",
|
|
349
|
-
"
|
|
363
|
+
"mime": "4.1.0",
|
|
364
|
+
"miniflare": "5.20260926.1-alpha",
|
|
350
365
|
"minimatch": "^10.2.6",
|
|
351
|
-
"mysql2": "3.24.
|
|
366
|
+
"mysql2": "3.24.5",
|
|
352
367
|
"pg": "8.23.0",
|
|
353
|
-
"postal-mime": "^
|
|
368
|
+
"postal-mime": "^4.0.0",
|
|
354
369
|
"proper-lockfile": "^4.1.2",
|
|
355
|
-
"undici": "
|
|
370
|
+
"undici": "8.11.2"
|
|
356
371
|
},
|
|
357
372
|
"devDependencies": {
|
|
358
|
-
"@clack/core": "1.5.
|
|
359
|
-
"@clack/prompts": "^1.8.
|
|
373
|
+
"@clack/core": "^1.5.1",
|
|
374
|
+
"@clack/prompts": "^1.8.1",
|
|
360
375
|
"@electric-sql/pglite": "0.5.8",
|
|
361
376
|
"@types/better-sqlite3": "^9.6.0",
|
|
362
|
-
"@types/node": "^26.
|
|
377
|
+
"@types/node": "^26.6.3",
|
|
363
378
|
"@types/pg": "^8.23.1",
|
|
364
379
|
"@types/proper-lockfile": "^4.1.4",
|
|
365
|
-
"arktype": "^2.2.
|
|
380
|
+
"arktype": "^2.2.5",
|
|
366
381
|
"ci-info": "^4.4.0",
|
|
367
382
|
"estree-walker": "^3.0.3",
|
|
368
383
|
"fast-wrap-ansi": "^0.2.2",
|
|
369
|
-
"magic-string": "^1.
|
|
384
|
+
"magic-string": "^1.4.2",
|
|
370
385
|
"ofetch": "2.0.0-alpha.3",
|
|
371
386
|
"pathslash": "^0.1.0",
|
|
372
387
|
"pglite-server": "0.1.5",
|
|
@@ -374,12 +389,12 @@
|
|
|
374
389
|
"tinyglobby": "^0.2.17",
|
|
375
390
|
"typescript": "7.0.2",
|
|
376
391
|
"valibot": "^1.5.0",
|
|
377
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@0.
|
|
378
|
-
"vite-plus": "0.
|
|
379
|
-
"zod": "^4.6.
|
|
392
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
|
|
393
|
+
"vite-plus": "1.0.0",
|
|
394
|
+
"zod": "^4.6.5"
|
|
380
395
|
},
|
|
381
396
|
"peerDependencies": {
|
|
382
|
-
"@void/md": "0.
|
|
397
|
+
"@void/md": "0.23.0",
|
|
383
398
|
"arktype": ">=2.0.0",
|
|
384
399
|
"valibot": ">=1.0.0-beta.7",
|
|
385
400
|
"vite": "^8.0.0",
|
package/schema.json
CHANGED
|
@@ -297,9 +297,11 @@
|
|
|
297
297
|
"description": "Connect to remote D1/KV/R2 bindings during local development. Can also be set via VOID_REMOTE=1 environment variable."
|
|
298
298
|
},
|
|
299
299
|
"sandbox": {
|
|
300
|
-
"description": "Enable Cloudflare Sandboxes. `true` uses the default SANDBOX binding and
|
|
300
|
+
"description": "Enable Cloudflare Sandboxes. `true` uses the default SANDBOX binding and Node.js environment; an object customizes the Durable Object binding, container image, and instance size.",
|
|
301
301
|
"oneOf": [
|
|
302
|
-
{
|
|
302
|
+
{
|
|
303
|
+
"type": "boolean"
|
|
304
|
+
},
|
|
303
305
|
{
|
|
304
306
|
"type": "object",
|
|
305
307
|
"properties": {
|
|
@@ -309,42 +311,28 @@
|
|
|
309
311
|
},
|
|
310
312
|
"className": {
|
|
311
313
|
"type": "string",
|
|
312
|
-
"description": "Durable Object class name. Defaults to
|
|
314
|
+
"description": "Durable Object class name. Defaults to SandboxV1."
|
|
313
315
|
},
|
|
314
316
|
"containerName": {
|
|
315
317
|
"type": "string",
|
|
316
|
-
"description": "Cloudflare Container application name. Defaults to void-sandbox."
|
|
318
|
+
"description": "Cloudflare Container application name. Defaults to void-sandbox-v1."
|
|
317
319
|
},
|
|
318
320
|
"image": {
|
|
319
321
|
"type": "string",
|
|
320
|
-
"description": "
|
|
322
|
+
"description": "Dockerfile path or digest-pinned Cloudflare managed registry image for local and native Cloudflare use."
|
|
321
323
|
},
|
|
322
324
|
"imageBuildContext": {
|
|
323
325
|
"type": "string",
|
|
324
|
-
"description": "Optional Docker build context path for local
|
|
326
|
+
"description": "Optional Docker build context path for local development and native Cloudflare deploys."
|
|
325
327
|
},
|
|
326
328
|
"platformImage": {
|
|
327
329
|
"type": "string",
|
|
328
|
-
"description": "
|
|
330
|
+
"description": "Cloudflare managed registry image pinned by digest, containing the SDK 1.0 sandbox-shim. Defaults to Cloudflare’s managed Node.js image."
|
|
329
331
|
},
|
|
330
332
|
"instanceType": {
|
|
331
333
|
"type": "string",
|
|
332
|
-
"enum": [
|
|
333
|
-
"dev",
|
|
334
|
-
"lite",
|
|
335
|
-
"basic",
|
|
336
|
-
"standard",
|
|
337
|
-
"standard-1",
|
|
338
|
-
"standard-2",
|
|
339
|
-
"standard-3",
|
|
340
|
-
"standard-4"
|
|
341
|
-
],
|
|
334
|
+
"enum": ["lite", "standard-1", "standard-2", "standard-3", "standard-4"],
|
|
342
335
|
"description": "Cloudflare Container instance type."
|
|
343
|
-
},
|
|
344
|
-
"maxInstances": {
|
|
345
|
-
"type": "integer",
|
|
346
|
-
"minimum": 1,
|
|
347
|
-
"description": "Maximum number of sandbox container instances."
|
|
348
336
|
}
|
|
349
337
|
},
|
|
350
338
|
"additionalProperties": false
|