void 0.27.0 → 1.0.3

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.
Files changed (337) hide show
  1. package/README.md +3 -1
  2. package/dist/{account-cmd-l-FM7Ioq.mjs → account-cmd-BTcUzv9L.mjs} +6 -6
  3. package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
  4. package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-AB_YYWgH.mjs} +118 -135
  5. package/dist/{application-routing-DQyUh_5S.mjs → application-routing-L7V-TFhZ.mjs} +1 -2
  6. package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
  7. package/dist/{auth-Dn2vw-SG.mjs → auth-B6iOCjKI.mjs} +23 -56
  8. package/dist/auth-Cbqi1iVX.mjs +1 -0
  9. package/dist/{auth-link-vz9Z2kmG.mjs → auth-link-DUJuvRx5.mjs} +11 -11
  10. package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
  11. package/dist/{auth-router-DvsCUVw4.mjs → auth-router-CIxiMG7i.mjs} +5 -5
  12. package/dist/base64-DVrOndmI.mjs +16 -0
  13. package/dist/{better-auth-shared-CPvWD3nG.d.mts → better-auth-shared-B74NJIus.d.mts} +8 -13
  14. package/dist/{better-auth-shared-DPpj8zxc.mjs → better-auth-shared-CMXlZG7W.mjs} +56 -68
  15. package/dist/{build-cmd-D6we0VjO.mjs → build-cmd-BkIv25PA.mjs} +6 -6
  16. package/dist/{cache-CZRdzKx1.mjs → cache-Ctzfig-W.mjs} +6 -6
  17. package/dist/{cancel-deploy-CQ3NnMvf.mjs → cancel-deploy-CD9o-SsC.mjs} +5 -5
  18. package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
  19. package/dist/{cf-access-BcIBSKqG.mjs → cf-access-CWP4avfP.mjs} +3 -7
  20. package/dist/cf-build-output-BU3hqdHu.mjs +1 -0
  21. package/dist/{cf-build-output-DjvB_872.mjs → cf-build-output-Bc8i3dzE.mjs} +2 -2
  22. package/dist/cf-user-agent-ChjQp2MU.mjs +33 -0
  23. package/dist/cli/cli.mjs +199 -312
  24. package/dist/cli/cloudflare-operation-process.mjs +41 -15
  25. package/dist/cli/env-schema-probe.d.mts +7 -44
  26. package/dist/cli/env-schema-probe.mjs +14 -80
  27. package/dist/client-B60PwCC4.mjs +1 -0
  28. package/dist/{client-DlDJuY0s.mjs → client-DM9Kcf4e.mjs} +161 -415
  29. package/dist/{cloudflare-auth-CuxfF6OA.mjs → cloudflare-auth-CqFBDo52.mjs} +12 -39
  30. package/dist/{cloudflare-cmd-lHqNlJGW.mjs → cloudflare-cmd-BIAF_BIY.mjs} +7 -6
  31. package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
  32. package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-WjwnVOJA.mjs} +4 -4
  33. package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-B42EZeJy.mjs} +26 -34
  34. package/dist/cloudflare-operations-CrSUFRzJ.mjs +1 -0
  35. package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
  36. package/dist/collect-Cae8A7Zr.mjs +1 -0
  37. package/dist/{collect-DiTn9yr6.mjs → collect-xjffdCdk.mjs} +1 -1
  38. package/dist/{config-CSa15FvD.d.mts → config-7qoq2p9v.d.mts} +2 -2
  39. package/dist/{config-CLYAosnQ.mjs → config-BEm9vRvS.mjs} +11 -5
  40. package/dist/{config-DiowPT80.mjs → config-Bx_1SpnO.mjs} +87 -177
  41. package/dist/{config-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
  42. package/dist/config-QrJWu0IX.mjs +1 -0
  43. package/dist/config-entry.d.mts +1 -1
  44. package/dist/{connect-BfPBHHm-.mjs → connect-CKtk-EZe.mjs} +9 -9
  45. package/dist/create-project-B-ewF_Af.mjs +1 -0
  46. package/dist/{create-project-BdXEFKal.mjs → create-project-yInGo72M.mjs} +8 -8
  47. package/dist/database-provider.mjs +1 -2
  48. package/dist/{db-Xs80hcaA.mjs → db-7I_gfdVq.mjs} +177 -268
  49. package/dist/db-types-Bb4WBWIs.mjs +49 -0
  50. package/dist/{delete-d2vuou3j.mjs → delete-Cy-M1u-r.mjs} +6 -6
  51. package/dist/deploy-9lgfhrXS.mjs +2 -0
  52. package/dist/deploy-BYYlnsiy.mjs +6164 -0
  53. package/dist/deploy-managed-static-Ca4TFdmx.mjs +1595 -0
  54. package/dist/deploy-transport-DWlWBe6M.mjs +180 -0
  55. package/dist/deploy.d.mts +10 -0
  56. package/dist/deploy.mjs +82 -0
  57. package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
  58. package/dist/discover-ClzFSwns.mjs +1 -0
  59. package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
  60. package/dist/dispatch-DrTTk8Xg.mjs +431 -0
  61. package/dist/{dist-D3m88sjf.mjs → dist-BVdsO7Py.mjs} +5 -6
  62. package/dist/dist-CfgIkieS.mjs +1 -0
  63. package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
  64. package/dist/{domain-BsDUBAvt.mjs → domain-CZGxPv9u.mjs} +8 -23
  65. package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
  66. package/dist/edge.mjs +1 -2
  67. package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
  68. package/dist/{email-_lGAHOhp.mjs → email-DzyNVuoU.mjs} +100 -192
  69. package/dist/email-cloudflare-DfG6UEMm.mjs +1096 -0
  70. package/dist/email-protocol-D9nTvhCp.mjs +82 -0
  71. package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
  72. package/dist/{env-DMA3cXZt.mjs → env-0jrMQJI_.mjs} +6 -14
  73. package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
  74. package/dist/{env-C74QepDE.mjs → env-Nx3yf50r.mjs} +9 -9
  75. package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
  76. package/dist/{env-raw-jZpP5n47.mjs → env-raw-D74P4ebM.mjs} +15 -21
  77. package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
  78. package/dist/env-validation-BT7z-qpQ.mjs +1 -0
  79. package/dist/env-validation-DYxjz_Wo.mjs +488 -0
  80. package/dist/{gen-DtkQhvQg.mjs → gen-CufHEf42.mjs} +132 -254
  81. package/dist/gen-sXyp5DFO.mjs +1 -0
  82. package/dist/generate-ClI89brV.mjs +1 -0
  83. package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
  84. package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
  85. package/dist/{github-cmd-DaDdBbSS.mjs → github-cmd-FU8EjFyU.mjs} +28 -72
  86. package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
  87. package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
  88. package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
  89. package/dist/{help-0bTe_lID.mjs → help-BT2hovNI.mjs} +26 -14
  90. package/dist/help-i2YGGnTH.mjs +1 -0
  91. package/dist/{inbound-PfQDLXc5.mjs → inbound-BuTfm11U.mjs} +71 -222
  92. package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
  93. package/dist/index.d.mts +2 -18
  94. package/dist/index.mjs +714 -762
  95. package/dist/{info-PYWwkWyt.mjs → info-l249eUdH.mjs} +5 -5
  96. package/dist/{init-DaBGmaXC.mjs → init-D0A6M64Q.mjs} +229 -392
  97. package/dist/isr-config-fZaJJ8t7.mjs +165 -0
  98. package/dist/{link-C6fjafep.mjs → link-WMoJFf4i.mjs} +9 -9
  99. package/dist/{list-BTFBlqKl.mjs → list-CQ2EQEHL.mjs} +7 -18
  100. package/dist/{live-CgQuTpqD.mjs → live-BcHoTDFe.mjs} +19 -17
  101. package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
  102. package/dist/load-user-env-DD5qveNU.mjs +49 -0
  103. package/dist/{local-d1-ga5O_idV.mjs → local-d1-BxvQYEFi.mjs} +6 -6
  104. package/dist/{login-GKcNUmtI.mjs → login-C2T1oVG-.mjs} +12 -12
  105. package/dist/login-XD844Xs-.mjs +1 -0
  106. package/dist/{logs-BiMSULmc.mjs → logs-DnC1d7xB.mjs} +6 -6
  107. package/dist/{migrate-NLsjBbuM.mjs → migrate-BDIprOYd.mjs} +70 -22
  108. package/dist/migrate-BRwU-blY.mjs +1 -0
  109. package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
  110. package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
  111. package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
  112. package/dist/mysql-migration-sql-BIS5vbNk.mjs +241 -0
  113. package/dist/nitro.d.mts +30 -0
  114. package/dist/nitro.mjs +88 -0
  115. package/dist/{node-DJicPvPj.mjs → node-cPadMgUO.mjs} +9 -25
  116. package/dist/{operator-args-DOBhIaIg.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
  117. package/dist/{operator-auth-BEZ_u0Cz.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
  118. package/dist/{operator-client-DbDv4vtE.mjs → operator-client-C-ROjk1I.mjs} +4 -4
  119. package/dist/operator-cmd-D6gnZsnK.mjs +1 -0
  120. package/dist/{operator-cmd-BT4hgavL.mjs → operator-cmd-DHieWtFp.mjs} +8 -8
  121. package/dist/{output-C50ag2r3.mjs → output-Ba6ZbrzY.mjs} +37 -6
  122. package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
  123. package/dist/pages/client.d.mts +1 -1
  124. package/dist/pages/client.mjs +91 -5
  125. package/dist/pages/head.mjs +1 -2
  126. package/dist/pages/index.d.mts +1 -2
  127. package/dist/pages/index.mjs +6 -6
  128. package/dist/pages/islands-plugin.mjs +5 -83
  129. package/dist/pages/prefetch.mjs +1 -2
  130. package/dist/pages/protocol.d.mts +2 -2
  131. package/dist/pages/protocol.mjs +1 -1
  132. package/dist/pages/serialize.mjs +1 -2
  133. package/dist/plan-CKX_jWnD.mjs +1 -0
  134. package/dist/platform-args-B0HeTh0C.mjs +1 -0
  135. package/dist/{platform-args-DUeXY9Om.mjs → platform-args-CaCL_1Ch.mjs} +43 -60
  136. package/dist/{platform-auth-config-CkSx3usH.mjs → platform-auth-config-Z16-I8nT.mjs} +11 -12
  137. package/dist/{platform-auth-protection-BJimB_p9.mjs → platform-auth-protection-BXwZiJSF.mjs} +37 -27
  138. package/dist/{platform-auth-recovery-BU6izFAU.mjs → platform-auth-recovery-CXjfqyOv.mjs} +9 -10
  139. package/dist/{platform-cmd-BbY1dWiM.mjs → platform-cmd-DaAOiWTl.mjs} +16 -16
  140. package/dist/platform-cmd-PT4YwMLM.mjs +1 -0
  141. package/dist/{platform-discovery-DIYz8V63.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
  142. package/dist/{platform-domain-CHVS6cV0.mjs → platform-domain-CxpvUeo0.mjs} +6 -6
  143. package/dist/{platform-lifecycle-DzCwqhFq.mjs → platform-lifecycle-DBiS0cJd.mjs} +1693 -2120
  144. package/dist/platform-lifecycle-u9pMOvxC.mjs +1 -0
  145. package/dist/{platform-management-CuuVDhyt.mjs → platform-management-DhEFdQAf.mjs} +696 -130
  146. package/dist/platform-management-DvBS83rC.mjs +1 -0
  147. package/dist/{platform-plans-config-CN-heS4q.mjs → platform-plans-config-BWn1S2Rv.mjs} +16 -12
  148. package/dist/{platform-recovery-CskSJgLh.mjs → platform-recovery-BUGOB4RC.mjs} +6 -9
  149. package/dist/{platform-registry-Cjv2Qf0r.mjs → platform-registry-B9mWX9LO.mjs} +13 -18
  150. package/dist/{platform-setup-BBxRxmFC.mjs → platform-setup-YvN9VQXV.mjs} +21 -28
  151. package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
  152. package/dist/prepare-CYT6tAzD.mjs +1 -0
  153. package/dist/{prepare-Do96654b.mjs → prepare-DEB5SeVJ.mjs} +12 -13
  154. package/dist/{prepare-Dq9hTIbo.mjs → prepare-PQCgsny0.mjs} +4 -4
  155. package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
  156. package/dist/prerender-render.d.mts +2 -0
  157. package/dist/prerender-render.mjs +1 -2
  158. package/dist/{project-cmd-DaoRrn-8.mjs → project-cmd-DVatD8Ev.mjs} +20 -20
  159. package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
  160. package/dist/{project-BAm2aB6Q.mjs → project-rqDnVsJN.mjs} +8 -4
  161. package/dist/project-slug-6cyz8E7k.mjs +1 -0
  162. package/dist/{project-team-Q_lCA7Io.mjs → project-team-DJrWEAG1.mjs} +7 -7
  163. package/dist/{project-token-BArgK9o1.mjs → project-token-CBgLBuL6.mjs} +6 -6
  164. package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
  165. package/dist/project-zdB3fs9G.mjs +1 -0
  166. package/dist/{project-zero-trust-KO9Hu2Pq.mjs → project-zero-trust-92gLtZ25.mjs} +6 -6
  167. package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
  168. package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
  169. package/dist/{provision-BfaLiWbj.mjs → provision-BnSSkiED.mjs} +119 -866
  170. package/dist/{requests-C7Oeoh5u.mjs → requests-7W1Pygt2.mjs} +5 -5
  171. package/dist/resolve-project-PnhzMtY6.mjs +1 -0
  172. package/dist/resolve-project-WpwkCB_c.mjs +48 -0
  173. package/dist/{rollback-DVAtrLAl.mjs → rollback-BcASVnwP.mjs} +8 -18
  174. package/dist/{route-types-CbtsIeFn.mjs → route-types-BZi26DVS.mjs} +9 -91
  175. package/dist/routing-assets-VkrKIbxE.mjs +139 -0
  176. package/dist/{runner-DMBKSrRk.mjs → runner-CabsQ-iM.mjs} +22 -34
  177. package/dist/runner-So9mYfcm.mjs +1 -0
  178. package/dist/runner-mysql-BhRaONkO.mjs +146 -0
  179. package/dist/runner-mysql-DWwE8jKi.mjs +1 -0
  180. package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-BRemq_GX.mjs} +3 -3
  181. package/dist/runner-pg-_Xncr3H5.mjs +1 -0
  182. package/dist/runtime/ai.mjs +23 -25
  183. package/dist/runtime/auth-client-react.mjs +1 -2
  184. package/dist/runtime/auth-client-solid.mjs +1 -2
  185. package/dist/runtime/auth-client-svelte.mjs +1 -2
  186. package/dist/runtime/auth-client-vue.mjs +1 -2
  187. package/dist/runtime/auth-client.mjs +1 -2
  188. package/dist/runtime/auth.mjs +1 -2
  189. package/dist/runtime/better-auth-mysql.d.mts +2 -5
  190. package/dist/runtime/better-auth-mysql.mjs +9 -31
  191. package/dist/runtime/better-auth-pg.d.mts +2 -5
  192. package/dist/runtime/better-auth-pg.mjs +6 -32
  193. package/dist/runtime/better-auth.d.mts +2 -4
  194. package/dist/runtime/better-auth.mjs +9 -19
  195. package/dist/runtime/db.mjs +6 -2
  196. package/dist/runtime/durable.d.mts +18 -1
  197. package/dist/runtime/durable.mjs +26 -2
  198. package/dist/runtime/email/testing.d.mts +1 -1
  199. package/dist/runtime/email/testing.mjs +9 -23
  200. package/dist/runtime/email-protocol.d.mts +12 -0
  201. package/dist/runtime/email-protocol.mjs +1 -70
  202. package/dist/runtime/email.d.mts +1 -1
  203. package/dist/runtime/email.mjs +79 -221
  204. package/dist/runtime/env-public.d.mts +1 -1
  205. package/dist/runtime/env-public.mjs +12 -38
  206. package/dist/runtime/env.d.mts +1 -12
  207. package/dist/runtime/env.mjs +1 -2
  208. package/dist/runtime/handler.d.mts +1 -1
  209. package/dist/runtime/handler.mjs +1 -1
  210. package/dist/runtime/isr.mjs +1 -1
  211. package/dist/runtime/kv.mjs +1 -1
  212. package/dist/runtime/limits.mjs +1 -2
  213. package/dist/runtime/live-client.d.mts +3 -2
  214. package/dist/runtime/live-server.d.mts +2 -1
  215. package/dist/runtime/live-server.mjs +1 -16
  216. package/dist/runtime/live.d.mts +1 -1
  217. package/dist/runtime/live.mjs +1 -2
  218. package/dist/runtime/log.d.mts +2 -1
  219. package/dist/runtime/migration-handler-mysql.d.mts +2 -2
  220. package/dist/runtime/migration-handler-mysql.mjs +39 -8
  221. package/dist/runtime/migration-handler-pg.d.mts +2 -2
  222. package/dist/runtime/migration-handler-pg.mjs +1 -1
  223. package/dist/runtime/migration-handler.d.mts +2 -2
  224. package/dist/runtime/migration-handler.mjs +1 -470
  225. package/dist/runtime/queues.mjs +1 -1
  226. package/dist/runtime/remote/binding-handler.mjs +62 -62
  227. package/dist/runtime/remote/index.mjs +16 -77
  228. package/dist/runtime/response.mjs +1 -2
  229. package/dist/runtime/route-url.mjs +1 -2
  230. package/dist/runtime/routing.d.mts +3 -5
  231. package/dist/runtime/routing.mjs +82 -218
  232. package/dist/runtime/sandbox-container.d.mts +2 -2
  233. package/dist/runtime/sandbox-container.mjs +1 -2
  234. package/dist/runtime/sandbox.d.mts +2 -2
  235. package/dist/runtime/sandbox.mjs +13 -6
  236. package/dist/runtime/seed.d.mts +2 -1
  237. package/dist/runtime/sse.mjs +1 -2
  238. package/dist/runtime/storage.mjs +1 -1
  239. package/dist/runtime/validator.d.mts +1 -1
  240. package/dist/runtime/validator.mjs +1 -2
  241. package/dist/runtime/ws-server.d.mts +4 -4
  242. package/dist/runtime/ws-server.mjs +6 -28
  243. package/dist/runtime/ws.d.mts +1 -1
  244. package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
  245. package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-a9LRUtii.mjs} +13 -2
  246. package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
  247. package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
  248. package/dist/{secret-BvtB7IjY.mjs → secret-bg73f1Ge.mjs} +63 -81
  249. package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
  250. package/dist/{skills-BgVMvQdy.mjs → skills-C_yRTg0g.mjs} +3 -3
  251. package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-Bm3ZlYgA.mjs} +39 -44
  252. package/dist/sveltekit.d.mts +2 -1
  253. package/dist/sveltekit.mjs +1 -1
  254. package/dist/validate-BQFdf0Pi.mjs +1 -0
  255. package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
  256. package/dist/version-metadata-DIrqEHQo.mjs +73 -0
  257. package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
  258. package/dist/wrapper-CwhpNWtH.mjs +663 -0
  259. package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
  260. package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
  261. package/docs/guide/ai.md +8 -2
  262. package/docs/guide/auth.md +2 -0
  263. package/docs/guide/database/mysql.md +14 -3
  264. package/docs/guide/database/postgresql.md +2 -0
  265. package/docs/guide/database.md +3 -5
  266. package/docs/guide/durable-state.md +32 -4
  267. package/docs/guide/platform/administration/access.md +4 -0
  268. package/docs/guide/platform/administration/connected-apps.md +55 -0
  269. package/docs/guide/platform/installation/credentials.md +21 -3
  270. package/docs/guide/platform/installation/domains.md +1 -1
  271. package/docs/guide/platform/installation/maintenance.md +38 -1
  272. package/docs/guide/platform/installation/prerequisites.md +6 -2
  273. package/docs/guide/platform/installation/setup.md +23 -1
  274. package/docs/guide/platform/installation/uninstall.md +6 -1
  275. package/docs/guide/quickstart.md +2 -0
  276. package/docs/guide/sandboxes.md +3 -1
  277. package/docs/guide/self-hosted-platform.md +1 -1
  278. package/docs/integrations/cloudflare.md +2 -2
  279. package/docs/integrations/frameworks/analog.md +3 -11
  280. package/docs/integrations/frameworks/nuxt.md +7 -10
  281. package/docs/integrations/nodejs-bun-deno.md +2 -0
  282. package/docs/reference/api/deploy.md +23 -0
  283. package/docs/reference/api/pages.md +2 -0
  284. package/docs/reference/api.md +3 -1
  285. package/docs/reference/cli/database.md +9 -3
  286. package/docs/reference/cli/platform-installation.md +19 -7
  287. package/docs/reference/cli/setup.md +2 -0
  288. package/docs/reference/config.md +2 -0
  289. package/package.json +39 -36
  290. package/sandbox.Dockerfile +1 -1
  291. package/skills/void/SKILL.md +2 -1
  292. package/dist/auth-LMJcNESe.mjs +0 -2
  293. package/dist/cf-build-output-H9a97vME.mjs +0 -2
  294. package/dist/cf-user-agent-lKblH3zU.mjs +0 -17
  295. package/dist/client-tso2OfcG.mjs +0 -2
  296. package/dist/cloudflare-operations-BlYLlowZ.mjs +0 -2
  297. package/dist/collect-DLyFDiKW.mjs +0 -2
  298. package/dist/config-5r-YpMC-.mjs +0 -2
  299. package/dist/config-B_ggY-IO.mjs +0 -89
  300. package/dist/config-BtSFvXZx.mjs +0 -2
  301. package/dist/config-write-AHGesphx.mjs +0 -61
  302. package/dist/create-project-qFDC45zg.mjs +0 -2
  303. package/dist/deploy-Bqe1PYBw.mjs +0 -10458
  304. package/dist/deploy-VsWsVQkw.mjs +0 -2
  305. package/dist/dev-inbox-CK-UuPob.mjs +0 -297
  306. package/dist/discover-EDUf6JJw.mjs +0 -2
  307. package/dist/dist-Bx1z6Eva.mjs +0 -2
  308. package/dist/dist-_UUlL6bg.mjs +0 -2
  309. package/dist/env-validation-CrVNjsPm.mjs +0 -2
  310. package/dist/env-validation-Dxdx_5wo.mjs +0 -951
  311. package/dist/gen-dA9hW7AV.mjs +0 -2
  312. package/dist/head-client-DzmJGN4C.mjs +0 -90
  313. package/dist/help-DfQYVfGY.mjs +0 -2
  314. package/dist/login-mx_ydhmp.mjs +0 -2
  315. package/dist/migrate-BHp07yJE.mjs +0 -2
  316. package/dist/operator-cmd-CwBB-1yb.mjs +0 -2
  317. package/dist/pages/head-client.d.mts +0 -13
  318. package/dist/pages/head-client.mjs +0 -2
  319. package/dist/plan-CH2G51je.mjs +0 -2
  320. package/dist/platform-args-D4E1PjVw.mjs +0 -2
  321. package/dist/platform-cmd-BbmJiq5O.mjs +0 -2
  322. package/dist/platform-lifecycle-ByAlpkhV.mjs +0 -2
  323. package/dist/platform-management-CBOT4BSM.mjs +0 -2
  324. package/dist/prepare-DRUV-g3X.mjs +0 -2
  325. package/dist/project-DedqCp59.mjs +0 -2
  326. package/dist/project-slug-DofjTFd-.mjs +0 -2
  327. package/dist/provision-Wu9ZBk9L.mjs +0 -2
  328. package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
  329. package/dist/resolve-project-CP8rZs_p.mjs +0 -28
  330. package/dist/runner-9wjsSZx-.mjs +0 -2
  331. package/dist/runner-mysql-CEzKtmFb.mjs +0 -54
  332. package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
  333. package/dist/runner-pg-BGYRFdRp.mjs +0 -2
  334. package/dist/runtime/env-helpers.d.mts +0 -2
  335. package/dist/runtime/env-helpers.mjs +0 -2
  336. package/dist/validate-BJr9LfXy.mjs +0 -2
  337. package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
@@ -26,7 +26,6 @@ Void provides the local Cloudflare binding runtime. `nitro-cloudflare-dev` creat
26
26
  ### 3. Configure `vite.config.ts`
27
27
 
28
28
  ```ts
29
- import { resolve } from 'node:path';
30
29
  import analog from '@analogjs/platform';
31
30
  import { defineConfig } from 'vite';
32
31
  import { voidPlugin } from 'void';
@@ -41,12 +40,7 @@ export default defineConfig({
41
40
  nitro: {
42
41
  preset: 'cloudflare-module',
43
42
  cloudflareDev: { configPath: './.void-wrangler.jsonc' },
44
- modules: ['nitro-cloudflare-dev'],
45
- alias: {
46
- // Nitro has its own bundler that doesn't use Vite aliases.
47
- // Duplicate @schema here so Nitro can resolve it.
48
- '@schema': resolve(__dirname, 'db/schema.ts'),
49
- },
43
+ modules: ['nitro-cloudflare-dev', 'void/nitro'],
50
44
  },
51
45
  }),
52
46
  voidPlugin(),
@@ -54,6 +48,8 @@ export default defineConfig({
54
48
  });
55
49
  ```
56
50
 
51
+ The `void/nitro` module gives Analog API routes and page server loads your app's `void/db` and `@schema`.
52
+
57
53
  ### 4. Create `void.config.ts`
58
54
 
59
55
  Void generates the Cloudflare config used by Analog's development runtime:
@@ -98,10 +94,6 @@ export const load = async ({ event }: PageServerLoad) => {
98
94
  };
99
95
  ```
100
96
 
101
- ::: warning ⚠️ Analog limitation
102
- Use `db.select().from(table)` for database queries in Analog. The `db.query.*` relational API is not available.
103
- :::
104
-
105
97
  ### Other resources
106
98
 
107
99
  Use [KV](../../guide/kv.md), [object storage](../../guide/storage.md), and [AI](../../guide/ai.md) from server-side code with the same imports as a Void app. Add [cron jobs](../../guide/jobs.md) in `crons/` and [queue consumers](../../guide/queues.md) in `queues/`.
@@ -30,23 +30,24 @@ import { resolve } from 'node:path';
30
30
  import { voidPlugin } from 'void';
31
31
 
32
32
  export default defineNuxtConfig({
33
+ alias: {
34
+ '@schema': resolve(import.meta.dirname, 'db/schema.ts'),
35
+ },
33
36
  nitro: {
34
37
  preset: 'cloudflare-module',
35
- cloudflareDev: { configPath: './.void-wrangler.jsonc' },
38
+ modules: ['void/nitro'],
39
+ cloudflare: { dev: { configPath: './.void-wrangler.jsonc' } },
36
40
  // Required for Nuxt 4.6.0 on Windows.
37
41
  externals: {
38
42
  inline: [/[\\/]node_modules[\\/]nuxt[\\/]dist[\\/]/],
39
43
  },
40
- alias: {
41
- // Nitro has its own bundler that doesn't use Vite aliases.
42
- // Duplicate @schema here so Nitro can resolve it.
43
- '@schema': resolve(import.meta.dirname, 'db/schema.ts'),
44
- },
45
44
  },
46
45
  vite: { plugins: [voidPlugin()] },
47
46
  });
48
47
  ```
49
48
 
49
+ The `void/nitro` module gives Nuxt server routes your app's `void/db` and `@schema`. The top-level `alias` lets `nuxi typecheck` resolve `@schema`, because Nuxt also checks server routes with the app's types. `cloudflare.dev` gives the development server the bindings from Void's generated Cloudflare config; Nuxt runs it in development when `compatibilityDate` is `2025-07-15` or later.
50
+
50
51
  ### 4. Create `void.config.ts`
51
52
 
52
53
  Void generates the Cloudflare config used by Nuxt's development runtime:
@@ -88,10 +89,6 @@ export default defineEventHandler(async () => {
88
89
  });
89
90
  ```
90
91
 
91
- ::: warning ⚠️ Nuxt limitation
92
- Use `db.select().from(table)` for database queries in Nuxt. The `db.query.*` relational API is not available.
93
- :::
94
-
95
92
  ### Other resources
96
93
 
97
94
  Use [KV](../../guide/kv.md), [object storage](../../guide/storage.md), and [AI](../../guide/ai.md) from server-side code with the same imports as a Void app. Add [cron jobs](../../guide/jobs.md) in `crons/` and [queue consumers](../../guide/queues.md) in `queues/`.
@@ -80,6 +80,8 @@ dist/
80
80
 
81
81
  `vite preview` also uses `app.js` to serve your built app locally.
82
82
 
83
+ Installed packages that depend on `void` are bundled into `dist/ssr`. If one of their dependencies uses a native addon or reads files next to its own code, add that dependency, in the version the package uses, to your app's `dependencies`. The build then leaves it to Node.
84
+
83
85
  ## What Works
84
86
 
85
87
  These Void features work identically across all targets:
@@ -0,0 +1,23 @@
1
+ # Deployment artifacts
2
+
3
+ Use `void/deploy` from Node.js to prepare a built Void app for a managed platform deployment without platform credentials.
4
+
5
+ Build the app in managed mode inside its isolated environment:
6
+
7
+ ```sh
8
+ VOID_DEPLOY_BUILD=1 VOID_DEPLOY_PROJECT_ID=artifact npm run build
9
+ ```
10
+
11
+ These values select a platform-compatible build. `artifact` is a build marker, not an existing project ID or a credential; the target project is selected during publish approval.
12
+
13
+ ```ts
14
+ import { prepareDeployArtifact } from 'void/deploy';
15
+
16
+ const { artifact, assets } = await prepareDeployArtifact('/path/to/app');
17
+ ```
18
+
19
+ `artifact` contains the deployment manifest, content-addressed asset metadata, and base64 Worker modules. `assets` maps asset URL paths to base64 bytes. Keep this result immutable while requesting [publish approval](/guide/platform/administration/connected-apps).
20
+
21
+ Preparation packages existing build output; it does not build, contact a platform, provision resources, or deploy. It supports Void Cloudflare Worker builds. Node targets, static output, remote data, deploy-time prerendering, Sandbox, and Live resources require the normal `void deploy` workflow instead.
22
+
23
+ Run preparation inside the same isolated environment as the app build. App configuration and build plugins execute project code; keep platform credentials on the publishing server.
@@ -218,6 +218,8 @@ Imported from `"@void/solid"`.
218
218
 
219
219
  Solid `Link` GET `data` is merged into the rendered `href` query string. Primitive values are serialized with `String(value)`, arrays become repeated keys, `null` and `undefined` are omitted, and nested objects throw. `prefetch` and `reloadDocument` are GET-only and throw for mutation links.
220
220
 
221
+ Solid re-creates the page on GET navigation and whenever the route or its params change, so `useForm()` picks up the destination record's URL and defaults; layouts persist. Within the same record, back/forward, mutations, and `router.refresh()` keep the page and update its props in place, as do resolved deferred props, so read props inside JSX or memos instead of copying them in the component body. Set `preserveState` explicitly to override the default for navigation within the same record.
222
+
221
223
  ## Markdown Package {#markdown-package}
222
224
 
223
225
  The optional `@void/md` package adds Markdown pages to Pages Routing. Install it alongside a Pages adapter and add `voidMarkdown()` to your Vite plugins.
@@ -25,6 +25,7 @@ Use this reference to find public imports, signatures, and return types. For set
25
25
  | [Durable State and WebSockets](./api/durable.md) | Persistent objects and typed connections. |
26
26
  | [Database and seeding](./api/database.md) | Queries, operators, and seed scripts. |
27
27
  | [KV, storage, AI, and logging](./api/resources.md) | Resource clients, cache revalidation, and logs. |
28
+ | [Deployment artifacts](./api/deploy.md) | Package built apps for managed deployment. |
28
29
  | [Types](./api/types.md) | Handler context, route types, and head metadata. |
29
30
  | [Environment variables](./api/env.md) | Validated environment values and binding types. |
30
31
  | [Pages adapters](./api/pages.md) | React, Vue, Svelte, Solid, and Markdown. |
@@ -41,7 +42,7 @@ Import Void's app-facing APIs from these paths:
41
42
  | `void/client` | `fetch`, `fetchStream`, `FetchError`, `auth`, `createAuthClient`, `AuthUser`, `AuthSession`, `AuthState` |
42
43
  | `void/client/{framework}` | Same as `void/client`, with framework-specific Better Auth clients for `react`, `vue`, `svelte`, and `solid` |
43
44
  | `void/ws` | `defineRoom`, `defineWebSocket`, `connect`, WebSocket context and connection types |
44
- | `void/durable` | `defineDurableState`, typed state/RPC/context/migration types |
45
+ | `void/durable` | `defineDurableState`, `defineDurableObject`, typed state/RPC/context/migration types |
45
46
  | `void/sse` | `eventStream`, `formatSse`, `formatSseText`, `getLastEventId`, `SseStreamClosedError`, SSE message and stream types |
46
47
  | `void/sse/client` | `connectEventStream`, browser `EventSource` wrapper types |
47
48
  | `void/live` | `defineLiveStream`, SSE topic fanout runtime types. Server-only. |
@@ -67,4 +68,5 @@ Import Void's app-facing APIs from these paths:
67
68
  | `void/queues` | `queues` proxy for sending messages to typed queues |
68
69
  | `void/sandbox` | `getSandbox`, `sandbox`, `SandboxLimitError`, `SandboxUnavailableError`, and the SDK 1.0 file, backup, and mount helpers. `getSandbox(id)` resolves a client. Commands, files, port requests, and process completion return promises; limits reject with `SandboxLimitError`, which extends `UsageLimit`. Container state lasts until inactivity (default ten minutes), a crash, or a restart. See [Sandboxes](../guide/sandboxes.md) for the API and deployment requirements. |
69
70
  | `void/env` | `defineEnv`, `env`, schema helpers (`string`, `number`, `boolean`, `url`, `email`, `oneOf`, `json`), and global Cloudflare env types |
71
+ | `void/nitro` | Nitro module for Nuxt and Analog. Add `'void/nitro'` to the Nitro `modules` so server routes get the app's `void/db` and `@schema` |
70
72
  | `void/sveltekit` | SvelteKit integration helpers: `withVoidTSConfig()` and `mergeVoidSvelteKitTsconfig()` |
@@ -24,15 +24,21 @@ Show migration status. Displays which migrations are applied or pending locally,
24
24
 
25
25
  ## `void db reset` {#void-db-reset}
26
26
 
27
- Drop the development database and re-apply all migrations. D1 resets the local database; PostgreSQL and MySQL drop all tables in the `DATABASE_URL` database from `.env`. Does not affect the deployed database.
27
+ ```
28
+ void db reset [--yes]
29
+ ```
30
+
31
+ Drop the development database and re-apply all migrations. D1 resets the local database; PostgreSQL and MySQL drop all tables in the `DATABASE_URL` database from `.env`.
32
+
33
+ When that `DATABASE_URL` points to a host other than `localhost`, Void names the database and asks before dropping its tables. Pass `--yes` to skip the prompt in scripts and CI; without a terminal, the command stops unless `--yes` is set. If `.env` uses the same URL as your deployment (for example after `void db connect`), reset drops the deployed tables.
28
34
 
29
35
  ## `void db seed` {#void-db-seed}
30
36
 
31
37
  ```
32
- void db seed [--file <path>]
38
+ void db seed [--file <path>] [--yes]
33
39
  ```
34
40
 
35
- Reset the local database, re-apply all migrations, then execute a seed file.
41
+ Reset the local database, re-apply all migrations, then execute a seed file. The reset works like `void db reset`, including the prompt and `--yes`.
36
42
 
37
43
  If `--file` is omitted, Void looks for default seed files in this order: `db/seed.ts`, `db/seed.mts`, `db/seed.js`, `db/seed.mjs`, `db/seed.sql`.
38
44
 
@@ -40,7 +40,7 @@ The installed platform needs a separate runtime token to provision resources for
40
40
 
41
41
  To enable email during install or upgrade, set both `VOID_EMAIL_SENDER_DOMAIN` and `VOID_EMAIL_SHARED_ZONE_ID`. Void records the pair for later upgrades; supplying only one is an error.
42
42
 
43
- Use `--dashboard-url https://dash.example.com` when deploying the optional user
43
+ Use `--dashboard-url `[`https://dash.example.com`](https://dash.example.com) when deploying the optional user
44
44
  dashboard separately. The URL must be an HTTPS origin without credentials, a
45
45
  path, query, or fragment. Void permits that origin's login callbacks and saves
46
46
  it for later maintenance; it does not deploy a dashboard Worker. Omission keeps
@@ -58,11 +58,15 @@ authentication file. Upgrades preserve administrator settings.
58
58
 
59
59
  New resources use `void-<name>-<role>` names; choose an unused installation name. The installer opens setup pages for missing credentials and reuses values already supplied.
60
60
 
61
- During Access setup, choose existing company policies or **Create new** for manual
62
- setup instructions and an account dashboard link. After you save the policy and
63
- confirm completion, Void reloads the list so you can select it and continue in the
64
- same run. **Refresh list** reloads policies created in another window. Your
65
- identity-provider choice and still-available policy selections are retained.
61
+ During Access setup, choose existing company policies or **Create in Cloudflare**
62
+ for manual setup instructions and an account dashboard link. After you save the
63
+ policy and confirm completion, Void reloads the list so you can select it and
64
+ continue in the same run. When Void creates the Access applications, **Allow my
65
+ company’s email domain** creates an Allow policy for the domains you enter and
66
+ selects it. **Refresh list** reloads policies created in another window. Your
67
+ identity-provider choice and still-available policy selections are retained. If a
68
+ selected policy does not restrict sign-in to company identities, Void explains why
69
+ and asks again.
66
70
 
67
71
  Installation progress and partial credentials are saved encrypted locally. Rerun the installer to continue unfinished setup, or pass `--resume --name <id>`. Use lifecycle commands for completed installations.
68
72
 
@@ -98,7 +102,7 @@ Use these commands to recover, update, pause, or remove an installation:
98
102
  void platform discover [--account <id>] [--installation <id-or-name>]
99
103
  void platform upgrade [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
100
104
  void platform rollback [id] --runtime <earlier-path> [--from-runtime <current-path>] [--plan] [--yes]
101
- void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--plan] [--yes]
105
+ void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--auth-config <path>] [--plan] [--yes]
102
106
  void platform disable [id] [--plan] [--yes]
103
107
  void platform enable [id] [--runtime <path>] [--plan] [--yes]
104
108
  void platform uninstall [id] [--plan] [--purge-data | --purge-resources] [--keep-zone] [--yes]
@@ -113,6 +117,12 @@ use `repair --dashboard-url <origin>` or `upgrade --dashboard-url <origin>`.
113
117
  Preview with `--plan` first. Existing Access protection must cover the configured
114
118
  dashboard origin before maintenance can proceed. See [Optional Dashboard](../../guide/platform/installation/domains.md#optional-dashboard).
115
119
 
120
+ While first administrator setup is pending, `repair --auth-config <path>` replaces
121
+ the login settings from a file in the install format and prints a new setup code.
122
+ Interactive repair offers the same change with the saved values filled in. Login
123
+ methods and Access protection stay as installed. Run it on the computer that
124
+ installed the platform. See [First administrator sign-in fails](../../guide/platform/installation/maintenance.md#first-administrator-sign-in-fails).
125
+
116
126
  After discovery on another machine, set `VOID_PLATFORM_DATABASE_URL`. See [Manage an installation from another machine](../../guide/platform/installation/maintenance.md#manage-an-installation-from-another-machine) for the secrets needed to recreate a missing Worker.
117
127
 
118
128
  | Command | Behavior |
@@ -137,6 +147,8 @@ An upgrade completes after the new Workers pass health checks. If rollout fails,
137
147
 
138
148
  `platform rollback` restores a compatible earlier runtime without reversing database migrations. Pass its files with `--runtime`; if the installed version is custom, also supply that version with `--from-runtime`. Void refuses incompatible targets.
139
149
 
150
+ If project Zero Trust is on and no platform user exists yet, uninstall turns it off and deletes its Access applications first. Run it on the computer that installed the platform.
151
+
140
152
  Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are retained for manual review.
141
153
 
142
154
  `--purge-resources` includes `--purge-data` and also deletes every other resource the installation created, including Workers, Queues, R2, AI Gateway, the platform DNS record, routes, custom domains, and installer-created Access resources. It removes only the Email Routing rules that send mail to the platform email gateway, and keeps zones, adopted resources, external PostgreSQL, other Email Routing settings, and API tokens. A route, custom domain, DNS record, or Access resource that no longer matches the installation's record is kept and listed. It refuses before any change while projects remain or resource reads are denied. Use the Edit permissions listed by `--plan`; read checks cannot verify them, so a denied deletion can stop uninstall after changes have begun. Rerun the same command to continue after an interruption, or after a plain or `--purge-data` uninstall stopped.
@@ -33,6 +33,8 @@ void init [--tsconfig] [--github] [--git | --no-git]
33
33
 
34
34
  Set up a new or existing Void project. In an empty directory, choose Vite+ or Vite, a framework, and a D1, PostgreSQL, MySQL, or Static Pages starter.
35
35
 
36
+ Vite+ projects install dependencies through `vp install`; no global Vite+ installation is required. Void preserves existing package-manager versions and lockfiles. New Vite+ projects without a package-manager configuration use pnpm without pinning a version.
37
+
36
38
  In an existing app, Void adds missing dependencies and scripts and updates the Vite config. If it cannot edit your config, it prints the snippet to add.
37
39
 
38
40
  The wizard also sets up TypeScript, agent instructions, environment declarations, and a deployment target. Choose Cloudflare, a Void platform, or skip deployment setup. If you skip sign-in, run `void connect` when you're ready. See [Quick Start](../../guide/quickstart.md).
@@ -297,6 +297,8 @@ Curated Cloudflare Workers configuration. `void init` pins `compatibility_date`
297
297
 
298
298
  `worker.vars` values must be strings. Root `.env` values override them during local development only. Production builds do not load `.env`, and reject any `worker.vars` name declared as a server key in `env.ts`. Use `void secret put` for production server values.
299
299
 
300
+ Managed deployments include `worker.vars` as plain-text bindings. A remote secret with the same name takes precedence. To use the configured variable instead, remove that remote secret and deploy again. Secret deletion changes the running Worker immediately, so plan this migration during a maintenance window.
301
+
300
302
  `worker.limits.cpu_ms` sets the CPU time limit per request, from 1 to 300000 ms. On a Void platform, deploy fails if the limit exceeds the account plan; lower it in `void.config.ts` before retrying. Rollback instead caps the old limit at the current plan ceiling. On direct deploys, [Cloudflare enforces the value](https://developers.cloudflare.com/workers/platform/limits/#cpu-time): Workers Free allows up to 10 ms and Workers Paid up to 300000 ms per request.
301
303
 
302
304
  ```json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "void",
3
- "version": "0.27.0",
3
+ "version": "1.0.3",
4
4
  "description": "Full-stack framework and deployment CLI for Cloudflare Workers, powered by Vite.",
5
5
  "homepage": "https://void.cloud",
6
6
  "bugs": {
@@ -26,23 +26,15 @@
26
26
  ],
27
27
  "type": "module",
28
28
  "imports": {
29
- "#self": "./dist/index.mjs",
30
29
  "#self/_env": "./dist/runtime/env.mjs",
31
30
  "#self/email": "./dist/runtime/email.mjs",
32
31
  "#self/env": "./dist/runtime/env-public.mjs",
33
32
  "#self/client": "./dist/runtime/client.mjs",
34
33
  "#self/handler": "./dist/runtime/handler.mjs",
35
- "#self/pages-head": "./dist/pages/head.mjs",
36
- "#self/pages-protocol": "./dist/pages/protocol.mjs",
37
34
  "#self/queues": "./dist/runtime/queues.mjs",
38
35
  "#self/remote": "./dist/runtime/remote/index.mjs",
39
36
  "#self/remote/binding-handler": "./dist/runtime/remote/binding-handler.mjs",
40
- "#self/response": "./dist/runtime/response.mjs",
41
37
  "#self/sandbox": "./dist/runtime/sandbox.mjs",
42
- "#self/sse": "./dist/runtime/sse.mjs",
43
- "#self/sse/client": "./dist/runtime/sse-client.mjs",
44
- "#self/live": "./dist/runtime/live.mjs",
45
- "#self/live/client": "./dist/runtime/live-client.mjs",
46
38
  "#self/runtime/live-server": "./dist/runtime/live-server.mjs",
47
39
  "#self/runtime/fetch": "./dist/runtime/fetch.mjs",
48
40
  "#self/runtime/fetch-stream": "./dist/runtime/fetch-stream.mjs",
@@ -98,6 +90,11 @@
98
90
  "./routes": {
99
91
  "types": "./dist/routes-stub.d.mts"
100
92
  },
93
+ "./nitro": {
94
+ "types": "./dist/nitro.d.mts",
95
+ "import": "./dist/nitro.mjs",
96
+ "require": "./dist/nitro.mjs"
97
+ },
101
98
  "./sveltekit": {
102
99
  "types": "./dist/sveltekit.d.mts",
103
100
  "import": "./dist/sveltekit.mjs",
@@ -335,29 +332,33 @@
335
332
  "types": "./dist/runtime/limits.d.mts",
336
333
  "import": "./dist/runtime/limits.mjs",
337
334
  "require": "./dist/runtime/limits.mjs"
335
+ },
336
+ "./deploy": {
337
+ "types": "./dist/deploy.d.mts",
338
+ "import": "./dist/deploy.mjs"
338
339
  }
339
340
  },
340
341
  "dependencies": {
341
- "@cloudflare/build-output-utils": "^0.9.0",
342
- "@cloudflare/codemods": "^0.4.2",
343
- "@cloudflare/config": "^0.24.1",
344
- "@cloudflare/sandbox": "1.0.0",
345
- "@cloudflare/vite-plugin": "^1.63.1",
346
- "@cloudflare/workers-auth": "^0.13.1",
347
- "@cloudflare/workers-types": "^5.20261009.1",
348
- "@napi-rs/keyring": "^2.1.0",
349
- "@void/deploy-cloudflare": "0.27.0",
350
- "@void/deploy-core": "0.27.0",
351
- "@void/edge": "0.27.0",
352
- "@void/isr": "0.27.0",
353
- "@void/platform": "0.27.0",
342
+ "@cloudflare/build-output-utils": "^0.9.2",
343
+ "@cloudflare/codemods": "^0.5.0",
344
+ "@cloudflare/config": "^0.26.0",
345
+ "@cloudflare/sandbox": "^1.0.1",
346
+ "@cloudflare/vite-plugin": "^1.64.0",
347
+ "@cloudflare/workers-auth": "^0.14.0",
348
+ "@cloudflare/workers-types": "^5.20261014.1",
349
+ "@napi-rs/keyring": "^2.1.1",
350
+ "@void/deploy-cloudflare": "1.0.3",
351
+ "@void/deploy-core": "1.0.3",
352
+ "@void/edge": "1.0.3",
353
+ "@void/isr": "1.0.3",
354
+ "@void/platform": "1.0.3",
354
355
  "better-auth": "^1.7.7",
355
356
  "better-sqlite3": "^13.0.3",
356
357
  "blake3-jit": "^1.1.0",
357
- "cf": "^1.0.0-beta.14",
358
+ "cf": "^1.0.0-beta.17",
358
359
  "drizzle-arktype": "^0.1.3",
359
360
  "drizzle-kit": "^0.31.11",
360
- "drizzle-orm": "^0.45.3",
361
+ "drizzle-orm": "^0.45.4",
361
362
  "drizzle-valibot": "^0.4.2",
362
363
  "drizzle-zod": "^0.8.3",
363
364
  "email-validator": "^2.0.4",
@@ -365,22 +366,24 @@
365
366
  "ignore": "^7.0.12",
366
367
  "jiti": "^2.7.0",
367
368
  "jsonc-parser": "^3.3.1",
368
- "mime": "^4.1.0",
369
- "miniflare": "5.20261006.1-alpha",
369
+ "mime": "^4.1.1",
370
+ "miniflare": "5.20261012.0-beta",
370
371
  "minimatch": "^10.2.6",
371
- "mysql2": "^3.24.5",
372
+ "mysql2": "^3.24.6",
372
373
  "pg": "^8.23.1",
373
374
  "postal-mime": "^4.0.5",
374
- "proper-lockfile": "^4.1.2"
375
+ "proper-lockfile": "^4.1.2",
376
+ "terminal-link": "^5.0.0",
377
+ "yaml": "^2.9.1"
375
378
  },
376
379
  "devDependencies": {
377
- "@electric-sql/pglite": "0.5.8",
380
+ "@electric-sql/pglite": "0.5.9",
378
381
  "@types/better-sqlite3": "^9.6.0",
379
- "@types/node": "^26.6.4",
382
+ "@types/node": "^26.6.5",
380
383
  "@types/pg": "^8.23.1",
381
384
  "@types/proper-lockfile": "^4.1.4",
382
- "@voidzero-dev/vite-plus-prompts": "1.1.0",
383
- "arktype": "^2.2.7",
385
+ "@voidzero-dev/vite-plus-prompts": "1.2.0",
386
+ "arktype": "^2.2.8",
384
387
  "ci-info": "^4.4.0",
385
388
  "estree-walker": "^3.0.3",
386
389
  "fast-wrap-ansi": "^0.2.2",
@@ -392,12 +395,12 @@
392
395
  "tinyglobby": "^0.2.17",
393
396
  "typescript": "7.0.2",
394
397
  "valibot": "^1.5.0",
395
- "vite": "npm:@voidzero-dev/vite-plus-core@1.1.0",
396
- "vite-plus": "1.1.0",
397
- "zod": "^4.6.5"
398
+ "vite": "npm:@voidzero-dev/vite-plus-core@1.2.0",
399
+ "vite-plus": "1.2.0",
400
+ "zod": "^4.6.7"
398
401
  },
399
402
  "peerDependencies": {
400
- "@void/md": "0.27.0",
403
+ "@void/md": "1.0.3",
401
404
  "arktype": ">=2.0.0",
402
405
  "valibot": ">=1.0.0-beta.7",
403
406
  "vite": "^8.0.0",
@@ -1,4 +1,4 @@
1
1
  FROM node:26.10.0-trixie-slim
2
- COPY --from=docker.io/cloudflare/sandbox:1.0.0 /usr/local/bin/sandbox-shim /usr/local/bin/sandbox-shim
2
+ COPY --from=docker.io/cloudflare/sandbox:1.0.1 /usr/local/bin/sandbox-shim /usr/local/bin/sandbox-shim
3
3
  WORKDIR /workspace
4
4
  CMD ["sleep", "infinity"]
@@ -51,6 +51,7 @@ the app's existing saved destination, including when the target project is new.
51
51
  | SSR and caching | `docs/guide/ssr.md`, `docs/guide/edge/*.md` |
52
52
  | Rewrites, redirects, fallbacks | `docs/guide/edge/rewrites.md`, `docs/guide/edge/redirects.md`, `docs/reference/config.md` |
53
53
  | Static site generation | `docs/guide/ssg.md` |
54
+ | Connected apps and artifact preparation | `docs/guide/platform/administration/connected-apps.md`, `docs/reference/api/deploy.md` |
54
55
  | Deployment and CI | `docs/guide/deployment.md`, `docs/reference/cli/deploy.md` |
55
56
  | Install or maintain a company platform | `docs/guide/self-hosted-platform.md`, `docs/reference/cli/platform-installation.md` |
56
57
  | Develop or deploy a platform fork | `docs/guide/platform-development.md`, `docs/guide/self-hosted-platform.md` |
@@ -79,7 +80,7 @@ the app's existing saved destination, including when the target project is new.
79
80
  - Read the relevant guide before changing configuration, persistent resources,
80
81
  authentication, or deployment workflows. The guides define current behavior;
81
82
  avoid copying a second set of instructions into this skill.
82
- - Before moving deployed Durable State or WebSocket definitions, read their
83
+ - Before moving deployed Durable State, native Durable Object, or WebSocket definitions, read their
83
84
  guides and use `void info` to preserve resource names and instance keys.
84
85
  - Declare application environment keys in `env.ts` and access them through
85
86
  `void/env`; follow `docs/guide/env-vars.md` for local and production values.
@@ -1,2 +0,0 @@
1
- import { a as getApiUrl, m as runPlatformLogin, s as getSiteDomain } from "./auth-Dn2vw-SG.mjs";
2
- export { getApiUrl, getSiteDomain, runPlatformLogin };
@@ -1,2 +0,0 @@
1
- import { t as prepareCfBuildOutput } from "./cf-build-output-DjvB_872.mjs";
2
- export { prepareCfBuildOutput };
@@ -1,17 +0,0 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
3
- import { readFileSync } from "node:fs";
4
- //#region src/cli/cf-user-agent.ts
5
- let voidUserAgent;
6
- let cfCliVersion;
7
- function getVoidUserAgent() {
8
- if (voidUserAgent === void 0) voidUserAgent = `void/${JSON.parse(readFileSync(join(getPackageDir(), "package.json"), "utf8")).version}`;
9
- return voidUserAgent;
10
- }
11
- /** cf prepends `cf-cli/` to CLI_VERSION for both API requests and uploads. */
12
- function getCfCliVersion() {
13
- if (cfCliVersion === void 0) cfCliVersion = `${JSON.parse(readFileSync(new URL(import.meta.resolve("cf/package.json")), "utf8")).version} ${getVoidUserAgent()}`;
14
- return cfCliVersion;
15
- }
16
- //#endregion
17
- export { getVoidUserAgent as n, getCfCliVersion as t };
@@ -1,2 +0,0 @@
1
- import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
2
- export { PlatformClient };
@@ -1,2 +0,0 @@
1
- import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-CwI1bChl.mjs";
2
- export { activateCloudflareExistingVersion, applyCloudflareD1Migrations, changeCloudflareDomain, deleteCloudflareSecret, executeCloudflareD1Sql, listCloudflareDomains, listCloudflareSecrets, putCloudflareSecret, readCloudflareD1Migrations, readCloudflareWorkerStatus, resolveCloudflareD1Context, resolveCloudflareOperationContext, syncCloudflareSecrets, tailCloudflareWorker };
@@ -1,2 +0,0 @@
1
- import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
2
- export { collectMigrations };
@@ -1,2 +0,0 @@
1
- import { m as readConfig, u as getDatabaseDialect } from "./config-DiowPT80.mjs";
2
- export { getDatabaseDialect, readConfig };
@@ -1,89 +0,0 @@
1
- import { a as join, i as isAbsolute } from "./dist-BVqXeR_h.mjs";
2
- import { fileURLToPath } from "node:url";
3
- import { isSandboxRegistryImage } from "@void/deploy-core";
4
- //#region src/sandbox/config.ts
5
- const DEFAULT_SANDBOX_BINDING = "SANDBOX";
6
- const DEFAULT_SANDBOX_CLASS_NAME = "SandboxV1";
7
- const DEFAULT_SANDBOX_CONTAINER_NAME = "void-sandbox-v1";
8
- const SANDBOX_MIGRATION_TAG = "void-sandbox-v2";
9
- function isSandboxEnabled(config) {
10
- return config.sandbox !== void 0 && config.sandbox !== false;
11
- }
12
- function getDefaultSandboxImage() {
13
- return fileURLToPath(new URL("../../sandbox.Dockerfile", import.meta.resolve("void/sandbox")));
14
- }
15
- function getDefaultSandboxPlatformImage() {
16
- return "cloudflare/debian-trixie";
17
- }
18
- function isLocalSandboxImage(image) {
19
- return isAbsolute(image) || image.startsWith("./") || image.startsWith("../") || image.toLowerCase().includes("dockerfile");
20
- }
21
- function requiresSandboxPlatformImage(config) {
22
- if (typeof config.sandbox !== "object" || config.sandbox === null) return false;
23
- return typeof config.sandbox.image === "string" && isLocalSandboxImage(config.sandbox.image) && config.sandbox.platformImage === void 0;
24
- }
25
- function resolveSandboxConfig(config, root = process.cwd()) {
26
- const raw = typeof config.sandbox === "object" ? config.sandbox : {};
27
- const image = raw.image ?? getDefaultSandboxImage();
28
- const imageBuildContext = raw.imageBuildContext;
29
- const platformImage = raw.platformImage ?? (raw.image && !isLocalSandboxImage(raw.image) ? raw.image : getDefaultSandboxPlatformImage());
30
- if (!isLocalSandboxImage(image) && !isSandboxRegistryImage(image)) throw new Error("sandbox.image must be a Dockerfile or a digest-pinned Cloudflare registry image (registry.cloudflare.com/<account>/<image>@sha256:<digest>).");
31
- if (platformImage !== getDefaultSandboxPlatformImage() && !isSandboxRegistryImage(platformImage)) throw new Error("sandbox.platformImage must be a digest-pinned Cloudflare registry image (registry.cloudflare.com/<account>/<image>@sha256:<digest>).");
32
- return {
33
- binding: raw.binding ?? "SANDBOX",
34
- className: raw.className ?? "SandboxV1",
35
- containerName: raw.containerName ?? DEFAULT_SANDBOX_CONTAINER_NAME,
36
- image: resolveSandboxImage(image, root),
37
- platformImage,
38
- ...imageBuildContext && { imageBuildContext: isAbsolute(imageBuildContext) ? imageBuildContext : join(root, imageBuildContext) },
39
- ...raw.instanceType && { instanceType: raw.instanceType }
40
- };
41
- }
42
- function resolveSandboxImage(image, root) {
43
- if (!isLocalSandboxImage(image) || isAbsolute(image)) return image;
44
- return join(root, image);
45
- }
46
- function sandboxContainerConfig(sandbox) {
47
- return {
48
- name: sandbox.containerName,
49
- class_name: sandbox.className,
50
- scheduling_policy: "durable_object",
51
- images: { default: isLocalSandboxImage(sandbox.image) ? {
52
- dockerfile: sandbox.image,
53
- ...sandbox.imageBuildContext && { build_context: sandbox.imageBuildContext }
54
- } : { image: sandbox.image } }
55
- };
56
- }
57
- /** Resolve the final local storage kind without recreating a renamed or deleted class. */
58
- function resolveSandboxMigrationStorage(migrations, className) {
59
- const storage = /* @__PURE__ */ new Map();
60
- for (const migration of migrations) {
61
- for (const name of migration.new_classes ?? []) storage.set(name, "legacy-kv");
62
- for (const name of migration.new_sqlite_classes ?? []) storage.set(name, "sqlite");
63
- for (const rename of migration.renamed_classes ?? []) {
64
- const sqlite = storage.get(rename.from);
65
- storage.delete(rename.from);
66
- storage.set(rename.to, sqlite ?? "unknown");
67
- }
68
- for (const transfer of migration.transferred_classes ?? []) storage.set(transfer.to, "unknown");
69
- for (const name of migration.deleted_classes ?? []) storage.delete(name);
70
- }
71
- return storage.get(className);
72
- }
73
- function hasSandboxSqliteMigration(migrations, className) {
74
- return resolveSandboxMigrationStorage(migrations, className) === "sqlite";
75
- }
76
- /** Refuse namespace reuse before either uploader can change a live Worker. */
77
- function assertSandboxNamespaceConfig(config, sandbox) {
78
- const containers = Array.isArray(config.containers) ? config.containers : [];
79
- const durable = config.durable_objects;
80
- const binding = durable?.bindings?.find((entry) => entry.name === sandbox.binding);
81
- if (binding && (binding.script_name !== void 0 || binding.environment !== void 0)) throw new Error(`sandbox: binding '${sandbox.binding}' must reference the local '${sandbox.className}' class. Choose another sandbox.binding name to preserve the existing external Durable Object.`);
82
- const migrations = Array.isArray(config.migrations) ? config.migrations : [];
83
- const storage = resolveSandboxMigrationStorage(migrations, sandbox.className);
84
- if (storage === "legacy-kv" || storage === "unknown") throw new Error(`sandbox: class '${sandbox.className}' needs SQLite storage, but its existing namespace has ${storage} storage. Preserve the existing migration history and choose a fresh Worker name or a new sandbox.className and sandbox.binding.`);
85
- if (storage !== "sqlite" && migrations.some((migration) => migration.tag === "void-sandbox-v2")) throw new Error(`sandbox: migration tag '${SANDBOX_MIGRATION_TAG}' is already configured for another class. Keep the existing history and choose a fresh Worker for Sandbox.`);
86
- if (containers.some((container) => container.class_name === sandbox.className && container.scheduling_policy !== "durable_object") || durable?.bindings?.some((binding) => binding.name === sandbox.binding && binding.class_name !== sandbox.className)) throw new Error("Sandbox SDK 1.0 needs a new Durable Object namespace. Back up existing Sandbox data and deploy to a fresh Worker name with the new Sandbox configuration; remove legacy Sandbox bindings, containers, and migrations from that new Worker configuration. See https://developers.cloudflare.com/containers/guides/migrate-to-durable-object-scheduling-policy/.");
87
- }
88
- //#endregion
89
- export { hasSandboxSqliteMigration as a, resolveSandboxConfig as c, assertSandboxNamespaceConfig as i, sandboxContainerConfig as l, DEFAULT_SANDBOX_CLASS_NAME as n, isSandboxEnabled as o, SANDBOX_MIGRATION_TAG as r, requiresSandboxPlatformImage as s, DEFAULT_SANDBOX_BINDING as t };
@@ -1,2 +0,0 @@
1
- import { n as writeDrizzleConfig, t as withPrivateDrizzleConfig } from "./config-CLYAosnQ.mjs";
2
- export { withPrivateDrizzleConfig, writeDrizzleConfig };