void 0.26.1 → 0.28.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 (287) hide show
  1. package/README.md +3 -1
  2. package/dist/{account-cmd-CfUXh_nU.mjs → account-cmd-Ci00cncT.mjs} +5 -5
  3. package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
  4. package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-D72ZQfMZ.mjs} +118 -135
  5. package/dist/{application-routing-DQyUh_5S.mjs → application-routing-Dy589Vgn.mjs} +1 -2
  6. package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
  7. package/dist/{auth-B5_tZLxT.mjs → auth-B6iOCjKI.mjs} +23 -56
  8. package/dist/{auth-link-D5RmKnzh.mjs → auth-link-DWr6Afao.mjs} +10 -10
  9. package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
  10. package/dist/{auth-router-Bap-pvbn.mjs → auth-router-DP14wVkZ.mjs} +4 -4
  11. package/dist/auth-wn6F8dB8.mjs +2 -0
  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-B58c8iS8.mjs → build-cmd-Cr3FJxv0.mjs} +5 -5
  16. package/dist/{cache-Bo52trKF.mjs → cache-D0Tt28cn.mjs} +5 -5
  17. package/dist/{cancel-deploy-BZNz3Q26.mjs → cancel-deploy-CJKvk7AN.mjs} +4 -4
  18. package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
  19. package/dist/{cf-access-ngGqZpHZ.mjs → cf-access-CWP4avfP.mjs} +3 -7
  20. package/dist/cf-build-output-2u583yJK.mjs +2 -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 +198 -311
  24. package/dist/cli/cloudflare-operation-process.mjs +46 -14
  25. package/dist/cli/env-schema-probe.d.mts +5 -43
  26. package/dist/cli/env-schema-probe.mjs +14 -80
  27. package/dist/client-C1BjRn3g.mjs +2 -0
  28. package/dist/{client-C2Prx_Bi.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-CTrn-lXJ.mjs} +6 -5
  31. package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
  32. package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-BosmCNlq.mjs} +3 -3
  33. package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-BKdSfNBN.mjs} +26 -34
  34. package/dist/{cloudflare-operations-BlYLlowZ.mjs → cloudflare-operations-Ds-lX3Ts.mjs} +1 -1
  35. package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
  36. package/dist/collect-NUlJMpLY.mjs +2 -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-CNnrSMYm.mjs +2 -0
  42. package/dist/{config-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
  43. package/dist/config-entry.d.mts +1 -1
  44. package/dist/{connect-X0MUA1gk.mjs → connect-nukQSoEO.mjs} +8 -8
  45. package/dist/{create-project-DxiyW6iX.mjs → create-project-D4APeBwX.mjs} +7 -7
  46. package/dist/{create-project-iwkbqiBU.mjs → create-project-DL7YXpjj.mjs} +1 -1
  47. package/dist/{db-XnVMHzoV.mjs → db-27RztQLy.mjs} +173 -263
  48. package/dist/{delete-esYlMiSJ.mjs → delete-BbsZFZIw.mjs} +5 -5
  49. package/dist/deploy-B06EQq4t.mjs +6009 -0
  50. package/dist/deploy-Db2ALnQP.mjs +3 -0
  51. package/dist/deploy-managed-static-CGswbcay.mjs +2277 -0
  52. package/dist/deploy-transport-BiicfoQW.mjs +180 -0
  53. package/dist/deploy.d.mts +10 -0
  54. package/dist/deploy.mjs +82 -0
  55. package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
  56. package/dist/discover-CTUiSsfG.mjs +2 -0
  57. package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
  58. package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
  59. package/dist/{domain-CbbBWhWE.mjs → domain-Bfq9n03H.mjs} +7 -22
  60. package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
  61. package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
  62. package/dist/{email-CpuT42g7.mjs → email-DIwaQU4P.mjs} +99 -191
  63. package/dist/email-cloudflare-CH053RxK.mjs +1096 -0
  64. package/dist/email-protocol-D9nTvhCp.mjs +82 -0
  65. package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
  66. package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
  67. package/dist/{env-DMA3cXZt.mjs → env-BhdWMrNy.mjs} +2 -13
  68. package/dist/{env-w9jOyGZn.mjs → env-C6ipBLp3.mjs} +8 -8
  69. package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
  70. package/dist/{env-raw-jZpP5n47.mjs → env-raw-Cklzcde3.mjs} +3 -20
  71. package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
  72. package/dist/{env-validation-CrVNjsPm.mjs → env-validation-CTn-HhG1.mjs} +1 -1
  73. package/dist/env-validation-cE0zcmzO.mjs +486 -0
  74. package/dist/{gen-DtkQhvQg.mjs → gen-CnN1Xidx.mjs} +131 -253
  75. package/dist/gen-F8pSZnhc.mjs +2 -0
  76. package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
  77. package/dist/generate-Rii9klHB.mjs +2 -0
  78. package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
  79. package/dist/{github-cmd-D_FsOFxq.mjs → github-cmd-BdkU4Nhe.mjs} +27 -71
  80. package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
  81. package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
  82. package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
  83. package/dist/{help-CVFBTmBx.mjs → help-Bug7pyK_.mjs} +18 -10
  84. package/dist/help-s9q7LTcu.mjs +2 -0
  85. package/dist/{inbound-PfQDLXc5.mjs → inbound-DmkTQeWp.mjs} +71 -222
  86. package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
  87. package/dist/index.d.mts +2 -18
  88. package/dist/index.mjs +200 -496
  89. package/dist/{info-PYWwkWyt.mjs → info-CujPwtMe.mjs} +5 -5
  90. package/dist/{init-Bw-fRKGp.mjs → init-ZWOJvc-Z.mjs} +179 -388
  91. package/dist/isr-config-DPjXM8J2.mjs +194 -0
  92. package/dist/{link-DlPG8iX3.mjs → link-UEc7bnF4.mjs} +8 -8
  93. package/dist/{list-2GN7_ueV.mjs → list-CuWeOnzk.mjs} +6 -17
  94. package/dist/{live-CgQuTpqD.mjs → live-BxLX-JqJ.mjs} +19 -17
  95. package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
  96. package/dist/load-user-env-DD5qveNU.mjs +49 -0
  97. package/dist/{local-d1-ga5O_idV.mjs → local-d1-BM3p74mm.mjs} +6 -6
  98. package/dist/{login-D-Q4xw3Q.mjs → login-CZ2Cqa-D.mjs} +11 -11
  99. package/dist/login-DhK7o1oJ.mjs +2 -0
  100. package/dist/{logs-rd8J-OFh.mjs → logs-TihRcLTk.mjs} +5 -5
  101. package/dist/migrate-BgT-hmu8.mjs +2 -0
  102. package/dist/{migrate-NLsjBbuM.mjs → migrate-uFwojusJ.mjs} +69 -21
  103. package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
  104. package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
  105. package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
  106. package/dist/{node-DJicPvPj.mjs → node-DoKbo1SZ.mjs} +8 -24
  107. package/dist/{operator-args-BNsW5gfp.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
  108. package/dist/{operator-auth-AzVLbrr3.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
  109. package/dist/{operator-client-BQtzyG-g.mjs → operator-client-C-ROjk1I.mjs} +4 -4
  110. package/dist/{operator-cmd-B6f6Cg9Z.mjs → operator-cmd-C5lCctnc.mjs} +8 -8
  111. package/dist/operator-cmd-Cjk5DiRx.mjs +2 -0
  112. package/dist/{output-C50ag2r3.mjs → output-FNHKw5Ac.mjs} +36 -5
  113. package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
  114. package/dist/pages/client.d.mts +1 -1
  115. package/dist/pages/client.mjs +91 -5
  116. package/dist/pages/index.d.mts +1 -2
  117. package/dist/pages/index.mjs +6 -6
  118. package/dist/pages/islands-plugin.mjs +5 -83
  119. package/dist/pages/protocol.d.mts +2 -2
  120. package/dist/pages/protocol.mjs +1 -1
  121. package/dist/pages/serialize.mjs +1 -1
  122. package/dist/{platform-args-BoZkWQnJ.mjs → platform-args-C6Mb_I3a.mjs} +34 -58
  123. package/dist/platform-args-Cm7x-fot.mjs +2 -0
  124. package/dist/{platform-auth-config-n603OANg.mjs → platform-auth-config-CJmNkFT2.mjs} +10 -11
  125. package/dist/{platform-auth-protection-zxDr0hWW.mjs → platform-auth-protection-D5wvsI-Y.mjs} +36 -26
  126. package/dist/{platform-auth-recovery-tw9lgtgE.mjs → platform-auth-recovery-D_0I3n-1.mjs} +8 -9
  127. package/dist/{platform-cmd-C00YM14r.mjs → platform-cmd-Cuj4oUVo.mjs} +1 -1
  128. package/dist/{platform-cmd-B8-bCb7t.mjs → platform-cmd-DxxZO6e5.mjs} +17 -16
  129. package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
  130. package/dist/{platform-domain-p0kobLV8.mjs → platform-domain-zLXnW1G_.mjs} +5 -5
  131. package/dist/{platform-lifecycle-D_QEY32D.mjs → platform-lifecycle-DOW-wLfx.mjs} +1398 -2043
  132. package/dist/{platform-lifecycle-vFqtNPPa.mjs → platform-lifecycle-_gfnjUBr.mjs} +1 -1
  133. package/dist/{platform-management-oi-SvI3f.mjs → platform-management-CYrLvTGH.mjs} +1 -1
  134. package/dist/{platform-management-BdYblvvE.mjs → platform-management-t7HKy4-U.mjs} +632 -124
  135. package/dist/{platform-plans-config-CjiFv5J4.mjs → platform-plans-config-CNH6zbPX.mjs} +15 -11
  136. package/dist/{platform-recovery-PvNS9Nl2.mjs → platform-recovery-DeucI7A9.mjs} +6 -9
  137. package/dist/{platform-registry-P387v42A.mjs → platform-registry-B9mWX9LO.mjs} +18 -19
  138. package/dist/{platform-setup-DVe42Ws7.mjs → platform-setup-CTf6MMT9.mjs} +19 -26
  139. package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
  140. package/dist/{prepare-Dq9hTIbo.mjs → prepare-C4zfwks4.mjs} +3 -3
  141. package/dist/{prepare-Do96654b.mjs → prepare-CSH9dKTI.mjs} +11 -13
  142. package/dist/prepare-dr9uxQSV.mjs +2 -0
  143. package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
  144. package/dist/prerender-render.d.mts +2 -0
  145. package/dist/prerender-render.mjs +2 -2
  146. package/dist/project-DiiOBZPF.mjs +2 -0
  147. package/dist/{project-cmd-ti8_yTcA.mjs → project-cmd-Dq75AXzy.mjs} +19 -19
  148. package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
  149. package/dist/{project-DQstYTxO.mjs → project-rqDnVsJN.mjs} +8 -4
  150. package/dist/{project-team-CDPE1Tsg.mjs → project-team-B3_QcStG.mjs} +6 -6
  151. package/dist/{project-token-CkZ1cN0Z.mjs → project-token-CvsRvv2I.mjs} +5 -5
  152. package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
  153. package/dist/{project-zero-trust-DdjLR61k.mjs → project-zero-trust-D1ICiwN_.mjs} +5 -5
  154. package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
  155. package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
  156. package/dist/{provision-BfaLiWbj.mjs → provision-DDh7ITVS.mjs} +118 -865
  157. package/dist/{requests-DFAqyYy8.mjs → requests-3CL3BuZh.mjs} +4 -4
  158. package/dist/resolve-project-B9Hr0D3n.mjs +2 -0
  159. package/dist/resolve-project-C_Cu7E8a.mjs +48 -0
  160. package/dist/{rollback-BKYXBduI.mjs → rollback-Ce1d_0J9.mjs} +7 -17
  161. package/dist/{route-types-CbtsIeFn.mjs → route-types-IrBuwJ7u.mjs} +35 -70
  162. package/dist/routing-assets-VkrKIbxE.mjs +139 -0
  163. package/dist/{runner-9wjsSZx-.mjs → runner-B5huK2eC.mjs} +1 -1
  164. package/dist/{runner-DMBKSrRk.mjs → runner-DcVDrzuR.mjs} +7 -28
  165. package/dist/{runner-mysql-CEzKtmFb.mjs → runner-mysql-CCtyI0p6.mjs} +4 -3
  166. package/dist/runner-mysql-CaJq-hd6.mjs +2 -0
  167. package/dist/runner-pg-BJhFZZG4.mjs +2 -0
  168. package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-CPd-CB_F.mjs} +1 -1
  169. package/dist/runtime/ai.mjs +9 -22
  170. package/dist/runtime/better-auth-mysql.d.mts +2 -5
  171. package/dist/runtime/better-auth-mysql.mjs +6 -31
  172. package/dist/runtime/better-auth-pg.d.mts +2 -5
  173. package/dist/runtime/better-auth-pg.mjs +6 -32
  174. package/dist/runtime/better-auth.d.mts +2 -4
  175. package/dist/runtime/better-auth.mjs +9 -19
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.d.mts +16 -0
  178. package/dist/runtime/durable.mjs +26 -2
  179. package/dist/runtime/email/testing.d.mts +1 -1
  180. package/dist/runtime/email/testing.mjs +9 -23
  181. package/dist/runtime/email-protocol.d.mts +12 -0
  182. package/dist/runtime/email-protocol.mjs +2 -70
  183. package/dist/runtime/email.d.mts +1 -1
  184. package/dist/runtime/email.mjs +79 -221
  185. package/dist/runtime/env-public.d.mts +1 -1
  186. package/dist/runtime/env-public.mjs +12 -38
  187. package/dist/runtime/env.d.mts +1 -12
  188. package/dist/runtime/env.mjs +1 -1
  189. package/dist/runtime/handler.d.mts +1 -1
  190. package/dist/runtime/handler.mjs +1 -1
  191. package/dist/runtime/isr.mjs +1 -1
  192. package/dist/runtime/kv.mjs +1 -1
  193. package/dist/runtime/live-client.d.mts +1 -1
  194. package/dist/runtime/live-server.mjs +1 -16
  195. package/dist/runtime/live.d.mts +1 -1
  196. package/dist/runtime/live.mjs +1 -1
  197. package/dist/runtime/migration-handler-mysql.d.mts +2 -2
  198. package/dist/runtime/migration-handler-mysql.mjs +3 -2
  199. package/dist/runtime/migration-handler-pg.d.mts +2 -2
  200. package/dist/runtime/migration-handler-pg.mjs +1 -1
  201. package/dist/runtime/migration-handler.d.mts +2 -2
  202. package/dist/runtime/migration-handler.mjs +2 -470
  203. package/dist/runtime/queues.mjs +1 -1
  204. package/dist/runtime/remote/binding-handler.mjs +62 -62
  205. package/dist/runtime/remote/index.mjs +16 -77
  206. package/dist/runtime/routing.d.mts +1 -4
  207. package/dist/runtime/routing.mjs +82 -218
  208. package/dist/runtime/sandbox-container.d.mts +2 -2
  209. package/dist/runtime/sandbox-container.mjs +2 -2
  210. package/dist/runtime/sandbox.d.mts +2 -2
  211. package/dist/runtime/sandbox.mjs +13 -6
  212. package/dist/runtime/storage.mjs +1 -1
  213. package/dist/runtime/validator.d.mts +1 -1
  214. package/dist/runtime/ws-server.d.mts +2 -3
  215. package/dist/runtime/ws-server.mjs +6 -28
  216. package/dist/runtime/ws.d.mts +1 -1
  217. package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
  218. package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-DBKIqDEK.mjs} +12 -1
  219. package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
  220. package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
  221. package/dist/{secret-BAt2KMmO.mjs → secret-B5J8bBsI.mjs} +62 -80
  222. package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
  223. package/dist/{skills-BgVMvQdy.mjs → skills-BJsan98C.mjs} +2 -2
  224. package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-gQ-NDA-u.mjs} +38 -43
  225. package/dist/sveltekit.mjs +1 -1
  226. package/dist/validate-C9xtFOYR.mjs +2 -0
  227. package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
  228. package/dist/version-metadata-DIrqEHQo.mjs +73 -0
  229. package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
  230. package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
  231. package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
  232. package/docs/guide/auth.md +2 -0
  233. package/docs/guide/database/postgresql.md +2 -0
  234. package/docs/guide/database.md +2 -0
  235. package/docs/guide/deployment.md +2 -2
  236. package/docs/guide/durable-state.md +24 -0
  237. package/docs/guide/platform/administration/access.md +5 -1
  238. package/docs/guide/platform/administration/connected-apps.md +55 -0
  239. package/docs/guide/platform/installation/credentials.md +3 -1
  240. package/docs/guide/platform/installation/first-deployment.md +1 -1
  241. package/docs/guide/project-collaboration.md +1 -1
  242. package/docs/guide/quickstart.md +2 -0
  243. package/docs/guide/sandboxes.md +2 -0
  244. package/docs/reference/api/deploy.md +23 -0
  245. package/docs/reference/api/pages.md +2 -0
  246. package/docs/reference/api.md +2 -1
  247. package/docs/reference/cli/auth.md +1 -1
  248. package/docs/reference/cli/database.md +9 -3
  249. package/docs/reference/cli/deploy.md +1 -1
  250. package/docs/reference/cli/platform-installation.md +1 -1
  251. package/docs/reference/cli/setup.md +2 -0
  252. package/package.json +14 -17
  253. package/skills/void/SKILL.md +4 -2
  254. package/dist/auth-BgX2qYSY.mjs +0 -2
  255. package/dist/cf-build-output-H9a97vME.mjs +0 -2
  256. package/dist/client-By4JjMw_.mjs +0 -2
  257. package/dist/collect-DLyFDiKW.mjs +0 -2
  258. package/dist/config-5r-YpMC-.mjs +0 -2
  259. package/dist/config-B_ggY-IO.mjs +0 -89
  260. package/dist/config-BtSFvXZx.mjs +0 -2
  261. package/dist/config-write-AHGesphx.mjs +0 -61
  262. package/dist/deploy-BsEvnlJl.mjs +0 -10455
  263. package/dist/deploy-C1d-YTfp.mjs +0 -2
  264. package/dist/dev-inbox-CK-UuPob.mjs +0 -297
  265. package/dist/discover-EDUf6JJw.mjs +0 -2
  266. package/dist/dist-_UUlL6bg.mjs +0 -2
  267. package/dist/env-validation-Dxdx_5wo.mjs +0 -951
  268. package/dist/gen-dA9hW7AV.mjs +0 -2
  269. package/dist/head-client-DzmJGN4C.mjs +0 -90
  270. package/dist/help-DzKUrQvk.mjs +0 -2
  271. package/dist/login-Dc-wuTDq.mjs +0 -2
  272. package/dist/migrate-BHp07yJE.mjs +0 -2
  273. package/dist/operator-cmd-Cwn50lOV.mjs +0 -2
  274. package/dist/pages/head-client.d.mts +0 -13
  275. package/dist/pages/head-client.mjs +0 -2
  276. package/dist/platform-args-DYgITk0D.mjs +0 -2
  277. package/dist/prepare-DRUV-g3X.mjs +0 -2
  278. package/dist/project-BiaPQ7ur.mjs +0 -2
  279. package/dist/provision-Wu9ZBk9L.mjs +0 -2
  280. package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
  281. package/dist/resolve-project-CP8rZs_p.mjs +0 -28
  282. package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
  283. package/dist/runner-pg-BGYRFdRp.mjs +0 -2
  284. package/dist/runtime/env-helpers.d.mts +0 -2
  285. package/dist/runtime/env-helpers.mjs +0 -2
  286. package/dist/validate-BJr9LfXy.mjs +0 -2
  287. package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
