void 0.20.3 → 0.21.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 +2 -2
- package/dist/agents-gni4eqBu.mjs +111 -0
- package/dist/auth-3sGB0zJ1.mjs +22 -0
- package/dist/{auth-DPl6kck4.mjs → auth-B9_D6ygs.mjs} +6 -241
- package/dist/auth-CAw7zHqj.mjs +2 -0
- package/dist/auth-client-BWBT8HLp.mjs +6 -0
- package/dist/auth-client-Bawdj38n.d.mts +7 -0
- package/dist/auth-client-react-7GFffu8R.d.mts +7 -0
- package/dist/auth-client-react-CMLwT2xI.mjs +6 -0
- package/dist/auth-client-solid-DyTFL4cq.d.mts +7 -0
- package/dist/auth-client-solid-UoreJWZG.mjs +6 -0
- package/dist/auth-client-svelte-Cv_WvrRk.mjs +6 -0
- package/dist/auth-client-svelte-zetW0KIH.d.mts +7 -0
- package/dist/auth-client-vue-CFk7Xbv3.mjs +6 -0
- package/dist/auth-client-vue-bChShbQP.d.mts +7 -0
- package/dist/{auth-cmd-CzwquNiP.mjs → auth-cmd-MkBG2u1f.mjs} +5 -5
- package/dist/{auth-link-ElDTgF7j.mjs → auth-link-Devmv96E.mjs} +5 -5
- package/dist/{better-auth-shared-DSCeohOK.d.mts → better-auth-shared-BoVwA5Vm.d.mts} +1 -6
- package/dist/{better-auth-shared-CYw1T3k4.mjs → better-auth-shared-syGYYmnY.mjs} +1 -1
- package/dist/{build-cmd-BpJe6boP.mjs → build-cmd-DsBGwtfs.mjs} +6 -4
- package/dist/{cache-D98YTqeE.mjs → cache-BMw8eMyF.mjs} +6 -4
- package/dist/{cancel-deploy-CPbEQLMG.mjs → cancel-deploy-B3_s9NIN.mjs} +5 -3
- package/dist/cf-access-rAZxzMkL.mjs +181 -0
- package/dist/cf-build-output-CTdlo6Rt.mjs +520 -0
- package/dist/cli/cf-compat.d.mts +1 -0
- package/dist/cli/cf-compat.mjs +934 -0
- package/dist/cli/cli.mjs +60 -38
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/client-DAAivdid.mjs +2 -0
- package/dist/{client-BQBrZoCX.mjs → client-PdAJ-F0t.mjs} +6 -12
- package/dist/{cloudflare-auth-6M5llVPC.mjs → cloudflare-auth-BCmTc1X_.mjs} +13 -44
- package/dist/{cloudflare-cmd-4RPGN3KB.mjs → cloudflare-cmd-D6PrKn7o.mjs} +4 -7
- package/dist/{cloudflare-connect-t1UU5svD.mjs → cloudflare-connect-DloREDlc.mjs} +6 -6
- package/dist/cloudflare-operations-BHNJVDbN.mjs +2 -0
- package/dist/{cloudflare-operations-BzWnlC1_.mjs → cloudflare-operations-CPEdHYhM.mjs} +37 -39
- package/dist/cloudflare-user-output-Q-k0QoNQ.mjs +20 -0
- package/dist/collect-DAUItMDS.mjs +2 -0
- package/dist/collect-DXHNWHcT.mjs +48 -0
- package/dist/config--T87TD8T.mjs +2 -0
- package/dist/{config-NOG_U1aK.mjs → config-BSe70f4T.mjs} +4 -6
- package/dist/config-DDIFxQYx.mjs +2 -0
- package/dist/{config-uNGuFsI2.mjs → config-Dxr6cTXn.mjs} +22 -37
- package/dist/config-DywxBLQC.d.mts +185 -0
- package/dist/config-entry.d.mts +6 -0
- package/dist/config-entry.mjs +7 -0
- package/dist/config-uP7ZDtVZ.mjs +21 -0
- package/dist/config-write-y3CBI_ux.mjs +60 -0
- package/dist/{connect-WCQZ_u3m.mjs → connect-BvC9kolB.mjs} +8 -6
- package/dist/{create-project-D0oXA090.mjs → create-project-C9lQhRzj.mjs} +8 -23
- package/dist/create-project-CI-17RVJ.mjs +2 -0
- package/dist/database-provider-Cx525bwX.mjs +6 -0
- package/dist/database-provider.mjs +1 -5
- package/dist/{db-DJ-9qs3S.mjs → db-R7IQgOv5.mjs} +48 -44
- package/dist/{delete-BZ4-WaGm.mjs → delete-CghI_NXn.mjs} +6 -4
- package/dist/deploy-CYPymbtG.mjs +2 -0
- package/dist/{deploy-BAhhcg5q.mjs → deploy-H968Lo4T.mjs} +751 -190
- package/dist/discover-BBzDZe_o.mjs +2 -0
- package/dist/{discover-xvfrgJeo.mjs → discover-C4O6YxVS.mjs} +3 -8
- package/dist/{dist-BrsS7cai.mjs → dist-4WkAWhWx.mjs} +1 -15
- package/dist/{dist-m40_XgNh.mjs → dist-Bn8Kodjp.mjs} +1 -1
- package/dist/dist-C5fND3R0.mjs +2 -0
- package/dist/dist-D7-nEOXi.mjs +2 -0
- package/dist/{output-B0cfNSx5.mjs → dist-Dn6nn2IU.mjs} +3 -926
- package/dist/{domain-BxAyhxXN.mjs → domain-CITt8lC-.mjs} +7 -5
- package/dist/{route-types-Da-DpyUp.mjs → drizzle-Beb2Am5S.mjs} +1 -280
- package/dist/{email-Ce6SQq-i.mjs → email-C5kaZXzJ.mjs} +2 -2
- package/dist/{email-Bj7Cvdwp.mjs → email-_8VmyX7V.mjs} +14 -12
- package/dist/{entry-DU3oDoQ3.mjs → entry-DdRFGK0y.mjs} +2 -2
- package/dist/{env-DP_EErve.mjs → env-DV4r3nHz.mjs} +9 -7
- package/dist/{env-DBKmK4vc.mjs → env-DX_v-Q-v.mjs} +1 -1
- package/dist/env-Yz4HcvHs.mjs +78 -0
- package/dist/env-helpers--wFmQ_5Q.mjs +136 -0
- package/dist/{env-types-BNPhro-M.mjs → env-types-CWDtqHgw.mjs} +6 -2
- package/dist/{env-validation-CF6KvTRf.mjs → env-validation-BsFEXps5.mjs} +19 -28
- package/dist/env-validation-DIDGM7h4.mjs +2 -0
- package/dist/fetch-CXDChK7B.mjs +18 -0
- package/dist/fetch-_SeGZao9.d.mts +57 -0
- package/dist/fetch-stream-AOByI7Ki.mjs +81 -0
- package/dist/fetch-stream-Bjf0hoZb.d.mts +49 -0
- package/dist/gen-BBiIZw6g.mjs +2 -0
- package/dist/{gen-B_wPnVTK.mjs → gen-CFOEEc-t.mjs} +13 -11
- package/dist/{generate-RTK8_kK1.mjs → generate-C0VY6RVf.mjs} +2 -2
- package/dist/{github-cmd-C-z_xRrQ.mjs → github-cmd-jYjha2LO.mjs} +6 -4
- package/dist/{handler-D1hLsObx.d.mts → handler-BXJTXd02.d.mts} +6 -1
- package/dist/handler-DghKr6dU.mjs +150 -0
- package/dist/head-D_QRR5Yd.mjs +112 -0
- package/dist/head-client-DzmJGN4C.mjs +90 -0
- package/dist/{headers-BAHwgHdW.mjs → headers-B_HBMgi0.mjs} +2 -2
- package/dist/{help-CwOX-zmI.mjs → help-C46mnlUS.mjs} +17 -12
- package/dist/help-CS_nAsWu.mjs +2 -0
- package/dist/index.d.mts +2 -20
- package/dist/index.mjs +116 -60
- package/dist/{init-BGktCXgA.mjs → init-CSXmvxKu.mjs} +49 -50
- package/dist/{link-D2kbqhWb.mjs → link-DxMOALXk.mjs} +7 -5
- package/dist/{list-CvkK_G7k.mjs → list-0wQs0oYg.mjs} +7 -5
- package/dist/live-CB1y5IuC.mjs +411 -0
- package/dist/live-CKiJilLr.d.mts +105 -0
- package/dist/local-d1-DzykTWY8.mjs +104 -0
- package/dist/{login-WIjNc77c.mjs → login-CKk5NX4d.mjs} +6 -11
- package/dist/login-Ch9cgWRF.mjs +2 -0
- package/dist/{logs-dLUFCapG.mjs → logs-hxWBSoej.mjs} +6 -4
- package/dist/migrate-CLty4mZR.mjs +2 -0
- package/dist/migrate-DcW8F2W8.mjs +285 -0
- package/dist/migration-handler-DM4clYj5.d.mts +51 -0
- package/dist/{neon-DHwd2zvC.mjs → neon-n74ta1Pr.mjs} +1 -1
- package/dist/{node-Ez5KW5rn.mjs → node-Cupyf7-s.mjs} +6 -6
- package/dist/{operator-auth-B3e08unv.mjs → operator-auth-BkVgJqv-.mjs} +2 -2
- package/dist/{operator-client-LUZnlnYk.mjs → operator-client-A0iex2yi.mjs} +2 -1
- package/dist/{operator-cmd-CKJ7xIRs.mjs → operator-cmd-BEUYhaHB.mjs} +6 -6
- package/dist/output-urU86XeT.mjs +146 -0
- package/dist/{package-json-CPoWX79C.mjs → package-json-iCbMg5XF.mjs} +1 -1
- package/dist/pages/client.d.mts +5 -2
- package/dist/pages/client.mjs +5 -3
- package/dist/pages/head-client.mjs +1 -89
- package/dist/pages/head.mjs +1 -111
- package/dist/pages/index.d.mts +2 -3
- package/dist/pages/index.mjs +7 -7
- package/dist/pages/islands-plugin.mjs +2 -2
- package/dist/pages/prefetch.d.mts +2 -30
- package/dist/pages/prefetch.mjs +1 -89
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +3 -3
- package/dist/pages/serialize.d.mts +2 -9
- package/dist/pages/serialize.mjs +1 -13
- package/dist/plan-BEZ8VJW0.mjs +256 -0
- package/dist/plan-DpuOr14e.mjs +2 -0
- package/dist/{platform-auth-config-CdVWRRJr.mjs → platform-auth-config-Df6yVw-e.mjs} +6 -6
- package/dist/{platform-auth-protection-Drl0qhrn.mjs → platform-auth-protection-Jb0yftay.mjs} +7 -5
- package/dist/{platform-auth-recovery-CmKEWpDo.mjs → platform-auth-recovery-DmRyIfW0.mjs} +6 -5
- package/dist/platform-cmd-C9Vt7m-d.mjs +2 -0
- package/dist/{platform-cmd-5q_k56xS.mjs → platform-cmd-DRxCOTwy.mjs} +8 -5
- package/dist/{platform-domain-4GiDlcqx.mjs → platform-domain-IjiXgrXJ.mjs} +4 -3
- package/dist/{platform-lifecycle-R9xAxvtG.mjs → platform-lifecycle-BquAaU-5.mjs} +208 -37
- package/dist/platform-lifecycle-CuJIZNvA.mjs +2 -0
- package/dist/{platform-management-BfWsXHEW.mjs → platform-management-CCQKGsq4.mjs} +8 -5
- package/dist/platform-management-Cgyed0WY.mjs +2 -0
- package/dist/{platform-recovery-CbK-I1FB.mjs → platform-recovery-DS8ih1SW.mjs} +3 -3
- package/dist/platform-registry-BJbgZLS1.mjs +431 -0
- package/dist/{plugin-inference-BDRfZngg.mjs → plugin-inference-DsvtJLll.mjs} +4 -4
- package/dist/prefetch-Bsc_Pb6c.mjs +90 -0
- package/dist/prefetch-Ce6la4EI.d.mts +31 -0
- package/dist/{prepare-blNRQvQl.mjs → prepare-CaUxODOU.mjs} +3 -2
- package/dist/prepare-D4CkM3_v.mjs +2 -0
- package/dist/{prepare-CtDJjoOj.mjs → prepare-pcWcxSCh.mjs} +13 -11
- package/dist/prerender-render-Cf_WDE9W.mjs +111 -0
- package/dist/prerender-render.mjs +1 -110
- package/dist/{preset-lAy0B0BQ.mjs → preset-Dowh9tTt.mjs} +16 -118
- package/dist/project-BEBFDFLz.mjs +2 -0
- package/dist/project-CWNIPoXc.mjs +209 -0
- package/dist/{project-cmd-CTdmnzvc.mjs → project-cmd-2lN--YAX.mjs} +18 -16
- package/dist/{project-paths-SK8nMHPp.mjs → project-paths-CKQ-Q5JS.mjs} +47 -14
- package/dist/project-slug-23TpquG4.mjs +8 -0
- package/dist/project-slug-DofjTFd-.mjs +2 -0
- package/dist/{project-team-CGxsQe3_.mjs → project-team-Dapn9HZn.mjs} +6 -4
- package/dist/{project-token-Cirx7uwZ.mjs → project-token-C90v9SJK.mjs} +6 -4
- package/dist/{project-tsconfig-Ql2XsSQp.mjs → project-tsconfig-CwfqUnVp.mjs} +2 -2
- package/dist/{protocol-C-pqYJjE.d.mts → protocol-ZH3jP4a7.d.mts} +1 -1
- package/dist/providers-BNKRacMr.d.mts +7 -0
- package/dist/provision-CNgEBkVA.mjs +3 -0
- package/dist/{provision-CSJOjjQk.mjs → provision-Cck2m3jJ.mjs} +11 -25
- package/dist/queues-BWKt1Xo4.d.mts +7 -0
- package/dist/{requests-4Nq59hOr.mjs → requests-CzX46I0i.mjs} +5 -3
- package/dist/resolve-project-BTotl8Nn.mjs +2 -0
- package/dist/{resolve-project--Vxawf7z.mjs → resolve-project-Xvis70DG.mjs} +2 -8
- package/dist/response-Tn7rU0MV.mjs +30 -0
- package/dist/{rollback-Dr7u0Ljx.mjs → rollback-BEeyc73H.mjs} +6 -4
- package/dist/{rolldown-runtime-rQ84J-ij.mjs → rolldown-runtime-DXIUcv95.mjs} +1 -10
- package/dist/route-types-Id82-veQ.mjs +280 -0
- package/dist/{local-d1-D2I6Ox5F.mjs → runner-BGVsGgkb.mjs} +6 -114
- package/dist/runner-CQs_cDSG.mjs +2 -0
- package/dist/runner-mysql-1o47achK.mjs +2 -0
- package/dist/{runner-mysql-7BPUNGmL.mjs → runner-mysql-BhwMk2Bm.mjs} +2 -9
- package/dist/{runner-pg-BkEza-dX.mjs → runner-pg-CJ_JeGF6.mjs} +2 -9
- package/dist/runner-pg-D7z01mQS.mjs +2 -0
- package/dist/runtime/ai.mjs +1 -1
- package/dist/runtime/auth-client-react.d.mts +2 -6
- package/dist/runtime/auth-client-react.mjs +1 -5
- package/dist/runtime/auth-client-solid.d.mts +2 -6
- package/dist/runtime/auth-client-solid.mjs +1 -5
- package/dist/runtime/auth-client-svelte.d.mts +2 -6
- package/dist/runtime/auth-client-svelte.mjs +1 -5
- package/dist/runtime/auth-client-vue.d.mts +2 -6
- package/dist/runtime/auth-client-vue.mjs +1 -5
- package/dist/runtime/auth-client.d.mts +2 -6
- package/dist/runtime/auth-client.mjs +1 -5
- package/dist/runtime/auth.mjs +1 -21
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +1 -1
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +1 -1
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +1 -1
- package/dist/runtime/client-react.d.mts +3 -3
- package/dist/runtime/client-react.mjs +3 -3
- package/dist/runtime/client-solid.d.mts +3 -3
- package/dist/runtime/client-solid.mjs +3 -3
- package/dist/runtime/client-svelte.d.mts +3 -3
- package/dist/runtime/client-svelte.mjs +3 -3
- package/dist/runtime/client-vue.d.mts +3 -3
- package/dist/runtime/client-vue.mjs +3 -3
- package/dist/runtime/client.d.mts +3 -3
- package/dist/runtime/client.mjs +3 -3
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.mjs +1 -1
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/env-helpers.mjs +1 -135
- package/dist/runtime/env-public-client.mjs +1 -1
- package/dist/runtime/env-public.mjs +2 -2
- package/dist/runtime/env.mjs +1 -77
- package/dist/runtime/fetch-stream.d.mts +2 -49
- package/dist/runtime/fetch-stream.mjs +2 -80
- package/dist/runtime/fetch.d.mts +2 -57
- package/dist/runtime/fetch.mjs +2 -17
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +1 -149
- package/dist/runtime/kv.mjs +1 -1
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-server.mjs +2 -2
- package/dist/runtime/live.d.mts +2 -104
- package/dist/runtime/live.mjs +1 -410
- package/dist/runtime/migration-handler-mysql.d.mts +1 -1
- package/dist/runtime/migration-handler-pg.d.mts +1 -1
- package/dist/runtime/migration-handler.d.mts +2 -50
- package/dist/runtime/queues.d.mts +2 -6
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/response.mjs +1 -29
- package/dist/runtime/sandbox.mjs +1 -1
- package/dist/runtime/sse.mjs +1 -171
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/validator.mjs +1 -71
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws-server.mjs +2 -2
- package/dist/runtime/ws.d.mts +2 -121
- package/dist/{scan-CpK-57ug.mjs → scan-DJbooZm2.mjs} +3 -3
- package/dist/{scan-BMH4rzlv.mjs → scan-DdDvRCU1.mjs} +8 -26
- package/dist/{secret-AcPi-FoA.mjs → secret-wnTel5Yw.mjs} +8 -6
- package/dist/serialize-BPvnNQuA.mjs +14 -0
- package/dist/serialize-CfSwWfF2.d.mts +10 -0
- package/dist/{skills-C0RvGjeE.mjs → skills-B-690E7h.mjs} +3 -2
- package/dist/sse-BaC1jXko.mjs +172 -0
- package/dist/{subcommand-prompt-Bmyn5Rlc.mjs → subcommand-prompt-Gj3VzLIh.mjs} +2 -1
- package/dist/sveltekit.d.mts +2 -1
- package/dist/sveltekit.mjs +3 -2
- package/dist/validate-DqJ33oHj.mjs +2 -0
- package/dist/validate-qNhV00PD.mjs +180 -0
- package/dist/validator-BTOu0fB0.mjs +72 -0
- package/dist/{wrangler--imS8n0d.mjs → wrangler-D01qs6VB.mjs} +259 -71
- package/dist/ws-BwcqizuH.d.mts +122 -0
- package/dist/{yarn-pnp-DxSInkzL.mjs → yarn-pnp-CVEc3gE7.mjs} +1 -1
- package/package.json +19 -8
- package/skills/void/SKILL.md +6 -4
- package/skills/void/docs/guide/ai.md +3 -3
- package/skills/void/docs/guide/app-types.md +12 -11
- package/skills/void/docs/guide/auth.md +2 -2
- package/skills/void/docs/guide/database/d1.md +1 -1
- package/skills/void/docs/guide/database/mysql.md +1 -1
- package/skills/void/docs/guide/database/postgresql.md +3 -3
- package/skills/void/docs/guide/deployment.md +2 -2
- package/skills/void/docs/guide/durable-state.md +2 -2
- package/skills/void/docs/guide/edge/headers.md +3 -3
- package/skills/void/docs/guide/edge/prerendering.md +1 -1
- package/skills/void/docs/guide/edge/redirects.md +4 -4
- package/skills/void/docs/guide/edge/revalidation.md +6 -6
- package/skills/void/docs/guide/edge/rewrites.md +28 -27
- package/skills/void/docs/guide/edge/static-assets.md +1 -1
- package/skills/void/docs/guide/email.md +15 -15
- package/skills/void/docs/guide/env-migration.md +1 -1
- package/skills/void/docs/guide/index.md +1 -1
- package/skills/void/docs/guide/pages-routing/head.md +1 -1
- package/skills/void/docs/guide/platform/administration/access.md +13 -5
- package/skills/void/docs/guide/platform/administration/projects.md +3 -1
- package/skills/void/docs/guide/platform/installation/ci.md +3 -0
- package/skills/void/docs/guide/platform/installation/credentials.md +15 -5
- package/skills/void/docs/guide/platform/installation/prerequisites.md +2 -0
- package/skills/void/docs/guide/platform/installation/setup.md +1 -1
- package/skills/void/docs/guide/remote-dev.md +2 -2
- package/skills/void/docs/guide/sandboxes.md +1 -1
- package/skills/void/docs/guide/ssg.md +1 -1
- package/skills/void/docs/guide/websockets.md +1 -1
- package/skills/void/docs/integrations/cloudflare.md +86 -84
- package/skills/void/docs/integrations/frameworks/analog.md +14 -9
- package/skills/void/docs/integrations/frameworks/astro.md +14 -10
- package/skills/void/docs/integrations/frameworks/nuxt.md +14 -9
- package/skills/void/docs/integrations/frameworks/overview.md +35 -29
- package/skills/void/docs/integrations/frameworks/react-router.md +1 -1
- package/skills/void/docs/integrations/frameworks/sveltekit.md +33 -30
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +1 -1
- package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -5
- package/skills/void/docs/reference/api.md +21 -4
- package/skills/void/docs/reference/cli.md +32 -23
- package/skills/void/docs/reference/config.md +56 -33
- package/skills/void/docs/reference/structure.md +2 -2
- package/dist/validate-tBBN_dXH.mjs +0 -505
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { c as import_picocolors } from "./output-urU86XeT.mjs";
|
|
2
|
+
import { c as getToken } from "./auth-B9_D6ygs.mjs";
|
|
3
|
+
import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
|
|
4
|
+
import { N as note, j as log } from "./dist-Dn6nn2IU.mjs";
|
|
5
|
+
import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
|
|
4
6
|
//#region src/cli/domain.ts
|
|
5
7
|
async function runDomainCommand(root, args) {
|
|
6
8
|
const platform = readDeploymentPlatform(root);
|
|
@@ -38,7 +40,7 @@ async function runDomainCommand(root, args) {
|
|
|
38
40
|
}
|
|
39
41
|
async function runCloudflareDomainCommand(root, args) {
|
|
40
42
|
if (args.projectSlug) throw new Error("domain: --project selects a Void platform project and is not used for direct Cloudflare apps.");
|
|
41
|
-
const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-
|
|
43
|
+
const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-BHNJVDbN.mjs");
|
|
42
44
|
if (args.subcommand === "add") {
|
|
43
45
|
const result = await changeCloudflareDomain(root, args.hostname, "add");
|
|
44
46
|
log.success(result.modified ? `Domain ${args.hostname} added and activated on Cloudflare.` : `Domain ${args.hostname} is already configured.`);
|
|
@@ -64,7 +66,7 @@ async function runCloudflareDomainCommand(root, args) {
|
|
|
64
66
|
log.error(`domain: Domain '${args.hostname}' is not configured for this Worker.`);
|
|
65
67
|
process.exit(1);
|
|
66
68
|
}
|
|
67
|
-
const lines = [`Hostname: ${domain.pattern}`, "Status: configured locally — present in
|
|
69
|
+
const lines = [`Hostname: ${domain.pattern}`, "Status: configured locally — present in Void Cloudflare config; remote certificate state is managed by Cloudflare."];
|
|
68
70
|
if (args.verbose) lines.push("", "Details:", " Type: Cloudflare Custom Domain", " TLS: managed");
|
|
69
71
|
note(lines.join("\n"), "Domain Status");
|
|
70
72
|
}
|
|
@@ -1,82 +1,5 @@
|
|
|
1
|
-
import { c as relative, o as join } from "./dist-BrsS7cai.mjs";
|
|
2
1
|
import { a as isVoidSocialAuthProvider } from "./providers-CJlNS3kT.mjs";
|
|
3
|
-
import { r as writeFileIfChanged } from "./project-tsconfig-Ql2XsSQp.mjs";
|
|
4
|
-
import { mkdirSync } from "node:fs";
|
|
5
2
|
import { getAuthTables, getSchema } from "better-auth/db";
|
|
6
|
-
//#region src/codegen/db-types.ts
|
|
7
|
-
const DRIZZLE_OPERATORS = "sql, eq, ne, gt, gte, lt, lte, and, or, not, desc, asc, like, ilike, notLike, inArray, notInArray, isNull, isNotNull, between, notBetween, exists, notExists, count, sum, avg, min, max";
|
|
8
|
-
/**
|
|
9
|
-
* Generate `.void/db.d.ts` with Drizzle types referencing the user's schema.
|
|
10
|
-
*
|
|
11
|
-
* This is a proper module file (not `declare module`) whose types override
|
|
12
|
-
* the base `void/db` package via a tsconfig `paths` redirect:
|
|
13
|
-
* "void/db": ["./.void/db.d.ts"]
|
|
14
|
-
*
|
|
15
|
-
* Imports reference `void/_db` (internal subpath pointing at the same
|
|
16
|
-
* base module) to avoid circular resolution through the paths redirect.
|
|
17
|
-
*/
|
|
18
|
-
function generateDbDts(outDir, schema, dialect) {
|
|
19
|
-
mkdirSync(outDir, { recursive: true });
|
|
20
|
-
const lines = dialect === "mysql" ? schema ? [
|
|
21
|
-
"// Auto-generated by void — do not edit",
|
|
22
|
-
"import type { MySql2Database } from \"void/_db-mysql\";",
|
|
23
|
-
"import type * as schema from \"@schema\";",
|
|
24
|
-
"type Schema = typeof schema;",
|
|
25
|
-
"export declare const db: MySql2Database<Schema>;",
|
|
26
|
-
"export declare function createDb(connectionString: string): MySql2Database<Schema>;",
|
|
27
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
28
|
-
"export type { MySql2Database } from \"void/_db-mysql\";",
|
|
29
|
-
""
|
|
30
|
-
] : [
|
|
31
|
-
"// Auto-generated by void — do not edit",
|
|
32
|
-
"import type { MySql2Database } from \"void/_db-mysql\";",
|
|
33
|
-
"export declare const db: MySql2Database<Record<string, never>>;",
|
|
34
|
-
"export declare function createDb(connectionString: string): MySql2Database<Record<string, never>>;",
|
|
35
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
36
|
-
"export type { MySql2Database } from \"void/_db-mysql\";",
|
|
37
|
-
""
|
|
38
|
-
] : dialect === "postgresql" ? schema ? [
|
|
39
|
-
"// Auto-generated by void — do not edit",
|
|
40
|
-
"import type { NodePgDatabase } from \"void/_db-pg\";",
|
|
41
|
-
"import type * as schema from \"@schema\";",
|
|
42
|
-
"type Schema = typeof schema;",
|
|
43
|
-
"export declare const db: NodePgDatabase<Schema>;",
|
|
44
|
-
"export declare function createDb(connectionString: string): NodePgDatabase<Schema>;",
|
|
45
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
46
|
-
"export type { NodePgDatabase } from \"void/_db-pg\";",
|
|
47
|
-
""
|
|
48
|
-
] : [
|
|
49
|
-
"// Auto-generated by void — do not edit",
|
|
50
|
-
"import type { NodePgDatabase } from \"void/_db-pg\";",
|
|
51
|
-
"export declare const db: NodePgDatabase<Record<string, never>>;",
|
|
52
|
-
"export declare function createDb(connectionString: string): NodePgDatabase<Record<string, never>>;",
|
|
53
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
54
|
-
"export type { NodePgDatabase } from \"void/_db-pg\";",
|
|
55
|
-
""
|
|
56
|
-
] : schema ? [
|
|
57
|
-
"// Auto-generated by void — do not edit",
|
|
58
|
-
"/// <reference types=\"@cloudflare/workers-types\" />",
|
|
59
|
-
"import type { DrizzleD1Database } from \"void/_db\";",
|
|
60
|
-
"import type * as schema from \"@schema\";",
|
|
61
|
-
"type Schema = typeof schema;",
|
|
62
|
-
"export declare const db: DrizzleD1Database<Schema>;",
|
|
63
|
-
"export declare function createDb(d1: D1Database): DrizzleD1Database<Schema>;",
|
|
64
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
65
|
-
"export type { DrizzleD1Database } from \"void/_db\";",
|
|
66
|
-
""
|
|
67
|
-
] : [
|
|
68
|
-
"// Auto-generated by void — do not edit",
|
|
69
|
-
"/// <reference types=\"@cloudflare/workers-types\" />",
|
|
70
|
-
"import type { DrizzleD1Database } from \"void/_db\";",
|
|
71
|
-
"export declare const db: DrizzleD1Database<Record<string, never>>;",
|
|
72
|
-
"export declare function createDb(d1: D1Database): DrizzleD1Database<Record<string, never>>;",
|
|
73
|
-
`export { ${DRIZZLE_OPERATORS} } from "void/_db";`,
|
|
74
|
-
"export type { DrizzleD1Database } from \"void/_db\";",
|
|
75
|
-
""
|
|
76
|
-
];
|
|
77
|
-
return writeFileIfChanged(join(outDir, "db.d.ts"), lines.join("\n"));
|
|
78
|
-
}
|
|
79
|
-
//#endregion
|
|
80
3
|
//#region src/auth/drizzle.ts
|
|
81
4
|
const DEFAULT_TABLE_ORDER = Number.MAX_SAFE_INTEGER;
|
|
82
5
|
function resolveEmailAndPassword(configuredProviders) {
|
|
@@ -341,206 +264,4 @@ function generateVoidAuthDatabaseModule(options) {
|
|
|
341
264
|
].join("\n");
|
|
342
265
|
}
|
|
343
266
|
//#endregion
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* Generate .void/queues.d.ts content.
|
|
347
|
-
*
|
|
348
|
-
* Augments `void/queues` with a typed `QueueMap` interface
|
|
349
|
-
* so `queues.emails.send(body)` is fully typed from the consumer's
|
|
350
|
-
* `defineQueue<T>` phantom type.
|
|
351
|
-
*/
|
|
352
|
-
function generateQueueTypes(queues, queuesDir, outDir) {
|
|
353
|
-
const lines = [];
|
|
354
|
-
lines.push("// Auto-generated by void — do not edit");
|
|
355
|
-
lines.push("export interface QueueMap {");
|
|
356
|
-
for (const q of queues) {
|
|
357
|
-
const absPath = `${queuesDir}/${q.filePath}`;
|
|
358
|
-
const importPath = relative(outDir, absPath);
|
|
359
|
-
lines.push(` ${JSON.stringify(q.name)}: Queue<(typeof import(${JSON.stringify(importPath)}))["default"]["__payload"]>;`);
|
|
360
|
-
}
|
|
361
|
-
lines.push("}");
|
|
362
|
-
lines.push("");
|
|
363
|
-
lines.push("export declare const queues: QueueMap;");
|
|
364
|
-
lines.push("");
|
|
365
|
-
return lines.join("\n");
|
|
366
|
-
}
|
|
367
|
-
//#endregion
|
|
368
|
-
//#region src/codegen/route-types.ts
|
|
369
|
-
/**
|
|
370
|
-
* Generate .void/routes.d.ts content.
|
|
371
|
-
*
|
|
372
|
-
* Uses `typeof import(...)` so TypeScript resolves all types.
|
|
373
|
-
* The codegen generates scaffolding only — never analyzes types itself.
|
|
374
|
-
*/
|
|
375
|
-
function generateRouteTypes(scan, routesDir, outDir, pagesDir) {
|
|
376
|
-
const lines = [];
|
|
377
|
-
lines.push("// Auto-generated by void — do not edit");
|
|
378
|
-
lines.push("export {}");
|
|
379
|
-
lines.push("type StandardSchemaV1<Input = unknown, Output = Input> = {");
|
|
380
|
-
lines.push(" readonly \"~standard\": {");
|
|
381
|
-
lines.push(" readonly version: 1;");
|
|
382
|
-
lines.push(" readonly vendor: string;");
|
|
383
|
-
lines.push(" readonly validate: (value: unknown) => unknown;");
|
|
384
|
-
lines.push(" readonly types?: { readonly input: Input; readonly output: Output } | undefined;");
|
|
385
|
-
lines.push(" };");
|
|
386
|
-
lines.push("};");
|
|
387
|
-
lines.push("declare namespace StandardSchemaV1 {");
|
|
388
|
-
lines.push(" type InferInput<Schema extends StandardSchemaV1> = NonNullable<");
|
|
389
|
-
lines.push(" Schema[\"~standard\"][\"types\"]");
|
|
390
|
-
lines.push(" >[\"input\"];");
|
|
391
|
-
lines.push(" type InferOutput<Schema extends StandardSchemaV1> = NonNullable<");
|
|
392
|
-
lines.push(" Schema[\"~standard\"][\"types\"]");
|
|
393
|
-
lines.push(" >[\"output\"];");
|
|
394
|
-
lines.push("}");
|
|
395
|
-
lines.push("");
|
|
396
|
-
lines.push("type Serialize<T> =");
|
|
397
|
-
lines.push(" T extends Response ? never :");
|
|
398
|
-
lines.push(" T extends Date ? string :");
|
|
399
|
-
lines.push(" T extends bigint ? never :");
|
|
400
|
-
lines.push(" T extends Function ? never :");
|
|
401
|
-
lines.push(" T extends undefined ? never :");
|
|
402
|
-
lines.push(" T extends Array<infer U> ? Array<Serialize<U>> :");
|
|
403
|
-
lines.push(" T extends object ? { [K in keyof T as T[K] extends Function ? never : K]: Serialize<T[K]> } :");
|
|
404
|
-
lines.push(" T;");
|
|
405
|
-
lines.push("");
|
|
406
|
-
lines.push("type ExtractInput<V> = {");
|
|
407
|
-
lines.push(" [K in keyof V as V[K] extends StandardSchemaV1 ? K : never]:");
|
|
408
|
-
lines.push(" V[K] extends StandardSchemaV1 ? StandardSchemaV1.InferInput<V[K]> : never;");
|
|
409
|
-
lines.push("};");
|
|
410
|
-
lines.push("");
|
|
411
|
-
lines.push("type ExtractOutput<S> =");
|
|
412
|
-
lines.push(" S extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<S> : never;");
|
|
413
|
-
lines.push("");
|
|
414
|
-
lines.push("type RouteParams<P extends readonly string[]> =");
|
|
415
|
-
lines.push(" P extends readonly [] ? Record<string, never> : { [K in P[number]]: string };");
|
|
416
|
-
lines.push("");
|
|
417
|
-
lines.push("declare module \"void/routes\" {");
|
|
418
|
-
lines.push(" export interface RouteMap {}");
|
|
419
|
-
lines.push(" export interface WebSocketRouteMap {}");
|
|
420
|
-
lines.push(" export interface PageActionMap {}");
|
|
421
|
-
lines.push("");
|
|
422
|
-
lines.push(" /** Union of known route patterns (keys of the generated RouteMap). */");
|
|
423
|
-
lines.push(" export type RouteName = keyof RouteMap;");
|
|
424
|
-
lines.push("");
|
|
425
|
-
lines.push(" /**");
|
|
426
|
-
lines.push(" * Destination type for rewrites / fallbacks / c.rewrite().");
|
|
427
|
-
lines.push(" *");
|
|
428
|
-
lines.push(" * The `string & {}` branch keeps IDE autocomplete of known routes while");
|
|
429
|
-
lines.push(" * still accepting arbitrary strings (needed for dynamic paths like");
|
|
430
|
-
lines.push(" * `/users/${id}`). When no routes are generated yet, `RouteName` is");
|
|
431
|
-
lines.push(" * `never` and this degenerates to `string & {}`, which is assignable");
|
|
432
|
-
lines.push(" * from any string.");
|
|
433
|
-
lines.push(" */");
|
|
434
|
-
lines.push(" export type RewriteDestination = RouteName | (string & {});");
|
|
435
|
-
lines.push("");
|
|
436
|
-
lines.push(" export type ParseActionUrl<U extends string> = U extends `${infer Base}?${infer Action}` ? {");
|
|
437
|
-
lines.push(" base: Base;");
|
|
438
|
-
lines.push(" action: Action;");
|
|
439
|
-
lines.push(" } : {");
|
|
440
|
-
lines.push(" base: U;");
|
|
441
|
-
lines.push(" action: never;");
|
|
442
|
-
lines.push(" };");
|
|
443
|
-
lines.push("");
|
|
444
|
-
lines.push(" export type ResolveActionBody<U extends string> =");
|
|
445
|
-
lines.push(" ParseActionUrl<U>[\"base\"] extends keyof PageActionMap");
|
|
446
|
-
lines.push(" ? ParseActionUrl<U>[\"action\"] extends never");
|
|
447
|
-
lines.push(" ? PageActionMap[ParseActionUrl<U>[\"base\"]] extends { body: infer B }");
|
|
448
|
-
lines.push(" ? B");
|
|
449
|
-
lines.push(" : Record<string, unknown>");
|
|
450
|
-
lines.push(" : PageActionMap[ParseActionUrl<U>[\"base\"]] extends { actions: infer A }");
|
|
451
|
-
lines.push(" ? ParseActionUrl<U>[\"action\"] extends keyof A");
|
|
452
|
-
lines.push(" ? A[ParseActionUrl<U>[\"action\"]] extends { body: infer B }");
|
|
453
|
-
lines.push(" ? B");
|
|
454
|
-
lines.push(" : Record<string, unknown>");
|
|
455
|
-
lines.push(" : never");
|
|
456
|
-
lines.push(" : never");
|
|
457
|
-
lines.push(" : Record<string, unknown>;");
|
|
458
|
-
lines.push("");
|
|
459
|
-
lines.push(" export type ResolveActionParams<U extends string> =");
|
|
460
|
-
lines.push(" ParseActionUrl<U>[\"base\"] extends keyof PageActionMap");
|
|
461
|
-
lines.push(" ? PageActionMap[ParseActionUrl<U>[\"base\"]] extends { params: infer P }");
|
|
462
|
-
lines.push(" ? P");
|
|
463
|
-
lines.push(" : never");
|
|
464
|
-
lines.push(" : never;");
|
|
465
|
-
lines.push("");
|
|
466
|
-
lines.push(" export type HasActionParams<U extends string> =");
|
|
467
|
-
lines.push(" ResolveActionParams<U> extends Record<string, string> ? true : false;");
|
|
468
|
-
lines.push("");
|
|
469
|
-
lines.push(" export type ActionFormOptions<U extends string> =");
|
|
470
|
-
lines.push(" HasActionParams<U> extends true ? { params: ResolveActionParams<U> } : { params?: never };");
|
|
471
|
-
lines.push("");
|
|
472
|
-
lines.push(" export type ActionUrl =");
|
|
473
|
-
lines.push(" | {");
|
|
474
|
-
lines.push(" [K in keyof PageActionMap]: PageActionMap[K] extends { body: any } ? K : never;");
|
|
475
|
-
lines.push(" }[keyof PageActionMap]");
|
|
476
|
-
lines.push(" | {");
|
|
477
|
-
lines.push(" [K in keyof PageActionMap]: PageActionMap[K] extends { actions: infer A }");
|
|
478
|
-
lines.push(" ? `${K & string}?${keyof A & string}`");
|
|
479
|
-
lines.push(" : never;");
|
|
480
|
-
lines.push(" }[keyof PageActionMap]");
|
|
481
|
-
lines.push("");
|
|
482
|
-
lines.push(" interface RouteMap {");
|
|
483
|
-
for (const route of scan.routes) {
|
|
484
|
-
if (route.methods.length === 0) continue;
|
|
485
|
-
const absRoutePath = `${routesDir}/${route.filePath}`;
|
|
486
|
-
const importPath = relative(outDir, absRoutePath);
|
|
487
|
-
lines.push(` ${JSON.stringify(route.pattern)}: {`);
|
|
488
|
-
for (const method of route.methods) {
|
|
489
|
-
lines.push(` ${method}: {`);
|
|
490
|
-
lines.push(` input: ExtractInput<(typeof import(${JSON.stringify(importPath)}))["${method}"]["__validators"]>;`);
|
|
491
|
-
lines.push(` output: Serialize<Awaited<(typeof import(${JSON.stringify(importPath)}))["${method}"]["__output"]>>;`);
|
|
492
|
-
lines.push(" };");
|
|
493
|
-
}
|
|
494
|
-
lines.push(" };");
|
|
495
|
-
}
|
|
496
|
-
lines.push(" }");
|
|
497
|
-
lines.push("");
|
|
498
|
-
lines.push(" interface WebSocketRouteMap {");
|
|
499
|
-
for (const route of scan.websockets ?? []) {
|
|
500
|
-
const absRoutePath = `${routesDir}/${route.filePath}`;
|
|
501
|
-
const importPath = relative(outDir, absRoutePath);
|
|
502
|
-
lines.push(` ${JSON.stringify(route.pattern)}: {`);
|
|
503
|
-
lines.push(` params: RouteParams<${JSON.stringify(route.params)}>;`);
|
|
504
|
-
lines.push(` client: ExtractInput<(typeof import(${JSON.stringify(importPath)}))["default"]["messages"]["client"]>;`);
|
|
505
|
-
lines.push(` server: ExtractOutput<(typeof import(${JSON.stringify(importPath)}))["default"]["messages"]["server"]>;`);
|
|
506
|
-
lines.push(" };");
|
|
507
|
-
}
|
|
508
|
-
lines.push(" }");
|
|
509
|
-
const actionPages = scan.pages.pages.filter((p) => p.methods.includes("action") || p.methods.includes("actions"));
|
|
510
|
-
if (actionPages.length > 0 && pagesDir) {
|
|
511
|
-
lines.push(" interface PageActionMap {");
|
|
512
|
-
for (const page of actionPages) {
|
|
513
|
-
const hasAction = page.methods.includes("action");
|
|
514
|
-
const hasActions = page.methods.includes("actions");
|
|
515
|
-
if (hasAction && hasActions) throw new Error(`pages: Page '${page.pattern}' exports both "action" and "actions". Use one or the other.`);
|
|
516
|
-
lines.push(` ${JSON.stringify(page.pattern)}: {`);
|
|
517
|
-
let importPath = null;
|
|
518
|
-
if (page.serverPath) {
|
|
519
|
-
const absPath = `${pagesDir}/${page.serverPath}`;
|
|
520
|
-
importPath = relative(outDir, absPath);
|
|
521
|
-
}
|
|
522
|
-
if (hasActions) {
|
|
523
|
-
if (importPath) {
|
|
524
|
-
const actionsImport = `(typeof import(${JSON.stringify(importPath)}))["actions"]`;
|
|
525
|
-
lines.push(` actions: { [K in keyof ${actionsImport}]: {`);
|
|
526
|
-
lines.push(` body: ExtractInput<${actionsImport}[K]["__validators"]> extends { body: infer B } ? B : Record<string, unknown>;`);
|
|
527
|
-
lines.push(" } };");
|
|
528
|
-
}
|
|
529
|
-
} else if (importPath) {
|
|
530
|
-
const importExpr = `(typeof import(${JSON.stringify(importPath)}))["action"]`;
|
|
531
|
-
lines.push(` body: ExtractInput<${importExpr}["__validators"]> extends { body: infer B } ? B : Record<string, unknown>;`);
|
|
532
|
-
} else lines.push(" body: Record<string, unknown>;");
|
|
533
|
-
if (page.params.length > 0) {
|
|
534
|
-
const paramsType = page.params.map((p) => `${p}: string`).join("; ");
|
|
535
|
-
lines.push(` params: { ${paramsType} };`);
|
|
536
|
-
}
|
|
537
|
-
lines.push(" };");
|
|
538
|
-
}
|
|
539
|
-
lines.push(" }");
|
|
540
|
-
}
|
|
541
|
-
lines.push("}");
|
|
542
|
-
lines.push("");
|
|
543
|
-
return { dts: lines.join("\n") };
|
|
544
|
-
}
|
|
545
|
-
//#endregion
|
|
546
|
-
export { resolveVoidAuthMigrationSchema as a, generateVoidAuthDrizzleSchema as i, generateQueueTypes as n, DRIZZLE_OPERATORS as o, generateVoidAuthDatabaseModule as r, generateDbDts as s, generateRouteTypes as t };
|
|
267
|
+
export { generateVoidAuthDrizzleSchema as n, resolveVoidAuthMigrationSchema as r, generateVoidAuthDatabaseModule as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as globSync, t as glob } from "./dist-
|
|
1
|
+
import { a as join } from "./dist-4WkAWhWx.mjs";
|
|
2
|
+
import { n as globSync, t as glob } from "./dist-Bn8Kodjp.mjs";
|
|
3
3
|
//#region src/router/email.ts
|
|
4
4
|
/**
|
|
5
5
|
* Scan `email/` for inbound email handlers.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as readProjectPaths } from "./project-paths-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { a as join } from "./dist-4WkAWhWx.mjs";
|
|
2
|
+
import { c as import_picocolors, i as createSpinner } from "./output-urU86XeT.mjs";
|
|
3
|
+
import { I as resolveDeployTransport, O as isWranglerNonInteractiveOrCI, Y as runWranglerAuthToken, _ as deriveWorkerName, _t as preflightEmail, gt as findEmailConfigConflicts, h as createDeployWranglerRunner, ht as createNodeEmailDns, k as loadProvisionModule, mt as applyEmailSetup, v as discoverRootWranglerConfig, vt as renderAddressMap, yt as renderEmailChecklist } from "./deploy-H968Lo4T.mjs";
|
|
4
|
+
import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
|
|
5
|
+
import { c as getToken, d as openBrowser } from "./auth-B9_D6ygs.mjs";
|
|
6
|
+
import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
|
|
7
|
+
import { m as readConfig } from "./config-Dxr6cTXn.mjs";
|
|
8
|
+
import { k as writeProvisionedWranglerConfig } from "./wrangler-D01qs6VB.mjs";
|
|
9
|
+
import { E as confirm, F as password, N as note, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
|
|
10
|
+
import { a as scanEmailHandlersSync } from "./email-C5kaZXzJ.mjs";
|
|
11
|
+
import { n as PlatformClient, t as PlatformApiError } from "./client-PdAJ-F0t.mjs";
|
|
10
12
|
import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
11
13
|
import { tmpdir } from "node:os";
|
|
12
14
|
import { execSync } from "node:child_process";
|
|
@@ -665,7 +667,7 @@ async function runEmailCloudflareCommand(root, args, deps = {}) {
|
|
|
665
667
|
const rawExit = deps.exit ?? ((code) => process.exit(code));
|
|
666
668
|
const from = readConfig(root).email?.from;
|
|
667
669
|
if (!from) {
|
|
668
|
-
log.error("email: no sender configured.
|
|
670
|
+
log.error("email: no sender configured. Set email.from to \"you@mail.acme.com\" in void.config.ts — its host is the domain email is set up on.");
|
|
669
671
|
return rawExit(1);
|
|
670
672
|
}
|
|
671
673
|
const paths = readProjectPaths(root);
|
|
@@ -706,7 +708,7 @@ async function runEmailCloudflareCommandInConfig(root, args, project, configPath
|
|
|
706
708
|
const accountId = readWranglerTopLevelString(rootConfig, "account_id") ?? (process.env.CLOUDFLARE_ACCOUNT_ID?.trim() || void 0);
|
|
707
709
|
if (!accountId) return fail([
|
|
708
710
|
"email: no Cloudflare account is pinned.",
|
|
709
|
-
"Set `account_id` in
|
|
711
|
+
"Set `cloudflare.account_id` in void.config.ts, or export CLOUDFLARE_ACCOUNT_ID —",
|
|
710
712
|
"the same pin `void deploy --platform cloudflare` needs."
|
|
711
713
|
].join("\n"));
|
|
712
714
|
const workerName = readWranglerTopLevelString(rootConfig, "name") ?? deriveWorkerName(root);
|
|
@@ -757,7 +759,7 @@ async function runEmailCloudflareCommandInConfig(root, args, project, configPath
|
|
|
757
759
|
}
|
|
758
760
|
if (pre.blockers.some((b) => b.scope === "all")) return fail("email: nothing was changed — fix the ✘ rows above and rerun.");
|
|
759
761
|
if (!pre.ready || pre.sendingRetryable) {
|
|
760
|
-
if (!(deps.isInteractive ?? !isWranglerNonInteractiveOrCI())) return fail("email: `void email setup` changes your Cloudflare account, so it needs an interactive terminal. Run it locally once, commit
|
|
762
|
+
if (!(deps.isInteractive ?? !isWranglerNonInteractiveOrCI())) return fail("email: `void email setup` changes your Cloudflare account, so it needs an interactive terminal. Run it locally once, commit void.lock.json, then redeploy.");
|
|
761
763
|
if (!await (deps.confirm ?? (async (message) => {
|
|
762
764
|
const answer = await confirm({
|
|
763
765
|
message,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as readProjectPaths } from "./project-paths-
|
|
1
|
+
import { a as join, l as relative } from "./dist-4WkAWhWx.mjs";
|
|
2
|
+
import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { parseSync } from "vite";
|
|
5
5
|
//#region src/shared/ast.ts
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { a as join } from "./dist-4WkAWhWx.mjs";
|
|
2
|
+
import { r as cliTitle } from "./output-urU86XeT.mjs";
|
|
3
|
+
import { c as getToken } from "./auth-B9_D6ygs.mjs";
|
|
4
|
+
import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
|
|
5
|
+
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-CWDtqHgw.mjs";
|
|
6
|
+
import { d as formatEnvReport, g as validateProdEnv, u as fetchRemoteSecretNames } from "./env-validation-BsFEXps5.mjs";
|
|
7
|
+
import { N as note, O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
|
|
8
|
+
import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
|
|
7
9
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
8
10
|
//#region src/cli/env.ts
|
|
9
11
|
async function runEnvCommand(root, args) {
|
|
@@ -24,7 +26,7 @@ async function runCheck(root, useRemoteSecrets) {
|
|
|
24
26
|
const platform = readDeploymentPlatform(root);
|
|
25
27
|
if (platform === "none") throw new Error("env: Deployment is disabled. Run `void init` to choose a platform.");
|
|
26
28
|
if (platform === "cloudflare") {
|
|
27
|
-
const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-
|
|
29
|
+
const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BHNJVDbN.mjs");
|
|
28
30
|
remoteSecrets = await listCloudflareSecrets(resolveCloudflareOperationContext(root));
|
|
29
31
|
} else {
|
|
30
32
|
const token = getToken(root);
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { a as getRawRuntimeEnv, i as envContext, n as INTERNAL_BINDING_PREFIXES, o as isIsrActive, r as asEnv, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-Cx8ElDdj.mjs";
|
|
2
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
+
//#region src/runtime/env.ts
|
|
4
|
+
/**
|
|
5
|
+
* Public runtime env API — exposed via "void/_env".
|
|
6
|
+
*
|
|
7
|
+
* All exports from this module are accessible to user code.
|
|
8
|
+
* Internal platform bindings (__VOID_*, __PROJECT_*) are filtered
|
|
9
|
+
* from getRuntimeEnv() and blocked in getRuntimeBinding().
|
|
10
|
+
*/
|
|
11
|
+
const runtimeRequestContext = new AsyncLocalStorage();
|
|
12
|
+
/** @internal Reuse a resource only within the current runtime request. */
|
|
13
|
+
function getRuntimeRequestResource(key, initialize) {
|
|
14
|
+
const scope = runtimeRequestContext.getStore();
|
|
15
|
+
if (!scope) throw new Error("env: Request-scoped resource is unavailable outside a runtime handler.");
|
|
16
|
+
if (scope.resources.has(key)) return scope.resources.get(key);
|
|
17
|
+
const resource = initialize();
|
|
18
|
+
scope.resources.set(key, resource);
|
|
19
|
+
return resource;
|
|
20
|
+
}
|
|
21
|
+
function withRuntimeEnv(env, fn) {
|
|
22
|
+
const resolved = asEnv(env);
|
|
23
|
+
if (!resolved) return fn();
|
|
24
|
+
if (runtimeRequestContext.getStore()) return envContext.run(resolved, fn);
|
|
25
|
+
const scope = { resources: /* @__PURE__ */ new Map() };
|
|
26
|
+
return envContext.run(resolved, () => runtimeRequestContext.run(scope, fn));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Shared internal-binding predicate. A binding is framework-internal — and must
|
|
30
|
+
* never be exposed to user code — when it carries an internal prefix
|
|
31
|
+
* (`__VOID_`, `__PROJECT_`; always hidden) or is an exact-name internal (e.g.
|
|
32
|
+
* `ISR_CACHE`; hidden ONLY while ISR is active for the isolate). `rawEnv` is the
|
|
33
|
+
* unfiltered runtime env, consulted via {@link isIsrActive} to gate the
|
|
34
|
+
* exact-name check so a non-ISR app's own `ISR_CACHE` binding stays visible —
|
|
35
|
+
* matching the build-time `isr` gate on the generated `c.env` filter.
|
|
36
|
+
*
|
|
37
|
+
* Single source of truth for the runtime `env` filter here and the public
|
|
38
|
+
* `void/env` proxy (`env-public.ts`).
|
|
39
|
+
*/
|
|
40
|
+
function isInternalBinding(name, rawEnv) {
|
|
41
|
+
if (INTERNAL_BINDING_PREFIXES.some((p) => name.startsWith(p))) return true;
|
|
42
|
+
return isIsrActive(rawEnv) && INTERNAL_BINDING_EXACT_NAMES.includes(name);
|
|
43
|
+
}
|
|
44
|
+
function filterEnvProxy(env) {
|
|
45
|
+
return new Proxy(env, {
|
|
46
|
+
get(target, prop, receiver) {
|
|
47
|
+
if (typeof prop === "string" && isInternalBinding(prop, target)) return;
|
|
48
|
+
return Reflect.get(target, prop, receiver);
|
|
49
|
+
},
|
|
50
|
+
has(target, prop) {
|
|
51
|
+
if (typeof prop === "string" && isInternalBinding(prop, target)) return false;
|
|
52
|
+
return Reflect.has(target, prop);
|
|
53
|
+
},
|
|
54
|
+
ownKeys(target) {
|
|
55
|
+
return Reflect.ownKeys(target).filter((key) => typeof key !== "string" || !isInternalBinding(key, target));
|
|
56
|
+
},
|
|
57
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
58
|
+
if (typeof prop === "string" && isInternalBinding(prop, target)) return;
|
|
59
|
+
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** Returns the runtime env with internal platform bindings hidden. */
|
|
64
|
+
function getRuntimeEnv() {
|
|
65
|
+
return filterEnvProxy(getRawRuntimeEnv());
|
|
66
|
+
}
|
|
67
|
+
function getRuntimeBinding(name) {
|
|
68
|
+
const raw = getRawRuntimeEnv();
|
|
69
|
+
if (isInternalBinding(name, raw)) return;
|
|
70
|
+
return raw[name];
|
|
71
|
+
}
|
|
72
|
+
function requireRuntimeBinding(name) {
|
|
73
|
+
const value = getRuntimeBinding(name);
|
|
74
|
+
if (value !== void 0 && value !== null) return value;
|
|
75
|
+
throw new Error(`env: Missing Cloudflare binding '${name}'.`);
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { requireRuntimeBinding as a, isInternalBinding as i, getRuntimeEnv as n, withRuntimeEnv as o, getRuntimeRequestResource as r, getRuntimeBinding as t };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
//#region src/runtime/env-helpers.ts
|
|
2
|
+
function build(parse, state) {
|
|
3
|
+
return {
|
|
4
|
+
"~standard": {
|
|
5
|
+
version: 1,
|
|
6
|
+
vendor: "void",
|
|
7
|
+
validate(value) {
|
|
8
|
+
if (value === void 0 || value === null || value === "") {
|
|
9
|
+
if (state.defaultValue !== void 0) return { value: state.defaultValue };
|
|
10
|
+
if (state.optional) return { value: void 0 };
|
|
11
|
+
return { issues: [{ message: "Required" }] };
|
|
12
|
+
}
|
|
13
|
+
const result = parse(typeof value === "string" ? value : String(value));
|
|
14
|
+
if (result.ok) return { value: result.value };
|
|
15
|
+
return { issues: [{ message: result.message }] };
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
optional() {
|
|
19
|
+
return build(parse, {
|
|
20
|
+
optional: true,
|
|
21
|
+
defaultValue: state.defaultValue
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
default(value) {
|
|
25
|
+
return build(parse, {
|
|
26
|
+
optional: false,
|
|
27
|
+
defaultValue: value
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const empty = () => ({
|
|
33
|
+
optional: false,
|
|
34
|
+
defaultValue: void 0
|
|
35
|
+
});
|
|
36
|
+
/** Required string env value. */
|
|
37
|
+
function string() {
|
|
38
|
+
return build((raw) => ({
|
|
39
|
+
ok: true,
|
|
40
|
+
value: raw
|
|
41
|
+
}), empty());
|
|
42
|
+
}
|
|
43
|
+
/** Numeric env value. Parses with `Number(raw)`; rejects NaN. */
|
|
44
|
+
function number() {
|
|
45
|
+
return build((raw) => {
|
|
46
|
+
const n = Number(raw);
|
|
47
|
+
if (Number.isNaN(n)) return {
|
|
48
|
+
ok: false,
|
|
49
|
+
message: `Expected a number, got "${raw}"`
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
ok: true,
|
|
53
|
+
value: n
|
|
54
|
+
};
|
|
55
|
+
}, empty());
|
|
56
|
+
}
|
|
57
|
+
/** Boolean env value. Accepts "true"/"false"/"1"/"0" (case-insensitive). */
|
|
58
|
+
function boolean() {
|
|
59
|
+
return build((raw) => {
|
|
60
|
+
const lowercased = raw.toLowerCase();
|
|
61
|
+
if (lowercased === "true" || lowercased === "1") return {
|
|
62
|
+
ok: true,
|
|
63
|
+
value: true
|
|
64
|
+
};
|
|
65
|
+
if (lowercased === "false" || lowercased === "0") return {
|
|
66
|
+
ok: true,
|
|
67
|
+
value: false
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
ok: false,
|
|
71
|
+
message: `Expected boolean (true/false/1/0), got "${raw}"`
|
|
72
|
+
};
|
|
73
|
+
}, empty());
|
|
74
|
+
}
|
|
75
|
+
/** URL string — validated via `new URL(raw)`. */
|
|
76
|
+
function url() {
|
|
77
|
+
return build((raw) => {
|
|
78
|
+
try {
|
|
79
|
+
new URL(raw);
|
|
80
|
+
return {
|
|
81
|
+
ok: true,
|
|
82
|
+
value: raw
|
|
83
|
+
};
|
|
84
|
+
} catch {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
message: `Expected a valid URL, got "${raw}"`
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}, empty());
|
|
91
|
+
}
|
|
92
|
+
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
93
|
+
/** Email string — basic shape validation. */
|
|
94
|
+
function email() {
|
|
95
|
+
return build((raw) => {
|
|
96
|
+
if (!EMAIL_RE.test(raw)) return {
|
|
97
|
+
ok: false,
|
|
98
|
+
message: `Expected a valid email, got "${raw}"`
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
ok: true,
|
|
102
|
+
value: raw
|
|
103
|
+
};
|
|
104
|
+
}, empty());
|
|
105
|
+
}
|
|
106
|
+
/** One of a fixed set of literal string values. */
|
|
107
|
+
function oneOf(values) {
|
|
108
|
+
return build((raw) => {
|
|
109
|
+
if (values.includes(raw)) return {
|
|
110
|
+
ok: true,
|
|
111
|
+
value: raw
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
ok: false,
|
|
115
|
+
message: `Expected one of ${values.join(", ")}, got "${raw}"`
|
|
116
|
+
};
|
|
117
|
+
}, empty());
|
|
118
|
+
}
|
|
119
|
+
/** JSON-parsed env value. Specify `T` to type the parsed result. */
|
|
120
|
+
function json() {
|
|
121
|
+
return build((raw) => {
|
|
122
|
+
try {
|
|
123
|
+
return {
|
|
124
|
+
ok: true,
|
|
125
|
+
value: JSON.parse(raw)
|
|
126
|
+
};
|
|
127
|
+
} catch (e) {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
message: `Invalid JSON: ${e.message}`
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}, empty());
|
|
134
|
+
}
|
|
135
|
+
//#endregion
|
|
136
|
+
export { oneOf as a, number as i, email as n, string as o, json as r, url as s, boolean as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as readProjectPaths } from "./project-paths-
|
|
1
|
+
import { l as relative } from "./dist-4WkAWhWx.mjs";
|
|
2
|
+
import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
|
|
3
3
|
import { i as voidWarn } from "./log-ChfPKsVd.mjs";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
//#region src/codegen/env-types.ts
|
|
@@ -43,6 +43,10 @@ function generateEnvTypes(envFileAbs, outDir) {
|
|
|
43
43
|
lines.push(" interface ValidatedEnv extends _VoidEnvShape {}");
|
|
44
44
|
lines.push("}");
|
|
45
45
|
lines.push("");
|
|
46
|
+
lines.push("declare global {");
|
|
47
|
+
lines.push(" interface VoidGeneratedEnvBindings extends _VoidEnvShape {}");
|
|
48
|
+
lines.push("}");
|
|
49
|
+
lines.push("");
|
|
46
50
|
lines.push("declare module \"void/handler\" {");
|
|
47
51
|
lines.push(" interface CloudBindings extends _VoidEnvShape {}");
|
|
48
52
|
lines.push("}");
|