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
@@ -1,2 +0,0 @@
1
- import { r as runGenCommand } from "./gen-DtkQhvQg.mjs";
2
- export { runGenCommand };
@@ -1,90 +0,0 @@
1
- //#region src/pages/head-client.ts
2
- const ATTR = "data-void-head";
3
- function elementDescriptorSignature(descriptor) {
4
- const attrs = Object.entries(descriptor.attrs).sort(([a], [b]) => a.localeCompare(b));
5
- return `${encodeURIComponent(descriptor.tag)}:${attrs.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&")}`;
6
- }
7
- function elementSignature(el) {
8
- const attrs = {};
9
- for (const attr of Array.from(el.attributes)) if (attr.name !== ATTR) attrs[attr.name] = attr.value;
10
- return elementDescriptorSignature({
11
- tag: el.tagName.toLowerCase(),
12
- attrs
13
- });
14
- }
15
- function createHeadElement(descriptor) {
16
- const el = document.createElement(descriptor.tag);
17
- for (const [key, value] of Object.entries(descriptor.attrs)) el.setAttribute(key, value);
18
- el.setAttribute(ATTR, "");
19
- return el;
20
- }
21
- function collectDesiredHeadElements(head) {
22
- const desired = [];
23
- if (head.meta) for (const entry of head.meta) {
24
- const attrs = {};
25
- if (entry.charset) attrs.charset = entry.charset;
26
- if (entry.name) attrs.name = entry.name;
27
- if (entry.property) attrs.property = entry.property;
28
- if (entry.content !== void 0) attrs.content = entry.content;
29
- desired.push({
30
- tag: "meta",
31
- attrs
32
- });
33
- }
34
- if (head.link) for (const entry of head.link) {
35
- const attrs = {};
36
- for (const [key, value] of Object.entries(entry)) if (value != null) attrs[key] = value;
37
- desired.push({
38
- tag: "link",
39
- attrs
40
- });
41
- }
42
- return desired;
43
- }
44
- /**
45
- * Mark SSR-rendered head tags so they are cleaned up on the first SPA navigation.
46
- * Call once after hydration with the initial page's head descriptor.
47
- */
48
- function initClientHead(head) {
49
- if (!head) return;
50
- if (head.meta) for (const entry of head.meta) {
51
- const selector = entry.charset ? "meta[charset]" : entry.property ? `meta[property="${entry.property}"]` : entry.name ? `meta[name="${entry.name}"]` : null;
52
- if (!selector) continue;
53
- const el = document.head.querySelector(selector);
54
- if (el) el.setAttribute(ATTR, "");
55
- }
56
- if (head.link) for (const entry of head.link) {
57
- const el = document.head.querySelector(`link[rel="${entry.rel}"][href="${entry.href}"]`);
58
- if (el) el.setAttribute(ATTR, "");
59
- }
60
- }
61
- /**
62
- * Apply head changes on SPA navigation.
63
- * Preserves existing managed tags when their final attributes are unchanged.
64
- */
65
- function applyClientHead(head) {
66
- const existing = /* @__PURE__ */ new Map();
67
- for (const el of document.head.querySelectorAll(`[${ATTR}]`)) {
68
- const signature = elementSignature(el);
69
- const elements = existing.get(signature);
70
- if (elements) elements.push(el);
71
- else existing.set(signature, [el]);
72
- }
73
- const desiredElements = [];
74
- for (const descriptor of head ? collectDesiredHeadElements(head) : []) {
75
- const signature = elementDescriptorSignature(descriptor);
76
- const elements = existing.get(signature);
77
- const preserved = elements?.shift();
78
- if (elements && elements.length === 0) existing.delete(signature);
79
- desiredElements.push(preserved ?? createHeadElement(descriptor));
80
- }
81
- for (const elements of existing.values()) for (const el of elements) el.remove();
82
- let cursor = document.head.querySelector(`[${ATTR}]`);
83
- for (const el of desiredElements) {
84
- if (el !== cursor) document.head.insertBefore(el, cursor);
85
- cursor = el.nextSibling;
86
- }
87
- if (head?.title !== void 0) document.title = head.title;
88
- }
89
- //#endregion
90
- export { initClientHead as n, applyClientHead as t };
@@ -1,2 +0,0 @@
1
- import { r as printHelpPage } from "./help-0bTe_lID.mjs";
2
- export { printHelpPage };
@@ -1,2 +0,0 @@
1
- import { r as selectPlatformLoginMethod } from "./login-GKcNUmtI.mjs";
2
- export { selectPlatformLoginMethod };
@@ -1,2 +0,0 @@
1
- import { n as runMigrateCommand } from "./migrate-NLsjBbuM.mjs";
2
- export { runMigrateCommand };
@@ -1,2 +0,0 @@
1
- import { a as runOperatorCommand } from "./operator-cmd-BT4hgavL.mjs";
2
- export { runOperatorCommand };
@@ -1,13 +0,0 @@
1
- import { n as HeadDescriptor } from "../head-C8K_iGe6.mjs";
2
- //#region src/pages/head-client.d.ts
3
- /**
4
- * Mark SSR-rendered head tags so they are cleaned up on the first SPA navigation.
5
- * Call once after hydration with the initial page's head descriptor.
6
- */
7
- export declare function initClientHead(head: HeadDescriptor | undefined): void;
8
- /**
9
- * Apply head changes on SPA navigation.
10
- * Preserves existing managed tags when their final attributes are unchanged.
11
- */
12
- export declare function applyClientHead(head: HeadDescriptor | undefined): void;
13
- //#endregion
@@ -1,2 +0,0 @@
1
- import { n as initClientHead, t as applyClientHead } from "../head-client-DzmJGN4C.mjs";
2
- export { applyClientHead, initClientHead };
@@ -1,2 +0,0 @@
1
- import { n as buildMigrationPlanBundle } from "./plan-BhLO2p4w.mjs";
2
- export { buildMigrationPlanBundle };
@@ -1,2 +0,0 @@
1
- import { t as parsePlatformArgs } from "./platform-args-DUeXY9Om.mjs";
2
- export { parsePlatformArgs };
@@ -1,2 +0,0 @@
1
- import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-BbY1dWiM.mjs";
2
- export { discoverPlatform, runPlatformCommand };
@@ -1,2 +0,0 @@
1
- import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-DzCwqhFq.mjs";
2
- export { runPlatformLifecycleCommand };
@@ -1,2 +0,0 @@
1
- import { c as runInstalledPlatformCommand, d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.mjs";
2
- export { runInstalledPlatformCommand, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership };
@@ -1,2 +0,0 @@
1
- import { t as prepareProject } from "./prepare-Do96654b.mjs";
2
- export { prepareProject };
@@ -1,2 +0,0 @@
1
- import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-BAm2aB6Q.mjs";
2
- export { attachSelectedPlatform, writeProjectConfig };
@@ -1,2 +0,0 @@
1
- import { t as validateProjectSlug } from "./project-slug-23TpquG4.mjs";
2
- export { validateProjectSlug };
@@ -1,2 +0,0 @@
1
- import { _ as resolvePinnedApiBaseUrl, a as checkCloudflareProvisionDrift, c as enableD1ReadReplicationViaApi, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionEnv, h as provisionCloudflareResources, i as assertValidResourceName, l as isAlreadyGoneKillError, m as normalizeRunWranglerResult, n as acquireProvisionLock, o as createDefaultRunWrangler, p as isRealKvId, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware, t as WranglerQuarantineError, u as isQuarantineError, v as resolveProperLockfileKey } from "./provision-BfaLiWbj.mjs";
2
- export { WranglerQuarantineError, acquireProvisionLock, assertNoTransportRedirectInProjectDotenv, assertValidResourceName, checkCloudflareProvisionDrift, createDefaultRunWrangler, deleteEnvVarCaseAware, enableD1ReadReplicationViaApi, isAlreadyGoneKillError, isQuarantineError, isQueueConfirmedAbsent, isRealD1Id, isRealKvId, normalizeRunWranglerResult, provisionCloudflareResources, provisionEnv, resolvePinnedApiBaseUrl, resolveProperLockfileKey };
@@ -1,2 +0,0 @@
1
- import { n as inferDefaultSlug } from "./resolve-project-CP8rZs_p.mjs";
2
- export { inferDefaultSlug };
@@ -1,28 +0,0 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { readFileSync } from "node:fs";
3
- //#region src/cli/resolve-project.ts
4
- function getRequestedProjectSlug(options) {
5
- const cliSlug = options?.projectSlug?.trim();
6
- if (cliSlug) return cliSlug;
7
- const envSlug = process.env.VOID_PROJECT?.trim();
8
- if (envSlug) return envSlug;
9
- return null;
10
- }
11
- function resolveProjectBySlug(projects, slug) {
12
- const project = projects.find((candidate) => candidate.slug === slug);
13
- return project ? {
14
- projectId: project.id,
15
- slug: project.slug
16
- } : null;
17
- }
18
- async function requireProjectBySlug(client, slug) {
19
- const project = resolveProjectBySlug(await client.listProjects(), slug);
20
- if (!project) throw new Error(`project: No project found with slug '${slug}'.`);
21
- return project;
22
- }
23
- function inferDefaultSlug(root) {
24
- const pkgPath = join(root, "package.json");
25
- return (JSON.parse(readFileSync(pkgPath, "utf-8")).name ?? "my-app").replace(/^@[^/]+\//, "").replace(/[^a-z0-9-]/g, "-");
26
- }
27
- //#endregion
28
- export { resolveProjectBySlug as i, inferDefaultSlug as n, requireProjectBySlug as r, getRequestedProjectSlug as t };
@@ -1,2 +0,0 @@
1
- import { a as runMigrations, i as openSqliteDatabase, n as getAppliedMigrations, r as getMiniflareDatabasePath, t as getApplicationTables } from "./runner-DMBKSrRk.mjs";
2
- export { getApplicationTables, getAppliedMigrations, getMiniflareDatabasePath, openSqliteDatabase, runMigrations };
@@ -1,54 +0,0 @@
1
- import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
2
- //#region src/migrations/runner-mysql.ts
3
- async function readMySqlAppliedMigrations(client) {
4
- try {
5
- return (await client.query("SELECT `name` FROM `_void_migrations`")).map((row) => String(row.name));
6
- } catch (error) {
7
- const value = typeof error === "object" && error !== null ? error : void 0;
8
- if (value?.code === "ER_NO_SUCH_TABLE" || value?.errno === 1146) return [];
9
- throw error;
10
- }
11
- }
12
- function toMySqlClient(connection) {
13
- return { async query(sql, params) {
14
- const [rows] = await connection.query(sql, params);
15
- return Array.isArray(rows) ? rows : [];
16
- } };
17
- }
18
- async function getMySqlAppliedMigrations(url) {
19
- const { createConnection } = await import("mysql2/promise");
20
- const connection = await createConnection(url);
21
- try {
22
- return await readMySqlAppliedMigrations(toMySqlClient(connection));
23
- } finally {
24
- await connection.end();
25
- }
26
- }
27
- async function applyMySqlMigrations(client, migrations) {
28
- if (migrations.length === 0) return [];
29
- await client.query("CREATE TABLE IF NOT EXISTS `_void_migrations` (`name` VARCHAR(255) PRIMARY KEY, `applied_at` VARCHAR(64) NOT NULL)");
30
- const existing = await client.query("SELECT `name` FROM `_void_migrations`");
31
- const appliedSet = new Set(existing.map((row) => String(row.name)));
32
- const pending = migrations.filter((migration) => !appliedSet.has(migration.name));
33
- for (const migration of pending) {
34
- await client.query(migration.sql);
35
- await client.query("INSERT INTO `_void_migrations` (`name`, `applied_at`) VALUES (?, ?)", [migration.name, (/* @__PURE__ */ new Date()).toISOString()]);
36
- }
37
- return pending.map((migration) => migration.name);
38
- }
39
- async function runMySqlMigrations(migrationsDir, url) {
40
- const migrations = collectMigrations(migrationsDir);
41
- if (migrations.length === 0) return [];
42
- const { createConnection } = await import("mysql2/promise");
43
- const connection = await createConnection({
44
- uri: url,
45
- multipleStatements: true
46
- });
47
- try {
48
- return await applyMySqlMigrations(toMySqlClient(connection), migrations);
49
- } finally {
50
- await connection.end();
51
- }
52
- }
53
- //#endregion
54
- export { runMySqlMigrations as i, getMySqlAppliedMigrations as n, readMySqlAppliedMigrations as r, applyMySqlMigrations as t };
@@ -1,2 +0,0 @@
1
- import { i as runMySqlMigrations, n as getMySqlAppliedMigrations, t as applyMySqlMigrations } from "./runner-mysql-CEzKtmFb.mjs";
2
- export { applyMySqlMigrations, getMySqlAppliedMigrations, runMySqlMigrations };
@@ -1,2 +0,0 @@
1
- import { i as runPgMigrations, n as getPgAppliedMigrations, t as applyPgMigrations } from "./runner-pg-DV8p_zjA.mjs";
2
- export { applyPgMigrations, getPgAppliedMigrations, runPgMigrations };
@@ -1,2 +0,0 @@
1
- import { a as number, c as url, i as json, n as boolean, o as oneOf, r as email, s as string, t as EnvSchema } from "../env-helpers-CyKtOBpj.mjs";
2
- export { EnvSchema, boolean, email, json, number, oneOf, string, url };
@@ -1,2 +0,0 @@
1
- import { a as oneOf, i as number, n as email, o as string, r as json, s as url, t as boolean } from "../env-helpers--wFmQ_5Q.mjs";
2
- export { boolean, email, json, number, oneOf, string, url };
@@ -1,2 +0,0 @@
1
- import { i as validateMigrations } from "./validate-C9qJArv7.mjs";
2
- export { validateMigrations };
@@ -1,188 +0,0 @@
1
- import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
2
- import { existsSync, readdirSync } from "node:fs";
3
- import { pathToFileURL } from "node:url";
4
- //#region src/cli/yarn-pnp.ts
5
- /**
6
- * Read PnP runtime files at a single directory without walking
7
- * ancestors. Returns a descriptor with the files that exist, or
8
- * `undefined` when neither is present.
9
- */
10
- function readPnpRuntimeAt(dir) {
11
- const cjs = join(dir, ".pnp.cjs");
12
- const loader = join(dir, ".pnp.loader.mjs");
13
- const cjsExists = existsSync(cjs);
14
- const loaderExists = existsSync(loader);
15
- if (!cjsExists && !loaderExists) return;
16
- return {
17
- pnpCjs: cjsExists ? cjs : void 0,
18
- pnpLoader: loaderExists ? loader : void 0
19
- };
20
- }
21
- /**
22
- * Returns true when `dir` contains a local package-manager lockfile
23
- * (`pnpm-lock.yaml`, `package-lock.json`, `yarn.lock`, `bun.lock`,
24
- * `bun.lockb`). A lockfile at `dir` is definitive proof that a package
25
- * manager runs install from this directory: Yarn / pnpm / npm / bun
26
- * all write the lockfile at the install root, and workspace members
27
- * SHARE the root lockfile rather than carrying their own.
28
- *
29
- * Two independent call sites depend on this signal:
30
- *
31
- * 1. `findYarnPnpRuntime` / `findInstalledYarnPnpRuntime` below use
32
- * it as the "leaf-managed install ownership" gate: a nested
33
- * project with its own lockfile must NOT inherit an outer Yarn
34
- * PnP runtime into `NODE_OPTIONS`, because the outer `.pnp.cjs`
35
- * patches `Module._resolveFilename` to consult a graph that
36
- * doesn't contain the leaf's dependencies — drizzle-kit then
37
- * fails to resolve `drizzle-orm/...`.
38
- * 2. `resolveWorkspaceDeferral` in `init.ts` uses it as the
39
- * "workspace-skip boundary": a subpackage with its own lockfile
40
- * is not governed by the workspace install and must run install
41
- * + starter migration locally.
42
- *
43
- * Both call sites must check the same set of lockfile paths — if one
44
- * drifts (for example, adding a new package manager's lockfile to
45
- * only one helper), the two paths will silently disagree on the same
46
- * directory. Exported as the single source of truth to lock the
47
- * invariant in one place.
48
- *
49
- * Note: `package.json#packageManager` (Corepack pin) is deliberately
50
- * NOT a signal here. A Yarn Berry workspace member can legitimately
51
- * declare its own `packageManager: "yarn@..."` while still resolving
52
- * through the workspace root's `.pnp.cjs`; treating the pin as
53
- * leaf-managed would stop the ancestor walk before reaching the real
54
- * PnP root and break `void db generate` / starter migration
55
- * generation in valid Yarn PnP monorepos. The lockfile check is
56
- * sufficient: a fresh-cloned leaf project with only a Corepack pin
57
- * will still trigger install, which writes the lockfile before
58
- * `generateStarterMigration()` fires, at which point the gate engages.
59
- */
60
- function hasLocalLockfile(dir) {
61
- return existsSync(join(dir, "pnpm-lock.yaml")) || existsSync(join(dir, "package-lock.json")) || existsSync(join(dir, "yarn.lock")) || existsSync(join(dir, "bun.lock")) || existsSync(join(dir, "bun.lockb"));
62
- }
63
- /**
64
- * Walk ancestors from `start` (inclusive) looking for Yarn Berry PnP
65
- * runtime files. Returns the directory containing them (with both
66
- * possibly-existing paths) if found, or `undefined` otherwise.
67
- *
68
- * Walking ancestors is important for workspace subpackages — in a Yarn
69
- * PnP monorepo, `.pnp.cjs` lives at the workspace root, not in each
70
- * subpackage. Checking only `start` would miss the common shape.
71
- *
72
- * Local PnP files at `start` are always authoritative and take
73
- * precedence over the leaf-managed guard below. When `start` has no
74
- * local PnP files but DOES have a local lockfile, stop here — ancestor
75
- * PnP data belongs to a different install graph and injecting it will
76
- * break resolution for the local one. Only walk past `start` when
77
- * neither condition holds.
78
- */
79
- function findYarnPnpRuntime(start) {
80
- const local = readPnpRuntimeAt(start);
81
- if (local !== void 0) return {
82
- dir: start,
83
- runtime: local
84
- };
85
- if (hasLocalLockfile(start)) return;
86
- let dir = dirname(start);
87
- if (dir === start) return;
88
- while (true) {
89
- const found = readPnpRuntimeAt(dir);
90
- if (found !== void 0) return {
91
- dir,
92
- runtime: found
93
- };
94
- const parent = dirname(dir);
95
- if (parent === dir) return;
96
- dir = parent;
97
- }
98
- }
99
- /**
100
- * Stricter variant of {@link findYarnPnpRuntime}: only returns a result
101
- * when the PnP runtime files AND a post-install marker live in the
102
- * SAME ancestor directory.
103
- *
104
- * Yarn Berry repos commonly commit `.pnp.cjs` to
105
- * version control but NOT `.yarn/cache/*.zip` (zero-install is an
106
- * opt-in, not the default). A fresh `git clone` before `yarn install`
107
- * therefore has `.pnp.cjs` on disk while the PnP data points at ZIP
108
- * archives that haven't been fetched yet. Trusting `.pnp.cjs` existence
109
- * alone as proof that "yarn install has run" leads `init` to skip the
110
- * install step, and the subsequent `drizzle-kit generate` spawn crashes
111
- * because PnP tries to load `void/schema-d1` from a missing ZIP.
112
- *
113
- * Accept EITHER of two markers, to cover both non-zero-install
114
- * and zero-install shapes:
115
- *
116
- * 1. `.yarn/install-state.gz` in the same dir. Yarn Berry (3.x and
117
- * 4.x) writes this on every successful `yarn install` and it is
118
- * gitignored by convention, so its presence strictly implies
119
- * "yarn install has populated this checkout at least once". This
120
- * is the only marker present in a classic (non-zero-install) repo.
121
- * 2. `.yarn/cache/` containing at least one `.zip` entry in the same
122
- * dir. In zero-install repos (`nodeLinker: pnp`, cache committed
123
- * to git), `install-state.gz` is commonly gitignored or absent,
124
- * but the populated cache IS on disk — that's the whole point of
125
- * zero-install. A populated cache is therefore sufficient proof
126
- * that the checkout is ready to resolve dependencies.
127
- *
128
- * The same-directory requirement locks the invariant — a committed
129
- * `.pnp.cjs` in a subdirectory must not be covered by markers sitting
130
- * at an unrelated ancestor.
131
- *
132
- * NOTE: `findYarnPnpRuntime` intentionally does NOT apply this stricter
133
- * check. NODE_OPTIONS injection for drizzle-kit spawns should still
134
- * happen whenever PnP runtime files are present: if install hasn't run,
135
- * drizzle-kit will crash with or without the injected env, so the
136
- * inject is harmless; if the user is about to run install and then hits
137
- * a spawn, the env needs to be prepared.
138
- */
139
- function findInstalledYarnPnpRuntime(start) {
140
- const found = findYarnPnpRuntime(start);
141
- return found && isYarnPnpInstalled(found.dir) ? found.runtime : void 0;
142
- }
143
- /**
144
- * Return true when `dir` looks like a post-install Yarn Berry PnP
145
- * checkout. Two valid markers (see `findInstalledYarnPnpRuntime`):
146
- *
147
- * - `.yarn/install-state.gz` — written by every successful
148
- * `yarn install` in a classic (non-zero-install) repo.
149
- * - `.yarn/cache/*.zip` — present in a zero-install checkout, where
150
- * archives are committed to git and `install-state.gz` is often
151
- * gitignored or absent.
152
- */
153
- function isYarnPnpInstalled(dir) {
154
- if (existsSync(join(dir, ".yarn", "install-state.gz"))) return true;
155
- const cacheDir = join(dir, ".yarn", "cache");
156
- if (!existsSync(cacheDir)) return false;
157
- try {
158
- return readdirSync(cacheDir).some((e) => e.endsWith(".zip"));
159
- } catch {
160
- return false;
161
- }
162
- }
163
- /**
164
- * Build a child-process env that injects Yarn Berry PnP loaders into
165
- * `NODE_OPTIONS` when a PnP runtime is found at or above `root`. This
166
- * mirrors what `yarn node` does under the hood: `--require` the PnP
167
- * CJS shim (patches `fs` + `Module._resolveFilename` to understand ZIP
168
- * virtual paths) and, when present, `--experimental-loader` the PnP
169
- * ESM loader.
170
- *
171
- * Any pre-existing `NODE_OPTIONS` from the parent process (for example
172
- * when the command is invoked as `yarn void ...` and yarn already set
173
- * it) is appended AFTER our injected flags so our PnP `--require` runs
174
- * first. Non-PnP projects inherit `process.env` unchanged.
175
- */
176
- function buildDrizzleKitSpawnEnv(root) {
177
- const env = { ...process.env };
178
- const pnp = findYarnPnpRuntime(root)?.runtime;
179
- if (!pnp) return env;
180
- const flags = [];
181
- if (pnp.pnpCjs) flags.push(`--require ${JSON.stringify(pnp.pnpCjs)}`);
182
- if (pnp.pnpLoader) flags.push(`--experimental-loader ${pathToFileURL(pnp.pnpLoader).href}`);
183
- const injected = flags.join(" ");
184
- env.NODE_OPTIONS = process.env.NODE_OPTIONS ? `${injected} ${process.env.NODE_OPTIONS}` : injected;
185
- return env;
186
- }
187
- //#endregion
188
- export { findInstalledYarnPnpRuntime as n, hasLocalLockfile as r, buildDrizzleKitSpawnEnv as t };