void 0.10.13 → 0.20.1
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/AGENTS_TEMPLATE.md +6 -0
- package/{skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md → LICENSE} +1 -1
- package/README.md +34 -8
- package/dist/{auth-qgMlYp7Z.d.mts → auth-DkcFflXV.d.mts} +10 -11
- package/dist/auth-W9WII-mN.mjs +630 -0
- package/dist/{auth-cmd-BqsdZJp5.mjs → auth-cmd-CAH62yDU.mjs} +4 -3
- package/dist/{auth-migrations-BTZ-ATvQ.mjs → auth-migrations-9vif1uj8.mjs} +53 -12
- package/dist/{better-auth-shared-BQooDxbw.mjs → better-auth-shared-CYw1T3k4.mjs} +7 -10
- package/dist/{better-auth-shared-DealXecJ.d.mts → better-auth-shared-DSCeohOK.d.mts} +10 -5
- package/dist/{build-cmd-Bujrv5q-.mjs → build-cmd-CJvZvPQO.mjs} +6 -4
- package/dist/{cache-C11V8Fxq.mjs → cache-BlNeQjuP.mjs} +9 -5
- package/dist/{cancel-deploy-fwFYF04b.mjs → cancel-deploy-CmlAZ9P6.mjs} +3 -2
- package/dist/cf-access-AJ1ehiFR.mjs +42 -0
- package/dist/cf-access-DsSsZUPr.mjs +67 -0
- package/dist/cli/cli.d.mts +1 -1
- package/dist/cli/cli.mjs +1735 -165
- package/dist/cli/env-schema-probe.d.mts +48 -61
- package/dist/cli/env-schema-probe.mjs +10 -58
- package/dist/{client-Gb71-XkG.mjs → client-Clirrol3.mjs} +120 -463
- package/dist/cloudflare-auth-B1QtTO1b.mjs +217 -0
- package/dist/cloudflare-cmd-B6_OZx2V.mjs +62 -0
- package/dist/cloudflare-connect-j5D4hhrG.mjs +56 -0
- package/dist/cloudflare-operations-CPTpRW6d.mjs +566 -0
- package/dist/{config-qHGgPuWT.mjs → config-BQFq7QvD.mjs} +75 -41
- package/dist/{config-CutEMNGJ.mjs → config-NOG_U1aK.mjs} +10 -15
- package/dist/connect-C04Wdy_h.mjs +79 -0
- package/dist/{create-project-DsYvl3TB.mjs → create-project-ChGZ1DFd.mjs} +26 -16
- package/dist/database-provider.d.mts +21 -0
- package/dist/database-provider.mjs +6 -0
- package/dist/{db-C0i0sYMS.mjs → db-D2d_mUsB.mjs} +612 -117
- package/dist/{delete-mh6p-zkQ.mjs → delete-D8GigDk8.mjs} +9 -6
- package/dist/{deploy-jBJT1fUT.mjs → deploy-iXZ3F0N6.mjs} +3252 -1995
- package/dist/dev-inbox-DkgRWLkW.mjs +307 -0
- package/dist/{discover-CJHyvYfR.mjs → discover-xvfrgJeo.mjs} +3 -3
- package/dist/{magic-string.es-ZQjdJFFn.mjs → dist-BR1quN_w.mjs} +570 -216
- package/dist/{dist-DaKKDf8D.mjs → dist-BrsS7cai.mjs} +17 -2
- package/dist/{dist-BuiRJkTd.mjs → dist-m40_XgNh.mjs} +48 -33
- package/dist/{domain-DiaNQbrl.mjs → domain-B1VmoSr0.mjs} +41 -4
- package/dist/dotenv-VQxupEUv.mjs +181 -0
- package/dist/edge.d.mts +2 -0
- package/dist/edge.mjs +2 -0
- package/dist/email-Ce6SQq-i.mjs +182 -0
- package/dist/email-uKyQYUVY.mjs +1016 -0
- package/dist/{entry-D7yy4xVH.mjs → entry-DU3oDoQ3.mjs} +2 -2
- package/dist/env-BcQzYgoG.mjs +73 -0
- package/dist/env-D4Emu-M_.mjs +95 -0
- package/dist/env-helpers-CyKtOBpj.d.mts +22 -0
- package/dist/env-public-D_6u46fX.d.mts +135 -0
- package/dist/{env-types-QBj-ndax.mjs → env-types-BNPhro-M.mjs} +2 -2
- package/dist/{env-validation-Dea3v3ej.mjs → env-validation-ENpMy6Ez.mjs} +68 -122
- package/dist/{gen-BzXf3Jh2.mjs → gen-DI2YwdBM.mjs} +70 -15
- package/dist/generate-RTK8_kK1.mjs +47 -0
- package/dist/{github-cmd-DKcGUNsj.mjs → github-cmd-xItS5Zwf.mjs} +39 -31
- package/dist/{handler-Cjh8uM3Y.d.mts → handler-D1hLsObx.d.mts} +124 -122
- package/dist/{head-nmvOgFjd.d.mts → head-Do8P4puT.d.mts} +9 -8
- package/dist/{headers-ChAADPQu.mjs → headers-D8QfRX9Y.mjs} +12 -10
- package/dist/inbound-2d0zi2yS.mjs +706 -0
- package/dist/inbound-afAcWeQ9.d.mts +363 -0
- package/dist/index.d.mts +61 -34
- package/dist/index.mjs +1012 -293
- package/dist/{init-7JCAcKNQ.mjs → init-BD-9THgn.mjs} +329 -271
- package/dist/link-RMdgjF1v.mjs +52 -0
- package/dist/{list-CPwFDZ_c.mjs → list-3F52R_yO.mjs} +37 -5
- package/dist/{runner-kapo9aPs.mjs → local-d1-D2I6Ox5F.mjs} +116 -6
- package/dist/{login-BT3H8PN3.mjs → login-pV69H-ZO.mjs} +17 -15
- package/dist/{logs-Bt313ax7.mjs → logs-DFHHD6wE.mjs} +16 -2
- package/dist/mime-BJD7d_qL.mjs +1216 -0
- package/dist/neon-DHwd2zvC.mjs +54 -0
- package/dist/{node-pRg81HqV.mjs → node-Dk3H2jmU.mjs} +29 -8
- package/dist/operator-cmd-DYWRbWUA.mjs +348 -0
- package/dist/{agents-CtgBYqld.mjs → output-tFQLLj26.mjs} +676 -211
- package/dist/{package-json-Cx1osYo6.mjs → package-json-CPoWX79C.mjs} +1 -1
- package/dist/pages/client.d.mts +43 -41
- package/dist/pages/client.mjs +40 -33
- package/dist/pages/head-client.d.mts +10 -12
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/index.d.mts +37 -14
- package/dist/pages/index.mjs +5 -5
- package/dist/pages/islands-plugin.d.mts +25 -27
- package/dist/pages/islands-plugin.mjs +6 -4
- package/dist/pages/prefetch.d.mts +6 -7
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -1
- package/dist/pages/serialize.d.mts +7 -8
- package/dist/platform-cmd-DxJ2FRwR.mjs +123 -0
- package/dist/platform-domain-ChvbJkdy.mjs +228 -0
- package/dist/platform-lifecycle-DN4MzJF_.mjs +4450 -0
- package/dist/platform-management-Db2PXw0B.mjs +698 -0
- package/dist/platform-recovery-C_YO-tIs.mjs +99 -0
- package/dist/{plugin-inference-DMeavIJ6.mjs → plugin-inference-BDRfZngg.mjs} +35 -19
- package/dist/prepare-BfJvFUtJ.mjs +14 -0
- package/dist/{prepare-BvvgAz-3.mjs → prepare-CBetXvsN.mjs} +15 -24
- package/dist/{preset-BjyR3lzz.mjs → preset-lAy0B0BQ.mjs} +25 -212
- package/dist/{project-cmd-D_w-4w5B.mjs → project-cmd-Mo0V9yKS.mjs} +25 -12
- package/dist/{project-paths-BQd7OmIo.mjs → project-paths-SK8nMHPp.mjs} +3 -1
- package/dist/{project-tsconfig-B-QtXjLQ.mjs → project-tsconfig-Ql2XsSQp.mjs} +2 -2
- package/dist/{protocol-Bnb0LFp3.d.mts → protocol-C-pqYJjE.d.mts} +3 -4
- package/dist/{provision-CPx2ZxsH.mjs → provision-Blnstcm2.mjs} +78 -45
- package/dist/r2-conditions-D1Wk8i7b.mjs +30 -0
- package/dist/{requests-B8sZxaFM.mjs → requests-BcKOVpRg.mjs} +5 -3
- package/dist/{resolve-project-BBMtLLV9.mjs → resolve-project--Vxawf7z.mjs} +2 -2
- package/dist/rollback-Bx85-0xh.mjs +166 -0
- package/dist/{rolldown-runtime-DJK8HYOj.mjs → rolldown-runtime-rQ84J-ij.mjs} +1 -1
- package/dist/{route-types-z1jtHEi_.mjs → route-types-Da-DpyUp.mjs} +77 -25
- package/dist/routes-stub.d.mts +22 -23
- package/dist/runner-mysql-7BPUNGmL.mjs +61 -0
- package/dist/{runner-pg-CHM76xuC.mjs → runner-pg-BkEza-dX.mjs} +18 -6
- package/dist/runtime/ai.d.mts +21 -14
- package/dist/runtime/ai.mjs +5 -4
- package/dist/runtime/auth-client-react.d.mts +3 -5
- package/dist/runtime/auth-client-solid.d.mts +3 -5
- package/dist/runtime/auth-client-svelte.d.mts +3 -5
- package/dist/runtime/auth-client-vue.d.mts +3 -5
- package/dist/runtime/auth-client.d.mts +3 -5
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.d.mts +10 -0
- package/dist/runtime/better-auth-mysql.mjs +49 -0
- package/dist/runtime/better-auth-pg.d.mts +8 -9
- package/dist/runtime/better-auth-pg.mjs +2 -2
- package/dist/runtime/better-auth.d.mts +8 -9
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +1 -1
- package/dist/runtime/client-solid.d.mts +1 -1
- package/dist/runtime/client-svelte.d.mts +1 -1
- package/dist/runtime/client-vue.d.mts +1 -1
- package/dist/runtime/client.d.mts +1 -1
- package/dist/runtime/db-mysql.d.mts +2 -0
- package/dist/runtime/db-mysql.mjs +1 -0
- package/dist/runtime/db.d.mts +10 -11
- package/dist/runtime/durable.d.mts +47 -0
- package/dist/runtime/durable.mjs +146 -0
- package/dist/runtime/email/testing.d.mts +112 -0
- package/dist/runtime/email/testing.mjs +283 -0
- package/dist/runtime/email.d.mts +30 -0
- package/dist/runtime/email.mjs +573 -0
- package/dist/runtime/env-helpers.d.mts +2 -2
- package/dist/runtime/env-helpers.mjs +5 -42
- package/dist/runtime/env-public-client.d.mts +10 -11
- package/dist/runtime/env-public-client.mjs +1 -1
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +104 -49
- package/dist/runtime/env.d.mts +19 -18
- package/dist/runtime/env.mjs +15 -2
- package/dist/runtime/fetch-stream.d.mts +20 -21
- package/dist/runtime/fetch.d.mts +15 -16
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/isr.d.mts +21 -22
- package/dist/runtime/isr.mjs +26 -8
- package/dist/runtime/kv.d.mts +9 -10
- package/dist/runtime/live-client.d.mts +5 -7
- package/dist/runtime/live-client.mjs +9 -7
- package/dist/runtime/live-server.d.mts +4 -5
- package/dist/runtime/live.d.mts +22 -24
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/log.d.mts +16 -17
- package/dist/runtime/migration-handler-mysql.d.mts +4 -0
- package/dist/runtime/migration-handler-mysql.mjs +81 -0
- package/dist/runtime/migration-handler-pg.d.mts +2 -4
- package/dist/runtime/migration-handler.d.mts +5 -6
- package/dist/runtime/migration-handler.mjs +4 -3
- package/dist/runtime/queues.d.mts +3 -4
- package/dist/runtime/queues.mjs +2 -1
- package/dist/runtime/remote/binding-handler.d.mts +10 -12
- package/dist/runtime/remote/binding-handler.mjs +24 -3
- package/dist/runtime/remote/index.d.mts +5 -6
- package/dist/runtime/remote/index.mjs +21 -18
- package/dist/runtime/response.d.mts +10 -11
- package/dist/runtime/sandbox.d.mts +56 -55
- package/dist/runtime/sandbox.mjs +57 -49
- package/dist/runtime/schema-mysql.d.mts +1 -0
- package/dist/runtime/schema-mysql.mjs +2 -0
- package/dist/runtime/seed.d.mts +14 -9
- package/dist/runtime/sse-client.d.mts +6 -7
- package/dist/runtime/sse.d.mts +11 -12
- package/dist/runtime/storage.d.mts +3 -4
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +12 -12
- package/dist/runtime/ws-server.mjs +32 -4
- package/dist/runtime/ws.d.mts +19 -21
- package/dist/{scan-ChWt4pX1.mjs → scan-BMH4rzlv.mjs} +42 -19
- package/dist/{scan-NU4xKGci.mjs → scan-CpK-57ug.mjs} +5 -4
- package/dist/{secret-Dt32J6RI.mjs → secret-ByhJ9AMl.mjs} +62 -5
- package/dist/{skills-CLjN0uUO.mjs → skills-Q46GZMO-.mjs} +6 -4
- package/dist/sqlite-validation-BzKMWnO4.mjs +25 -0
- package/dist/{standard-schema-DJ0HW7QP.d.mts → standard-schema-Fo_vCAZh.d.mts} +6 -6
- package/dist/{subcommand-prompt-BzV8iQZo.mjs → subcommand-prompt-WfySCQ7S.mjs} +67 -48
- package/dist/sveltekit.d.mts +12 -11
- package/dist/sveltekit.mjs +1 -1
- package/dist/types-BAp5AEBU.d.mts +79 -0
- package/dist/types-CKWnYgfy.d.mts +1 -0
- package/dist/{validate-Cw_RLeTj.mjs → validate-tBBN_dXH.mjs} +4 -3
- package/dist/wrangler--imS8n0d.mjs +1796 -0
- package/dist/{yarn-pnp-DJn3SAHF.mjs → yarn-pnp-DxSInkzL.mjs} +1 -1
- package/package.json +79 -65
- package/schema.json +22 -3
- package/skills/void/SKILL.md +59 -2
- package/skills/void/docs/guide/ai.md +32 -14
- package/skills/void/docs/guide/app-types.md +6 -6
- package/skills/void/docs/guide/auth.md +14 -16
- package/skills/void/docs/guide/database/d1.md +6 -0
- package/skills/void/docs/guide/database/mysql.md +60 -0
- package/skills/void/docs/guide/database/postgresql.md +14 -9
- package/skills/void/docs/guide/database.md +39 -26
- package/skills/void/docs/guide/deployment.md +99 -25
- package/skills/void/docs/guide/durable-state.md +140 -0
- package/skills/void/docs/guide/edge/headers.md +5 -5
- package/skills/void/docs/guide/edge/prerendering.md +2 -0
- package/skills/void/docs/guide/edge/revalidation.md +21 -6
- package/skills/void/docs/guide/edge/rewrites.md +18 -14
- package/skills/void/docs/guide/edge/static-assets.md +12 -10
- package/skills/void/docs/guide/email.md +640 -0
- package/skills/void/docs/guide/env-migration.md +109 -0
- package/skills/void/docs/guide/env-vars.md +70 -248
- package/skills/void/docs/guide/index.md +15 -17
- package/skills/void/docs/guide/jobs.md +8 -5
- package/skills/void/docs/guide/live.md +7 -15
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +8 -4
- package/skills/void/docs/guide/pages-routing/islands.md +3 -3
- package/skills/void/docs/guide/pages-routing/loaders.md +6 -4
- package/skills/void/docs/guide/pages-routing/overview.md +7 -7
- package/skills/void/docs/guide/platform-administration.md +212 -0
- package/skills/void/docs/guide/platform-development.md +264 -0
- package/skills/void/docs/guide/queues.md +10 -10
- package/skills/void/docs/guide/quickstart.md +46 -67
- package/skills/void/docs/guide/remote-dev.md +8 -6
- package/skills/void/docs/guide/sandboxes.md +33 -16
- package/skills/void/docs/guide/self-hosted-platform.md +553 -0
- package/skills/void/docs/guide/server-routing.md +5 -5
- package/skills/void/docs/guide/sse.md +4 -4
- package/skills/void/docs/guide/ssg.md +5 -3
- package/skills/void/docs/guide/storage.md +2 -2
- package/skills/void/docs/guide/websockets.md +15 -7
- package/skills/void/docs/index.md +3 -3
- package/skills/void/docs/integrations/agents.md +6 -64
- package/skills/void/docs/integrations/cloudflare.md +165 -146
- package/skills/void/docs/integrations/frameworks/analog.md +4 -4
- package/skills/void/docs/integrations/frameworks/astro.md +5 -5
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -5
- package/skills/void/docs/integrations/frameworks/overview.md +3 -3
- package/skills/void/docs/integrations/frameworks/react-router.md +3 -3
- package/skills/void/docs/integrations/frameworks/sveltekit.md +3 -3
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +2 -2
- package/skills/void/docs/integrations/nodejs-bun-deno.md +11 -4
- package/skills/void/docs/reference/api.md +42 -6
- package/skills/void/docs/reference/cli.md +665 -160
- package/skills/void/docs/reference/config.md +67 -27
- package/skills/void/docs/reference/resource-inference.md +13 -9
- package/skills/void/docs/reference/structure.md +9 -11
- package/AGENT_PROMPT.md +0 -19
- package/dist/cf-access-Bqw81xAf.mjs +0 -22
- package/dist/env-CZy5MorI.mjs +0 -299
- package/dist/env-helpers-z4stu8uc.d.mts +0 -52
- package/dist/env-mask-Dd47NbR6.mjs +0 -90
- package/dist/env-public-BfiLcMBk.d.mts +0 -140
- package/dist/link-CdGHSIy-.mjs +0 -45
- package/dist/mcp-DoM3_nhd.mjs +0 -377
- package/dist/project-paths-GpziKeQQ.d.mts +0 -25
- package/dist/providers-BNKRacMr.d.mts +0 -7
- package/dist/proxy-D-3_D-Gl.mjs +0 -5
- package/dist/rollback-CkvTFXx5.mjs +0 -90
- package/dist/runtime/isr-cache.d.mts +0 -207
- package/dist/runtime/isr-cache.mjs +0 -523
- package/dist/types-lLjNE9Qp.d.mts +0 -51
- package/getting-started-prompt.txt +0 -28
- package/skills/void/command/void.md +0 -7
- package/skills/void/docs/integrations/auth-providers.md +0 -0
- package/skills/void/docs/integrations/payment-processors.md +0 -0
- package/skills/void/docs/node_modules/@iconify/vue/README.md +0 -408
- package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +0 -5
- package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +0 -103
- package/skills/void/docs/node_modules/oxc-minify/README.md +0 -78
- package/skills/void/docs/node_modules/reka-ui/README.md +0 -80
- package/skills/void/docs/node_modules/vitepress/README.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/api-examples.md +0 -49
- package/skills/void/docs/node_modules/vitepress/template/index.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +0 -85
- package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +0 -101
- package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +0 -19
- package/skills/void/docs/node_modules/void/CLAUDE.md +0 -221
- package/skills/void/docs/node_modules/void/README.md +0 -90
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +0 -685
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +0 -396
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +0 -219
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +0 -37
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +0 -189
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +0 -143
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +0 -1272
- package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +0 -19
- package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/proper-lockfile/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +0 -22
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +0 -153
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +0 -565
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +0 -127
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +0 -600
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +0 -386
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +0 -95
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +0 -58
- package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +0 -32
- package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +0 -99
- package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +0 -79
- package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +0 -44
- package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +0 -65
- package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +0 -403
- package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +0 -48
- package/skills/void/docs/node_modules/void/node_modules/hono/README.md +0 -85
- package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +0 -452
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +0 -76
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +0 -325
- package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +0 -398
- package/skills/void/docs/node_modules/void/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/pg/README.md +0 -96
- package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/CHANGELOG.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/README.md +0 -183
- package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +0 -94
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +0 -63
- package/skills/void/docs/node_modules/void/node_modules/zod/README.md +0 -191
- package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +0 -175
- package/skills/void/docs/node_modules/void/skills/void/SKILL.md +0 -76
- package/skills/void/docs/node_modules/void/skills/void/command/void.md +0 -7
- package/skills/void/docs/node_modules/void/test/e2e/README.md +0 -85
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { U as listInstallationManifests, et as savePlatformConnection, nt as writeInstallationManifest, z as acquirePlatformLifecycleLock } from "./output-tFQLLj26.mjs";
|
|
2
|
+
import { t as cfAccessHeaders } from "./cf-access-AJ1ehiFR.mjs";
|
|
3
|
+
import { d as createPlatformInstallPlan, t as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-DN4MzJF_.mjs";
|
|
4
|
+
import { isPlatformManifestMonotonicExtension, recoverDurablyMarkedProvisionIntents, verifyPlatformInstallationOwnership } from "./platform-management-Db2PXw0B.mjs";
|
|
5
|
+
import { parsePlatformInstallationManifest, setInstallationEndpoints } from "@void/platform";
|
|
6
|
+
//#region src/cli/platform-recovery.ts
|
|
7
|
+
async function recoverPlatformInstallations(client, accountId, verifyEndpoint = verifyInstallationEndpoint, selector = "") {
|
|
8
|
+
if (!(await client.listAccounts()).some((account) => account.id === accountId)) throw new Error(`platform: Cloudflare account ${JSON.stringify(accountId)} is unavailable.`);
|
|
9
|
+
const namespaces = await client.listKvNamespaces(accountId);
|
|
10
|
+
const recovered = [];
|
|
11
|
+
for (const namespace of namespaces) {
|
|
12
|
+
const value = await client.getKvValue(accountId, namespace.id, REMOTE_INSTALLATION_MANIFEST_KEY);
|
|
13
|
+
if (value === null) continue;
|
|
14
|
+
let manifest;
|
|
15
|
+
try {
|
|
16
|
+
manifest = parsePlatformInstallationManifest(JSON.parse(value));
|
|
17
|
+
} catch (error) {
|
|
18
|
+
throw new Error(`platform: Routing namespace ${namespace.name} contains invalid Void ownership metadata: ${error instanceof Error ? error.message : String(error)}`);
|
|
19
|
+
}
|
|
20
|
+
if (selector && manifest.id !== selector && manifest.deployment.installationSlug !== selector && manifest.deployment.displayName.toLowerCase() !== selector.toLowerCase()) continue;
|
|
21
|
+
const routing = manifest.resources.find((resource) => resource.key === "routing-kv");
|
|
22
|
+
if (manifest.account.id !== accountId || routing?.kind !== "kv-namespace" || routing.id !== namespace.id || routing.name !== namespace.name || routing.ownership !== "created" || routing.state !== "ready") throw new Error(`platform: Routing namespace ${namespace.name} does not match its ownership manifest.`);
|
|
23
|
+
if (manifest.status === "uninstalled") continue;
|
|
24
|
+
manifest = await recoverDurablyMarkedProvisionIntents(client, manifest);
|
|
25
|
+
const deployment = manifest.deployment;
|
|
26
|
+
const plan = await createPlatformInstallPlan(client, {
|
|
27
|
+
accountId,
|
|
28
|
+
applicationDomain: deployment.application.baseDomain,
|
|
29
|
+
controlPlaneDomain: deployment.controlPlane.apiHostname ?? "",
|
|
30
|
+
dedicatedZone: deployment.application.dedicatedZone,
|
|
31
|
+
displayName: deployment.displayName,
|
|
32
|
+
installationSlug: deployment.installationSlug,
|
|
33
|
+
zoneName: deployment.application.zoneName
|
|
34
|
+
}, manifest, { repairMissing: true });
|
|
35
|
+
manifest = reconcileRecoveredEndpoints(manifest, plan);
|
|
36
|
+
await verifyPlatformInstallationOwnership(client, manifest);
|
|
37
|
+
if (!plan.actions.some((action) => action.action === "create") && manifest.desiredState === "enabled" && manifest.status === "installed") await verifyEndpoint(manifest);
|
|
38
|
+
recovered.push({
|
|
39
|
+
manifest,
|
|
40
|
+
plan
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const resolved = [];
|
|
44
|
+
for (const { manifest: recoveredManifest, plan } of recovered) {
|
|
45
|
+
let manifest = recoveredManifest;
|
|
46
|
+
const release = acquirePlatformLifecycleLock(manifest.account.id, manifest.deployment.installationSlug);
|
|
47
|
+
try {
|
|
48
|
+
const collision = listInstallationManifests().find((entry) => entry.id === manifest.id);
|
|
49
|
+
if (collision && (collision.account.id !== manifest.account.id || collision.ownershipNonce !== manifest.ownershipNonce)) throw new Error(`platform: Local installation ${manifest.id} has conflicting ownership.`);
|
|
50
|
+
if (collision && JSON.stringify(collision) !== JSON.stringify(manifest)) {
|
|
51
|
+
if (isPlatformManifestMonotonicExtension(manifest, collision)) {
|
|
52
|
+
await verifyPlatformInstallationOwnership(client, collision);
|
|
53
|
+
manifest = collision;
|
|
54
|
+
} else if (isPlatformManifestMonotonicExtension(collision, manifest)) writeInstallationManifest(manifest);
|
|
55
|
+
else throw new Error(`platform: Local installation ${manifest.id} differs from its remote checkpoint. Resolve or remove the local record before discovery; it was not overwritten.`);
|
|
56
|
+
}
|
|
57
|
+
manifest = reconcileRecoveredEndpoints(manifest, plan);
|
|
58
|
+
if (!collision) writeInstallationManifest(manifest);
|
|
59
|
+
else if (JSON.stringify(collision) !== JSON.stringify(manifest)) writeInstallationManifest(manifest);
|
|
60
|
+
if (manifest.endpoints.apiUrl !== null && manifest.endpoints.proxyUrl !== null) savePlatformConnection({
|
|
61
|
+
accountId: manifest.account.id,
|
|
62
|
+
apiUrl: manifest.endpoints.apiUrl,
|
|
63
|
+
applicationDomain: manifest.deployment.application.baseDomain,
|
|
64
|
+
displayName: manifest.deployment.displayName,
|
|
65
|
+
installationId: manifest.id,
|
|
66
|
+
kind: "installed",
|
|
67
|
+
proxyUrl: manifest.endpoints.proxyUrl
|
|
68
|
+
});
|
|
69
|
+
resolved.push(manifest);
|
|
70
|
+
} finally {
|
|
71
|
+
release();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return resolved;
|
|
75
|
+
}
|
|
76
|
+
function reconcileRecoveredEndpoints(manifest, plan) {
|
|
77
|
+
if (manifest.endpoints.apiUrl !== null && manifest.endpoints.apiUrl !== plan.apiUrl) throw new Error(`platform: Installation ${manifest.id} has inconsistent API metadata.`);
|
|
78
|
+
if (manifest.endpoints.proxyUrl !== null && manifest.endpoints.proxyUrl !== plan.proxyUrl) throw new Error(`platform: Installation ${manifest.id} has inconsistent proxy metadata.`);
|
|
79
|
+
if (manifest.endpoints.apiUrl !== null && manifest.endpoints.proxyUrl === null) return setInstallationEndpoints(manifest, {
|
|
80
|
+
...manifest.endpoints,
|
|
81
|
+
proxyUrl: plan.proxyUrl
|
|
82
|
+
}, manifest.updatedAt);
|
|
83
|
+
return manifest;
|
|
84
|
+
}
|
|
85
|
+
async function verifyInstallationEndpoint(manifest, fetcher = fetch) {
|
|
86
|
+
const apiUrl = manifest.endpoints.apiUrl;
|
|
87
|
+
if (!apiUrl) throw new Error(`platform: Installation ${manifest.id} has no API endpoint.`);
|
|
88
|
+
const response = await fetcher(`${apiUrl}/.well-known/void-platform`, {
|
|
89
|
+
headers: {
|
|
90
|
+
Accept: "application/json",
|
|
91
|
+
...cfAccessHeaders(process.env, apiUrl)
|
|
92
|
+
},
|
|
93
|
+
signal: AbortSignal.timeout(15e3)
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) throw new Error(`platform: Installation ${manifest.id} is not reachable (HTTP ${response.status}).`);
|
|
96
|
+
if ((await response.json()).installationId !== manifest.id) throw new Error(`platform: Installation ${manifest.id} endpoint identity does not match.`);
|
|
97
|
+
}
|
|
98
|
+
//#endregion
|
|
99
|
+
export { recoverPlatformInstallations };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as readProjectPaths } from "./project-paths-
|
|
3
|
-
import { n as globSync } from "./dist-
|
|
4
|
-
import { c as isIdentifier, r as getSsrServerEntryPath, u as isMemberExpression } from "./entry-
|
|
1
|
+
import { o as join } from "./dist-BrsS7cai.mjs";
|
|
2
|
+
import { n as readProjectPaths } from "./project-paths-SK8nMHPp.mjs";
|
|
3
|
+
import { n as globSync } from "./dist-m40_XgNh.mjs";
|
|
4
|
+
import { c as isIdentifier, r as getSsrServerEntryPath, u as isMemberExpression } from "./entry-DU3oDoQ3.mjs";
|
|
5
5
|
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
-
import { parseSync } from "vite";
|
|
7
6
|
import { parse } from "es-module-lexer/js";
|
|
7
|
+
import { parseSync } from "vite";
|
|
8
8
|
//#region ../../node_modules/.pnpm/estree-walker@3.0.3/node_modules/estree-walker/src/walker.js
|
|
9
9
|
/**
|
|
10
10
|
* @typedef { import('estree').Node} Node
|
|
@@ -37,10 +37,12 @@ var WalkerBase = class {
|
|
|
37
37
|
* @param {Node} node
|
|
38
38
|
*/
|
|
39
39
|
replace(parent, prop, index, node) {
|
|
40
|
-
if (parent && prop)
|
|
40
|
+
if (parent && prop) {
|
|
41
|
+
if (index != null)
|
|
41
42
|
/** @type {Array<Node>} */ parent[prop][index] = node;
|
|
42
|
-
|
|
43
|
+
else
|
|
43
44
|
/** @type {Node} */ parent[prop] = node;
|
|
45
|
+
}
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* @template {Node} Parent
|
|
@@ -49,9 +51,11 @@ var WalkerBase = class {
|
|
|
49
51
|
* @param {number | null | undefined} index
|
|
50
52
|
*/
|
|
51
53
|
remove(parent, prop, index) {
|
|
52
|
-
if (parent && prop)
|
|
54
|
+
if (parent && prop) {
|
|
55
|
+
if (index !== null && index !== void 0)
|
|
53
56
|
/** @type {Array<Node>} */ parent[prop].splice(index, 1);
|
|
54
|
-
|
|
57
|
+
else delete parent[prop];
|
|
58
|
+
}
|
|
55
59
|
}
|
|
56
60
|
};
|
|
57
61
|
//#endregion
|
|
@@ -207,12 +211,13 @@ function inferBindingsFromSource(code, filename) {
|
|
|
207
211
|
needsQueues: false,
|
|
208
212
|
needsAI: false,
|
|
209
213
|
needsSandbox: false,
|
|
210
|
-
needsLive: false
|
|
214
|
+
needsLive: false,
|
|
215
|
+
needsEmail: false
|
|
211
216
|
};
|
|
212
217
|
try {
|
|
213
218
|
const [imports] = parse(code);
|
|
214
219
|
for (const imp of imports) {
|
|
215
|
-
const source = imp.
|
|
220
|
+
const source = imp.specifier;
|
|
216
221
|
if (!source) continue;
|
|
217
222
|
switch (source) {
|
|
218
223
|
case "void/db":
|
|
@@ -236,15 +241,18 @@ function inferBindingsFromSource(code, filename) {
|
|
|
236
241
|
case "void/sandbox":
|
|
237
242
|
result.needsSandbox = true;
|
|
238
243
|
break;
|
|
244
|
+
case "void/email":
|
|
245
|
+
if (!isTypeOnlyImportStatement(code.slice(imp.importStart, imp.importEnd + 1))) result.needsEmail = true;
|
|
246
|
+
break;
|
|
239
247
|
case "void/live":
|
|
240
|
-
if (!isTypeOnlyImportStatement(code.slice(imp.
|
|
248
|
+
if (!isTypeOnlyImportStatement(code.slice(imp.importStart, imp.importEnd + 1))) result.needsLive = true;
|
|
241
249
|
break;
|
|
242
250
|
case "void/client":
|
|
243
251
|
case "void/client/react":
|
|
244
252
|
case "void/client/vue":
|
|
245
253
|
case "void/client/svelte":
|
|
246
254
|
case "void/client/solid": {
|
|
247
|
-
const stmt = code.slice(imp.
|
|
255
|
+
const stmt = code.slice(imp.importStart, imp.importEnd + 1);
|
|
248
256
|
if (/\bauth\b/.test(stmt)) result.needsAuth = true;
|
|
249
257
|
break;
|
|
250
258
|
}
|
|
@@ -258,6 +266,7 @@ function inferBindingsFromSource(code, filename) {
|
|
|
258
266
|
if (/\bfrom\s+["']void\/queue["']/.test(code)) result.needsQueues = true;
|
|
259
267
|
if (/\bfrom\s+["']void\/ai["']/.test(code)) result.needsAI = true;
|
|
260
268
|
if (/\bfrom\s+["']void\/sandbox["']/.test(code)) result.needsSandbox = true;
|
|
269
|
+
if (hasRuntimeImportFrom(code, "void/email")) result.needsEmail = true;
|
|
261
270
|
if (hasRuntimeImportFrom(code, "void/live")) result.needsLive = true;
|
|
262
271
|
if (/\bfrom\s+["']void\/client(?:\/(?:react|vue|svelte|solid))?["']/.test(code) && /\bauth\b/.test(code)) result.needsAuth = true;
|
|
263
272
|
}
|
|
@@ -296,9 +305,7 @@ function inferBindingsFromSource(code, filename) {
|
|
|
296
305
|
case "SANDBOX":
|
|
297
306
|
result.needsSandbox = true;
|
|
298
307
|
break;
|
|
299
|
-
default:
|
|
300
|
-
if (property.name.startsWith("QUEUE_")) result.needsQueues = true;
|
|
301
|
-
break;
|
|
308
|
+
default: if (property.name.startsWith("QUEUE_")) result.needsQueues = true;
|
|
302
309
|
}
|
|
303
310
|
} });
|
|
304
311
|
return result;
|
|
@@ -334,7 +341,8 @@ function mergeBindings(bindings) {
|
|
|
334
341
|
needsQueues: bindings.some((b) => b.needsQueues),
|
|
335
342
|
needsAI: bindings.some((b) => b.needsAI),
|
|
336
343
|
needsSandbox: bindings.some((b) => b.needsSandbox),
|
|
337
|
-
needsLive: bindings.some((b) => b.needsLive)
|
|
344
|
+
needsLive: bindings.some((b) => b.needsLive),
|
|
345
|
+
needsEmail: bindings.some((b) => b.needsEmail)
|
|
338
346
|
};
|
|
339
347
|
}
|
|
340
348
|
//#endregion
|
|
@@ -350,13 +358,20 @@ const FRAMEWORK_SCAN_DIRS = [
|
|
|
350
358
|
"crons",
|
|
351
359
|
"queues"
|
|
352
360
|
];
|
|
353
|
-
/**
|
|
361
|
+
/**
|
|
362
|
+
* Directories to scan for binding inference in Void app mode.
|
|
363
|
+
*
|
|
364
|
+
* `email` is included so a `sendEmail()` call from inside an inbound handler
|
|
365
|
+
* (`email/<addr>.ts`) registers `needsEmail = true`. Otherwise the manifest
|
|
366
|
+
* flag and the dev-inbox plugin would miss those callsites.
|
|
367
|
+
*/
|
|
354
368
|
const DEFAULT_SCAN_DIRS = [
|
|
355
369
|
"routes",
|
|
356
370
|
"middleware",
|
|
357
371
|
"queues",
|
|
358
372
|
"pages",
|
|
359
373
|
"crons",
|
|
374
|
+
"email",
|
|
360
375
|
"src"
|
|
361
376
|
];
|
|
362
377
|
/**
|
|
@@ -444,7 +459,8 @@ function inferProjectBindings(root, options, scanDirs) {
|
|
|
444
459
|
needsQueues: false,
|
|
445
460
|
needsAI: Boolean(options.bindings.ai),
|
|
446
461
|
needsSandbox: false,
|
|
447
|
-
needsLive: false
|
|
462
|
+
needsLive: false,
|
|
463
|
+
needsEmail: Boolean(options.bindings.email)
|
|
448
464
|
};
|
|
449
465
|
const paths = options?.paths ?? readProjectPaths(root);
|
|
450
466
|
const dirs = scanDirs ?? (paths.sourceDir ? [paths.sourceDir] : DEFAULT_SCAN_DIRS);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { D as log, E as intro, O as note, k as outro, r as cliTitle } from "./output-tFQLLj26.mjs";
|
|
2
|
+
import { prepareProject } from "./prepare-CBetXvsN.mjs";
|
|
3
|
+
//#region src/cli/prepare.ts
|
|
4
|
+
async function runPrepareCommand(root, _args) {
|
|
5
|
+
console.log();
|
|
6
|
+
intro(cliTitle("prepare"));
|
|
7
|
+
const result = await prepareProject(root);
|
|
8
|
+
if (result.written.length > 0) note(result.written.join("\n"), "Wrote");
|
|
9
|
+
if (result.removed.length > 0) note(result.removed.join("\n"), "Removed stale files");
|
|
10
|
+
if (result.written.length === 0 && result.removed.length === 0) log.info("No generated files changed.");
|
|
11
|
+
outro("Project codegen is ready.");
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { runPrepareCommand };
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { c as
|
|
5
|
-
import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-
|
|
6
|
-
import {
|
|
7
|
-
import { i as
|
|
8
|
-
import {
|
|
9
|
-
import { t as
|
|
10
|
-
import {
|
|
1
|
+
import { o as join } from "./dist-BrsS7cai.mjs";
|
|
2
|
+
import { i as resolveProjectPaths } from "./project-paths-SK8nMHPp.mjs";
|
|
3
|
+
import { c as loadVoidAuthConfig, r as scanRoutes, s as findVoidAuthConfig } from "./scan-BMH4rzlv.mjs";
|
|
4
|
+
import { c as getDatabaseDialect, f as readConfig } from "./config-BQFq7QvD.mjs";
|
|
5
|
+
import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-Ql2XsSQp.mjs";
|
|
6
|
+
import { i as inferProjectBindings, n as FRAMEWORK_SCAN_DIRS, r as detectFramework } from "./plugin-inference-BDRfZngg.mjs";
|
|
7
|
+
import { i as generateVoidAuthDrizzleSchema, n as generateQueueTypes, r as generateVoidAuthDatabaseModule, s as generateDbDts, t as generateRouteTypes } from "./route-types-Da-DpyUp.mjs";
|
|
8
|
+
import { t as discoverSchema } from "./discover-xvfrgJeo.mjs";
|
|
9
|
+
import { r as generateEnvTypes, t as findEnvFile } from "./env-types-BNPhro-M.mjs";
|
|
10
|
+
import { a as loadLocalEnv } from "./env-D4Emu-M_.mjs";
|
|
11
11
|
import { existsSync, mkdirSync, rmSync } from "node:fs";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
|
-
import { loadEnv } from "vite";
|
|
14
13
|
//#region src/codegen/prepare.ts
|
|
15
14
|
function writeGeneratedFile(outDir, fileName, content, written) {
|
|
16
15
|
mkdirSync(outDir, { recursive: true });
|
|
@@ -66,7 +65,10 @@ async function prepareProject(root) {
|
|
|
66
65
|
providers: config.auth?.providers ?? null,
|
|
67
66
|
userConfig: await loadVoidAuthConfig(authConfigPath)
|
|
68
67
|
};
|
|
69
|
-
const env =
|
|
68
|
+
const env = {
|
|
69
|
+
...loadLocalEnv(root),
|
|
70
|
+
...process.env
|
|
71
|
+
};
|
|
70
72
|
const schemaPath = join(outDir, "better-auth-schema.ts");
|
|
71
73
|
const databasePath = join(outDir, "better-auth-db.ts");
|
|
72
74
|
const drizzleAdapterPath = fileURLToPath(import.meta.resolve("better-auth/adapters/drizzle"));
|
|
@@ -87,15 +89,4 @@ async function prepareProject(root) {
|
|
|
87
89
|
};
|
|
88
90
|
}
|
|
89
91
|
//#endregion
|
|
90
|
-
|
|
91
|
-
async function runPrepareCommand(root, _args) {
|
|
92
|
-
console.log();
|
|
93
|
-
intro(cliTitle("prepare"));
|
|
94
|
-
const result = await prepareProject(root);
|
|
95
|
-
if (result.written.length > 0) note(result.written.join("\n"), "Wrote");
|
|
96
|
-
if (result.removed.length > 0) note(result.removed.join("\n"), "Removed stale files");
|
|
97
|
-
if (result.written.length === 0 && result.removed.length === 0) log.info("No generated files changed.");
|
|
98
|
-
outro("Project codegen is ready.");
|
|
99
|
-
}
|
|
100
|
-
//#endregion
|
|
101
|
-
export { runPrepareCommand };
|
|
92
|
+
export { prepareProject };
|
|
@@ -1,207 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as readProjectPaths } from "./project-paths-
|
|
3
|
-
import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-
|
|
4
|
-
import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-
|
|
1
|
+
import { c as relative, l as resolve, n as dirname, o as join } from "./dist-BrsS7cai.mjs";
|
|
2
|
+
import { n as readProjectPaths } from "./project-paths-SK8nMHPp.mjs";
|
|
3
|
+
import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-DU3oDoQ3.mjs";
|
|
4
|
+
import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-CPoWX79C.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
|
-
//#region src/shared/dotenv.ts
|
|
9
|
-
/**
|
|
10
|
-
* Shared dotenv parser + variable expander used by every CLI path that reads
|
|
11
|
-
* `.env*` files (`void env check`, `void deploy`, `void init` scaffold
|
|
12
|
-
* inference). A single source of truth avoids the drift we hit when two
|
|
13
|
-
* hand-rolled parsers diverged on quoting / expansion semantics.
|
|
14
|
-
*
|
|
15
|
-
* Expansion supports `${VAR}` and `$VAR`, a `\$VAR` literal-escape, and
|
|
16
|
-
* transitive references across earlier entries in the same record. Cycles
|
|
17
|
-
* are detected and fall through to the raw literal rather than looping.
|
|
18
|
-
*
|
|
19
|
-
* Security note: expansion is deliberately scoped to the in-file record.
|
|
20
|
-
* We do NOT consult `process.env` the way `dotenv-expand` does — a shell
|
|
21
|
-
* env leaking into an `.env.example` via expansion would silently reveal
|
|
22
|
-
* developer machine state in committed output, and `void env check` /
|
|
23
|
-
* `void deploy` would then pass with values that aren't present in CI.
|
|
24
|
-
*
|
|
25
|
-
* The runtime path (Vite's own `loadEnv`) DOES consult `process.env` for
|
|
26
|
-
* expansion. That's a deliberate Vite choice; `filterLoadedEnv` strips
|
|
27
|
-
* shell pollution from the final worker vars so the two sides agree on
|
|
28
|
-
* the observable surface even when expansion sources differ.
|
|
29
|
-
*
|
|
30
|
-
* This module is a leaf — it must not import from `../log` or any non-leaf
|
|
31
|
-
* module so that the prerender subprocess's worker bundle doesn't pick up
|
|
32
|
-
* unwanted transitive dependencies. Warnings are surfaced through the
|
|
33
|
-
* `onWarn` callback and left for the caller to route.
|
|
34
|
-
*/
|
|
35
|
-
/** Valid dotenv key — ASCII letter/underscore followed by letters/digits/underscore. */
|
|
36
|
-
const VALID_KEY = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
37
|
-
/**
|
|
38
|
-
* Parse a single `KEY=VALUE` line into `{ key, value }`, stripping matching
|
|
39
|
-
* single/double quotes around the value. Returns `null` for blanks, comments,
|
|
40
|
-
* and non-assignment lines.
|
|
41
|
-
*/
|
|
42
|
-
function parseDotenvLine(line) {
|
|
43
|
-
const trimmed = line.trim();
|
|
44
|
-
if (!trimmed || trimmed.startsWith("#")) return null;
|
|
45
|
-
const equalsIndex = trimmed.indexOf("=");
|
|
46
|
-
if (equalsIndex === -1) return null;
|
|
47
|
-
const key = trimmed.slice(0, equalsIndex).trim();
|
|
48
|
-
let value = trimmed.slice(equalsIndex + 1).trim();
|
|
49
|
-
if (value.startsWith("\"") && value.endsWith("\"") || value.startsWith("'") && value.endsWith("'")) value = value.slice(1, -1);
|
|
50
|
-
return {
|
|
51
|
-
key,
|
|
52
|
-
value
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Parse the raw contents of a dotenv file into a record, optionally
|
|
57
|
-
* expanding `${VAR}` / `$VAR` references against earlier entries.
|
|
58
|
-
*/
|
|
59
|
-
function parseDotenv(content, options = {}) {
|
|
60
|
-
const { expand: shouldExpand = true, skipInvalidKeys = true, onWarn } = options;
|
|
61
|
-
const env = {};
|
|
62
|
-
for (const line of content.split("\n")) {
|
|
63
|
-
const parsed = parseDotenvLine(line);
|
|
64
|
-
if (!parsed) continue;
|
|
65
|
-
if (!VALID_KEY.test(parsed.key)) {
|
|
66
|
-
if (skipInvalidKeys) continue;
|
|
67
|
-
throw new Error(`dotenv: Invalid key '${parsed.key}'.`);
|
|
68
|
-
}
|
|
69
|
-
env[parsed.key] = parsed.value;
|
|
70
|
-
}
|
|
71
|
-
return shouldExpand ? expandDotenv(env, { onWarn }) : env;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Read and parse a dotenv file. Returns `{}` when the file is missing so
|
|
75
|
-
* callers can treat "no file" and "empty file" identically.
|
|
76
|
-
*/
|
|
77
|
-
function parseDotenvFile(filePath, options = {}) {
|
|
78
|
-
if (!existsSync(filePath)) return {};
|
|
79
|
-
return parseDotenv(readFileSync(filePath, "utf-8"), options);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Expand `${VAR}` / `$VAR` references in every value of a record against
|
|
83
|
-
* the other entries in that same record. Matches the surface of
|
|
84
|
-
* `dotenv-expand` minus the `process.env` fallback.
|
|
85
|
-
*
|
|
86
|
-
* Semantics:
|
|
87
|
-
* - `${VAR}` and `$VAR` both resolve (bare form stops at the first
|
|
88
|
-
* non-identifier character).
|
|
89
|
-
* - `\$VAR` stays literal; the backslash is consumed.
|
|
90
|
-
* - Nested refs resolve transitively — `A=${B}`, `B=${C}`, `C=v` → `A=v`.
|
|
91
|
-
* - Cycles are detected; the offending value keeps its raw literal and
|
|
92
|
-
* `onWarn` fires once per cycle seen.
|
|
93
|
-
* - Missing refs expand to the empty string, matching dotenv-expand.
|
|
94
|
-
*
|
|
95
|
-
* The input record is not mutated; a fresh object is returned.
|
|
96
|
-
*/
|
|
97
|
-
function expandDotenv(input, options = {}) {
|
|
98
|
-
const out = {};
|
|
99
|
-
const resolving = /* @__PURE__ */ new Set();
|
|
100
|
-
const warned = /* @__PURE__ */ new Set();
|
|
101
|
-
function resolveKey(key) {
|
|
102
|
-
if (!(key in input)) return "";
|
|
103
|
-
if (key in out) return out[key];
|
|
104
|
-
if (resolving.has(key)) {
|
|
105
|
-
if (!warned.has(key) && options.onWarn) {
|
|
106
|
-
warned.add(key);
|
|
107
|
-
options.onWarn(`dotenv expansion cycle detected at "${key}" — leaving raw value in place`);
|
|
108
|
-
}
|
|
109
|
-
return input[key];
|
|
110
|
-
}
|
|
111
|
-
resolving.add(key);
|
|
112
|
-
const expanded = expandValue(input[key], resolveKey);
|
|
113
|
-
resolving.delete(key);
|
|
114
|
-
out[key] = expanded;
|
|
115
|
-
return expanded;
|
|
116
|
-
}
|
|
117
|
-
for (const key of Object.keys(input)) resolveKey(key);
|
|
118
|
-
return out;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Expand a single value string. `resolve` returns the fully-expanded value
|
|
122
|
-
* for a referenced key (or `''` when missing). Backslash-escapes (`\$VAR`,
|
|
123
|
-
* `\${VAR}`) keep the `$...` literal and consume the backslash.
|
|
124
|
-
*/
|
|
125
|
-
function expandValue(value, resolve) {
|
|
126
|
-
let result = "";
|
|
127
|
-
let cursor = 0;
|
|
128
|
-
while (cursor < value.length) {
|
|
129
|
-
const character = value[cursor];
|
|
130
|
-
if (character === "\\" && cursor + 1 < value.length && value[cursor + 1] === "$") {
|
|
131
|
-
result += "$";
|
|
132
|
-
cursor += 2;
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
if (character !== "$") {
|
|
136
|
-
result += character;
|
|
137
|
-
cursor++;
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
const next = value[cursor + 1];
|
|
141
|
-
if (next === "{") {
|
|
142
|
-
const endIndex = value.indexOf("}", cursor + 2);
|
|
143
|
-
if (endIndex === -1) {
|
|
144
|
-
result += character;
|
|
145
|
-
cursor++;
|
|
146
|
-
continue;
|
|
147
|
-
}
|
|
148
|
-
const key = value.slice(cursor + 2, endIndex);
|
|
149
|
-
if (VALID_KEY.test(key)) result += resolve(key);
|
|
150
|
-
else result += value.slice(cursor, endIndex + 1);
|
|
151
|
-
cursor = endIndex + 1;
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
if (next && /[A-Za-z_]/.test(next)) {
|
|
155
|
-
let keyEndIndex = cursor + 1;
|
|
156
|
-
while (keyEndIndex < value.length && /[A-Za-z0-9_]/.test(value[keyEndIndex])) keyEndIndex++;
|
|
157
|
-
const key = value.slice(cursor + 1, keyEndIndex);
|
|
158
|
-
result += resolve(key);
|
|
159
|
-
cursor = keyEndIndex;
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
result += character;
|
|
163
|
-
cursor++;
|
|
164
|
-
}
|
|
165
|
-
return result;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Merge multiple parsed dotenv records with later-entries-win semantics,
|
|
169
|
-
* then expand across the combined set. This is the recommended path for
|
|
170
|
-
* callers reading multiple `.env*` files (Vite-style precedence), since
|
|
171
|
-
* expansion sees every earlier file's keys at once.
|
|
172
|
-
*/
|
|
173
|
-
function mergeAndExpand(records, options = {}) {
|
|
174
|
-
const merged = {};
|
|
175
|
-
for (const record of records) Object.assign(merged, record);
|
|
176
|
-
return expandDotenv(merged, options);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Wrangler 4.107's bundled `dotenv` LINE regex (verbatim), used ONLY to detect the
|
|
180
|
-
* declared KEYS wrangler would load — including the OPTIONAL `export ` prefix, the `KEY: val`
|
|
181
|
-
* form, and single/double/backtick quoting — so a transport-redirect / config-override fence
|
|
182
|
-
* sees exactly what wrangler's per-command dotenv reload would. We read keys, never values.
|
|
183
|
-
*/
|
|
184
|
-
const WRANGLER_DOTENV_LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
|
|
185
|
-
/**
|
|
186
|
-
* The set of declared dotenv KEYS in `filePath`, parsed the way wrangler does.
|
|
187
|
-
* Lives in this leaf module (no `proper-lockfile` / lifecycle side effects) so both
|
|
188
|
-
* the provisioner's transport fence and the deploy orchestrator's config-override
|
|
189
|
-
* fence can read keys exactly as wrangler's per-command reload would, without either
|
|
190
|
-
* caller pulling in the provision lifecycle just to parse dotenv keys.
|
|
191
|
-
*/
|
|
192
|
-
function scanWranglerDotenvKeys(filePath) {
|
|
193
|
-
const keys = /* @__PURE__ */ new Set();
|
|
194
|
-
if (!existsSync(filePath)) return keys;
|
|
195
|
-
const content = readFileSync(filePath, "utf-8");
|
|
196
|
-
WRANGLER_DOTENV_LINE.lastIndex = 0;
|
|
197
|
-
let match;
|
|
198
|
-
while ((match = WRANGLER_DOTENV_LINE.exec(content)) !== null) {
|
|
199
|
-
if (match[1]) keys.add(match[1]);
|
|
200
|
-
if (match.index === WRANGLER_DOTENV_LINE.lastIndex) WRANGLER_DOTENV_LINE.lastIndex++;
|
|
201
|
-
}
|
|
202
|
-
return keys;
|
|
203
|
-
}
|
|
204
|
-
//#endregion
|
|
205
8
|
//#region src/cli/preset.ts
|
|
206
9
|
/**
|
|
207
10
|
* Known output conventions for SSGs.
|
|
@@ -240,30 +43,36 @@ const SSG_PRESETS = {
|
|
|
240
43
|
*/
|
|
241
44
|
const FRAMEWORK_PRESETS = {
|
|
242
45
|
"tanstack-start": {
|
|
46
|
+
cloudflareArtifact: "vite-plugin",
|
|
243
47
|
buildCommand: "vite build",
|
|
244
48
|
workerDir: "dist/server",
|
|
245
49
|
workerMain: "index.js",
|
|
246
50
|
assetsDir: "dist/client"
|
|
247
51
|
},
|
|
248
52
|
"react-router": {
|
|
53
|
+
cloudflareArtifact: "vite-plugin",
|
|
249
54
|
buildCommand: "vite build",
|
|
250
55
|
workerDir: "build/server",
|
|
251
56
|
workerMain: "index.js",
|
|
252
57
|
assetsDir: "build/client"
|
|
253
58
|
},
|
|
254
59
|
"vinext-app": {
|
|
60
|
+
cloudflareArtifact: "vite-plugin",
|
|
255
61
|
buildCommand: "vite build",
|
|
256
|
-
workerDir: "dist/
|
|
62
|
+
workerDir: "dist/server",
|
|
257
63
|
workerMain: "index.js",
|
|
258
64
|
assetsDir: "dist/client"
|
|
259
65
|
},
|
|
260
66
|
"vinext-pages": {
|
|
67
|
+
cloudflareArtifact: "vite-plugin",
|
|
261
68
|
buildCommand: "vite build",
|
|
262
69
|
workerDir: "dist/ssr",
|
|
263
70
|
workerMain: "index.js",
|
|
264
71
|
assetsDir: "dist/client"
|
|
265
72
|
},
|
|
266
73
|
sveltekit: {
|
|
74
|
+
cloudflareArtifact: "worker-output",
|
|
75
|
+
cloudflareCompatibilityFlags: ["nodejs_als"],
|
|
267
76
|
buildCommand: "vite build",
|
|
268
77
|
workerDir: ".svelte-kit/cloudflare",
|
|
269
78
|
workerMain: "_worker.js",
|
|
@@ -272,6 +81,8 @@ const FRAMEWORK_PRESETS = {
|
|
|
272
81
|
bundle: true
|
|
273
82
|
},
|
|
274
83
|
nuxt: {
|
|
84
|
+
cloudflareArtifact: "worker-output",
|
|
85
|
+
cloudflareCompatibilityFlags: ["nodejs_als"],
|
|
275
86
|
buildCommand: "nuxt build",
|
|
276
87
|
workerDir: ".output/server",
|
|
277
88
|
workerMain: "index.mjs",
|
|
@@ -279,6 +90,8 @@ const FRAMEWORK_PRESETS = {
|
|
|
279
90
|
hashedAssetsPrefix: "_nuxt"
|
|
280
91
|
},
|
|
281
92
|
analog: {
|
|
93
|
+
cloudflareArtifact: "worker-output",
|
|
94
|
+
cloudflareCompatibilityFlags: ["nodejs_compat", "nodejs_als"],
|
|
282
95
|
buildCommand: "vite build",
|
|
283
96
|
workerDir: "dist/analog/server",
|
|
284
97
|
workerMain: "index.mjs",
|
|
@@ -286,6 +99,8 @@ const FRAMEWORK_PRESETS = {
|
|
|
286
99
|
hashedAssetsPrefix: "assets"
|
|
287
100
|
},
|
|
288
101
|
astro: {
|
|
102
|
+
cloudflareArtifact: "worker-output",
|
|
103
|
+
cloudflareCompatibilityFlags: ["nodejs_als"],
|
|
289
104
|
buildCommand: "astro build",
|
|
290
105
|
workerDir: "dist/server",
|
|
291
106
|
workerMain: "entry.mjs",
|
|
@@ -323,18 +138,14 @@ function shellQuoteExecutable(value) {
|
|
|
323
138
|
* `[executable, ...prefixArgs]` meant to be spawned with `shell: false` and the
|
|
324
139
|
* real wrangler subcommand appended as further DISCRETE argv elements.
|
|
325
140
|
*
|
|
326
|
-
*
|
|
327
|
-
* `shell: true` callers), this never builds a shell command line, so untrusted
|
|
328
|
-
* values — resource names, a Postgres connection string riddled with `&`/`$`/`;`,
|
|
329
|
-
* a config path containing spaces — can be passed as their own argv elements and
|
|
330
|
-
* are IMMUNE to shell metacharacter injection/splitting.
|
|
141
|
+
* Values are passed as discrete argv elements without shell expansion.
|
|
331
142
|
*
|
|
332
143
|
* Resolution order — ALWAYS launches the resolved JS entry as
|
|
333
144
|
* `[process.execPath, <wrangler-dist/cli.js>]`, which is shell-free AND
|
|
334
145
|
* cross-platform (it sidesteps the Windows `.cmd`/`.ps1` shim that Node cannot
|
|
335
146
|
* spawn with `shell: false`):
|
|
336
147
|
* 1. MODULE RESOLUTION of `wrangler/package.json` relative to THIS module (the
|
|
337
|
-
* `void` package). The provisioner targets wrangler 4.
|
|
148
|
+
* `void` package). The provisioner targets wrangler 4.131's EXACT flags,
|
|
338
149
|
* `--json` shapes, and error strings, so void's own pinned wrangler must be
|
|
339
150
|
* PREFERRED — an app that hoists an older, incompatible wrangler at its root
|
|
340
151
|
* must not shadow it. Under strict pnpm (void + consumers use pnpm) void's
|
|
@@ -365,7 +176,7 @@ function shellQuoteExecutable(value) {
|
|
|
365
176
|
function resolveWranglerArgv(root, resolveWranglerPackageJson = defaultResolveWranglerPackageJson) {
|
|
366
177
|
const jsBin = resolveLocalWranglerJsBin(root, resolveWranglerPackageJson);
|
|
367
178
|
if (jsBin) return [process.execPath, jsBin];
|
|
368
|
-
throw new Error("provision:
|
|
179
|
+
throw new Error("provision: Void's bundled Cloudflare tooling is unavailable. Reinstall the project's dependencies from its trusted lockfile, then retry.");
|
|
369
180
|
}
|
|
370
181
|
/**
|
|
371
182
|
* Resolve `wrangler/package.json` via Node module resolution, relative to THIS
|
|
@@ -418,7 +229,7 @@ function wranglerCliEntryFromPackageJson(pkgPath) {
|
|
|
418
229
|
}
|
|
419
230
|
}
|
|
420
231
|
/**
|
|
421
|
-
* The relative CLI entry from a wrangler manifest: `main` first (wrangler 4.
|
|
232
|
+
* The relative CLI entry from a wrangler manifest: `main` first (wrangler 4.131 sets it
|
|
422
233
|
* to `wrangler-dist/cli.js`, which equals `exports["."].default`), then the `.` export
|
|
423
234
|
* (`{ default: string }` or a bare string). Returns `undefined` when neither is a string.
|
|
424
235
|
*/
|
|
@@ -569,7 +380,8 @@ function findBackendSources(root) {
|
|
|
569
380
|
paths.pagesDir,
|
|
570
381
|
paths.middlewareDir,
|
|
571
382
|
paths.cronsDir,
|
|
572
|
-
paths.queuesDir
|
|
383
|
+
paths.queuesDir,
|
|
384
|
+
paths.emailDir
|
|
573
385
|
]) if (existsSync(dir)) found.push(`${relative(root, dir)}/`);
|
|
574
386
|
const ssrEntry = getSsrServerEntryPath(root, paths);
|
|
575
387
|
if (ssrEntry) found.push(relative(root, ssrEntry));
|
|
@@ -585,8 +397,9 @@ function hasBackendFiles(root) {
|
|
|
585
397
|
if (existsSync(paths.middlewareDir)) return true;
|
|
586
398
|
if (existsSync(paths.cronsDir)) return true;
|
|
587
399
|
if (existsSync(paths.queuesDir)) return true;
|
|
400
|
+
if (existsSync(paths.emailDir)) return true;
|
|
588
401
|
if (hasSsrEntry(root, paths)) return true;
|
|
589
402
|
return false;
|
|
590
403
|
}
|
|
591
404
|
//#endregion
|
|
592
|
-
export { resolveProjectCommand as a,
|
|
405
|
+
export { resolveProjectCommand as a, hasBackendFiles as i, detectPreset as n, resolveWranglerArgv as o, formatProjectCommand as r, FRAMEWORK_PRESETS as t };
|