void 0.21.9 → 0.23.0

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