void 0.26.0 → 0.27.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/AGENTS_TEMPLATE.md +1 -3
- package/README.md +19 -9
- package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-l-FM7Ioq.mjs} +8 -7
- package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
- package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
- package/dist/{auth-D52yG7hl.mjs → auth-Dn2vw-SG.mjs} +9 -9
- package/dist/{auth-B60QDbjg.mjs → auth-LMJcNESe.mjs} +1 -1
- package/dist/{auth-link-DjeOptYi.mjs → auth-link-vz9Z2kmG.mjs} +5 -5
- package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
- package/dist/{auth-router-BRxIuqDi.mjs → auth-router-DvsCUVw4.mjs} +6 -19
- package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
- package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
- package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-D6we0VjO.mjs} +8 -7
- package/dist/{cache-CS8Yxr5a.mjs → cache-CZRdzKx1.mjs} +8 -8
- package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-CQ3NnMvf.mjs} +6 -5
- package/dist/{cf-access-YTlqvAsk.mjs → cf-access-BcIBSKqG.mjs} +11 -12
- package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
- package/dist/cf-build-output-H9a97vME.mjs +2 -0
- package/dist/cf-user-agent-lKblH3zU.mjs +17 -0
- package/dist/cli/cli.mjs +48 -83
- package/dist/cli/cloudflare-operation-process.mjs +78 -78
- package/dist/cli/env-schema-probe.mjs +5 -6
- package/dist/{client-mC-dFGDD.mjs → client-DlDJuY0s.mjs} +30 -8
- package/dist/client-tso2OfcG.mjs +2 -0
- package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
- package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
- package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
- package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
- package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
- package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
- package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
- package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
- package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
- package/dist/config-BtSFvXZx.mjs +2 -0
- package/dist/config-CLYAosnQ.mjs +78 -0
- package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
- package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
- package/dist/{connect-H6EvP62X.mjs → connect-BfPBHHm-.mjs} +12 -11
- package/dist/{create-project-B2kk9Q0o.mjs → create-project-BdXEFKal.mjs} +7 -7
- package/dist/{create-project-Dbb4uiN-.mjs → create-project-qFDC45zg.mjs} +1 -1
- package/dist/{db-DpCKZto0.mjs → db-Xs80hcaA.mjs} +101 -133
- package/dist/{delete-CxlSvsvW.mjs → delete-d2vuou3j.mjs} +7 -7
- package/dist/{deploy-CeEbnv4b.mjs → deploy-Bqe1PYBw.mjs} +2351 -2497
- package/dist/deploy-VsWsVQkw.mjs +2 -0
- package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
- package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
- package/dist/discover-EDUf6JJw.mjs +2 -0
- package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
- package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
- package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
- package/dist/{domain-B_9VgOm6.mjs → domain-BsDUBAvt.mjs} +29 -30
- package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
- package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
- package/dist/{email-BokHgjKj.mjs → email-_lGAHOhp.mjs} +24 -19
- package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
- package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
- package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
- package/dist/{env-BdTc-K2L.mjs → env-C74QepDE.mjs} +10 -10
- package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
- package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
- package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
- package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
- package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
- package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
- package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
- package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
- package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
- package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
- package/dist/gen-dA9hW7AV.mjs +2 -0
- package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-DaDdBbSS.mjs} +65 -164
- package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
- package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
- package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
- package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
- package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
- package/dist/{help-Bv44e2tm.mjs → help-0bTe_lID.mjs} +13 -32
- package/dist/help-DfQYVfGY.mjs +2 -0
- package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
- package/dist/index.d.mts +19 -2
- package/dist/index.mjs +619 -532
- package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
- package/dist/{init-BMf4T03q.mjs → init-DaBGmaXC.mjs} +161 -198
- package/dist/{link-BqYsSS_I.mjs → link-C6fjafep.mjs} +10 -10
- package/dist/{list-_kBToO-l.mjs → list-BTFBlqKl.mjs} +9 -8
- package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
- package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
- package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
- package/dist/{login-DFuo-RWO.mjs → login-GKcNUmtI.mjs} +7 -7
- package/dist/login-mx_ydhmp.mjs +2 -0
- package/dist/{logs-DYgnh6dH.mjs → logs-BiMSULmc.mjs} +28 -11
- package/dist/migrate-BHp07yJE.mjs +2 -0
- package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
- package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
- package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
- package/dist/{operator-args-DdY54Bgb.mjs → operator-args-DOBhIaIg.mjs} +10 -1
- package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-BEZ_u0Cz.mjs} +2 -2
- package/dist/{operator-client-BFqpp6z0.mjs → operator-client-DbDv4vtE.mjs} +2 -2
- package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-BT4hgavL.mjs} +24 -11
- package/dist/operator-cmd-CwBB-1yb.mjs +2 -0
- package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
- package/dist/pages/client.d.mts +19 -51
- package/dist/pages/client.mjs +204 -225
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/head.mjs +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +6 -12
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/islands-plugin.mjs +21 -25
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -2
- package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
- package/dist/plan-CH2G51je.mjs +2 -0
- package/dist/platform-args-D4E1PjVw.mjs +2 -0
- package/dist/{platform-args-DSV2p4nY.mjs → platform-args-DUeXY9Om.mjs} +1 -1
- package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-CkSx3usH.mjs} +40 -36
- package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-BJimB_p9.mjs} +9 -8
- package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-BU6izFAU.mjs} +8 -7
- package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-BbY1dWiM.mjs} +14 -13
- package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-BbmJiq5O.mjs} +1 -1
- package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-DIYz8V63.mjs} +1 -1
- package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-CHVS6cV0.mjs} +6 -6
- package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-ByAlpkhV.mjs} +1 -1
- package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-DzCwqhFq.mjs} +76 -387
- package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-CBOT4BSM.mjs} +1 -1
- package/dist/{platform-management-BrF9STZp.mjs → platform-management-CuuVDhyt.mjs} +7 -7
- package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CN-heS4q.mjs} +5 -4
- package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-CskSJgLh.mjs} +3 -3
- package/dist/{platform-registry-P387v42A.mjs → platform-registry-Cjv2Qf0r.mjs} +5 -1
- package/dist/platform-setup-BBxRxmFC.mjs +299 -0
- package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
- package/dist/prepare-DRUV-g3X.mjs +2 -0
- package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
- package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
- package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-DQstYTxO.mjs → project-BAm2aB6Q.mjs} +1 -1
- package/dist/{project-BiaPQ7ur.mjs → project-DedqCp59.mjs} +1 -1
- package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-DaoRrn-8.mjs} +19 -19
- package/dist/{project-team-Yiww3-go.mjs → project-team-Q_lCA7Io.mjs} +15 -18
- package/dist/{project-token-BrtT2NkY.mjs → project-token-BArgK9o1.mjs} +14 -17
- package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
- package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-KO9Hu2Pq.mjs} +12 -9
- package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
- package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
- package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
- package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
- package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
- package/dist/{requests-TIz_jtSu.mjs → requests-C7Oeoh5u.mjs} +5 -5
- package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
- package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
- package/dist/{rollback-dBqICPzj.mjs → rollback-DVAtrLAl.mjs} +30 -37
- package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
- package/dist/route-url-BgPja1GS.d.mts +5 -0
- package/dist/route-url-BjGv_KKY.mjs +28 -0
- package/dist/runner-9wjsSZx-.mjs +2 -0
- package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
- package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
- package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
- package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
- package/dist/runtime/ai.d.mts +1 -1
- package/dist/runtime/ai.mjs +34 -95
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +4 -9
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +5 -10
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +3 -3
- package/dist/runtime/client-react.d.mts +2 -3
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.d.mts +2 -3
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.d.mts +2 -3
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.d.mts +2 -3
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.d.mts +2 -3
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.mjs +3 -10
- package/dist/runtime/email/testing.mjs +5 -5
- package/dist/runtime/email.d.mts +2 -1
- package/dist/runtime/email.mjs +11 -27
- package/dist/runtime/env-public.mjs +15 -20
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +2 -3
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +2 -2
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/kv.mjs +10 -11
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-client.mjs +12 -22
- package/dist/runtime/live-server.mjs +27 -35
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +2 -2
- package/dist/runtime/migration-handler.mjs +4 -81
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/remote/binding-handler.d.mts +2 -2
- package/dist/runtime/remote/binding-handler.mjs +8 -9
- package/dist/runtime/remote/index.mjs +27 -77
- package/dist/runtime/route-url.d.mts +2 -4
- package/dist/runtime/route-url.mjs +1 -1
- package/dist/runtime/routing.d.mts +1 -1
- package/dist/runtime/routing.mjs +15 -26
- package/dist/runtime/sandbox.mjs +2 -2
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws-server.mjs +30 -61
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +1 -1
- package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
- package/dist/{secret-AKnNXNP5.mjs → secret-BvtB7IjY.mjs} +15 -15
- package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
- package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
- package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
- package/dist/sveltekit.d.mts +0 -2
- package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
- package/dist/validate-BJr9LfXy.mjs +2 -0
- package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
- package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
- package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
- package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
- package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
- package/{skills/void/docs → docs}/guide/ai.md +5 -3
- package/{skills/void/docs → docs}/guide/auth.md +37 -1
- package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
- package/{skills/void/docs → docs}/guide/deployment.md +2 -2
- package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
- package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
- package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
- package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
- package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
- package/{skills/void/docs → docs}/guide/jobs.md +2 -2
- package/{skills/void/docs → docs}/guide/live.md +10 -5
- package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
- package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
- package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
- package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
- package/{skills/void/docs → docs}/guide/platform/administration/access.md +3 -11
- package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
- package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
- package/{skills/void/docs → docs}/guide/project-collaboration.md +7 -3
- package/{skills/void/docs → docs}/guide/queues.md +0 -2
- package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
- package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
- package/{skills/void/docs → docs}/guide/sse.md +0 -2
- package/{skills/void/docs → docs}/guide/storage.md +7 -2
- package/{skills/void/docs → docs}/guide/websockets.md +4 -0
- package/docs/integrations/agents.md +37 -0
- package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
- package/{skills/void/docs → docs}/integrations/hono.md +15 -7
- package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
- package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
- package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
- package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
- package/{skills/void/docs → docs}/reference/cli/auth.md +1 -6
- package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
- package/{skills/void/docs → docs}/reference/cli/deploy.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
- package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
- package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
- package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
- package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
- package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
- package/{skills/void/docs → docs}/reference/cli.md +1 -1
- package/{skills/void/docs → docs}/reference/config.md +13 -13
- package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
- package/package.json +34 -30
- package/schema.json +1 -1
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
- package/skills/void/SKILL.md +9 -5
- package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
- package/dist/client-BxVixJBI.mjs +0 -2
- package/dist/config-0acf1oys.mjs +0 -2
- package/dist/config-D8MOgiQV.mjs +0 -32
- package/dist/deploy-qmiLE1G1.mjs +0 -2
- package/dist/discover-AMCBXivQ.mjs +0 -2
- package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
- package/dist/gen-qCBwH3fZ.mjs +0 -2
- package/dist/help-Dw5f9Xrg.mjs +0 -2
- package/dist/login-D7meQg_3.mjs +0 -2
- package/dist/migrate-CEu2X5DB.mjs +0 -2
- package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
- package/dist/plan-COtUvdMA.mjs +0 -2
- package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
- package/dist/prepare-BBknoZI1.mjs +0 -2
- package/dist/resolve-project-DtbidV4y.mjs +0 -2
- package/dist/route-url-CG7U-cRN.mjs +0 -15
- package/dist/runner-voIltZrY.mjs +0 -2
- package/dist/validate-pna7R3Pv.mjs +0 -2
- package/skills/void/docs/integrations/agents.md +0 -26
- package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
- package/{skills/void/docs → docs}/guide/app-types.md +0 -0
- package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
- package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
- package/{skills/void/docs → docs}/guide/database.md +8 -8
- package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
- package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
- package/{skills/void/docs → docs}/guide/email.md +0 -0
- package/{skills/void/docs → docs}/guide/index.md +0 -0
- package/{skills/void/docs → docs}/guide/kv.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
- package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
- package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
- package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
- package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
- package/{skills/void/docs → docs}/guide/ssg.md +0 -0
- package/{skills/void/docs → docs}/guide/ssr.md +0 -0
- package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
- package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
- package/{skills/void/docs → docs}/index.md +0 -0
- package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
- package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
- package/{skills/void/docs → docs}/reference/api/client.md +0 -0
- package/{skills/void/docs → docs}/reference/api/database.md +2 -2
- /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
- /package/{skills/void/docs → docs}/reference/api.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
- /package/{skills/void/docs → docs}/reference/structure.md +0 -0
package/dist/runtime/routing.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as convertReturnValue } from "../response-Tn7rU0MV.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { n as handlePageGet, r as handlePageMutation } from "../protocol-CfaUwNs8.mjs";
|
|
3
|
+
import { t as VoidAssetRewriteError } from "../handler-BHAn2fZJ.mjs";
|
|
4
4
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
5
5
|
import { compilePattern, mergeQueryIntoLocation, substituteParams } from "@void/edge";
|
|
6
6
|
//#region src/runtime/routing-errors.ts
|
|
@@ -200,7 +200,7 @@ function createErrorRenderer(options) {
|
|
|
200
200
|
});
|
|
201
201
|
return chain;
|
|
202
202
|
}
|
|
203
|
-
function __voidRenderDevErrorOverlay(
|
|
203
|
+
function __voidRenderDevErrorOverlay(status, title, error) {
|
|
204
204
|
const chain = __voidCollectErrorChain(error);
|
|
205
205
|
const errorCountLabel = chain.length + (chain.length === 1 ? " Error" : " Errors");
|
|
206
206
|
const sections = chain.map((entry, index) => {
|
|
@@ -451,10 +451,10 @@ function createErrorRenderer(options) {
|
|
|
451
451
|
if (!css) return html;
|
|
452
452
|
return /<\/head\s*>/i.test(html) ? html.replace(/<\/head\s*>/i, css + "</head>") : css + html;
|
|
453
453
|
}
|
|
454
|
-
function __voidRenderErrorPage(
|
|
454
|
+
function __voidRenderErrorPage(status, title, error) {
|
|
455
455
|
const heading = status + ": " + title;
|
|
456
456
|
const prefix = status + ": ";
|
|
457
|
-
const overlay = __VOID_DEV && status === 500 && error ? __voidRenderDevErrorOverlay(
|
|
457
|
+
const overlay = __VOID_DEV && status === 500 && error ? __voidRenderDevErrorOverlay(status, title, error) : "";
|
|
458
458
|
return `<!doctype html>
|
|
459
459
|
<html lang="en">
|
|
460
460
|
<head>
|
|
@@ -522,7 +522,7 @@ function createErrorRenderer(options) {
|
|
|
522
522
|
}
|
|
523
523
|
function __voidCreateErrorResponse(request, status, title, error) {
|
|
524
524
|
if (!__voidShouldServeHtmlErrorPage(request)) return new Response(title, { status });
|
|
525
|
-
return new Response(request.method === "HEAD" ? null : __voidRenderErrorPage(
|
|
525
|
+
return new Response(request.method === "HEAD" ? null : __voidRenderErrorPage(status, title, error), {
|
|
526
526
|
status,
|
|
527
527
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
528
528
|
});
|
|
@@ -535,22 +535,15 @@ function createErrorRenderer(options) {
|
|
|
535
535
|
const response = await assets.fetch(request);
|
|
536
536
|
if (response.ok) {
|
|
537
537
|
const assetCss = __voidGetErrorAssetCss(error);
|
|
538
|
-
|
|
538
|
+
const showOverlay = __VOID_DEV && status === 500 && !!error && __voidShouldServeHtmlErrorPage(c.req.raw);
|
|
539
|
+
if (assetCss || showOverlay) {
|
|
539
540
|
const html = __voidInjectErrorAssetCss(await response.text(), assetCss);
|
|
540
|
-
const body =
|
|
541
|
+
const body = showOverlay ? __voidInjectDevErrorOverlay(html, __voidRenderDevErrorOverlay(status, fallbackText, error)) : html;
|
|
541
542
|
return new Response(c.req.method === "HEAD" ? null : body, {
|
|
542
543
|
status,
|
|
543
544
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
544
545
|
});
|
|
545
546
|
}
|
|
546
|
-
if (__VOID_DEV && status === 500 && error && __voidShouldServeHtmlErrorPage(c.req.raw)) {
|
|
547
|
-
const overlay = __voidRenderDevErrorOverlay(c.req.raw, status, fallbackText, error);
|
|
548
|
-
const html = await response.text();
|
|
549
|
-
return new Response(c.req.method === "HEAD" ? null : __voidInjectDevErrorOverlay(html, overlay), {
|
|
550
|
-
status,
|
|
551
|
-
headers: { "content-type": "text/html; charset=utf-8" }
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
547
|
return new Response(response.body, {
|
|
555
548
|
status,
|
|
556
549
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
@@ -780,7 +773,7 @@ function filterInternalBindings(env, prefixes, exactNames = []) {
|
|
|
780
773
|
function createWorkerFetch(options) {
|
|
781
774
|
return async (request, originalEnv, ctx) => {
|
|
782
775
|
const url = new URL(request.url);
|
|
783
|
-
const discovery = request.method === "POST" && url.pathname === "/__void/prerender-paths";
|
|
776
|
+
const discovery = request.method === "POST" && url.pathname === "/__void/prerender-paths" && originalEnv.__VOID_PRERENDER === "1";
|
|
784
777
|
if (options.validateEnv && !discovery) await options.validateEnv(originalEnv);
|
|
785
778
|
const env = options.remoteEnv && originalEnv.__VOID_REMOTE === "1" ? options.remoteEnv(originalEnv) : originalEnv;
|
|
786
779
|
if (options.isr) {
|
|
@@ -798,14 +791,7 @@ function createWorkerFetch(options) {
|
|
|
798
791
|
}
|
|
799
792
|
const internal = await options.internalRoute(request, env, ctx);
|
|
800
793
|
if (internal) return internal;
|
|
801
|
-
if (discovery) {
|
|
802
|
-
const expected = env.__VOID_PROXY_TOKEN;
|
|
803
|
-
if (expected) {
|
|
804
|
-
const token = request.headers.get("x-void-internal");
|
|
805
|
-
if (!token || token !== expected) return Response.json({ error: "unauthorized" }, { status: 401 });
|
|
806
|
-
}
|
|
807
|
-
return Response.json({ paths: await options.collectPrerenderPaths(request, env, ctx) });
|
|
808
|
-
}
|
|
794
|
+
if (discovery) return Response.json({ paths: await options.collectPrerenderPaths(request, env, ctx) });
|
|
809
795
|
const userEnv = options.filterBindings(env);
|
|
810
796
|
const render = async (req) => options.assets(req, env, await options.app.fetch(req, userEnv, ctx));
|
|
811
797
|
if (options.isr && env.ISR_CACHE && request.headers.get("upgrade")?.toLowerCase() !== "websocket") {
|
|
@@ -828,7 +814,10 @@ function createPageMutationHandler(options) {
|
|
|
828
814
|
return async (context) => {
|
|
829
815
|
const mod = options.load ? await options.load() : {};
|
|
830
816
|
const actionName = options.namedActions ? new URL(context.req.url).searchParams.keys().next().value : void 0;
|
|
831
|
-
const
|
|
817
|
+
const name = actionName || "default";
|
|
818
|
+
const named = mod.actions;
|
|
819
|
+
const candidate = named && Object.hasOwn(named, name) ? named[name] : void 0;
|
|
820
|
+
const handler = options.namedActions ? typeof candidate === "function" ? candidate : void 0 : mod.action;
|
|
832
821
|
if (options.namedActions && !handler) return new Response("Unknown action" + (actionName ? ": " + actionName : ""), { status: 404 });
|
|
833
822
|
return handlePageMutation(handler, mod.loader, mod.head, context, options.componentId, options.render, options.assets, options.headConfig ?? void 0, options.renderOptions);
|
|
834
823
|
};
|
package/dist/runtime/sandbox.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as getRawRuntimeEnv } from "../env-raw-
|
|
1
|
+
import { a as getRawRuntimeEnv } from "../env-raw-jZpP5n47.mjs";
|
|
2
2
|
import { t as UsageLimit } from "../limits-D0vD1M9A.mjs";
|
|
3
|
-
import { a as requireRuntimeBinding } from "../env-
|
|
3
|
+
import { a as requireRuntimeBinding } from "../env-DMA3cXZt.mjs";
|
|
4
4
|
import { n as SandboxContainer, r as validateSandboxOptions } from "../sandbox-container-C6ItmVuN.mjs";
|
|
5
5
|
export * from "@cloudflare/sandbox";
|
|
6
6
|
//#region src/runtime/sandbox.ts
|
package/dist/runtime/sse.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as getLastEventId, i as formatSseText, n as eventStream, r as formatSse, t as SseStreamClosedError } from "../sse-
|
|
1
|
+
import { a as getLastEventId, i as formatSseText, n as eventStream, r as formatSse, t as SseStreamClosedError } from "../sse-CMvCgjNk.mjs";
|
|
2
2
|
export { SseStreamClosedError, eventStream, formatSse, formatSseText, getLastEventId };
|
package/dist/runtime/storage.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { D as runValidation, E as ValidatorSlots, T as HandlerInput } from "../handler-
|
|
1
|
+
import { D as runValidation, E as ValidatorSlots, T as HandlerInput } from "../handler-CNAwjRcW.mjs";
|
|
2
2
|
export { HandlerInput, ValidatorSlots, runValidation };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as AuthState } from "../auth-DkcFflXV.mjs";
|
|
2
|
-
import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-
|
|
3
|
-
import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-
|
|
2
|
+
import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-CPvWD3nG.mjs";
|
|
3
|
+
import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-CChrrAU-.mjs";
|
|
4
4
|
//#region src/runtime/ws-server.d.ts
|
|
5
5
|
export type WebSocketRouteMeta = {
|
|
6
6
|
name?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as authContext } from "../auth-3sGB0zJ1.mjs";
|
|
2
|
-
import { o as withRuntimeEnv } from "../env-
|
|
2
|
+
import { o as withRuntimeEnv } from "../env-DMA3cXZt.mjs";
|
|
3
3
|
//#region src/runtime/ws-server.ts
|
|
4
4
|
function matchRoute(pattern, pathname) {
|
|
5
5
|
const patternSegments = pattern.split("/").filter(Boolean);
|
|
@@ -153,27 +153,24 @@ function createRoomController(state, serverSchema) {
|
|
|
153
153
|
}
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
|
-
function
|
|
157
|
-
|
|
156
|
+
function createHookContext(definition, state, env, request, webSocket, stored) {
|
|
157
|
+
const serverSchema = definition.messages.server;
|
|
158
|
+
const base = {
|
|
158
159
|
id: stored.roomId,
|
|
159
160
|
params: stored.params,
|
|
160
161
|
user: stored.user,
|
|
161
162
|
request,
|
|
162
163
|
env,
|
|
163
|
-
storage: state.storage
|
|
164
|
-
room: createRoomController(state, serverSchema),
|
|
165
|
-
connection: createConnection(webSocket, serverSchema)
|
|
164
|
+
storage: state.storage
|
|
166
165
|
};
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
storage: state.storage,
|
|
176
|
-
socket: createConnection(webSocket, serverSchema)
|
|
166
|
+
const connection = createConnection(webSocket, serverSchema);
|
|
167
|
+
return definition.__kind === "room" ? {
|
|
168
|
+
...base,
|
|
169
|
+
room: createRoomController(state, serverSchema),
|
|
170
|
+
connection
|
|
171
|
+
} : {
|
|
172
|
+
...base,
|
|
173
|
+
socket: connection
|
|
177
174
|
};
|
|
178
175
|
}
|
|
179
176
|
function assertDefinition(definition) {
|
|
@@ -196,6 +193,9 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
|
|
|
196
193
|
fetch(request) {
|
|
197
194
|
return withRuntimeEnv(this.env, () => this.handleFetch(request));
|
|
198
195
|
}
|
|
196
|
+
context(request, webSocket, stored) {
|
|
197
|
+
return createHookContext(definition, this.state, this.env, request, webSocket, stored);
|
|
198
|
+
}
|
|
199
199
|
async handleFetch(request) {
|
|
200
200
|
const params = getRouteMatch(request, route) ?? {};
|
|
201
201
|
const roomId = buildWebSocketInstanceId(instanceRoute, params);
|
|
@@ -213,23 +213,12 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
|
|
|
213
213
|
authState
|
|
214
214
|
};
|
|
215
215
|
setStoredConnection(server, stored);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (decision instanceof Response) return decision;
|
|
220
|
-
} else {
|
|
221
|
-
const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
|
|
222
|
-
const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(ctx));
|
|
223
|
-
if (decision instanceof Response) return decision;
|
|
224
|
-
}
|
|
216
|
+
const beforeConnectCtx = this.context(request, server, stored);
|
|
217
|
+
const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(beforeConnectCtx));
|
|
218
|
+
if (decision instanceof Response) return decision;
|
|
225
219
|
this.state.acceptWebSocket(server);
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
await withAuthState(authState, () => definition.onConnect?.(ctx));
|
|
229
|
-
} else {
|
|
230
|
-
const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
|
|
231
|
-
await withAuthState(authState, () => definition.onConnect?.(ctx));
|
|
232
|
-
}
|
|
220
|
+
const connectCtx = this.context(request, server, stored);
|
|
221
|
+
await withAuthState(authState, () => definition.onConnect?.(connectCtx));
|
|
233
222
|
return new Response(null, {
|
|
234
223
|
status: 101,
|
|
235
224
|
webSocket: client
|
|
@@ -243,13 +232,7 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
|
|
|
243
232
|
user,
|
|
244
233
|
authState
|
|
245
234
|
};
|
|
246
|
-
|
|
247
|
-
const fakeSocket = new WebSocketPair()[1];
|
|
248
|
-
const ctx = createRoomContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
|
|
249
|
-
return withAuthState(authState, () => definition.onRequest(ctx));
|
|
250
|
-
}
|
|
251
|
-
const fakeSocket = new WebSocketPair()[1];
|
|
252
|
-
const ctx = createSocketContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
|
|
235
|
+
const ctx = this.context(request, new WebSocketPair()[1], stored);
|
|
253
236
|
return withAuthState(authState, () => definition.onRequest(ctx));
|
|
254
237
|
}
|
|
255
238
|
webSocketMessage(webSocket, message) {
|
|
@@ -271,13 +254,8 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
|
|
|
271
254
|
return;
|
|
272
255
|
}
|
|
273
256
|
const request = new Request(`https://void.local${route.pattern}`);
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
|
|
277
|
-
} else {
|
|
278
|
-
const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
|
|
279
|
-
await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
|
|
280
|
-
}
|
|
257
|
+
const ctx = this.context(request, webSocket, stored);
|
|
258
|
+
await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
|
|
281
259
|
}
|
|
282
260
|
webSocketClose(webSocket, code, reason, wasClean) {
|
|
283
261
|
return withRuntimeEnv(this.env, () => this.handleWebSocketClose(webSocket, code, reason, wasClean));
|
|
@@ -286,21 +264,12 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
|
|
|
286
264
|
completeWebSocketClose(webSocket, code, reason);
|
|
287
265
|
const stored = getStoredConnection(webSocket);
|
|
288
266
|
const request = new Request(`https://void.local${route.pattern}`);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}));
|
|
296
|
-
} else {
|
|
297
|
-
const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
|
|
298
|
-
await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
|
|
299
|
-
code,
|
|
300
|
-
reason,
|
|
301
|
-
wasClean
|
|
302
|
-
}));
|
|
303
|
-
}
|
|
267
|
+
const ctx = this.context(request, webSocket, stored);
|
|
268
|
+
await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
|
|
269
|
+
code,
|
|
270
|
+
reason,
|
|
271
|
+
wasClean
|
|
272
|
+
}));
|
|
304
273
|
}
|
|
305
274
|
}
|
|
306
275
|
return VoidWebSocketDurableObject;
|
package/dist/runtime/ws.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-
|
|
1
|
+
import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-CChrrAU-.mjs";
|
|
2
2
|
export { AnyWebSocketDefinition, ConnectCommonOptions, RoomContext, RoomController, RoomDefinition, SocketContext, SocketDefinition, VoidSocket, VoidSocketCloseEvent, WebSocketBaseContext, WebSocketConnection, WebSocketInstanceKey, connect, defineRoom, defineWebSocket };
|
package/dist/runtime/ws.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as isResourceName } from "../resource-name-C7LVpcRm.mjs";
|
|
2
|
-
import { t as interpolateRouteParams } from "../route-url-
|
|
2
|
+
import { t as interpolateRouteParams } from "../route-url-BjGv_KKY.mjs";
|
|
3
3
|
//#region src/runtime/ws.ts
|
|
4
4
|
function defineRoom(definition) {
|
|
5
5
|
assertResourceName(definition.name);
|
|
@@ -59,8 +59,7 @@ function resolveEffectiveLayoutEntries(page, layouts, namedLayouts) {
|
|
|
59
59
|
id: toLayoutId(resolved),
|
|
60
60
|
definition: resolved
|
|
61
61
|
};
|
|
62
|
-
if (isExclusive) return [namedEntry];
|
|
63
|
-
if (defaultChain.length === 0) return [namedEntry];
|
|
62
|
+
if (isExclusive || defaultChain.length === 0) return [namedEntry];
|
|
64
63
|
const chain = [...defaultChain];
|
|
65
64
|
chain[chain.length - 1] = namedEntry;
|
|
66
65
|
return chain;
|
|
@@ -209,7 +208,7 @@ async function scanPages(root, options) {
|
|
|
209
208
|
if (layoutsDirIdx !== -1) {
|
|
210
209
|
if (layoutsDirIdx === segments.length - 2) namedLayouts.push({
|
|
211
210
|
name: base,
|
|
212
|
-
directory: segments.slice(0, layoutsDirIdx).join("/")
|
|
211
|
+
directory: segments.slice(0, layoutsDirIdx).join("/"),
|
|
213
212
|
filePath: file,
|
|
214
213
|
island
|
|
215
214
|
});
|
|
@@ -293,12 +292,8 @@ async function scanPages(root, options) {
|
|
|
293
292
|
if (page.island) continue;
|
|
294
293
|
const dir = dirname(page.componentPath);
|
|
295
294
|
const segments = dir === "." ? [] : dir.split("/");
|
|
296
|
-
|
|
297
|
-
if (layouts.some((l) => l.
|
|
298
|
-
for (const seg of segments) {
|
|
299
|
-
current = current ? `${current}/${seg}` : seg;
|
|
300
|
-
if (layouts.some((l) => l.directory === current && l.island)) throw new Error(`pages: Regular page '${page.componentPath}' is under an island layout. Add a .island suffix.`);
|
|
301
|
-
}
|
|
295
|
+
const ancestors = ["", ...segments.map((_, index) => segments.slice(0, index + 1).join("/"))];
|
|
296
|
+
if (layouts.some((l) => l.island && ancestors.includes(l.directory))) throw new Error(`pages: Regular page '${page.componentPath}' is under an island layout. Add a .island suffix.`);
|
|
302
297
|
}
|
|
303
298
|
for (const page of pages) {
|
|
304
299
|
if (page.layout === void 0 || page.layout === false) continue;
|
|
@@ -317,12 +312,16 @@ const LEADING_SCRIPT_RE = /^<script\b[^>]*>[\s\S]*?<\/script>\s*\n?/;
|
|
|
317
312
|
function markdownFrontmatter(source) {
|
|
318
313
|
return source.replace(LEADING_SCRIPT_RE, "").match(/^---\r?\n([\s\S]*?)\r?\n---/)?.[1];
|
|
319
314
|
}
|
|
315
|
+
/** Read a single-line `key: value` field, stripping surrounding quotes. */
|
|
316
|
+
function frontmatterField(yaml, key) {
|
|
317
|
+
return yaml.match(new RegExp(`^${key}:\\s*(.+)$`, "m"))?.[1]?.trim().replace(/^["']|["']$/g, "");
|
|
318
|
+
}
|
|
320
319
|
/** Extract title and description from YAML frontmatter in markdown source. */
|
|
321
320
|
function extractFrontmatterMeta(source) {
|
|
322
321
|
const yaml = markdownFrontmatter(source);
|
|
323
322
|
if (yaml === void 0) return;
|
|
324
|
-
const title = yaml
|
|
325
|
-
const description = yaml
|
|
323
|
+
const title = frontmatterField(yaml, "title");
|
|
324
|
+
const description = frontmatterField(yaml, "description");
|
|
326
325
|
if (!title && !description) return;
|
|
327
326
|
return {
|
|
328
327
|
title,
|
|
@@ -333,10 +332,10 @@ function extractFrontmatterMeta(source) {
|
|
|
333
332
|
function extractFrontmatterLayout(source) {
|
|
334
333
|
const yaml = markdownFrontmatter(source);
|
|
335
334
|
if (yaml === void 0) return;
|
|
336
|
-
const value = yaml
|
|
335
|
+
const value = frontmatterField(yaml, "layout");
|
|
337
336
|
if (!value) return;
|
|
338
337
|
if (value === "false") return false;
|
|
339
338
|
return value;
|
|
340
339
|
}
|
|
341
340
|
//#endregion
|
|
342
|
-
export { resolveNamedLayout as a, resolveLayoutIds as i, resolveEffectiveLayoutChain as n, resolveLayoutChain as r, scanPages as t };
|
|
341
|
+
export { resolveNamedLayout as a, resolveLayoutIds as i, resolveEffectiveLayoutChain as n, toLayoutId as o, resolveLayoutChain as r, scanPages as t };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-
|
|
2
|
-
import { c as getToken } from "./auth-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
|
|
2
|
+
import { c as getToken } from "./auth-Dn2vw-SG.mjs";
|
|
3
|
+
import { A as confirm, H as outro, L as log, O as cancel, U as password, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { d as printSuccess, s as formatCount, u as note } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { _ as validateSecretValues } from "./env-validation-Dxdx_5wo.mjs";
|
|
6
|
+
import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
|
|
7
|
+
import { i as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-CP8rZs_p.mjs";
|
|
8
8
|
import { readFileSync } from "node:fs";
|
|
9
9
|
//#region src/cli/secret.ts
|
|
10
10
|
async function runSecretCommand(root, args) {
|
|
@@ -47,7 +47,7 @@ async function runSecretCommand(root, args) {
|
|
|
47
47
|
value
|
|
48
48
|
}]);
|
|
49
49
|
await client.setSecret(projectId, args.name, value);
|
|
50
|
-
|
|
50
|
+
printSuccess(`Secret ${args.name} set.`);
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
if (args.action === "sync") {
|
|
@@ -67,17 +67,17 @@ async function runSecretCommand(root, args) {
|
|
|
67
67
|
}
|
|
68
68
|
for (const s of secrets) {
|
|
69
69
|
await client.setSecret(projectId, s.name, s.value);
|
|
70
|
-
log.
|
|
70
|
+
log.step(`Set ${s.name}`);
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
await client.deleteSecret(projectId, args.name);
|
|
76
|
-
|
|
76
|
+
printSuccess(`Secret ${args.name} deleted.`);
|
|
77
77
|
}
|
|
78
78
|
async function runCloudflareSecretCommand(root, args) {
|
|
79
79
|
if (args.projectName) throw new Error("secret: --project selects a Void platform project and is not used for direct Cloudflare apps.");
|
|
80
|
-
const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-
|
|
80
|
+
const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-BlYLlowZ.mjs");
|
|
81
81
|
const context = resolveCloudflareOperationContext(root);
|
|
82
82
|
if (args.action === "list") {
|
|
83
83
|
const secrets = await listCloudflareSecrets(context);
|
|
@@ -96,7 +96,7 @@ async function runCloudflareSecretCommand(root, args) {
|
|
|
96
96
|
value
|
|
97
97
|
}]);
|
|
98
98
|
await putCloudflareSecret(context, args.name, value);
|
|
99
|
-
|
|
99
|
+
printSuccess(`Secret ${args.name} set.`);
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
if (args.action === "sync") {
|
|
@@ -115,11 +115,11 @@ async function runCloudflareSecretCommand(root, args) {
|
|
|
115
115
|
process.exit(0);
|
|
116
116
|
}
|
|
117
117
|
await syncCloudflareSecrets(context, secrets);
|
|
118
|
-
|
|
118
|
+
printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
121
|
await deleteCloudflareSecret(context, args.name);
|
|
122
|
-
|
|
122
|
+
printSuccess(`Secret ${args.name} deleted.`);
|
|
123
123
|
}
|
|
124
124
|
const SECRET_KEY_RE = /^[A-Z][A-Z0-9_]*$/;
|
|
125
125
|
function parseDotenvFile(filePath) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import { L as log } from "./
|
|
2
|
+
import { L as log } from "./dist-D3m88sjf.mjs";
|
|
3
3
|
import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, readdirSync, readlinkSync, symlinkSync } from "node:fs";
|
|
5
5
|
//#region src/cli/skills.ts
|
|
@@ -42,7 +42,7 @@ function linkSkills(root, skillsDir, skills, agentSkillsDir) {
|
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
44
|
symlinkSync(relativeTarget, linkPath, process.platform === "win32" ? "junction" : "dir");
|
|
45
|
-
log.
|
|
45
|
+
log.step(` ${skill.name} — linked`);
|
|
46
46
|
linked++;
|
|
47
47
|
}
|
|
48
48
|
return linked;
|
|
@@ -150,7 +150,7 @@ function assertRetry(value) {
|
|
|
150
150
|
if (!Number.isInteger(value) || value < 0) throw new Error("sse: retry must be a non-negative integer.");
|
|
151
151
|
}
|
|
152
152
|
function isBinaryData(data) {
|
|
153
|
-
return data instanceof ArrayBuffer || ArrayBuffer.isView(data) || typeof Blob !== "undefined" && data instanceof Blob
|
|
153
|
+
return data instanceof ArrayBuffer || ArrayBuffer.isView(data) || typeof Blob !== "undefined" && data instanceof Blob;
|
|
154
154
|
}
|
|
155
155
|
function serializeData(data) {
|
|
156
156
|
if (typeof data === "string") return data;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as wrapTextWithPrefix, G as promptTitle, M as getGuide, V as optionText, b as S_RADIO_ACTIVE, d as S_CHECKBOX_SELECTED, i as S_BAR_END, it as wrapAnsi, j as formatInstructionFooter, n as SELECT_INSTRUCTIONS, r as S_BAR, t as MULTISELECT_INSTRUCTIONS, u as S_CHECKBOX_INACTIVE, w as S_STEP_SUBMIT } from "./
|
|
2
|
-
import {
|
|
1
|
+
import { $ as wrapTextWithPrefix, G as promptTitle, M as getGuide, V as optionText, b as S_RADIO_ACTIVE, d as S_CHECKBOX_SELECTED, i as S_BAR_END, it as wrapAnsi, j as formatInstructionFooter, n as SELECT_INSTRUCTIONS, r as S_BAR, t as MULTISELECT_INSTRUCTIONS, u as S_CHECKBOX_INACTIVE, w as S_STEP_SUBMIT } from "./dist-D3m88sjf.mjs";
|
|
2
|
+
import { l as import_picocolors } from "./output-C50ag2r3.mjs";
|
|
3
3
|
//#region src/cli/subcommand-prompt.ts
|
|
4
4
|
function promptSubcommand(command, subcommands) {
|
|
5
5
|
return new Promise((resolve) => {
|
package/dist/sveltekit.d.mts
CHANGED
|
@@ -4,8 +4,6 @@ type TsconfigHook = (config: Tsconfig) => Tsconfig | void;
|
|
|
4
4
|
export type VoidSvelteKitTsconfigOptions = {
|
|
5
5
|
/** Project root. Defaults to process.cwd(). */
|
|
6
6
|
root?: string;
|
|
7
|
-
/** @deprecated Generated paths no longer depend on SvelteKit's output directory. */
|
|
8
|
-
outDir?: string;
|
|
9
7
|
};
|
|
10
8
|
/**
|
|
11
9
|
* Merge Void's generated tsconfig fragment into SvelteKit's generated
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/cli/terminal-log-text.ts
|
|
2
|
+
const TERMINAL_CONTROL = /\u001b\[[0-?]*[ -/]*[@-~]|\u001b\][^\u0000-\u001f\u007f-\u009f]*(?:\u0007|\u001b\\)|[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g;
|
|
3
|
+
const SGR = /^\u001b\[[0-9;:]*m$/;
|
|
4
|
+
/**
|
|
5
|
+
* Make app log text safe to print to a terminal. App logs often echo request
|
|
6
|
+
* data from anonymous visitors, so escape sequences in them must not reach the
|
|
7
|
+
* terminal as commands (clipboard writes, hyperlinks, screen clears, cursor
|
|
8
|
+
* moves or carriage-return overwrites).
|
|
9
|
+
*
|
|
10
|
+
* SGR color codes, newlines and tabs are kept so ordinary colored or
|
|
11
|
+
* multi-line logs read the same. A text that keeps any SGR code ends with a
|
|
12
|
+
* reset, so styles such as conceal cannot hide the lines printed after it.
|
|
13
|
+
* Every other complete CSI or OSC sequence is removed whole, so a hyperlink
|
|
14
|
+
* shows only its visible text and a line clear leaves no stray "[K". Every
|
|
15
|
+
* other C0/C1 control character is dropped on its own; an escape sequence that
|
|
16
|
+
* is incomplete, such as an OSC with no terminator, loses only its control
|
|
17
|
+
* characters and the rest prints as plain text instead of being swallowed.
|
|
18
|
+
*
|
|
19
|
+
* Keep this module free of imports: the Cloudflare operation process is a
|
|
20
|
+
* separate bundle entry that must stay small.
|
|
21
|
+
*/
|
|
22
|
+
function sanitizeTerminalLogText(value) {
|
|
23
|
+
let keptStyle = false;
|
|
24
|
+
const text = value.replace(TERMINAL_CONTROL, (match) => {
|
|
25
|
+
if (!SGR.test(match)) return "";
|
|
26
|
+
keptStyle = true;
|
|
27
|
+
return match;
|
|
28
|
+
});
|
|
29
|
+
return keptStyle ? `${text}\u001b[0m` : text;
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { sanitizeTerminalLogText as t };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { a as join } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { n as readJournal, r as stripSqlExt } from "./collect-DiTn9yr6.mjs";
|
|
3
|
-
import { t as DESTRUCTIVE_PRAGMA } from "./plan-
|
|
3
|
+
import { i as getExecutableSql, t as DESTRUCTIVE_PRAGMA } from "./plan-BhLO2p4w.mjs";
|
|
4
4
|
import { existsSync, readdirSync } from "node:fs";
|
|
5
|
-
import { tokenizeSql } from "@void/deploy-core";
|
|
6
5
|
//#region src/migrations/validate.ts
|
|
7
6
|
/**
|
|
8
7
|
* Destructive SQL patterns that are rejected unless the migration
|
|
@@ -50,11 +49,7 @@ function hasUnboundedWrite(statement) {
|
|
|
50
49
|
* Check if a SQL migration contains destructive operations.
|
|
51
50
|
*/
|
|
52
51
|
function isDestructive(sql) {
|
|
53
|
-
|
|
54
|
-
let executable = "";
|
|
55
|
-
for (const segment of tokenizeSql(normalized)) if (segment.kind === "sql") executable += normalized.slice(segment.start, segment.end);
|
|
56
|
-
else executable += " ".repeat(segment.end - segment.start);
|
|
57
|
-
return splitExecutableStatements(executable).some((statement) => {
|
|
52
|
+
return splitExecutableStatements(getExecutableSql(sql.replace(/\r\n?/g, "\n"))).some((statement) => {
|
|
58
53
|
return DESTRUCTIVE_PATTERNS.some((pattern) => pattern.test(statement)) || hasUnboundedWrite(statement);
|
|
59
54
|
});
|
|
60
55
|
}
|
|
@@ -102,27 +97,13 @@ function listDrizzleArtifacts(migrationsDir) {
|
|
|
102
97
|
* Assert that every `.sql` file under `migrationsDir` has a matching entry
|
|
103
98
|
* in `meta/_journal.json`, and vice versa.
|
|
104
99
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* An orphan file created by hand (or by a botched scaffold/merge) gets
|
|
108
|
-
* applied to D1 without Drizzle ever acknowledging it, and a failed
|
|
109
|
-
* deploy can leave the database in a state that is impossible to recover
|
|
110
|
-
* from without manual SQL edits.
|
|
100
|
+
* The runners apply files from disk, but `drizzle-kit generate` only sees the
|
|
101
|
+
* journal, so an orphan file would reach D1 without Drizzle knowing about it.
|
|
111
102
|
*
|
|
112
|
-
* A missing journal
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* `db
|
|
116
|
-
* before this check existed, and the local/remote runners still track
|
|
117
|
-
* applied migrations by filename via `_void_migrations`. Gating those
|
|
118
|
-
* projects here would break `void deploy`, `void db migrate`, `void db
|
|
119
|
-
* reset`, and `void db status` for a valid path with no migration path
|
|
120
|
-
* forward (they cannot run `void db generate` because it requires
|
|
121
|
-
* `db/schema.ts`). We skip the check silently and let the filename-based
|
|
122
|
-
* runners take over.
|
|
123
|
-
*
|
|
124
|
-
* Throws a user-facing error when any mismatch is detected between the
|
|
125
|
-
* journal and disk. Returns silently otherwise.
|
|
103
|
+
* A missing journal (with no other drizzle-kit artifacts) is not drift:
|
|
104
|
+
* hand-written `.sql` projects without `db/schema.ts` are supported and are
|
|
105
|
+
* tracked by filename in `_void_migrations`. They cannot run
|
|
106
|
+
* `void db generate`, so the check is skipped for them.
|
|
126
107
|
*/
|
|
127
108
|
function assertJournalCoherence(migrationsDir, collected) {
|
|
128
109
|
const journal = readJournal(migrationsDir);
|
|
@@ -162,7 +143,7 @@ function assertJournalCoherence(migrationsDir, collected) {
|
|
|
162
143
|
const journalTags = new Set(journal.entries.map((e) => e.tag));
|
|
163
144
|
const collectedTags = new Set(collected.map((m) => stripSqlExt(m.name)));
|
|
164
145
|
const orphans = collected.map((m) => m.name).filter((name) => !journalTags.has(stripSqlExt(name)));
|
|
165
|
-
const missing = journal.entries.
|
|
146
|
+
const missing = journal.entries.filter((e) => !collectedTags.has(e.tag)).map((e) => `${e.tag}.sql`);
|
|
166
147
|
if (orphans.length === 0 && missing.length === 0) return;
|
|
167
148
|
const lines = ["Migration drift detected between db/migrations/ and db/migrations/meta/_journal.json."];
|
|
168
149
|
if (orphans.length > 0) {
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
//#region src/pages/validation-error.ts
|
|
2
|
-
var ValidationError = class extends Error {
|
|
3
|
-
errors;
|
|
4
|
-
constructor(errors) {
|
|
5
|
-
super("Validation failed");
|
|
6
|
-
this.name = "ValidationError";
|
|
7
|
-
this.errors = errors;
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
//#endregion
|
|
11
1
|
//#region src/pages/defer.ts
|
|
12
2
|
const DEFERRED = Symbol("deferred");
|
|
13
3
|
function defer(groupOrResolver, maybeResolver) {
|
|
@@ -46,4 +36,14 @@ function separateDeferred(props) {
|
|
|
46
36
|
};
|
|
47
37
|
}
|
|
48
38
|
//#endregion
|
|
49
|
-
|
|
39
|
+
//#region src/pages/validation-error.ts
|
|
40
|
+
var ValidationError = class extends Error {
|
|
41
|
+
errors;
|
|
42
|
+
constructor(errors) {
|
|
43
|
+
super("Validation failed");
|
|
44
|
+
this.name = "ValidationError";
|
|
45
|
+
this.errors = errors;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { separateDeferred as i, DEFERRED as n, defer as r, ValidationError as t };
|