@@ -1,6 +1,6 @@
1
1
  import { n as AuthState } from "../auth-DkcFflXV.mjs";
2
- import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-CPvWD3nG.mjs";
3
- import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-CChrrAU-.mjs";
2
+ import { r as VoidAuthRuntimeOptions, t as VoidAuthEnv } from "../better-auth-shared-B74NJIus.mjs";
3
+ import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-aKVYB-fA.mjs";
4
4
  //#region src/runtime/ws-server.d.ts
5
5
  export type WebSocketRouteMeta = {
6
6
  name?: string;
@@ -23,6 +23,5 @@ export declare function buildWebSocketInstanceId(route: Pick<WebSocketRouteMeta,
23
23
  export declare function createWebSocketDurableObject(definition: AnyWebSocketDefinition, route: WebSocketRouteMeta, authRuntime?: VoidAuthRuntimeOptions, resolveAuthState?: ResolveVoidAuthState): WebSocketDurableObjectClass;
24
24
  /** Keep a removed WebSocket Durable Object class deployable without deleting its storage. */
25
25
  export declare function createWebSocketTombstoneDurableObject(className: string): WebSocketDurableObjectClass;
26
- export declare function handleWebSocketUpgrade(request: Request, env: Record<string, unknown>, routes: Array<WebSocketRouteMeta>): Promise<Response | null>;
27
26
  export declare function forwardWebSocketRequest(request: Request, env: Record<string, unknown>, route: WebSocketRouteMeta): Promise<Response>;
28
27
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { t as authContext } from "../auth-3sGB0zJ1.mjs";
2
- import { o as withRuntimeEnv } from "../env-DMA3cXZt.mjs";
2
+ import { o as withRuntimeEnv } from "../env-BhdWMrNy.mjs";
3
3
  //#region src/runtime/ws-server.ts
4
4
  function matchRoute(pattern, pathname) {
5
5
  const patternSegments = pattern.split("/").filter(Boolean);
@@ -58,20 +58,9 @@ function buildWebSocketInstanceId(route, params) {
58
58
  if (entries.length > 1 && entries.some(([, value]) => value.includes("&"))) return `v2:${JSON.stringify(entries)}`;
59
59
  return route.params.map((name) => `${name}=${params[name] ?? ""}`).join("&");
60
60
  }
61
- async function validateSchema(schema, value) {
62
- const result = await schema["~standard"].validate(value);
63
- if (result.issues) return {
64
- ok: false,
65
- issues: result.issues
66
- };
67
- return {
68
- ok: true,
69
- value: result.value
70
- };
71
- }
72
61
  async function serializeServerEvent(schema, event) {
73
- const result = await validateSchema(schema, event);
74
- if (!result.ok) throw new Error(`ws: Message validation failed: ${result.issues.map((issue) => issue.message).join("; ")}.`);
62
+ const result = await schema["~standard"].validate(event);
63
+ if (result.issues) throw new Error(`ws: Message validation failed: ${result.issues.map((issue) => issue.message).join("; ")}.`);
75
64
  return JSON.stringify(result.value);
76
65
  }
77
66
  function parseIncomingMessage(message) {
@@ -248,8 +237,8 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
248
237
  webSocket.close(1007, "Invalid JSON");
249
238
  return;
250
239
  }
251
- const result = await validateSchema(definition.messages.client, parsed);
252
- if (!result.ok) {
240
+ const result = await definition.messages.client["~standard"].validate(parsed);
241
+ if (result.issues) {
253
242
  webSocket.close(1007, "Invalid message");
254
243
  return;
255
244
  }
@@ -300,21 +289,10 @@ function getStub(env, route, params) {
300
289
  const id = binding.idFromName(buildWebSocketInstanceId(route, params));
301
290
  return binding.get(id);
302
291
  }
303
- async function handleWebSocketUpgrade(request, env, routes) {
304
- if (request.headers.get("upgrade")?.toLowerCase() !== "websocket") return null;
305
- for (const route of routes) {
306
- const params = getRouteMatch(request, route);
307
- if (!params) continue;
308
- const stub = getStub(env, route, params);
309
- if (!stub) return new Response(`Missing Durable Object binding "${route.bindingName}"`, { status: 503 });
310
- return stub.fetch(request);
311
- }
312
- return null;
313
- }
314
292
  async function forwardWebSocketRequest(request, env, route) {
315
293
  const stub = getStub(env, route, getRouteMatch(request, route) ?? {});
316
294
  if (!stub) return new Response(`Missing Durable Object binding "${route.bindingName}"`, { status: 503 });
317
295
  return stub.fetch(request);
318
296
  }
319
297
  //#endregion
320
- export { buildWebSocketInstanceId, createWebSocketDurableObject, createWebSocketTombstoneDurableObject, forwardWebSocketRequest, handleWebSocketUpgrade };
298
+ export { buildWebSocketInstanceId, createWebSocketDurableObject, createWebSocketTombstoneDurableObject, forwardWebSocketRequest };
@@ -1,2 +1,2 @@
1
- import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-CChrrAU-.mjs";
1
+ import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-aKVYB-fA.mjs";
2
2
  export { AnyWebSocketDefinition, ConnectCommonOptions, RoomContext, RoomController, RoomDefinition, SocketContext, SocketDefinition, VoidSocket, VoidSocketCloseEvent, WebSocketBaseContext, WebSocketConnection, WebSocketInstanceKey, connect, defineRoom, defineWebSocket };
@@ -16,6 +16,7 @@ type SandboxExecOptions = ContainerExecOptions & {
16
16
  type SandboxCapability = {
17
17
  invoke(operation: string, args: Array<unknown>): Promise<unknown>;
18
18
  };
19
+ declare const SANDBOX_PORT_HEADER = "x-void-sandbox-port";
19
20
  type SandboxProcessWire = {
20
21
  capability: SandboxCapability;
21
22
  pid: number;
@@ -45,6 +46,7 @@ declare class SandboxContainer<Env = unknown> extends DurableObject<Env> {
45
46
  #private;
46
47
  protected instanceType: SandboxInstance;
47
48
  protected starting: boolean;
49
+ fetch(request: Request): Promise<Response>;
48
50
  constructor(ctx: DurableObjectState, env: Env);
49
51
  protected get container(): SandboxNativeContainer;
50
52
  configure(options: SandboxOptions): Promise<void>;
@@ -70,4 +72,4 @@ declare class SandboxContainer<Env = unknown> extends DurableObject<Env> {
70
72
  invoke(operation: string, args: Array<unknown>): Promise<unknown>;
71
73
  }
72
74
  //#endregion
73
- export { SandboxInstance as a, SandboxProcessWire as c, SandboxExecOptions as i, validateSandboxOptions as l, SandboxCapability as n, SandboxNativeContainer as o, SandboxContainer as r, SandboxOptions as s, DEFAULT_SANDBOX_INACTIVITY_TIMEOUT_MS as t };
75
+ export { SandboxExecOptions as a, SandboxOptions as c, SandboxContainer as i, SandboxProcessWire as l, SANDBOX_PORT_HEADER as n, SandboxInstance as o, SandboxCapability as r, SandboxNativeContainer as s, DEFAULT_SANDBOX_INACTIVITY_TIMEOUT_MS as t, validateSandboxOptions as u };
@@ -1,6 +1,7 @@
1
1
  import { DurableObject, RpcTarget } from "cloudflare:workers";
2
2
  import { Files } from "@cloudflare/sandbox";
3
3
  //#region src/runtime/sandbox-container.ts
4
+ const SANDBOX_PORT_HEADER = "x-void-sandbox-port";
4
5
  const OPTIONS = /* @__PURE__ */ new Set([
5
6
  "inactivityTimeoutMs",
6
7
  "enableInternet",
@@ -84,6 +85,16 @@ var SandboxContainer = class extends DurableObject {
84
85
  #ready;
85
86
  starting = false;
86
87
  #epoch = 0;
88
+ async fetch(request) {
89
+ const value = request.headers.get(SANDBOX_PORT_HEADER);
90
+ if (!value || !/^\d+$/.test(value)) return new Response("Invalid Sandbox TCP port.", { status: 400 });
91
+ const port = Number(value);
92
+ if (!Number.isInteger(port) || port < 1 || port > 65535) return new Response("Invalid Sandbox TCP port.", { status: 400 });
93
+ const headers = new Headers(request.headers);
94
+ headers.delete(SANDBOX_PORT_HEADER);
95
+ await this.ensureRunning();
96
+ return this.container.getTcpPort(port).fetch(new Request(request, { headers }));
97
+ }
87
98
  constructor(ctx, env) {
88
99
  super(ctx, env);
89
100
  this.#ready = ctx.blockConcurrencyWhile(async () => {
@@ -278,4 +289,4 @@ var SandboxContainer = class extends DurableObject {
278
289
  }
279
290
  };
280
291
  //#endregion
281
- export { SandboxContainer as n, validateSandboxOptions as r, DEFAULT_SANDBOX_INACTIVITY_TIMEOUT_MS as t };
292
+ export { validateSandboxOptions as i, SANDBOX_PORT_HEADER as n, SandboxContainer as r, DEFAULT_SANDBOX_INACTIVITY_TIMEOUT_MS as t };
@@ -1,5 +1,5 @@
1
1
  import { t as UsageLimit } from "./limits-CFsDKQvU.mjs";
2
- import { i as SandboxExecOptions, r as SandboxContainer, s as SandboxOptions } from "./sandbox-container-Bo0eiFKz.mjs";
2
+ import { a as SandboxExecOptions, c as SandboxOptions, i as SandboxContainer } from "./sandbox-container-ChQRum-j.mjs";
3
3
  import { Files } from "@cloudflare/sandbox";
4
4
  //#region src/runtime/sandbox.d.ts
5
5
  declare const DEFAULT_SANDBOX_ID = "default";
@@ -1,10 +1,88 @@
1
- import { a as join, n as dirname, r as extname, t as basename } from "./dist-BVqXeR_h.mjs";
2
- import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
1
+ import { a as join, n as dirname, r as extname, t as basename } from "./dist-ipQi0Q8y.mjs";
2
+ import { n as readProjectPaths } from "./project-paths-DMvEeSau.mjs";
3
3
  import { t as glob } from "./dist-Bn8Kodjp.mjs";
4
4
  import { n as isIdentifier, r as isLiteral } from "./ast-CPGPjb0V.mjs";
5
5
  import { a as staticLiteral, i as staticExportInitializers, n as parseRouteFilename } from "./parse-filename-CUbj-1MP.mjs";
6
+ import { t as MagicString } from "./dist-Cegxq8gs.mjs";
6
7
  import { existsSync, readFileSync } from "node:fs";
7
8
  import { parseSync } from "vite";
9
+ //#region src/pages/island-imports.ts
10
+ /** The whole JS/TS module, or each `<script>` block of a Vue/Svelte SFC with its offset in the file. */
11
+ function scriptBlocks(code, filename) {
12
+ if (!/\.(?:vue|svelte)$/.test(filename)) return [{
13
+ source: code,
14
+ offset: 0,
15
+ filename
16
+ }];
17
+ const scriptFilename = filename.replace(/\.(?:vue|svelte)$/, ".ts");
18
+ return [...code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => {
19
+ const source = match[1];
20
+ return {
21
+ source,
22
+ offset: match.index + match[0].indexOf(source),
23
+ filename: scriptFilename
24
+ };
25
+ });
26
+ }
27
+ /** Collect stylesheet imports from authored modules without treating dynamic imports or text as dependencies. */
28
+ function findStaticCssImports(code, filename) {
29
+ if (!code.includes("import")) return [];
30
+ const imports = [];
31
+ for (const script of scriptBlocks(code, filename)) {
32
+ if (!script.source.includes("import")) continue;
33
+ const program = parseSync(script.filename, script.source).program;
34
+ for (const node of program.body ?? []) {
35
+ const source = node.source;
36
+ if (node.type !== "ImportDeclaration" || !isLiteral(source) || typeof source.value !== "string" || !/\.(?:css|scss|sass|less|styl|stylus|pcss|postcss)$/.test(source.value) || node.start === void 0 || node.end === void 0) continue;
37
+ imports.push({
38
+ statement: script.source.slice(node.start, node.end),
39
+ specifier: source.value
40
+ });
41
+ }
42
+ }
43
+ return imports;
44
+ }
45
+ function editIslandSource(code, edits, options) {
46
+ const ms = new MagicString(code);
47
+ for (const edit of edits) ms.overwrite(edit.start, edit.end, edit.text);
48
+ for (const insertion of options?.insert ?? []) ms.appendLeft(insertion.offset, insertion.text);
49
+ if (options?.prepend) ms.prepend(options.prepend);
50
+ if (options?.append) ms.append(options.append);
51
+ return {
52
+ code: ms.toString(),
53
+ map: ms.generateMap({ hires: true })
54
+ };
55
+ }
56
+ /** Read island import attributes from JS/TS, or script blocks inside an SFC. */
57
+ function findIslandImports(code, filename) {
58
+ if (!code.includes("import") || !code.includes("island")) return [];
59
+ const imports = [];
60
+ for (const script of scriptBlocks(code, filename)) {
61
+ if (!script.source.includes("island")) continue;
62
+ const program = parseSync(script.filename, script.source).program;
63
+ for (const node of program.body ?? []) {
64
+ if (node.type !== "ImportDeclaration") continue;
65
+ const specifiers = node.specifiers;
66
+ const attributes = node.attributes;
67
+ const first = specifiers?.[0];
68
+ const attribute = attributes?.[0];
69
+ const key = attribute?.key;
70
+ const value = attribute?.value;
71
+ const source = node.source;
72
+ if (specifiers?.length !== 1 || first?.type !== "ImportDefaultSpecifier" || !isIdentifier(first.local) || attributes?.length !== 1 || !isIdentifier(key) || key.name !== "island" || !isLiteral(value) || typeof value.value !== "string" || !isLiteral(source) || typeof source.value !== "string" || source.start === void 0 || source.end === void 0 || node.start === void 0 || node.end === void 0) continue;
73
+ imports.push({
74
+ start: script.offset + node.start,
75
+ end: script.offset + node.end,
76
+ importName: first.local.name,
77
+ specifierRaw: script.source.slice(source.start, source.end),
78
+ specifier: source.value,
79
+ hydrate: value.value
80
+ });
81
+ }
82
+ }
83
+ return imports;
84
+ }
85
+ //#endregion
8
86
  //#region src/pages/layout-resolution.ts
9
87
  function isNamedLayout(layout) {
10
88
  return "name" in layout;
@@ -95,10 +173,9 @@ const PAGE_METHODS = /* @__PURE__ */ new Set([
95
173
  const MAX_REVALIDATE = 31536e3;
96
174
  function componentLayout(source, filename) {
97
175
  if (!source.includes("layout")) return;
98
- const scripts = filename.endsWith(".vue") || filename.endsWith(".svelte") ? [...source.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => match[1]) : [source];
99
- for (const script of scripts) {
100
- if (!script.includes("layout")) continue;
101
- const initializer = staticExportInitializers(filename.replace(/\.(vue|svelte)$/, ".ts"), script, /* @__PURE__ */ new Set(["layout"])).get("layout");
176
+ for (const script of scriptBlocks(source, filename)) {
177
+ if (!script.source.includes("layout")) continue;
178
+ const initializer = staticExportInitializers(script.filename, script.source, /* @__PURE__ */ new Set(["layout"])).get("layout");
102
179
  const value = staticLiteral(initializer);
103
180
  if (typeof value === "string" || value === false) return value;
104
181
  }
@@ -338,4 +415,4 @@ function extractFrontmatterLayout(source) {
338
415
  return value;
339
416
  }
340
417
  //#endregion
341
- export { resolveNamedLayout as a, resolveLayoutIds as i, resolveEffectiveLayoutChain as n, toLayoutId as o, resolveLayoutChain as r, scanPages as t };
418
+ export { resolveNamedLayout as a, findIslandImports as c, resolveLayoutIds as i, findStaticCssImports as l, resolveEffectiveLayoutChain as n, toLayoutId as o, resolveLayoutChain as r, editIslandSource as s, scanPages as t };
@@ -1,43 +1,23 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-B5_tZLxT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
+ import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
3
  import { A as confirm, H as outro, L as log, O as cancel, U as password, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
- import { d as printSuccess, s as formatCount, u as note } from "./output-C50ag2r3.mjs";
5
- import { _ as validateSecretValues } from "./env-validation-Dxdx_5wo.mjs";
6
- import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
7
- import { i as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-CP8rZs_p.mjs";
4
+ import { m as printSuccess, o as formatCount, p as note } from "./output-FNHKw5Ac.mjs";
5
+ import { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
6
+ import { a as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-C_Cu7E8a.mjs";
7
+ import { _ as validateSecretValues } from "./env-validation-cE0zcmzO.mjs";
8
8
  import { readFileSync } from "node:fs";
9
9
  //#region src/cli/secret.ts
10
10
  async function runSecretCommand(root, args) {
11
11
  console.log();
12
- const platform = readDeploymentPlatform(root);
13
- if (platform === "cloudflare") return runCloudflareSecretCommand(root, args);
14
- if (platform === "none") throw new Error("secret: Deployment is disabled. Run `void init` to choose a platform.");
15
- const token = getToken(root);
16
- if (!token) {
17
- log.error("Not logged in. Run `void account login` first.");
18
- process.exit(1);
19
- }
20
- const client = new PlatformClient(token, { root });
21
- const requestedProjectName = getRequestedProjectSlug({ projectSlug: args.projectName });
22
- let projectId;
23
- if (requestedProjectName) {
24
- const projects = await client.listProjects();
25
- const config = resolveProjectBySlug(projects, requestedProjectName);
26
- if (!config) throw new Error(`secret: No project found with slug '${requestedProjectName}'.`);
27
- projectId = config.projectId;
28
- } else {
29
- const config = readProjectConfig(root);
30
- if (!config) throw new Error("No linked project found. Run `void project link`, `void deploy`, or pass --project <name>.");
31
- projectId = config.projectId;
32
- }
12
+ const backend = await resolveSecretBackend(root, args);
33
13
  if (args.action === "list") {
34
- const secrets = await client.listSecrets(projectId);
35
- if (secrets.length === 0) {
14
+ const names = await backend.list();
15
+ if (names.length === 0) {
36
16
  outro("No secrets set.");
37
17
  return;
38
18
  }
39
- note(secrets.map((s) => ` ${s.name}`).join("\n"), "Secrets");
40
- outro(formatCount(secrets.length, "secret"));
19
+ note(names.map((name) => ` ${name}`).join("\n"), "Secrets");
20
+ outro(formatCount(names.length, "secret"));
41
21
  return;
42
22
  }
43
23
  if (args.action === "put") {
@@ -46,7 +26,7 @@ async function runSecretCommand(root, args) {
46
26
  name: args.name,
47
27
  value
48
28
  }]);
49
- await client.setSecret(projectId, args.name, value);
29
+ await backend.put(args.name, value);
50
30
  printSuccess(`Secret ${args.name} set.`);
51
31
  return;
52
32
  }
@@ -60,66 +40,68 @@ async function runSecretCommand(root, args) {
60
40
  await validateSecretValues(root, secrets);
61
41
  log.info(`Found ${formatCount(secrets.length, "secret")}:`);
62
42
  for (const s of secrets) log.message(` ${s.name}`);
63
- const proceed = await confirm({ message: `This will overwrite ${formatCount(secrets.length, "secret")} in the remote environment. Continue?` });
43
+ const proceed = await confirm({ message: `This will overwrite ${formatCount(secrets.length, "secret")} in the ${backend.target}. Continue?` });
64
44
  if (isCancel(proceed) || !proceed) {
65
45
  cancel("Secret sync cancelled.");
66
46
  process.exit(0);
67
47
  }
68
- for (const s of secrets) {
69
- await client.setSecret(projectId, s.name, s.value);
70
- log.step(`Set ${s.name}`);
71
- }
48
+ await backend.sync(secrets);
72
49
  printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
73
50
  return;
74
51
  }
75
- await client.deleteSecret(projectId, args.name);
52
+ await backend.delete(args.name);
76
53
  printSuccess(`Secret ${args.name} deleted.`);
77
54
  }
78
- async function runCloudflareSecretCommand(root, args) {
79
- if (args.projectName) throw new Error("secret: --project selects a Void platform project and is not used for direct Cloudflare apps.");
80
- const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-BlYLlowZ.mjs");
81
- const context = resolveCloudflareOperationContext(root);
82
- if (args.action === "list") {
83
- const secrets = await listCloudflareSecrets(context);
84
- if (secrets.length === 0) {
85
- outro("No secrets set.");
86
- return;
87
- }
88
- note(secrets.map((name) => ` ${name}`).join("\n"), "Secrets");
89
- outro(formatCount(secrets.length, "secret"));
90
- return;
55
+ async function resolveSecretBackend(root, args) {
56
+ const platform = readDeploymentPlatform(root);
57
+ if (platform === "cloudflare") return resolveCloudflareSecretBackend(root, args);
58
+ if (platform === "none") throw new Error("secret: Deployment is disabled. Run `void init` to choose a platform.");
59
+ const token = getToken(root);
60
+ if (!token) {
61
+ log.error("Not logged in. Run `void account login` first.");
62
+ process.exit(1);
91
63
  }
92
- if (args.action === "put") {
93
- const value = args.value ?? await readSecretValue();
94
- await validateSecretValues(root, [{
95
- name: args.name,
96
- value
97
- }]);
98
- await putCloudflareSecret(context, args.name, value);
99
- printSuccess(`Secret ${args.name} set.`);
100
- return;
64
+ const client = new PlatformClient(token, { root });
65
+ const requestedProjectName = getRequestedProjectSlug({ projectSlug: args.projectName });
66
+ let projectId;
67
+ if (requestedProjectName) {
68
+ const projects = await client.listProjects();
69
+ const config = resolveProjectBySlug(projects, requestedProjectName);
70
+ if (!config) throw new Error(`secret: No project found with slug '${requestedProjectName}'.`);
71
+ projectId = config.projectId;
72
+ } else {
73
+ const config = readProjectConfig(root);
74
+ if (!config) throw new Error("No linked project found. Run `void project link`, `void deploy`, or pass --project <name>.");
75
+ projectId = config.projectId;
101
76
  }
102
- if (args.action === "sync") {
103
- const secrets = parseDotenvFile(args.file);
104
- if (secrets.length === 0) {
105
- log.warn("No secrets found in file.");
106
- outro("Nothing to sync.");
107
- return;
108
- }
109
- await validateSecretValues(root, secrets);
110
- log.info(`Found ${formatCount(secrets.length, "secret")}:`);
111
- for (const secret of secrets) log.message(` ${secret.name}`);
112
- const proceed = await confirm({ message: `This will overwrite ${formatCount(secrets.length, "secret")} in the Cloudflare Worker. Continue?` });
113
- if (isCancel(proceed) || !proceed) {
114
- cancel("Secret sync cancelled.");
115
- process.exit(0);
77
+ return {
78
+ target: "remote environment",
79
+ list: async () => (await client.listSecrets(projectId)).map((s) => s.name),
80
+ put: async (name, value) => {
81
+ await client.setSecret(projectId, name, value);
82
+ },
83
+ sync: async (secrets) => {
84
+ for (const s of secrets) {
85
+ await client.setSecret(projectId, s.name, s.value);
86
+ log.step(`Set ${s.name}`);
87
+ }
88
+ },
89
+ delete: async (name) => {
90
+ await client.deleteSecret(projectId, name);
116
91
  }
117
- await syncCloudflareSecrets(context, secrets);
118
- printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
119
- return;
120
- }
121
- await deleteCloudflareSecret(context, args.name);
122
- printSuccess(`Secret ${args.name} deleted.`);
92
+ };
93
+ }
94
+ async function resolveCloudflareSecretBackend(root, args) {
95
+ if (args.projectName) throw new Error("secret: --project selects a Void platform project and is not used for direct Cloudflare apps.");
96
+ const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-Ds-lX3Ts.mjs");
97
+ const context = resolveCloudflareOperationContext(root);
98
+ return {
99
+ target: "Cloudflare Worker",
100
+ list: () => listCloudflareSecrets(context),
101
+ put: (name, value) => putCloudflareSecret(context, name, value),
102
+ sync: (secrets) => syncCloudflareSecrets(context, secrets),
103
+ delete: (name) => deleteCloudflareSecret(context, name)
104
+ };
123
105
  }
124
106
  const SECRET_KEY_RE = /^[A-Z][A-Z0-9_]*$/;
125
107
  function parseDotenvFile(filePath) {
@@ -1,3 +1,11 @@
1
+ //#region src/pages/script-json.ts
2
+ const UNSAFE_SCRIPT_CHARS = /[<>&\u2028\u2029]/g;
3
+ function escapeScriptJson(json) {
4
+ return json.replace(UNSAFE_SCRIPT_CHARS, (c) => {
5
+ return `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`;
6
+ });
7
+ }
8
+ //#endregion
1
9
  //#region src/pages/serialize.ts
2
10
  /**
3
11
  * Escape JSON for embedding inside an inline `<script type="application/json">`
@@ -6,9 +14,7 @@
6
14
  * `JSON.parse` on hydration.
7
15
  */
8
16
  function serializePageData(pageObj) {
9
- return JSON.stringify(pageObj).replace(/[<>&\u2028\u2029]/g, (c) => {
10
- return `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`;
11
- });
17
+ return escapeScriptJson(JSON.stringify(pageObj));
12
18
  }
13
19
  //#endregion
14
- export { serializePageData as t };
20
+ export { escapeScriptJson as n, serializePageData as t };
@@ -1,6 +1,6 @@
1
- import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
1
+ import { a as join, s as relative } from "./dist-ipQi0Q8y.mjs";
2
2
  import { L as log } from "./dist-D3m88sjf.mjs";
3
- import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
3
+ import { r as getPackageDir } from "./agents-CuNtT0D_.mjs";
4
4
  import { existsSync, mkdirSync, readFileSync, readdirSync, readlinkSync, symlinkSync } from "node:fs";
5
5
  //#region src/cli/skills.ts
6
6
  function parseSkills(skillsDir) {