devflare 1.0.0-next.16 → 1.0.0-next.18

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 (982) hide show
  1. package/LLM.md +688 -229
  2. package/README.md +70 -8
  3. package/bin/devflare.js +1 -1
  4. package/dist/{account-fw8nafav.js → account-0evqkmnc.js} +8 -8
  5. package/dist/{account-0w8wdzjv.js → account-0v11zbzk.js} +9 -9
  6. package/dist/{account-eygq6qx7.js → account-2w85efas.js} +9 -9
  7. package/dist/{account-pzq69nys.js → account-61gw9s7t.js} +9 -9
  8. package/dist/account-65sk9q34.js +475 -0
  9. package/dist/account-77vx7q2f.js +475 -0
  10. package/dist/account-7z38mgqf.js +475 -0
  11. package/dist/account-8wgprpbt.js +475 -0
  12. package/dist/account-9gt3tej1.js +475 -0
  13. package/dist/account-dtndtbad.js +475 -0
  14. package/dist/account-e95v7f4s.js +475 -0
  15. package/dist/account-fbyyptg7.js +475 -0
  16. package/dist/account-gnzhz1c9.js +475 -0
  17. package/dist/account-m6jq6fnp.js +475 -0
  18. package/dist/account-mvnfagh9.js +475 -0
  19. package/dist/account-p0crq2gh.js +475 -0
  20. package/dist/account-qkcevx7a.js +475 -0
  21. package/dist/account-txwqg1rx.js +475 -0
  22. package/dist/account-w5n5bjh2.js +475 -0
  23. package/dist/account-zd61t0ey.js +475 -0
  24. package/dist/api-11gkk043.js +33 -0
  25. package/dist/api-2n6dd2ws.js +33 -0
  26. package/dist/api-dbxvch9h.js +33 -0
  27. package/dist/api-p9hf69kr.js +33 -0
  28. package/dist/api-r10j00ev.js +33 -0
  29. package/dist/api-senf2569.js +33 -0
  30. package/dist/api-swcgnp72.js +33 -0
  31. package/dist/{api-d6ekexs5.js → api-th82mps4.js} +3 -1
  32. package/dist/bridge/client.d.ts +29 -6
  33. package/dist/bridge/client.d.ts.map +1 -1
  34. package/dist/bridge/gateway-runtime.d.ts +8 -0
  35. package/dist/bridge/gateway-runtime.d.ts.map +1 -0
  36. package/dist/bridge/index.d.ts +2 -2
  37. package/dist/bridge/index.d.ts.map +1 -1
  38. package/dist/bridge/log.d.ts +5 -0
  39. package/dist/bridge/log.d.ts.map +1 -0
  40. package/dist/bridge/miniflare.d.ts.map +1 -1
  41. package/dist/bridge/proxy.d.ts +7 -5
  42. package/dist/bridge/proxy.d.ts.map +1 -1
  43. package/dist/bridge/serialization.d.ts +36 -16
  44. package/dist/bridge/serialization.d.ts.map +1 -1
  45. package/dist/bridge/server.d.ts +1 -0
  46. package/dist/bridge/server.d.ts.map +1 -1
  47. package/dist/bridge/v2/body-streams.d.ts +53 -0
  48. package/dist/bridge/v2/body-streams.d.ts.map +1 -0
  49. package/dist/bridge/v2/codec.d.ts +106 -0
  50. package/dist/bridge/v2/codec.d.ts.map +1 -0
  51. package/dist/bridge/v2/control-messages.d.ts +51 -0
  52. package/dist/bridge/v2/control-messages.d.ts.map +1 -0
  53. package/dist/bridge/v2/frames.d.ts +109 -0
  54. package/dist/bridge/v2/frames.d.ts.map +1 -0
  55. package/dist/bridge/v2/index.d.ts +11 -0
  56. package/dist/bridge/v2/index.d.ts.map +1 -0
  57. package/dist/bridge/v2/legacy-protocol.d.ts +146 -0
  58. package/dist/bridge/v2/legacy-protocol.d.ts.map +1 -0
  59. package/dist/bridge/v2/legacy-serialization.d.ts +103 -0
  60. package/dist/bridge/v2/legacy-serialization.d.ts.map +1 -0
  61. package/dist/bridge/v2/serialization.d.ts +48 -0
  62. package/dist/bridge/v2/serialization.d.ts.map +1 -0
  63. package/dist/bridge/v2/transport.d.ts +31 -0
  64. package/dist/bridge/v2/transport.d.ts.map +1 -0
  65. package/dist/bridge/v2/value-codec.d.ts +61 -0
  66. package/dist/bridge/v2/value-codec.d.ts.map +1 -0
  67. package/dist/bridge/v2/value-serialization.d.ts +103 -0
  68. package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
  69. package/dist/bridge/v2/wire.d.ts +170 -0
  70. package/dist/bridge/v2/wire.d.ts.map +1 -0
  71. package/dist/bridge/v2/ws-relay.d.ts +53 -0
  72. package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
  73. package/dist/browser-shim/server.d.ts +63 -0
  74. package/dist/browser-shim/server.d.ts.map +1 -1
  75. package/dist/browser.d.ts +396 -38
  76. package/dist/browser.d.ts.map +1 -1
  77. package/dist/{src/browser.js → browser.js} +19 -33
  78. package/dist/build-07mjrvsn.js +53 -0
  79. package/dist/build-0rfr8k1s.js +53 -0
  80. package/dist/build-1313sg73.js +52 -0
  81. package/dist/build-1hnntbks.js +53 -0
  82. package/dist/build-1r3myv0k.js +53 -0
  83. package/dist/build-28561w5v.js +54 -0
  84. package/dist/build-50yqpwb3.js +54 -0
  85. package/dist/build-55z8psd6.js +53 -0
  86. package/dist/build-5b9wj2p0.js +53 -0
  87. package/dist/build-5frhzh1m.js +53 -0
  88. package/dist/{build-p3r3117t.js → build-6ye9vnab.js} +8 -9
  89. package/dist/build-8gv18jrq.js +52 -0
  90. package/dist/build-9bgqypy6.js +53 -0
  91. package/dist/{build-506kjhcm.js → build-9em4ymqn.js} +12 -13
  92. package/dist/build-eh3x12qc.js +52 -0
  93. package/dist/build-emhyycp7.js +53 -0
  94. package/dist/build-f1m9jn7b.js +53 -0
  95. package/dist/build-ffe72jjv.js +54 -0
  96. package/dist/build-fx90y6za.js +53 -0
  97. package/dist/build-h31egsze.js +53 -0
  98. package/dist/build-hpczwagb.js +53 -0
  99. package/dist/{build-1kmkwqgh.js → build-hpkbanpw.js} +16 -15
  100. package/dist/build-j2re91xe.js +54 -0
  101. package/dist/{build-66866ahs.js → build-j78389rg.js} +12 -13
  102. package/dist/build-m3kckn5g.js +53 -0
  103. package/dist/build-mf3thcjm.js +53 -0
  104. package/dist/build-n3n5bv37.js +52 -0
  105. package/dist/build-ngfy4v5x.js +53 -0
  106. package/dist/build-pr843h0d.js +52 -0
  107. package/dist/build-qyg2b45p.js +52 -0
  108. package/dist/build-r6884kyt.js +53 -0
  109. package/dist/build-re370wkf.js +53 -0
  110. package/dist/build-vvndgwg0.js +52 -0
  111. package/dist/build-wp559jkf.js +54 -0
  112. package/dist/{build-g1adm3ww.js → build-x4r67275.js} +12 -13
  113. package/dist/build-xp4pfhvv.js +52 -0
  114. package/dist/build-y489r2h9.js +54 -0
  115. package/dist/build-y6g4bvx5.js +52 -0
  116. package/dist/build-yvn0yhwx.js +52 -0
  117. package/dist/build-z4vmhs5c.js +53 -0
  118. package/dist/bundler/defaults.d.ts +23 -0
  119. package/dist/bundler/defaults.d.ts.map +1 -0
  120. package/dist/bundler/do-bundler.d.ts.map +1 -1
  121. package/dist/bundler/index.d.ts +1 -0
  122. package/dist/bundler/index.d.ts.map +1 -1
  123. package/dist/bundler/rolldown-shared.d.ts +29 -0
  124. package/dist/bundler/rolldown-shared.d.ts.map +1 -1
  125. package/dist/bundler/worker-bundler.d.ts.map +1 -1
  126. package/dist/bundler/worker-compat.d.ts.map +1 -1
  127. package/dist/cli/build-manifest.d.ts +54 -0
  128. package/dist/cli/build-manifest.d.ts.map +1 -0
  129. package/dist/cli/commands/build-artifacts.d.ts +13 -0
  130. package/dist/cli/commands/build-artifacts.d.ts.map +1 -1
  131. package/dist/cli/commands/deploy.d.ts.map +1 -1
  132. package/dist/cli/dependencies.d.ts +1 -0
  133. package/dist/cli/dependencies.d.ts.map +1 -1
  134. package/dist/cli/deploy-strategy.d.ts +3 -3
  135. package/dist/cli/deploy-strategy.d.ts.map +1 -1
  136. package/dist/cli/help-pages/pages/core.d.ts.map +1 -1
  137. package/dist/cli/index.js +12 -0
  138. package/dist/cli/preview-bindings.d.ts +8 -1
  139. package/dist/cli/preview-bindings.d.ts.map +1 -1
  140. package/dist/cli/preview.d.ts +1 -2
  141. package/dist/cli/preview.d.ts.map +1 -1
  142. package/dist/cloudflare/account-resources.d.ts.map +1 -1
  143. package/dist/cloudflare/api.d.ts +67 -3
  144. package/dist/cloudflare/api.d.ts.map +1 -1
  145. package/dist/cloudflare/auth.d.ts.map +1 -1
  146. package/dist/{src/cloudflare → cloudflare}/index.js +7 -7
  147. package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
  148. package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
  149. package/dist/cloudflare/kv-namespace.d.ts +2 -1
  150. package/dist/cloudflare/kv-namespace.d.ts.map +1 -1
  151. package/dist/cloudflare/preferences.d.ts +7 -0
  152. package/dist/cloudflare/preferences.d.ts.map +1 -1
  153. package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
  154. package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
  155. package/dist/cloudflare/preview-registry-records.d.ts +3 -60
  156. package/dist/cloudflare/preview-registry-records.d.ts.map +1 -1
  157. package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
  158. package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
  159. package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
  160. package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
  161. package/dist/cloudflare/preview-urls.d.ts +3 -0
  162. package/dist/cloudflare/preview-urls.d.ts.map +1 -0
  163. package/dist/cloudflare/tokens.d.ts +23 -0
  164. package/dist/cloudflare/tokens.d.ts.map +1 -1
  165. package/dist/cloudflare/types.d.ts +1 -1
  166. package/dist/cloudflare/types.d.ts.map +1 -1
  167. package/dist/cloudflare/usage.d.ts +30 -2
  168. package/dist/cloudflare/usage.d.ts.map +1 -1
  169. package/dist/config/binding-resolution-helpers.d.ts +36 -0
  170. package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
  171. package/dist/config/compatibility.d.ts +3 -0
  172. package/dist/config/compatibility.d.ts.map +1 -0
  173. package/dist/config/compiler.d.ts +61 -20
  174. package/dist/config/compiler.d.ts.map +1 -1
  175. package/dist/config/deploy-resources.d.ts +58 -0
  176. package/dist/config/deploy-resources.d.ts.map +1 -0
  177. package/dist/config/index.d.ts +5 -2
  178. package/dist/config/index.d.ts.map +1 -1
  179. package/dist/config/preview-resources.d.ts +6 -0
  180. package/dist/config/preview-resources.d.ts.map +1 -1
  181. package/dist/config/preview.d.ts.map +1 -1
  182. package/dist/config/ref.d.ts +14 -1
  183. package/dist/config/ref.d.ts.map +1 -1
  184. package/dist/config/resolve-phased.d.ts +72 -0
  185. package/dist/config/resolve-phased.d.ts.map +1 -0
  186. package/dist/config/resolve.d.ts +7 -0
  187. package/dist/config/resolve.d.ts.map +1 -1
  188. package/dist/config/resource-resolution.d.ts +26 -6
  189. package/dist/config/resource-resolution.d.ts.map +1 -1
  190. package/dist/config/schema-bindings.d.ts +262 -0
  191. package/dist/config/schema-bindings.d.ts.map +1 -1
  192. package/dist/config/schema-env.d.ts +375 -39
  193. package/dist/config/schema-env.d.ts.map +1 -1
  194. package/dist/config/schema-normalization.d.ts +26 -2
  195. package/dist/config/schema-normalization.d.ts.map +1 -1
  196. package/dist/config/schema.d.ts +994 -63
  197. package/dist/config/schema.d.ts.map +1 -1
  198. package/dist/config/service-bindings-validation.d.ts +36 -0
  199. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  200. package/dist/{config-hwdqjse7.js → config-1japnjmx.js} +5 -5
  201. package/dist/{config-q0g5qdga.js → config-287wjn1m.js} +6 -6
  202. package/dist/{config-fjwke42y.js → config-4x6vq82e.js} +6 -6
  203. package/dist/{config-pxvewrhv.js → config-5n0avhcx.js} +6 -6
  204. package/dist/config-70s2ap5j.js +59 -0
  205. package/dist/config-7hge8ze6.js +59 -0
  206. package/dist/config-7rbp7aek.js +59 -0
  207. package/dist/config-b8xbbmta.js +59 -0
  208. package/dist/config-baee5690.js +59 -0
  209. package/dist/config-bczpc1ey.js +59 -0
  210. package/dist/{src/config-entry.js → config-entry.js} +3 -3
  211. package/dist/config-fhmwzaw6.js +59 -0
  212. package/dist/config-g9vkfa4x.js +59 -0
  213. package/dist/config-gpexkzth.js +59 -0
  214. package/dist/config-nspw7sgv.js +59 -0
  215. package/dist/config-ntm4x9wt.js +59 -0
  216. package/dist/config-nv6hfpg6.js +59 -0
  217. package/dist/config-pjc33wew.js +59 -0
  218. package/dist/config-pnz2e8s3.js +59 -0
  219. package/dist/config-qts6nh6g.js +59 -0
  220. package/dist/config-sg2xrdt4.js +59 -0
  221. package/dist/config-vzwckat3.js +59 -0
  222. package/dist/config-x90dkmm7.js +59 -0
  223. package/dist/{src/decorators → decorators}/index.js +2 -2
  224. package/dist/deploy-1s6nv5rp.js +921 -0
  225. package/dist/{deploy-ykpcjkc2.js → deploy-30ph1rrd.js} +263 -32
  226. package/dist/{deploy-ex4g5avz.js → deploy-39dmfn9d.js} +338 -38
  227. package/dist/deploy-44n2pshy.js +1016 -0
  228. package/dist/deploy-45qxpsfe.js +921 -0
  229. package/dist/deploy-64e57w1g.js +1040 -0
  230. package/dist/deploy-82j43vta.js +1040 -0
  231. package/dist/deploy-99m8qhpa.js +1041 -0
  232. package/dist/deploy-9twkd32f.js +1040 -0
  233. package/dist/deploy-a2eq2c1n.js +1040 -0
  234. package/dist/{deploy-csfhdr64.js → deploy-a3pb1qs5.js} +259 -29
  235. package/dist/deploy-agbtfm04.js +921 -0
  236. package/dist/{deploy-jnb0bhka.js → deploy-aswbtbf3.js} +361 -49
  237. package/dist/deploy-bqf3kxy5.js +972 -0
  238. package/dist/deploy-fv4z648h.js +921 -0
  239. package/dist/deploy-gsybda2f.js +1038 -0
  240. package/dist/deploy-h17nzysm.js +921 -0
  241. package/dist/deploy-hc89h4wg.js +1045 -0
  242. package/dist/deploy-jey5pnqn.js +1040 -0
  243. package/dist/deploy-jv0yfqvk.js +1040 -0
  244. package/dist/deploy-kn3z6spd.js +941 -0
  245. package/dist/deploy-m22xmz9w.js +921 -0
  246. package/dist/deploy-nefp2njy.js +1038 -0
  247. package/dist/deploy-ppp8pg6w.js +1038 -0
  248. package/dist/deploy-qah2eag6.js +1041 -0
  249. package/dist/deploy-qdq2gpad.js +1045 -0
  250. package/dist/deploy-r1yf8913.js +1038 -0
  251. package/dist/deploy-r8nam9rr.js +1038 -0
  252. package/dist/deploy-rrm4a0xw.js +921 -0
  253. package/dist/deploy-s0tfnc12.js +1040 -0
  254. package/dist/deploy-s636ks9k.js +1041 -0
  255. package/dist/deploy-sany8t54.js +1045 -0
  256. package/dist/deploy-skqn61j3.js +1038 -0
  257. package/dist/deploy-smv2870h.js +921 -0
  258. package/dist/deploy-sp16nxs5.js +972 -0
  259. package/dist/deploy-sr805bvq.js +921 -0
  260. package/dist/deploy-t9dehmn0.js +1041 -0
  261. package/dist/deploy-taxt7njz.js +1041 -0
  262. package/dist/deploy-tnfvfh9m.js +1040 -0
  263. package/dist/deploy-w5f8db4s.js +1040 -0
  264. package/dist/deploy-wsxcectr.js +921 -0
  265. package/dist/deploy-xyfbhj3v.js +1038 -0
  266. package/dist/deploy-yv1y5xaa.js +921 -0
  267. package/dist/deploy-z3ejw37k.js +1040 -0
  268. package/dist/{dev-8nssqatr.js → dev-02tgdc4f.js} +199 -448
  269. package/dist/dev-0tqhveye.js +2314 -0
  270. package/dist/dev-3dj2gkfq.js +2314 -0
  271. package/dist/dev-3e0etsww.js +2314 -0
  272. package/dist/dev-47dk7c13.js +2314 -0
  273. package/dist/dev-4a2a31cm.js +2314 -0
  274. package/dist/dev-4w1stcn8.js +2427 -0
  275. package/dist/dev-5wkh1z4a.js +2188 -0
  276. package/dist/dev-6t22zmey.js +2350 -0
  277. package/dist/dev-89p1sdv7.js +2395 -0
  278. package/dist/dev-8d1gxjky.js +2427 -0
  279. package/dist/dev-8yawx3cv.js +2314 -0
  280. package/dist/dev-9h4p8a0c.js +2393 -0
  281. package/dist/dev-9xmttj4c.js +2314 -0
  282. package/dist/dev-at6gy2td.js +2427 -0
  283. package/dist/dev-bkbz97z0.js +2314 -0
  284. package/dist/{dev-grznx8fn.js → dev-ct3344kv.js} +199 -448
  285. package/dist/{dev-7ef5e2j1.js → dev-dg8dh5c1.js} +123 -298
  286. package/dist/dev-dr5jb965.js +2427 -0
  287. package/dist/dev-e4sjqtbq.js +2314 -0
  288. package/dist/dev-ecq26mg4.js +2350 -0
  289. package/dist/dev-ef237vgp.js +2324 -0
  290. package/dist/dev-enbdg4st.js +2314 -0
  291. package/dist/dev-jcrxg8hq.js +2160 -0
  292. package/dist/dev-jk0gqges.js +2432 -0
  293. package/dist/dev-k62936am.js +2314 -0
  294. package/dist/dev-k8ptbvrs.js +2160 -0
  295. package/dist/dev-kqm107h4.js +2422 -0
  296. package/dist/dev-n0gx7eya.js +2350 -0
  297. package/dist/dev-n23m6rtb.js +2314 -0
  298. package/dist/dev-ny8fmkzg.js +2432 -0
  299. package/dist/dev-p1c65cga.js +2386 -0
  300. package/dist/dev-p4fjbb4h.js +2395 -0
  301. package/dist/dev-pnfcv79z.js +2160 -0
  302. package/dist/dev-qnrrv5ey.js +2393 -0
  303. package/dist/dev-qqysg50t.js +2427 -0
  304. package/dist/dev-r9f3n11q.js +2410 -0
  305. package/dist/dev-s0815dw4.js +2427 -0
  306. package/dist/dev-s4tpkg60.js +2314 -0
  307. package/dist/dev-s82fcesg.js +2314 -0
  308. package/dist/dev-s9sz53me.js +2401 -0
  309. package/dist/dev-sdka7z0d.js +2427 -0
  310. package/dist/dev-server/d1-migrations.d.ts +22 -0
  311. package/dist/dev-server/d1-migrations.d.ts.map +1 -1
  312. package/dist/dev-server/dev-server-state.d.ts +56 -0
  313. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  314. package/dist/dev-server/gateway-script.d.ts +14 -1
  315. package/dist/dev-server/gateway-script.d.ts.map +1 -1
  316. package/dist/dev-server/miniflare-bindings.d.ts +16 -0
  317. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  318. package/dist/dev-server/miniflare-dev-config.d.ts +30 -0
  319. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  320. package/dist/dev-server/miniflare-worker-config.d.ts +44 -0
  321. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  322. package/dist/dev-server/reload-queue.d.ts +13 -0
  323. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  324. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  325. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  326. package/dist/dev-server/server.d.ts.map +1 -1
  327. package/dist/dev-server/vite-utils.d.ts +18 -0
  328. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  329. package/dist/dev-server/worker-source-watcher.d.ts +6 -0
  330. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -1
  331. package/dist/dev-t3tjscah.js +2350 -0
  332. package/dist/dev-t50kdb1j.js +2338 -0
  333. package/dist/dev-t5xf55pt.js +2314 -0
  334. package/dist/dev-t63c44bb.js +2314 -0
  335. package/dist/dev-wg3d38sy.js +2433 -0
  336. package/dist/dev-wh4rfgsh.js +2427 -0
  337. package/dist/{dev-2pd33m28.js → dev-wjh8gdd1.js} +200 -325
  338. package/dist/dev-xzxy9qvq.js +2314 -0
  339. package/dist/dev-yymaq4ph.js +2392 -0
  340. package/dist/dev-zg2w2ve3.js +2422 -0
  341. package/dist/dev-zsb2xk1x.js +2427 -0
  342. package/dist/dev-zty3yhzg.js +2324 -0
  343. package/dist/{doctor-04ammrrh.js → doctor-3mqavqg3.js} +10 -10
  344. package/dist/{doctor-fzkznce1.js → doctor-5nek32fz.js} +10 -10
  345. package/dist/{doctor-sa5xv1bz.js → doctor-7ra1w0sk.js} +10 -10
  346. package/dist/doctor-ak830a0k.js +245 -0
  347. package/dist/doctor-bye3cs8a.js +245 -0
  348. package/dist/{doctor-fmjj65mc.js → doctor-c5m9pmwq.js} +8 -8
  349. package/dist/doctor-cqfkgxvw.js +245 -0
  350. package/dist/doctor-e1h9mhzp.js +245 -0
  351. package/dist/doctor-fmqsrafk.js +245 -0
  352. package/dist/doctor-hgs7wr5g.js +245 -0
  353. package/dist/doctor-j8ytsy94.js +245 -0
  354. package/dist/doctor-mcmkgp6e.js +245 -0
  355. package/dist/doctor-qb6m2exc.js +245 -0
  356. package/dist/doctor-qq4tsh8q.js +245 -0
  357. package/dist/doctor-tecv869a.js +245 -0
  358. package/dist/doctor-wg0245pe.js +245 -0
  359. package/dist/doctor-z3jfqxtz.js +245 -0
  360. package/dist/durable-object-4hey8fgy.js +13 -0
  361. package/dist/durable-object-v3gsnybk.js +13 -0
  362. package/dist/env.d.ts.map +1 -1
  363. package/dist/index-0krb65s3.js +215 -0
  364. package/dist/index-0mantew0.js +513 -0
  365. package/dist/{index-p03n4qet.js → index-0mezg6ar.js} +26 -21
  366. package/dist/{index-mqekt778.js → index-0tk2rs0q.js} +1 -1
  367. package/dist/{index-h18pxvzs.js → index-124e9t4t.js} +1 -1
  368. package/dist/{index-na3mnm1k.js → index-1546yrn0.js} +2 -2
  369. package/dist/index-15fpa5tx.js +232 -0
  370. package/dist/{index-jb75kwa4.js → index-18mp5v50.js} +33 -14
  371. package/dist/{index-4v9bc2pc.js → index-195tc6qh.js} +26 -21
  372. package/dist/{index-0kfzdywd.js → index-1bg8w2gf.js} +1 -1
  373. package/dist/index-1d4jg11n.js +542 -0
  374. package/dist/index-1e2qtrmj.js +188 -0
  375. package/dist/{index-v5nmqthy.js → index-1ghhgb9d.js} +2 -2
  376. package/dist/index-1nhd9nkd.js +232 -0
  377. package/dist/{index-6psz1h4c.js → index-1wn8mjep.js} +116 -96
  378. package/dist/index-1xhd5czz.js +185 -0
  379. package/dist/index-2a2g4fwp.js +993 -0
  380. package/dist/{index-fvsadj32.js → index-2bmtj21z.js} +2 -2
  381. package/dist/{index-816krz9p.js → index-2dpmd14d.js} +1 -1
  382. package/dist/{index-3ke5d2vn.js → index-2fa0afdp.js} +173 -30
  383. package/dist/{index-d8etnfef.js → index-2rcrefqd.js} +173 -30
  384. package/dist/index-2t2m5148.js +1372 -0
  385. package/dist/index-2vbzamev.js +437 -0
  386. package/dist/index-2vdep9h0.js +993 -0
  387. package/dist/{index-zfhq6s96.js → index-2y90j9cz.js} +2 -2
  388. package/dist/index-33ep0z9x.js +385 -0
  389. package/dist/index-37jgbaw6.js +1372 -0
  390. package/dist/index-380ncsqc.js +977 -0
  391. package/dist/{index-thna1tkd.js → index-3e1x39fc.js} +111 -26
  392. package/dist/index-3e7by9sy.js +223 -0
  393. package/dist/{index-xk9djfjp.js → index-3egad6wm.js} +34 -15
  394. package/dist/index-3f8rzmjw.js +232 -0
  395. package/dist/index-3vd4r37r.js +1372 -0
  396. package/dist/index-3vgn5e89.js +1682 -0
  397. package/dist/index-3x7k3t0f.js +513 -0
  398. package/dist/index-3xfe2dst.js +399 -0
  399. package/dist/index-464j1zb4.js +513 -0
  400. package/dist/{index-pnbs1b8k.js → index-48rxsj95.js} +110 -25
  401. package/dist/index-4bezcdd1.js +385 -0
  402. package/dist/index-4fp11z9e.js +973 -0
  403. package/dist/{index-m3fmw6mx.js → index-4knecthc.js} +2 -2
  404. package/dist/index-502y7w13.js +538 -0
  405. package/dist/index-50mxxb4q.js +185 -0
  406. package/dist/index-5achzspr.js +185 -0
  407. package/dist/index-5ef3jmv7.js +1372 -0
  408. package/dist/index-5eswe8yv.js +844 -0
  409. package/dist/index-5gevxfgs.js +513 -0
  410. package/dist/index-5gmf048z.js +817 -0
  411. package/dist/index-5jtkxpjf.js +971 -0
  412. package/dist/{index-72mve6vh.js → index-5m85bd9x.js} +1 -1
  413. package/dist/{index-4rrttqj5.js → index-5n5nn0a8.js} +62 -176
  414. package/dist/index-5p3bgjwr.js +808 -0
  415. package/dist/index-5vzcszr2.js +1230 -0
  416. package/dist/index-5w77r4w9.js +513 -0
  417. package/dist/index-62srkqcm.js +168 -0
  418. package/dist/index-63cgqe43.js +1372 -0
  419. package/dist/index-65e7xx1a.js +19 -0
  420. package/dist/index-65qrje14.js +185 -0
  421. package/dist/index-66sx3b3v.js +385 -0
  422. package/dist/{index-b8m6883k.js → index-678j0n13.js} +2 -2
  423. package/dist/{index-epw1jxz5.js → index-6ftrth7n.js} +194 -180
  424. package/dist/index-6g90pvxa.js +215 -0
  425. package/dist/index-6j4m5x2d.js +1372 -0
  426. package/dist/{index-7v583xan.js → index-6jwpke14.js} +13 -46
  427. package/dist/index-6knsjvxh.js +1372 -0
  428. package/dist/index-6kwq6yf8.js +979 -0
  429. package/dist/index-6mg4yvc6.js +74 -0
  430. package/dist/{index-e9yw4d6y.js → index-6phry941.js} +5 -5
  431. package/dist/index-6r59wbek.js +232 -0
  432. package/dist/index-6sf815ps.js +74 -0
  433. package/dist/index-6zd89k6y.js +1230 -0
  434. package/dist/{index-ry131z23.js → index-71rwg0cn.js} +62 -176
  435. package/dist/index-75ex2m0x.js +695 -0
  436. package/dist/{index-htzf0py1.js → index-79exzs3q.js} +194 -180
  437. package/dist/{index-1sp39f2f.js → index-7bxj118m.js} +62 -176
  438. package/dist/index-7c6np4mq.js +397 -0
  439. package/dist/{index-7x0ybbtx.js → index-7cm339qz.js} +5 -5
  440. package/dist/index-7e359eb5.js +895 -0
  441. package/dist/index-7eqyr4j8.js +70 -0
  442. package/dist/index-7k278fgz.js +273 -0
  443. package/dist/index-7kazxkjt.js +1372 -0
  444. package/dist/index-7m0x8m9r.js +844 -0
  445. package/dist/index-7p74smg8.js +1372 -0
  446. package/dist/index-7q8fke3k.js +188 -0
  447. package/dist/index-7qk6eafn.js +1682 -0
  448. package/dist/{index-yzddwp02.js → index-7vbjt6ba.js} +110 -93
  449. package/dist/{index-7kcxjhta.js → index-7z4b0vgd.js} +19 -5
  450. package/dist/index-82xn4azv.js +74 -0
  451. package/dist/index-83wns7cz.js +70 -0
  452. package/dist/index-852945d4.js +413 -0
  453. package/dist/{index-8t5nb4qx.js → index-86rvj79f.js} +5 -5
  454. package/dist/index-88tcq0t4.js +542 -0
  455. package/dist/{index-q4kaz181.js → index-8evn52g1.js} +279 -268
  456. package/dist/index-8jkf4nsd.js +695 -0
  457. package/dist/{index-sqrksgb2.js → index-8nx4ce3e.js} +7 -7
  458. package/dist/index-8q1bcnrh.js +1372 -0
  459. package/dist/index-8t5gynct.js +971 -0
  460. package/dist/index-905svbb6.js +470 -0
  461. package/dist/index-94cb0sac.js +1372 -0
  462. package/dist/index-95mmvbw7.js +538 -0
  463. package/dist/index-97x94h0m.js +438 -0
  464. package/dist/index-9an9qqr1.js +728 -0
  465. package/dist/index-9d125myk.js +1372 -0
  466. package/dist/index-9gg0kqw0.js +470 -0
  467. package/dist/index-9ryw7mcw.js +971 -0
  468. package/dist/index-a3e13a7m.js +478 -0
  469. package/dist/index-a6j44jmr.js +1372 -0
  470. package/dist/index-a75ejnvt.js +1711 -0
  471. package/dist/index-ab2nck1h.js +1372 -0
  472. package/dist/index-abrqnq3e.js +488 -0
  473. package/dist/index-afjbpgb1.js +1218 -0
  474. package/dist/index-at89fpde.js +470 -0
  475. package/dist/{index-cgbvmse6.js → index-awr0tp6p.js} +1 -1
  476. package/dist/index-b1be9bdh.js +1372 -0
  477. package/dist/index-b1xs3wc4.js +513 -0
  478. package/dist/index-b50x7seh.js +513 -0
  479. package/dist/{index-9az6s7ad.js → index-b5ra8w3q.js} +1 -1
  480. package/dist/index-b64sbzgv.js +884 -0
  481. package/dist/index-b7r8ntpm.js +1372 -0
  482. package/dist/index-ba9gyy13.js +513 -0
  483. package/dist/{index-k29yjhv0.js → index-bb66mn7p.js} +1 -1
  484. package/dist/index-bc5pvbbd.js +1193 -0
  485. package/dist/index-bj0mk3dw.js +74 -0
  486. package/dist/index-bj3a8dr0.js +1372 -0
  487. package/dist/index-bk3eez1g.js +513 -0
  488. package/dist/index-btjx137w.js +774 -0
  489. package/dist/index-btrfqp9h.js +133 -0
  490. package/dist/index-bx6gangy.js +402 -0
  491. package/dist/index-c0tc0yts.js +471 -0
  492. package/dist/{index-6jef5emv.js → index-c0whkev9.js} +27 -3
  493. package/dist/index-ca96qkva.js +1372 -0
  494. package/dist/index-cdtzkedk.js +993 -0
  495. package/dist/index-cejgenma.js +1372 -0
  496. package/dist/index-cp8jt5pr.js +52 -0
  497. package/dist/index-cpz69pek.js +1372 -0
  498. package/dist/{index-gs4y9gdf.js → index-crrdegk5.js} +2 -2
  499. package/dist/index-cskszwkx.js +1372 -0
  500. package/dist/index-cxf22a0s.js +74 -0
  501. package/dist/index-cy3c3w81.js +270 -0
  502. package/dist/index-d5dgb1j6.js +74 -0
  503. package/dist/index-da397xcx.js +1372 -0
  504. package/dist/index-damyy8bw.js +1372 -0
  505. package/dist/{index-x9cwdxw5.js → index-dd6fwwmq.js} +3 -3
  506. package/dist/index-dh1954bp.js +52 -0
  507. package/dist/index-djp2wd1f.js +1372 -0
  508. package/dist/{index-0apbm26n.js → index-dmbdj6va.js} +111 -94
  509. package/dist/index-dmf76tac.js +1372 -0
  510. package/dist/index-dphr32gc.js +420 -0
  511. package/dist/index-dxh2qyyw.js +52 -0
  512. package/dist/index-dzayfxjy.js +492 -0
  513. package/dist/index-e05q77kt.js +397 -0
  514. package/dist/index-e11b1fb2.js +495 -0
  515. package/dist/index-e3zvspqj.js +968 -0
  516. package/dist/index-e4tzzbn9.js +1372 -0
  517. package/dist/index-e5ct1gwb.js +1372 -0
  518. package/dist/index-e7ptcz1a.js +1372 -0
  519. package/dist/index-e7wt0203.js +513 -0
  520. package/dist/{index-61jsjnsv.js → index-ebwsvf9t.js} +110 -25
  521. package/dist/index-ed73jn3d.js +185 -0
  522. package/dist/index-ed7n5d07.js +185 -0
  523. package/dist/index-ejs2a4kd.js +513 -0
  524. package/dist/index-esjrgt3y.js +467 -0
  525. package/dist/index-ev03khsd.js +513 -0
  526. package/dist/index-f1gsqm54.js +168 -0
  527. package/dist/index-f90314kt.js +52 -0
  528. package/dist/index-f9mhsept.js +185 -0
  529. package/dist/index-fa6zwffw.js +70 -0
  530. package/dist/index-fama7kpt.js +52 -0
  531. package/dist/index-fgk87mk2.js +1067 -0
  532. package/dist/index-fkyvxe4b.js +968 -0
  533. package/dist/index-g0h40xke.js +513 -0
  534. package/dist/index-g0rqh52c.js +385 -0
  535. package/dist/{index-0eqksag4.js → index-g170d619.js} +13 -46
  536. package/dist/index-g3qtxkms.js +881 -0
  537. package/dist/index-gactvqcs.js +467 -0
  538. package/dist/index-gaew61v4.js +470 -0
  539. package/dist/index-gba371j7.js +542 -0
  540. package/dist/index-gegyyfnw.js +1372 -0
  541. package/dist/index-get7he2s.js +133 -0
  542. package/dist/index-gn5wy09x.js +205 -0
  543. package/dist/{index-2pb7b9mw.js → index-gtbgzwfs.js} +62 -176
  544. package/dist/index-gtpz0gkz.js +185 -0
  545. package/dist/index-h1s66pmp.js +52 -0
  546. package/dist/{index-11m5a8wd.js → index-h8r2d8y5.js} +112 -26
  547. package/dist/index-heeqwrfd.js +385 -0
  548. package/dist/{index-7g8zyws4.js → index-hheb5dyt.js} +2 -2
  549. package/dist/index-hjz2x9nq.js +441 -0
  550. package/dist/index-hkex7ns5.js +513 -0
  551. package/dist/index-hmbctwv6.js +517 -0
  552. package/dist/index-hpzasdhw.js +513 -0
  553. package/dist/index-hqdr9wdm.js +74 -0
  554. package/dist/index-hrvz8d26.js +1372 -0
  555. package/dist/index-hyvhnf6r.js +971 -0
  556. package/dist/index-j2kc5rbv.js +895 -0
  557. package/dist/index-j2xdxwsz.js +133 -0
  558. package/dist/index-j47hhb3r.js +694 -0
  559. package/dist/index-j5aphr5x.js +185 -0
  560. package/dist/index-j68v36q1.js +188 -0
  561. package/dist/index-j7cf22x7.js +968 -0
  562. package/dist/index-j7xxrbnr.js +694 -0
  563. package/dist/index-jptqxkew.js +470 -0
  564. package/dist/index-jsymy3mb.js +781 -0
  565. package/dist/index-jwvy32xk.js +188 -0
  566. package/dist/index-jxe1b19v.js +133 -0
  567. package/dist/index-jz96ry5g.js +513 -0
  568. package/dist/index-k6wtsgs1.js +971 -0
  569. package/dist/index-kawa49m8.js +371 -0
  570. package/dist/index-key4e5c9.js +168 -0
  571. package/dist/index-khbmdrn2.js +884 -0
  572. package/dist/index-kpzfwex6.js +264 -0
  573. package/dist/index-kse4gn99.js +74 -0
  574. package/dist/index-ktscz0r2.js +264 -0
  575. package/dist/index-kybmjvad.js +1212 -0
  576. package/dist/index-kzm9cea8.js +185 -0
  577. package/dist/index-m2d74gqg.js +808 -0
  578. package/dist/index-m56w7mjt.js +513 -0
  579. package/dist/index-m95ha3n4.js +264 -0
  580. package/dist/index-ma151p8g.js +264 -0
  581. package/dist/index-mg8vwqxf.js +514 -0
  582. package/dist/index-mhdsywhs.js +264 -0
  583. package/dist/index-mjgx910r.js +895 -0
  584. package/dist/index-mkrmaea3.js +185 -0
  585. package/dist/index-mkxnyyjn.js +264 -0
  586. package/dist/index-mp5mrst6.js +1372 -0
  587. package/dist/index-ms15cr86.js +513 -0
  588. package/dist/index-mt99xkc6.js +133 -0
  589. package/dist/index-mttv6k25.js +881 -0
  590. package/dist/index-myxfx52v.js +385 -0
  591. package/dist/index-mzw7732t.js +74 -0
  592. package/dist/index-n3mjwz22.js +188 -0
  593. package/dist/index-n3yksgz0.js +1372 -0
  594. package/dist/{index-9n6djthj.js → index-n4jr3dmk.js} +32 -38
  595. package/dist/index-n5drt64b.js +74 -0
  596. package/dist/index-n8frmffg.js +264 -0
  597. package/dist/index-n8k8chde.js +694 -0
  598. package/dist/index-na796ka6.js +994 -0
  599. package/dist/index-nbs4q0qg.js +1218 -0
  600. package/dist/index-newpq2zf.js +968 -0
  601. package/dist/index-nexg9p7j.js +1271 -0
  602. package/dist/index-nfm8tb5n.js +74 -0
  603. package/dist/index-nga2tg9z.js +1372 -0
  604. package/dist/{index-43dq8yx8.js → index-ngbzr9gz.js} +111 -94
  605. package/dist/index-nh90nk7j.js +380 -0
  606. package/dist/index-njnmfxm5.js +1372 -0
  607. package/dist/index-nqma24j3.js +385 -0
  608. package/dist/index-ntddf5d9.js +993 -0
  609. package/dist/index-nte9n8w9.js +538 -0
  610. package/dist/index-ntxp7ke1.js +264 -0
  611. package/dist/index-nwxnmw41.js +264 -0
  612. package/dist/index-p1xe5eem.js +513 -0
  613. package/dist/{index-wztc9stx.js → index-p477xm52.js} +13 -46
  614. package/dist/index-p8nmkrgw.js +470 -0
  615. package/dist/{index-yqbxjysa.js → index-p97s12vf.js} +50 -43
  616. package/dist/index-p9hvv0yd.js +401 -0
  617. package/dist/index-pac7wv88.js +307 -0
  618. package/dist/index-ptp2pfq1.js +52 -0
  619. package/dist/index-pyeycp3f.js +74 -0
  620. package/dist/index-q23xf3vr.js +479 -0
  621. package/dist/index-q34rvh5a.js +247 -0
  622. package/dist/{index-j185x270.js → index-q5errwrj.js} +53 -46
  623. package/dist/{index-2jnrqbny.js → index-q5nhzc9m.js} +4 -88
  624. package/dist/index-q8f4kawk.js +204 -0
  625. package/dist/index-qer8zv2r.js +997 -0
  626. package/dist/index-qhyy018y.js +467 -0
  627. package/dist/index-qmhdydwy.js +70 -0
  628. package/dist/index-qpmvca5j.js +470 -0
  629. package/dist/index-qr96vaj1.js +52 -0
  630. package/dist/{index-74198nxd.js → index-qtyhg3dn.js} +53 -46
  631. package/dist/index-qye17gq5.js +264 -0
  632. package/dist/index-r0839f5k.js +133 -0
  633. package/dist/index-r1rqg72v.js +1372 -0
  634. package/dist/index-rbckga8p.js +971 -0
  635. package/dist/index-rbxb5x2w.js +1372 -0
  636. package/dist/index-rck779bj.js +739 -0
  637. package/dist/index-rfn2gt5f.js +1658 -0
  638. package/dist/index-rg21w26a.js +470 -0
  639. package/dist/index-rgcz45t0.js +1372 -0
  640. package/dist/index-rhnd376q.js +133 -0
  641. package/dist/index-rjc5z3w6.js +971 -0
  642. package/dist/index-rkhtayd6.js +385 -0
  643. package/dist/index-rm8srzmv.js +371 -0
  644. package/dist/index-rmhk5j03.js +968 -0
  645. package/dist/index-rp4t86bt.js +993 -0
  646. package/dist/index-rpq5ktdy.js +264 -0
  647. package/dist/index-rpsmhdd4.js +1218 -0
  648. package/dist/index-rqpakjyr.js +470 -0
  649. package/dist/index-rttk33x6.js +232 -0
  650. package/dist/index-rwa82e89.js +385 -0
  651. package/dist/index-rz185crv.js +695 -0
  652. package/dist/index-s22verzj.js +1218 -0
  653. package/dist/index-s2s3g1nt.js +133 -0
  654. package/dist/index-s7ytytth.js +781 -0
  655. package/dist/index-sefnpzwa.js +185 -0
  656. package/dist/index-sgxw0xzd.js +513 -0
  657. package/dist/index-stc0caq6.js +1009 -0
  658. package/dist/index-svz82w9h.js +513 -0
  659. package/dist/index-sx49e8x9.js +884 -0
  660. package/dist/index-sxadwvw9.js +185 -0
  661. package/dist/index-sxn223fz.js +1372 -0
  662. package/dist/index-sy0c2mh0.js +1372 -0
  663. package/dist/index-syeh1hca.js +264 -0
  664. package/dist/index-t18wyhgf.js +418 -0
  665. package/dist/index-t4fhcx1n.js +71 -0
  666. package/dist/index-td4hbgj5.js +1372 -0
  667. package/dist/{index-hjy8ctpc.js → index-tkvt9mmq.js} +47 -14
  668. package/dist/index-tmmcf4m6.js +808 -0
  669. package/dist/index-tpgs5v64.js +366 -0
  670. package/dist/index-tt4fsv91.js +412 -0
  671. package/dist/{index-t08te69w.js → index-tte89s31.js} +28 -11
  672. package/dist/index-tvjg7swe.js +1372 -0
  673. package/dist/index-txndxr4w.js +513 -0
  674. package/dist/index-tyh5jc55.js +990 -0
  675. package/dist/index-tyt0wa52.js +470 -0
  676. package/dist/index-tyt3wcfr.js +1372 -0
  677. package/dist/index-v3znz08m.js +968 -0
  678. package/dist/index-v78xbj6n.js +808 -0
  679. package/dist/index-v915brjk.js +1372 -0
  680. package/dist/index-v922fmsx.js +52 -0
  681. package/dist/index-v9w1bbfe.js +842 -0
  682. package/dist/index-vbbgtm8p.js +513 -0
  683. package/dist/{index-k6vq6kkt.js → index-vcjgrmzj.js} +3 -3
  684. package/dist/{index-9ba1etyz.js → index-vdewcg1r.js} +204 -54
  685. package/dist/index-vhqww6tt.js +307 -0
  686. package/dist/index-vse8620z.js +1372 -0
  687. package/dist/index-vtjp46c3.js +52 -0
  688. package/dist/{index-jwd8pcb2.js → index-vxhxk8mf.js} +53 -46
  689. package/dist/index-w3azfsa0.js +695 -0
  690. package/dist/index-w4tq35dn.js +52 -0
  691. package/dist/index-w5qxvxzq.js +991 -0
  692. package/dist/index-w5sedpqn.js +986 -0
  693. package/dist/index-waha3chv.js +1230 -0
  694. package/dist/index-wdxww0kj.js +1006 -0
  695. package/dist/index-wdy5y07x.js +1372 -0
  696. package/dist/index-wf9pnh6j.js +385 -0
  697. package/dist/index-wnnbbbkt.js +1192 -0
  698. package/dist/index-wvcmvtjf.js +1372 -0
  699. package/dist/index-x0jbntp0.js +470 -0
  700. package/dist/index-x6scc3nx.js +70 -0
  701. package/dist/index-x8e2wsbv.js +971 -0
  702. package/dist/index-xec4p3v5.js +560 -0
  703. package/dist/index-xgfyxpfs.js +1218 -0
  704. package/dist/index-xm9hp9xc.js +1372 -0
  705. package/dist/index-xp7zkxcx.js +1372 -0
  706. package/dist/index-xrbj0ebk.js +185 -0
  707. package/dist/index-xskax7r3.js +50 -0
  708. package/dist/index-xvk5n96q.js +694 -0
  709. package/dist/index-xy1jvt4w.js +1229 -0
  710. package/dist/index-xzg9hhf3.js +470 -0
  711. package/dist/index-xzpg0kaz.js +70 -0
  712. package/dist/index-y3q6qvv3.js +316 -0
  713. package/dist/index-y44ts1dk.js +52 -0
  714. package/dist/index-y5nt1wjb.js +971 -0
  715. package/dist/index-y82b8w14.js +1372 -0
  716. package/dist/index-yb07t3c5.js +1372 -0
  717. package/dist/index-yc3xz3vm.js +431 -0
  718. package/dist/index-yeaqrevg.js +1372 -0
  719. package/dist/index-ygwsd1nn.js +438 -0
  720. package/dist/index-yhdavjk7.js +371 -0
  721. package/dist/index-yjhns95b.js +188 -0
  722. package/dist/index-yk23p7he.js +1372 -0
  723. package/dist/index-ykfgpsmm.js +190 -0
  724. package/dist/index-ymz3cfab.js +968 -0
  725. package/dist/index-yq9g1sq7.js +264 -0
  726. package/dist/index-ys5q9ch9.js +366 -0
  727. package/dist/index-yt0n4p46.js +973 -0
  728. package/dist/index-ytq1t9jx.js +232 -0
  729. package/dist/index-ywmtmf3b.js +513 -0
  730. package/dist/index-yzb44q6d.js +1372 -0
  731. package/dist/index-z043xk61.js +133 -0
  732. package/dist/index-z0gsf674.js +431 -0
  733. package/dist/index-z32n0ndp.js +1372 -0
  734. package/dist/index-z4qgk76w.js +1372 -0
  735. package/dist/{index-yc0gcchc.js → index-z8njfj2g.js} +11 -44
  736. package/dist/{index-0w826dsr.js → index-z9fjnwa8.js} +21 -3
  737. package/dist/{index-1xpj0m4r.js → index-z9gy8w6b.js} +1 -1
  738. package/dist/index-zapkc14c.js +264 -0
  739. package/dist/index-zes6w8yr.js +185 -0
  740. package/dist/index-zgrqest7.js +695 -0
  741. package/dist/index-zsngz131.js +1372 -0
  742. package/dist/index-zxhc6sb0.js +192 -0
  743. package/dist/index.d.ts +1 -5
  744. package/dist/index.d.ts.map +1 -1
  745. package/dist/index.js +61 -0
  746. package/dist/{init-r4hnxan3.js → init-wfh63bfz.js} +1 -1
  747. package/dist/{login-5bsxxpvc.js → login-1amyp1jy.js} +10 -10
  748. package/dist/{login-bhaw72zc.js → login-1cdwn1dj.js} +11 -11
  749. package/dist/{login-2hnz4m4n.js → login-456h8jk3.js} +11 -11
  750. package/dist/{login-6tzvczw2.js → login-4n470c4j.js} +11 -11
  751. package/dist/login-4sh7s849.js +77 -0
  752. package/dist/login-5dmkf0pz.js +77 -0
  753. package/dist/login-88tp4gbb.js +77 -0
  754. package/dist/login-b51faqpc.js +77 -0
  755. package/dist/login-bxyjqmbj.js +77 -0
  756. package/dist/login-c4649qss.js +77 -0
  757. package/dist/login-d80a2qxd.js +77 -0
  758. package/dist/login-dp0napaz.js +77 -0
  759. package/dist/login-j3r6z2t4.js +77 -0
  760. package/dist/login-jkfkdjg4.js +77 -0
  761. package/dist/login-kch6f2yj.js +77 -0
  762. package/dist/login-pmqh94ws.js +77 -0
  763. package/dist/login-rc82x5j8.js +77 -0
  764. package/dist/login-tvppwyx2.js +77 -0
  765. package/dist/login-w76jx22q.js +77 -0
  766. package/dist/login-ze7y36rc.js +77 -0
  767. package/dist/{previews-gm3z0syj.js → previews-02jmcwft.js} +140 -94
  768. package/dist/previews-31bq82km.js +1225 -0
  769. package/dist/{previews-j9ymq4ys.js → previews-62pcvvpe.js} +140 -95
  770. package/dist/{previews-3rn8mz2c.js → previews-76fxkp59.js} +140 -94
  771. package/dist/previews-844bp6kf.js +1214 -0
  772. package/dist/previews-8amn46qv.js +1214 -0
  773. package/dist/previews-a5xbkksy.js +1214 -0
  774. package/dist/previews-bgnryzav.js +1214 -0
  775. package/dist/previews-bkhv9dnr.js +1214 -0
  776. package/dist/previews-c2c64z5m.js +1214 -0
  777. package/dist/previews-e4wgscsb.js +1214 -0
  778. package/dist/previews-ew4reetn.js +1214 -0
  779. package/dist/previews-hzqke1fg.js +1214 -0
  780. package/dist/previews-j8wa3sge.js +1214 -0
  781. package/dist/previews-k5n6vhpm.js +1214 -0
  782. package/dist/previews-n4sdyxa5.js +1214 -0
  783. package/dist/previews-npwrwb0b.js +1214 -0
  784. package/dist/previews-q8ph9wbe.js +1214 -0
  785. package/dist/previews-rfswrh7q.js +1214 -0
  786. package/dist/previews-s0y5yp8s.js +1214 -0
  787. package/dist/previews-s5b6mnz5.js +1214 -0
  788. package/dist/{previews-d487qde5.js → previews-sdte4984.js} +23 -23
  789. package/dist/previews-t5tdm6t0.js +1225 -0
  790. package/dist/previews-tk7vpzj9.js +1214 -0
  791. package/dist/previews-tqt4pk27.js +1214 -0
  792. package/dist/previews-vqg4psk2.js +1225 -0
  793. package/dist/{productions-x9p0pym1.js → productions-4abj58kx.js} +12 -12
  794. package/dist/{productions-5ev5qweg.js → productions-4dpec71r.js} +13 -13
  795. package/dist/{productions-120xg0aq.js → productions-4nedsanh.js} +13 -13
  796. package/dist/{productions-p5rbgp2f.js → productions-5c58yafp.js} +13 -13
  797. package/dist/{productions-me3tdvr9.js → productions-5xq5cjhx.js} +13 -13
  798. package/dist/productions-6dr0bmd7.js +505 -0
  799. package/dist/productions-8f6s8dqr.js +505 -0
  800. package/dist/productions-a2hcwwzf.js +505 -0
  801. package/dist/productions-b7svyjp7.js +505 -0
  802. package/dist/productions-bf2cnr05.js +505 -0
  803. package/dist/productions-dkgry3gv.js +505 -0
  804. package/dist/productions-eqh105tk.js +505 -0
  805. package/dist/productions-etvcm7yf.js +505 -0
  806. package/dist/productions-f1zpbmjz.js +505 -0
  807. package/dist/productions-j14pvx93.js +505 -0
  808. package/dist/productions-j7s1ywvg.js +505 -0
  809. package/dist/productions-jp3v3q3p.js +505 -0
  810. package/dist/productions-m9p42amj.js +505 -0
  811. package/dist/productions-mxbneawa.js +505 -0
  812. package/dist/productions-np4exh9p.js +505 -0
  813. package/dist/productions-rr1hqgda.js +505 -0
  814. package/dist/productions-rtf9ksgg.js +505 -0
  815. package/dist/productions-w2nzftcz.js +505 -0
  816. package/dist/productions-wbks5h7e.js +505 -0
  817. package/dist/productions-y99ayk6h.js +505 -0
  818. package/dist/productions-zpqyw5gm.js +505 -0
  819. package/dist/runtime/context-events.d.ts.map +1 -1
  820. package/dist/runtime/context.d.ts +8 -1
  821. package/dist/runtime/context.d.ts.map +1 -1
  822. package/dist/runtime/exports.d.ts +1 -4
  823. package/dist/runtime/exports.d.ts.map +1 -1
  824. package/dist/runtime/index.d.ts +3 -3
  825. package/dist/runtime/index.d.ts.map +1 -1
  826. package/dist/{src/runtime → runtime}/index.js +22 -7
  827. package/dist/runtime/middleware.d.ts +55 -0
  828. package/dist/runtime/middleware.d.ts.map +1 -1
  829. package/dist/runtime/router/index.d.ts +7 -0
  830. package/dist/runtime/router/index.d.ts.map +1 -0
  831. package/dist/runtime/router/types.d.ts +24 -0
  832. package/dist/runtime/router/types.d.ts.map +1 -0
  833. package/dist/runtime/validation.d.ts +9 -1
  834. package/dist/runtime/validation.d.ts.map +1 -1
  835. package/dist/{src/sveltekit → sveltekit}/index.js +36 -71
  836. package/dist/sveltekit/platform.d.ts +10 -0
  837. package/dist/sveltekit/platform.d.ts.map +1 -1
  838. package/dist/test/binding-hints.d.ts +11 -0
  839. package/dist/test/binding-hints.d.ts.map +1 -0
  840. package/dist/test/bridge-context.d.ts +7 -0
  841. package/dist/test/bridge-context.d.ts.map +1 -1
  842. package/dist/test/index.d.ts +0 -1
  843. package/dist/test/index.d.ts.map +1 -1
  844. package/dist/{index-2x53aqjm.js → test/index.js} +836 -774
  845. package/dist/test/simple-context-bindings.d.ts +13 -0
  846. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  847. package/dist/test/simple-context-env.d.ts +35 -0
  848. package/dist/test/simple-context-env.d.ts.map +1 -0
  849. package/dist/test/simple-context-gateway-script.d.ts.map +1 -1
  850. package/dist/test/simple-context-handlers.d.ts +12 -0
  851. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  852. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  853. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  854. package/dist/test/simple-context-mfconfig.d.ts +7 -0
  855. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  856. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  857. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  858. package/dist/test/simple-context-runtime.d.ts +19 -0
  859. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  860. package/dist/test/simple-context-startup.d.ts +11 -0
  861. package/dist/test/simple-context-startup.d.ts.map +1 -0
  862. package/dist/test/simple-context-transport.d.ts +14 -0
  863. package/dist/test/simple-context-transport.d.ts.map +1 -0
  864. package/dist/test/simple-context.d.ts +6 -3
  865. package/dist/test/simple-context.d.ts.map +1 -1
  866. package/dist/test/utilities.d.ts +13 -5
  867. package/dist/test/utilities.d.ts.map +1 -1
  868. package/dist/test/worker.d.ts +1 -1
  869. package/dist/test/worker.d.ts.map +1 -1
  870. package/dist/{token-kedhcret.js → token-3b9wws58.js} +3 -3
  871. package/dist/{token-m8jmnjwk.js → token-47kcz18j.js} +3 -3
  872. package/dist/token-exz78pth.js +419 -0
  873. package/dist/token-fcthx92c.js +419 -0
  874. package/dist/token-grwp8z4q.js +419 -0
  875. package/dist/token-jkmm44z2.js +419 -0
  876. package/dist/token-qxtvzm3b.js +419 -0
  877. package/dist/token-rq8mvtz9.js +419 -0
  878. package/dist/token-sct51r47.js +419 -0
  879. package/dist/token-sfgxcgen.js +419 -0
  880. package/dist/transform/durable-object.d.ts.map +1 -1
  881. package/dist/transform/worker-entrypoint.d.ts +5 -0
  882. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  883. package/dist/types-0qv4xces.js +572 -0
  884. package/dist/types-2nvrs9jg.js +572 -0
  885. package/dist/types-2pbe8kzw.js +572 -0
  886. package/dist/types-2zyt0m43.js +572 -0
  887. package/dist/types-4xxer9ep.js +572 -0
  888. package/dist/{types-6e5yx6km.js → types-5t5y7a5n.js} +9 -9
  889. package/dist/{types-1gwr2ex6.js → types-5wd2rygw.js} +9 -9
  890. package/dist/types-7j3ykgx7.js +572 -0
  891. package/dist/types-8g78x34n.js +572 -0
  892. package/dist/types-e6d336q3.js +572 -0
  893. package/dist/types-hqh2fx0x.js +572 -0
  894. package/dist/types-j12xmdnd.js +572 -0
  895. package/dist/types-jqn26et3.js +572 -0
  896. package/dist/types-n0mxbq26.js +572 -0
  897. package/dist/types-naz9hvw5.js +572 -0
  898. package/dist/{types-p0gckpn6.js → types-qjcd1jks.js} +7 -7
  899. package/dist/types-r9zb8sw1.js +572 -0
  900. package/dist/types-rv5xwgsn.js +572 -0
  901. package/dist/types-t39njdqx.js +572 -0
  902. package/dist/types-tkgch3xv.js +572 -0
  903. package/dist/{types-0sqwkp7x.js → types-vvtb7rrh.js} +9 -9
  904. package/dist/types-w1grncdj.js +572 -0
  905. package/dist/types-wmw49exb.js +572 -0
  906. package/dist/types-ymxz9jga.js +572 -0
  907. package/dist/utils/resolve-package.d.ts.map +1 -1
  908. package/dist/utils/send-email.js +19 -0
  909. package/dist/vite/config-file.d.ts.map +1 -1
  910. package/dist/{src/vite → vite}/index.js +12 -11
  911. package/dist/vite/plugin-config-hook.d.ts +28 -0
  912. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  913. package/dist/vite/plugin-context.d.ts +25 -0
  914. package/dist/vite/plugin-context.d.ts.map +1 -0
  915. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  916. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  917. package/dist/vite/plugin-programmatic.d.ts +44 -0
  918. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  919. package/dist/vite/plugin-transform.d.ts +41 -0
  920. package/dist/vite/plugin-transform.d.ts.map +1 -0
  921. package/dist/vite/plugin.d.ts +6 -39
  922. package/dist/vite/plugin.d.ts.map +1 -1
  923. package/dist/{worker-y9ha6g44.js → worker-18ceqscc.js} +11 -11
  924. package/dist/{worker-0srh2jfr.js → worker-1yqpwte2.js} +12 -12
  925. package/dist/{worker-qtam8grz.js → worker-2aw27zxy.js} +12 -12
  926. package/dist/{worker-4xrfd10a.js → worker-45tp4a8f.js} +12 -12
  927. package/dist/worker-68zttchg.js +513 -0
  928. package/dist/worker-729cf3fh.js +513 -0
  929. package/dist/worker-aydzxt4f.js +513 -0
  930. package/dist/worker-ejdxma7k.js +513 -0
  931. package/dist/worker-entry/composed-worker.d.ts +1 -0
  932. package/dist/worker-entry/composed-worker.d.ts.map +1 -1
  933. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  934. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  935. package/dist/worker-entry/extensions.d.ts +5 -0
  936. package/dist/worker-entry/extensions.d.ts.map +1 -0
  937. package/dist/worker-entry/routes.d.ts +1 -1
  938. package/dist/worker-entry/routes.d.ts.map +1 -1
  939. package/dist/worker-entry/surface-paths.d.ts +13 -4
  940. package/dist/worker-entry/surface-paths.d.ts.map +1 -1
  941. package/dist/worker-entrypoint-4xp7msd7.js +16 -0
  942. package/dist/worker-entrypoint-f1v9y4s8.js +15 -0
  943. package/dist/{worker-qzm0b7br.js → worker-f6xqjg65.js} +12 -12
  944. package/dist/worker-fdnn62de.js +513 -0
  945. package/dist/worker-frnh95rg.js +513 -0
  946. package/dist/worker-k55nfrmp.js +513 -0
  947. package/dist/worker-kqc6w7ry.js +513 -0
  948. package/dist/worker-ksvcq8be.js +513 -0
  949. package/dist/worker-mjzfstv5.js +513 -0
  950. package/dist/worker-p4rtsndj.js +513 -0
  951. package/dist/worker-p6d53qan.js +513 -0
  952. package/dist/worker-qh2qbv97.js +513 -0
  953. package/dist/worker-r234vnv9.js +513 -0
  954. package/dist/worker-r47bv7gt.js +513 -0
  955. package/dist/worker-s4nvbqsm.js +513 -0
  956. package/dist/worker-ttj7vwce.js +513 -0
  957. package/dist/worker-wv4jdneg.js +513 -0
  958. package/dist/worker-xcbscr75.js +513 -0
  959. package/dist/worker-ywwkf3cp.js +513 -0
  960. package/dist/worker-z8wtk0sh.js +513 -0
  961. package/package.json +138 -123
  962. package/dist/account-s66jb15j.js +0 -475
  963. package/dist/browser-shim/worker.d.ts +0 -14
  964. package/dist/browser-shim/worker.d.ts.map +0 -1
  965. package/dist/deploy-7nmzc9r8.js +0 -609
  966. package/dist/deploy-tp0g6qdp.js +0 -609
  967. package/dist/index-091sh1ma.js +0 -1229
  968. package/dist/index-f85s8gj3.js +0 -2649
  969. package/dist/index-fe2ngvh7.js +0 -1229
  970. package/dist/index-hfj1a2c4.js +0 -2649
  971. package/dist/index-maxpsfk8.js +0 -402
  972. package/dist/index-mbdmrner.js +0 -402
  973. package/dist/index-mea5bc45.js +0 -418
  974. package/dist/index-sgb7c8nm.js +0 -402
  975. package/dist/index-vt4yxkmf.js +0 -470
  976. package/dist/index-wyq6c6yj.js +0 -402
  977. package/dist/index-zyt5byt6.js +0 -2649
  978. package/dist/login-x8tgckqm.js +0 -77
  979. package/dist/previews-q031mx34.js +0 -1168
  980. package/dist/src/cli/index.js +0 -12
  981. package/dist/src/index.js +0 -144
  982. package/dist/src/test/index.js +0 -77
@@ -1,220 +1,82 @@
1
1
  import {
2
2
  getRemoteModeStatus,
3
3
  isRemoteModeActive
4
- } from "./index-d8bdkx2h.js";
4
+ } from "../index-d8bdkx2h.js";
5
5
  import {
6
6
  discoverEntrypointsSync
7
- } from "./index-zt22fe2j.js";
7
+ } from "../index-zt22fe2j.js";
8
+ import {
9
+ resolvePackageSpecifier
10
+ } from "../index-t4fhcx1n.js";
8
11
  import {
9
12
  canProceedWithTest
10
- } from "./index-7g8zyws4.js";
13
+ } from "../index-15fpa5tx.js";
11
14
  import {
12
15
  transformWorkerEntrypoint
13
- } from "./index-wfbfz02q.js";
14
- import {
15
- resolvePackageSpecifier
16
- } from "./index-82f1z98k.js";
17
- import {
18
- __clearTestContext,
19
- __setTestContext
20
- } from "./index-m3fmw6mx.js";
16
+ } from "../index-7k278fgz.js";
21
17
  import {
22
18
  createRouteResolve,
23
19
  invokeFetchModule,
24
20
  matchFetchRoute,
25
21
  resolveFetchHandler
26
- } from "./index-hjy8ctpc.js";
22
+ } from "../index-tt4fsv91.js";
27
23
  import {
24
+ __clearTestContext,
25
+ __setTestContext,
28
26
  createEmailEvent,
29
27
  createFetchEvent,
30
28
  createQueueEvent,
31
29
  createScheduledEvent,
32
30
  createTailEvent,
31
+ env,
33
32
  runWithContext,
34
33
  runWithEventContext
35
- } from "./index-cgbvmse6.js";
34
+ } from "../index-esjrgt3y.js";
35
+ import"../index-a855bdsx.js";
36
36
  import {
37
37
  discoverRoutes
38
- } from "./index-1p814k7s.js";
38
+ } from "../index-3e7by9sy.js";
39
39
  import {
40
40
  DEFAULT_DO_PATTERN,
41
41
  findFiles,
42
42
  findFilesSync
43
- } from "./index-rbht7m9r.js";
43
+ } from "../index-rbht7m9r.js";
44
+ import"../index-65e7xx1a.js";
44
45
  import {
45
46
  findDurableObjectClasses
46
- } from "./index-9wt9x09k.js";
47
+ } from "../index-vhqww6tt.js";
47
48
  import {
48
- startMiniflare,
49
- startMiniflareFromConfig
50
- } from "./index-ry131z23.js";
49
+ extractBindingHints
50
+ } from "../index-xskax7r3.js";
51
51
  import {
52
52
  BridgeClient,
53
53
  createEnvProxy,
54
54
  setBindingHints
55
- } from "./index-9ba1etyz.js";
55
+ } from "../index-a75ejnvt.js";
56
56
  import {
57
57
  createLocalSendEmailBinding,
58
58
  wrapEnvSendEmailBindings
59
- } from "./index-h18pxvzs.js";
59
+ } from "../index-124e9t4t.js";
60
+ import"../index-kawa49m8.js";
60
61
  import {
61
62
  getLocalD1DatabaseIdentifier,
62
63
  loadConfig,
63
64
  normalizeDOBinding,
64
65
  resolveConfigPath
65
- } from "./index-6psz1h4c.js";
66
+ } from "../index-5vzcszr2.js";
66
67
  import {
67
68
  getEffectiveAccountId,
68
69
  getPrimaryAccount
69
- } from "./index-xk9djfjp.js";
70
+ } from "../index-1d4jg11n.js";
70
71
  import {
71
72
  getApiToken,
72
73
  isAuthenticated
73
- } from "./index-0w826dsr.js";
74
+ } from "../index-mg8vwqxf.js";
75
+ import"../index-c0whkev9.js";
76
+ import"../index-q8f4kawk.js";
74
77
  import {
75
78
  __require
76
- } from "./index-37x76zdn.js";
77
-
78
- // src/test/simple-context.ts
79
- import { dirname as dirname4, join as join9, resolve as resolve2 } from "path";
80
-
81
- // src/test/remote-cloudflare.ts
82
- function createRemoteCloudflareClient(accountId) {
83
- let resolvedAccountId = null;
84
- async function getAccountId() {
85
- if (accountId) {
86
- return accountId;
87
- }
88
- if (resolvedAccountId) {
89
- return resolvedAccountId;
90
- }
91
- const primary = await getPrimaryAccount();
92
- if (!primary) {
93
- throw new Error("No Cloudflare account found. Run: bunx wrangler login");
94
- }
95
- const { accountId: effectiveId } = await getEffectiveAccountId(primary.id);
96
- resolvedAccountId = effectiveId;
97
- return effectiveId;
98
- }
99
- async function getToken() {
100
- const token = await getApiToken();
101
- if (!token) {
102
- throw new Error("Not authenticated. Run: bunx wrangler login");
103
- }
104
- return token;
105
- }
106
- async function jsonRequest(options) {
107
- const [acctId, token] = await Promise.all([getAccountId(), getToken()]);
108
- const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${acctId}${options.path}`, {
109
- method: options.method,
110
- headers: {
111
- Authorization: `Bearer ${token}`,
112
- "Content-Type": options.contentType ?? "application/json"
113
- },
114
- body: options.body
115
- });
116
- if (!response.ok) {
117
- const errorText = await response.text();
118
- throw new Error(`${options.serviceLabel} API error (${response.status}): ${errorText}`);
119
- }
120
- const result = await response.json();
121
- if (!result.success) {
122
- const message = result.errors?.[0]?.message || `Unknown ${options.serviceLabel} error`;
123
- throw new Error(`${options.serviceLabel} API error: ${message}`);
124
- }
125
- return result.result;
126
- }
127
- return {
128
- getAccountId,
129
- getToken,
130
- jsonRequest
131
- };
132
- }
133
-
134
- // src/test/remote-ai.ts
135
- function createRemoteAI(accountId) {
136
- const cloudflare = createRemoteCloudflareClient(accountId);
137
- const ai = {
138
- async run(model, inputs) {
139
- return cloudflare.jsonRequest({
140
- method: "POST",
141
- path: `/ai/run/${model}`,
142
- serviceLabel: "AI",
143
- body: JSON.stringify(inputs)
144
- });
145
- },
146
- gateway(_gatewayId) {
147
- console.warn("AI Gateway is not supported in remote test mode");
148
- return ai;
149
- }
150
- };
151
- return ai;
152
- }
153
-
154
- // src/test/remote-vectorize.ts
155
- function createRemoteVectorize(indexName, accountId) {
156
- const cloudflare = createRemoteCloudflareClient(accountId);
157
- async function apiRequest(method, endpoint, body) {
158
- return cloudflare.jsonRequest({
159
- method,
160
- path: `/vectorize/v2/indexes/${indexName}${endpoint}`,
161
- serviceLabel: "Vectorize",
162
- body: body ? JSON.stringify(body) : undefined
163
- });
164
- }
165
- async function ndjsonRequest(endpoint, vectors) {
166
- const ndjson = vectors.map((v) => JSON.stringify(v)).join(`
167
- `);
168
- return cloudflare.jsonRequest({
169
- method: "POST",
170
- path: `/vectorize/v2/indexes/${indexName}${endpoint}`,
171
- serviceLabel: "Vectorize",
172
- contentType: "application/x-ndjson",
173
- body: ndjson
174
- });
175
- }
176
- const vectorize = {
177
- async describe() {
178
- return apiRequest("GET", "");
179
- },
180
- async query(vector, options) {
181
- const vectorArray = Array.isArray(vector) ? vector : Array.from(vector);
182
- return apiRequest("POST", "/query", {
183
- vector: vectorArray,
184
- topK: options?.topK ?? 10,
185
- returnValues: options?.returnValues ?? false,
186
- returnMetadata: options?.returnMetadata ?? "none",
187
- namespace: options?.namespace,
188
- filter: options?.filter
189
- });
190
- },
191
- async insert(vectors) {
192
- const result = await ndjsonRequest("/insert", vectors);
193
- return {
194
- count: result.count,
195
- ids: result.ids || vectors.map((v) => v.id)
196
- };
197
- },
198
- async upsert(vectors) {
199
- const result = await ndjsonRequest("/upsert", vectors);
200
- return {
201
- count: result.count,
202
- ids: result.ids || vectors.map((v) => v.id)
203
- };
204
- },
205
- async deleteByIds(ids) {
206
- const result = await apiRequest("POST", "/delete-by-ids", { ids });
207
- return {
208
- count: result.count,
209
- ids
210
- };
211
- },
212
- async getByIds(ids) {
213
- return apiRequest("POST", "/get-by-ids", { ids });
214
- }
215
- };
216
- return vectorize;
217
- }
79
+ } from "../index-37x76zdn.js";
218
80
 
219
81
  // src/test/resolve-service-bindings.ts
220
82
  import { dirname, join, resolve } from "path";
@@ -656,11 +518,30 @@ export default {
656
518
 
657
519
  async function executeRpc(env, method, params) {
658
520
  const [bindingName, ...rest] = method.split('.')
659
- const op = rest.join('.')
521
+ let op = rest.join('.')
660
522
  const binding = env[bindingName]
661
523
  const RAW_EMAIL = 'EmailMessage::raw'
662
524
  if (!binding) throw new Error('Binding not found: ' + bindingName)
663
525
 
526
+ // Normalize namespaced op names (kv.*, r2.*, d1.*, do.*, queue.*, ai.*, var.*)
527
+ // down to the legacy verbs this dispatcher historically used. The bridge
528
+ // proxy always emits namespaced forms (see src/bridge/proxy.ts and B3 in
529
+ // REMAINING.md); this keeps the dispatcher backwards-compatible while the
530
+ // rest of the codebase converges on the namespaced convention.
531
+ if (op.indexOf('kv.') === 0) op = op.slice(3)
532
+ else if (op.indexOf('do.') === 0) {
533
+ const tail = op.slice(3)
534
+ if (tail === 'fetch') op = 'stub.fetch'
535
+ else if (tail === 'rpc') op = 'stub.rpc'
536
+ else op = tail
537
+ }
538
+ else if (op.indexOf('queue.') === 0) op = op.slice(6)
539
+ else if (op.indexOf('ai.') === 0) op = op.slice(3)
540
+ else if (op.indexOf('var.') === 0) op = op.slice(4)
541
+ else if (op.indexOf('d1.stmt.') === 0) op = 'prepare.' + op.slice('d1.stmt.'.length)
542
+ else if (op.indexOf('d1.') === 0) op = op.slice(3)
543
+ // r2.* and email.* keep their existing prefixes
544
+
664
545
  // KV operations
665
546
  if (op === 'get') return binding.get(params[0], params[1])
666
547
  if (op === 'put') return binding.put(params[0], params[1], params[2])
@@ -673,7 +554,7 @@ async function executeRpc(env, method, params) {
673
554
  if (op === 'r2.put') return binding.put(params[0], params[1], params[2])
674
555
  if (op === 'r2.delete') return binding.delete(params[0])
675
556
  if (op === 'r2.list') return binding.list(params[0])
676
- if (op === 'head') return binding.head(params[0])
557
+ if (op === 'r2.head' || op === 'head') return binding.head(params[0])
677
558
 
678
559
  // D1 operations
679
560
  if (op === 'exec') return binding.exec(params[0])
@@ -947,7 +828,7 @@ async function resolveLocalDurableObjects(config, configDir) {
947
828
  }
948
829
  let scriptPath;
949
830
  let nativeRpc = false;
950
- if (doInfo.scriptName) {
831
+ if (doInfo.kind === "cross-worker" && doInfo.scriptName) {
951
832
  scriptPath = join3(configDir, "src", doInfo.scriptName);
952
833
  try {
953
834
  const code = await readFile(scriptPath, "utf-8");
@@ -1082,80 +963,245 @@ async function buildDurableObjectGateway(config, configDir, transportFile) {
1082
963
  };
1083
964
  }
1084
965
 
1085
- // src/test/email.ts
1086
- import { join as join4 } from "path";
1087
- var miniflarePort = 8787;
1088
- var emailListeners = [];
1089
- var sentEmails = [];
1090
- var emailHandlerPath = null;
1091
- var configDir = null;
1092
- var testEnvGetter = null;
1093
- function configureEmail(options = {}) {
1094
- if (options.port) {
1095
- miniflarePort = options.port;
1096
- }
1097
- emailHandlerPath = options.handlerPath ?? emailHandlerPath;
1098
- configDir = options.configDir ?? configDir;
1099
- testEnvGetter = options.getEnv ?? testEnvGetter;
1100
- }
1101
- function buildRawEmail(options) {
1102
- if (options.raw) {
1103
- return options.raw;
1104
- }
1105
- const lines = [];
1106
- const messageId = `<${Date.now()}-${Math.random().toString(36).slice(2)}@devflare.dev>`;
1107
- const date = new Date().toUTCString();
1108
- lines.push(`From: ${options.from}`);
1109
- lines.push(`To: ${options.to}`);
1110
- lines.push(`Date: ${date}`);
1111
- lines.push(`Message-ID: ${messageId}`);
1112
- if (options.subject) {
1113
- lines.push(`Subject: ${options.subject}`);
1114
- }
1115
- if (options.headers) {
1116
- for (const [key, value] of Object.entries(options.headers)) {
1117
- lines.push(`${key}: ${value}`);
966
+ // src/test/remote-cloudflare.ts
967
+ function createRemoteCloudflareClient(accountId) {
968
+ let resolvedAccountId = null;
969
+ async function getAccountId() {
970
+ if (accountId) {
971
+ return accountId;
1118
972
  }
1119
- }
1120
- lines.push("MIME-Version: 1.0");
1121
- lines.push("Content-Type: text/plain; charset=UTF-8");
1122
- lines.push("");
1123
- lines.push(options.body ?? "");
1124
- return lines.join(`\r
1125
- `);
1126
- }
1127
- function createEmailHeaders(rawEmail) {
1128
- const headers = new Headers;
1129
- const lines = rawEmail.split(/\r?\n/);
1130
- for (const line of lines) {
1131
- if (!line.trim()) {
1132
- break;
973
+ if (resolvedAccountId) {
974
+ return resolvedAccountId;
1133
975
  }
1134
- const colonIndex = line.indexOf(":");
1135
- if (colonIndex <= 0) {
1136
- continue;
976
+ const primary = await getPrimaryAccount();
977
+ if (!primary) {
978
+ throw new Error("No Cloudflare account found. Run: bunx wrangler login");
1137
979
  }
1138
- headers.append(line.slice(0, colonIndex).trim(), line.slice(colonIndex + 1).trim());
980
+ const { accountId: effectiveId } = await getEffectiveAccountId(primary.id);
981
+ resolvedAccountId = effectiveId;
982
+ return effectiveId;
1139
983
  }
1140
- return headers;
1141
- }
1142
- function createRawEmailStream(rawEmail) {
1143
- return new ReadableStream({
1144
- start(controller) {
1145
- controller.enqueue(new TextEncoder().encode(rawEmail));
1146
- controller.close();
984
+ async function getToken() {
985
+ const token = await getApiToken();
986
+ if (!token) {
987
+ throw new Error("Not authenticated. Run: bunx wrangler login");
1147
988
  }
1148
- });
1149
- }
1150
- function resolveEmailHandler(module) {
1151
- if (typeof module.default === "function") {
1152
- return module.default;
1153
- }
1154
- if (module.default && typeof module.default.email === "function") {
1155
- return module.default.email.bind(module.default);
989
+ return token;
1156
990
  }
1157
- if (typeof module.email === "function") {
1158
- return module.email;
991
+ async function jsonRequest(options) {
992
+ const [acctId, token] = await Promise.all([getAccountId(), getToken()]);
993
+ const response = await fetch(`https://api.cloudflare.com/client/v4/accounts/${acctId}${options.path}`, {
994
+ method: options.method,
995
+ headers: {
996
+ Authorization: `Bearer ${token}`,
997
+ "Content-Type": options.contentType ?? "application/json"
998
+ },
999
+ body: options.body
1000
+ });
1001
+ if (!response.ok) {
1002
+ const errorText = await response.text();
1003
+ throw new Error(`${options.serviceLabel} API error (${response.status}): ${errorText}`);
1004
+ }
1005
+ const result = await response.json();
1006
+ if (!result.success) {
1007
+ const message = result.errors?.[0]?.message || `Unknown ${options.serviceLabel} error`;
1008
+ throw new Error(`${options.serviceLabel} API error: ${message}`);
1009
+ }
1010
+ return result.result;
1011
+ }
1012
+ return {
1013
+ getAccountId,
1014
+ getToken,
1015
+ jsonRequest
1016
+ };
1017
+ }
1018
+
1019
+ // src/test/remote-ai.ts
1020
+ function createRemoteAI(accountId) {
1021
+ const cloudflare = createRemoteCloudflareClient(accountId);
1022
+ const ai = {
1023
+ async run(model, inputs) {
1024
+ return cloudflare.jsonRequest({
1025
+ method: "POST",
1026
+ path: `/ai/run/${model}`,
1027
+ serviceLabel: "AI",
1028
+ body: JSON.stringify(inputs)
1029
+ });
1030
+ },
1031
+ gateway(_gatewayId) {
1032
+ console.warn("AI Gateway is not supported in remote test mode");
1033
+ return ai;
1034
+ }
1035
+ };
1036
+ return ai;
1037
+ }
1038
+
1039
+ // src/test/remote-vectorize.ts
1040
+ function createRemoteVectorize(indexName, accountId) {
1041
+ const cloudflare = createRemoteCloudflareClient(accountId);
1042
+ async function apiRequest(method, endpoint, body) {
1043
+ return cloudflare.jsonRequest({
1044
+ method,
1045
+ path: `/vectorize/v2/indexes/${indexName}${endpoint}`,
1046
+ serviceLabel: "Vectorize",
1047
+ body: body ? JSON.stringify(body) : undefined
1048
+ });
1049
+ }
1050
+ async function ndjsonRequest(endpoint, vectors) {
1051
+ const ndjson = vectors.map((v) => JSON.stringify(v)).join(`
1052
+ `);
1053
+ return cloudflare.jsonRequest({
1054
+ method: "POST",
1055
+ path: `/vectorize/v2/indexes/${indexName}${endpoint}`,
1056
+ serviceLabel: "Vectorize",
1057
+ contentType: "application/x-ndjson",
1058
+ body: ndjson
1059
+ });
1060
+ }
1061
+ const vectorize = {
1062
+ async describe() {
1063
+ return apiRequest("GET", "");
1064
+ },
1065
+ async query(vector, options) {
1066
+ const vectorArray = Array.isArray(vector) ? vector : Array.from(vector);
1067
+ return apiRequest("POST", "/query", {
1068
+ vector: vectorArray,
1069
+ topK: options?.topK ?? 10,
1070
+ returnValues: options?.returnValues ?? false,
1071
+ returnMetadata: options?.returnMetadata ?? "none",
1072
+ namespace: options?.namespace,
1073
+ filter: options?.filter
1074
+ });
1075
+ },
1076
+ async insert(vectors) {
1077
+ const result = await ndjsonRequest("/insert", vectors);
1078
+ return {
1079
+ count: result.count,
1080
+ ids: result.ids || vectors.map((v) => v.id)
1081
+ };
1082
+ },
1083
+ async upsert(vectors) {
1084
+ const result = await ndjsonRequest("/upsert", vectors);
1085
+ return {
1086
+ count: result.count,
1087
+ ids: result.ids || vectors.map((v) => v.id)
1088
+ };
1089
+ },
1090
+ async deleteByIds(ids) {
1091
+ const result = await apiRequest("POST", "/delete-by-ids", { ids });
1092
+ return {
1093
+ count: result.count,
1094
+ ids
1095
+ };
1096
+ },
1097
+ async getByIds(ids) {
1098
+ return apiRequest("POST", "/get-by-ids", { ids });
1099
+ }
1100
+ };
1101
+ return vectorize;
1102
+ }
1103
+
1104
+ // src/test/simple-context-bindings.ts
1105
+ function buildRemoteAndStaticBindings(config) {
1106
+ const remoteBindings = {};
1107
+ if (isRemoteModeActive()) {
1108
+ if (config.bindings?.ai) {
1109
+ const aiBindingName = config.bindings.ai.binding || "AI";
1110
+ remoteBindings[aiBindingName] = createRemoteAI(config.accountId);
1111
+ }
1112
+ if (config.bindings?.vectorize) {
1113
+ for (const [name, vectorConfig] of Object.entries(config.bindings.vectorize)) {
1114
+ remoteBindings[name] = createRemoteVectorize(vectorConfig.indexName, config.accountId);
1115
+ }
1116
+ }
1117
+ }
1118
+ if (config.vars) {
1119
+ for (const [key, value] of Object.entries(config.vars)) {
1120
+ remoteBindings[key] = value;
1121
+ }
1122
+ }
1123
+ if (config.bindings?.sendEmail) {
1124
+ for (const [name, binding] of Object.entries(config.bindings.sendEmail)) {
1125
+ remoteBindings[name] = createLocalSendEmailBinding(binding);
1126
+ }
1127
+ }
1128
+ return remoteBindings;
1129
+ }
1130
+
1131
+ // src/test/email.ts
1132
+ import { join as join4 } from "path";
1133
+ var miniflarePort = 8787;
1134
+ var emailListeners = [];
1135
+ var sentEmails = [];
1136
+ var emailHandlerPath = null;
1137
+ var configDir = null;
1138
+ var testEnvGetter = null;
1139
+ function configureEmail(options = {}) {
1140
+ if (options.port) {
1141
+ miniflarePort = options.port;
1142
+ }
1143
+ emailHandlerPath = options.handlerPath ?? emailHandlerPath;
1144
+ configDir = options.configDir ?? configDir;
1145
+ testEnvGetter = options.getEnv ?? testEnvGetter;
1146
+ }
1147
+ function buildRawEmail(options) {
1148
+ if (options.raw) {
1149
+ return options.raw;
1150
+ }
1151
+ const lines = [];
1152
+ const messageId = `<${Date.now()}-${Math.random().toString(36).slice(2)}@devflare.dev>`;
1153
+ const date = new Date().toUTCString();
1154
+ lines.push(`From: ${options.from}`);
1155
+ lines.push(`To: ${options.to}`);
1156
+ lines.push(`Date: ${date}`);
1157
+ lines.push(`Message-ID: ${messageId}`);
1158
+ if (options.subject) {
1159
+ lines.push(`Subject: ${options.subject}`);
1160
+ }
1161
+ if (options.headers) {
1162
+ for (const [key, value] of Object.entries(options.headers)) {
1163
+ lines.push(`${key}: ${value}`);
1164
+ }
1165
+ }
1166
+ lines.push("MIME-Version: 1.0");
1167
+ lines.push("Content-Type: text/plain; charset=UTF-8");
1168
+ lines.push("");
1169
+ lines.push(options.body ?? "");
1170
+ return lines.join(`\r
1171
+ `);
1172
+ }
1173
+ function createEmailHeaders(rawEmail) {
1174
+ const headers = new Headers;
1175
+ const lines = rawEmail.split(/\r?\n/);
1176
+ for (const line of lines) {
1177
+ if (!line.trim()) {
1178
+ break;
1179
+ }
1180
+ const colonIndex = line.indexOf(":");
1181
+ if (colonIndex <= 0) {
1182
+ continue;
1183
+ }
1184
+ headers.append(line.slice(0, colonIndex).trim(), line.slice(colonIndex + 1).trim());
1185
+ }
1186
+ return headers;
1187
+ }
1188
+ function createRawEmailStream(rawEmail) {
1189
+ return new ReadableStream({
1190
+ start(controller) {
1191
+ controller.enqueue(new TextEncoder().encode(rawEmail));
1192
+ controller.close();
1193
+ }
1194
+ });
1195
+ }
1196
+ function resolveEmailHandler(module) {
1197
+ if (typeof module.default === "function") {
1198
+ return module.default;
1199
+ }
1200
+ if (module.default && typeof module.default.email === "function") {
1201
+ return module.default.email.bind(module.default);
1202
+ }
1203
+ if (typeof module.email === "function") {
1204
+ return module.email;
1159
1205
  }
1160
1206
  return null;
1161
1207
  }
@@ -1354,8 +1400,8 @@ NaN`);
1354
1400
  passThroughOnException() {},
1355
1401
  props: {}
1356
1402
  };
1357
- const env = testEnvGetter2();
1358
- const queueEvent = createQueueEvent(batch, env, ctx);
1403
+ const env2 = testEnvGetter2();
1404
+ const queueEvent = createQueueEvent(batch, env2, ctx);
1359
1405
  await runWithEventContext(queueEvent, () => queueHandler(queueEvent));
1360
1406
  await Promise.all(waitUntilPromises);
1361
1407
  const acked = [];
@@ -1434,8 +1480,8 @@ NaN`);
1434
1480
  passThroughOnException() {},
1435
1481
  props: {}
1436
1482
  };
1437
- const env = testEnvGetter3();
1438
- const scheduledEvent = createScheduledEvent(controller, env, ctx);
1483
+ const env2 = testEnvGetter3();
1484
+ const scheduledEvent = createScheduledEvent(controller, env2, ctx);
1439
1485
  try {
1440
1486
  await runWithEventContext(scheduledEvent, () => scheduledHandler(scheduledEvent));
1441
1487
  await Promise.all(waitUntilPromises);
@@ -1519,8 +1565,8 @@ NaN`);
1519
1565
  passThroughOnException() {},
1520
1566
  props: {}
1521
1567
  };
1522
- const env = testEnvGetter4();
1523
- const tailEvent = createTailEvent(traceItems, env, ctx);
1568
+ const env2 = testEnvGetter4();
1569
+ const tailEvent = createTailEvent(traceItems, env2, ctx);
1524
1570
  try {
1525
1571
  await runWithEventContext(tailEvent, () => tailHandler(tailEvent));
1526
1572
  await Promise.all(waitUntilPromises);
@@ -1620,9 +1666,9 @@ async function fetch2(request, options) {
1620
1666
  passThroughOnException() {},
1621
1667
  props: {}
1622
1668
  };
1623
- const env = getEnv();
1669
+ const env2 = getEnv();
1624
1670
  const initialRouteMatch = routeModules.length > 0 ? matchFetchRoute(routeModules, req) : null;
1625
- const fetchEvent = createFetchEvent(req, env, ctx, {
1671
+ const fetchEvent = createFetchEvent(req, env2, ctx, {
1626
1672
  params: initialRouteMatch?.params ?? {}
1627
1673
  });
1628
1674
  const response = await runWithEventContext(fetchEvent, () => invokeFetchModule(handlerModule, fetchEvent, routeModules.length > 0 ? createRouteResolve(routeModules, fetchEvent) : undefined));
@@ -1652,56 +1698,203 @@ var worker = {
1652
1698
  patch
1653
1699
  };
1654
1700
 
1655
- // src/test/simple-context.ts
1656
- var globalClient = null;
1657
- var globalMiniflare = null;
1658
- var globalEnvProxy = null;
1659
- var globalTransportDecode = null;
1660
- var globalRemoteBindings = null;
1661
- var globalMiniflareBindings = null;
1662
- var TEST_CONTEXT_STARTUP_RETRY_ATTEMPTS = 3;
1663
- var TEST_CONTEXT_STARTUP_RETRY_DELAY_MS = 75;
1664
- var TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS = 8;
1665
- var TEST_CONTEXT_BRIDGE_CONNECT_RETRY_DELAY_MS = 150;
1666
- function isRetriableTestContextStartupError(error) {
1667
- if (!(error instanceof Error)) {
1668
- return false;
1669
- }
1670
- const message = error.message.toLowerCase();
1671
- return message.includes("websocket connection failed") || message.includes("connection timeout: ws://") || message.includes("econnrefused") || message.includes("eaddrinuse") || message.includes("address already in use");
1672
- }
1673
- async function waitForTestContextStartupRetry() {
1674
- await new Promise((resolve3) => setTimeout(resolve3, TEST_CONTEXT_STARTUP_RETRY_DELAY_MS));
1675
- }
1676
- async function waitForBridgeClientRetry() {
1677
- await new Promise((resolve3) => setTimeout(resolve3, TEST_CONTEXT_BRIDGE_CONNECT_RETRY_DELAY_MS));
1678
- }
1679
- function shouldPreferBridgeBinding(hint) {
1680
- return hint === "do" || hint === "service";
1701
+ // src/test/simple-context-env.ts
1702
+ function configureSurfaceHandlers(input) {
1703
+ const { handlerPaths, configDir: configDir6, activePort, getEnv } = input;
1704
+ configureQueue({
1705
+ handlerPath: handlerPaths.queue,
1706
+ configDir: configDir6,
1707
+ getEnv
1708
+ });
1709
+ configureScheduled({
1710
+ handlerPath: handlerPaths.scheduled,
1711
+ configDir: configDir6,
1712
+ getEnv
1713
+ });
1714
+ configureWorker({
1715
+ handlerPath: handlerPaths.fetch,
1716
+ routes: handlerPaths.routes?.routes.map((route) => ({
1717
+ filePath: route.filePath,
1718
+ routePath: route.routePath,
1719
+ segments: route.segments
1720
+ })) ?? [],
1721
+ configDir: configDir6,
1722
+ getEnv
1723
+ });
1724
+ configureTail({
1725
+ handlerPath: handlerPaths.tail,
1726
+ configDir: configDir6,
1727
+ getEnv
1728
+ });
1729
+ configureEmail({
1730
+ port: activePort,
1731
+ handlerPath: handlerPaths.email,
1732
+ configDir: configDir6,
1733
+ getEnv
1734
+ });
1681
1735
  }
1682
- async function connectBridgeClientWithRetry(url) {
1683
- let lastError;
1684
- for (let attempt = 1;attempt <= TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS; attempt++) {
1685
- const client = new BridgeClient({ url });
1686
- try {
1687
- await client.connect();
1688
- return client;
1689
- } catch (error) {
1690
- lastError = error;
1691
- client.disconnect();
1692
- if (attempt >= TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS || !isRetriableTestContextStartupError(error)) {
1693
- throw error;
1736
+ function createBridgeEnvAccessor(state, hints, shouldPreferBridgeBinding) {
1737
+ return new Proxy({}, {
1738
+ get(_, prop) {
1739
+ const hint = hints[prop];
1740
+ const prefersBridgeBinding = shouldPreferBridgeBinding(hint);
1741
+ if (state.remoteBindings && prop in state.remoteBindings) {
1742
+ return state.remoteBindings[prop];
1694
1743
  }
1695
- await waitForBridgeClientRetry();
1744
+ if (!prefersBridgeBinding && state.miniflareBindings && prop in state.miniflareBindings) {
1745
+ return state.miniflareBindings[prop];
1746
+ }
1747
+ if (state.envProxy) {
1748
+ return state.envProxy[prop];
1749
+ }
1750
+ if (prefersBridgeBinding && state.miniflareBindings && prop in state.miniflareBindings) {
1751
+ return state.miniflareBindings[prop];
1752
+ }
1753
+ return;
1754
+ },
1755
+ has(_, prop) {
1756
+ return Boolean(state.remoteBindings && prop in state.remoteBindings || state.miniflareBindings && prop in state.miniflareBindings || state.envProxy !== null);
1696
1757
  }
1697
- }
1698
- throw lastError instanceof Error ? lastError : new Error("Bridge-backed test context could not connect to the WebSocket gateway.");
1758
+ });
1699
1759
  }
1700
- async function startBridgeBackedTestContext(mfConfig) {
1701
- const { Miniflare } = await import("miniflare");
1702
- for (let attempt = 1;attempt <= TEST_CONTEXT_STARTUP_RETRY_ATTEMPTS; attempt++) {
1703
- const port = await getAvailablePort();
1704
- let miniflare = null;
1760
+ function createMultiWorkerEnvAccessor(state) {
1761
+ return new Proxy({}, {
1762
+ get(_, prop) {
1763
+ if (state.remoteBindings && prop in state.remoteBindings) {
1764
+ return state.remoteBindings[prop];
1765
+ }
1766
+ if (state.miniflareBindings && prop in state.miniflareBindings) {
1767
+ return state.miniflareBindings[prop];
1768
+ }
1769
+ return;
1770
+ },
1771
+ has(_, prop) {
1772
+ return Boolean(state.remoteBindings && prop in state.remoteBindings || state.miniflareBindings && prop in state.miniflareBindings);
1773
+ }
1774
+ });
1775
+ }
1776
+
1777
+ // src/test/simple-context-handlers.ts
1778
+ import { join as join9 } from "path";
1779
+ var DEFAULT_FETCH_PATH = "src/fetch.ts";
1780
+ var DEFAULT_QUEUE_PATH = "src/queue.ts";
1781
+ var DEFAULT_SCHEDULED_PATH = "src/scheduled.ts";
1782
+ var DEFAULT_EMAIL_PATH = "src/email.ts";
1783
+ var DEFAULT_TAIL_PATH = "src/tail.ts";
1784
+ async function resolveHandlerPath(configDir6, configValue, defaultPath) {
1785
+ if (typeof configValue === "string") {
1786
+ return configValue;
1787
+ }
1788
+ if (configValue === false) {
1789
+ return null;
1790
+ }
1791
+ const defaultAbsolute = join9(configDir6, defaultPath);
1792
+ try {
1793
+ const fs = await import("fs/promises");
1794
+ await fs.access(defaultAbsolute);
1795
+ return defaultPath;
1796
+ } catch {
1797
+ return null;
1798
+ }
1799
+ }
1800
+ async function resolveHandlerPaths(configDir6, config) {
1801
+ const [fetch3, queue2, scheduled2, email2, tail2, routes] = await Promise.all([
1802
+ resolveHandlerPath(configDir6, config.files?.fetch, DEFAULT_FETCH_PATH),
1803
+ resolveHandlerPath(configDir6, config.files?.queue, DEFAULT_QUEUE_PATH),
1804
+ resolveHandlerPath(configDir6, config.files?.scheduled, DEFAULT_SCHEDULED_PATH),
1805
+ resolveHandlerPath(configDir6, config.files?.email, DEFAULT_EMAIL_PATH),
1806
+ resolveHandlerPath(configDir6, undefined, DEFAULT_TAIL_PATH),
1807
+ discoverRoutes(configDir6, config)
1808
+ ]);
1809
+ return { fetch: fetch3, queue: queue2, scheduled: scheduled2, email: email2, tail: tail2, routes };
1810
+ }
1811
+
1812
+ // src/test/simple-context-lifecycle.ts
1813
+ import { dirname as dirname4, resolve as resolve2 } from "path";
1814
+ async function resolveTestContextConfig(configPath, callerDir = getCallerDirectory()) {
1815
+ let absolutePath;
1816
+ if (configPath) {
1817
+ absolutePath = resolve2(callerDir, configPath);
1818
+ } else {
1819
+ const found = await findNearestConfig(callerDir);
1820
+ if (!found) {
1821
+ throw new Error(`Could not find a devflare config file. Searched upward from: ${callerDir}
1822
+ ` + `Expected one of: devflare.config.ts, devflare.config.mts, devflare.config.js, devflare.config.mjs
1823
+ ` + `Either create a config file or provide an explicit path: createTestContext('./path/to/config.ts')`);
1824
+ }
1825
+ absolutePath = found;
1826
+ }
1827
+ const configDir6 = dirname4(absolutePath);
1828
+ const config = await loadConfig({
1829
+ cwd: configDir6,
1830
+ configFile: absolutePath.split(/[/\\]/).pop()
1831
+ });
1832
+ return { absolutePath, configDir: configDir6, config };
1833
+ }
1834
+ function createDisposeContext(state) {
1835
+ return async () => {
1836
+ if (state.client) {
1837
+ await state.client.disconnect();
1838
+ state.client = null;
1839
+ }
1840
+ if (state.miniflare) {
1841
+ await state.miniflare.dispose();
1842
+ state.miniflare = null;
1843
+ }
1844
+ state.envProxy = null;
1845
+ state.transportDecode = null;
1846
+ state.remoteBindings = null;
1847
+ state.miniflareBindings = null;
1848
+ resetQueueState();
1849
+ resetScheduledState();
1850
+ resetWorkerState();
1851
+ resetTailState();
1852
+ resetEmailState();
1853
+ __clearTestContext();
1854
+ };
1855
+ }
1856
+
1857
+ // src/test/simple-context-startup.ts
1858
+ var TEST_CONTEXT_STARTUP_RETRY_ATTEMPTS = 3;
1859
+ var TEST_CONTEXT_STARTUP_RETRY_DELAY_MS = 75;
1860
+ var TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS = 8;
1861
+ var TEST_CONTEXT_BRIDGE_CONNECT_RETRY_DELAY_MS = 150;
1862
+ function isRetriableTestContextStartupError(error) {
1863
+ if (!(error instanceof Error)) {
1864
+ return false;
1865
+ }
1866
+ const message = error.message.toLowerCase();
1867
+ return message.includes("websocket connection failed") || message.includes("connection timeout: ws://") || message.includes("econnrefused") || message.includes("eaddrinuse") || message.includes("address already in use");
1868
+ }
1869
+ async function waitForTestContextStartupRetry() {
1870
+ await new Promise((resolve3) => setTimeout(resolve3, TEST_CONTEXT_STARTUP_RETRY_DELAY_MS));
1871
+ }
1872
+ async function waitForBridgeClientRetry() {
1873
+ await new Promise((resolve3) => setTimeout(resolve3, TEST_CONTEXT_BRIDGE_CONNECT_RETRY_DELAY_MS));
1874
+ }
1875
+ async function connectBridgeClientWithRetry(url) {
1876
+ let lastError;
1877
+ for (let attempt = 1;attempt <= TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS; attempt++) {
1878
+ const client = new BridgeClient({ url });
1879
+ try {
1880
+ await client.connect();
1881
+ return client;
1882
+ } catch (error) {
1883
+ lastError = error;
1884
+ client.disconnect();
1885
+ if (attempt >= TEST_CONTEXT_BRIDGE_CONNECT_RETRY_ATTEMPTS || !isRetriableTestContextStartupError(error)) {
1886
+ throw error;
1887
+ }
1888
+ await waitForBridgeClientRetry();
1889
+ }
1890
+ }
1891
+ throw lastError instanceof Error ? lastError : new Error("Bridge-backed test context could not connect to the WebSocket gateway.");
1892
+ }
1893
+ async function startBridgeBackedTestContext(mfConfig) {
1894
+ const { Miniflare } = await import("miniflare");
1895
+ for (let attempt = 1;attempt <= TEST_CONTEXT_STARTUP_RETRY_ATTEMPTS; attempt++) {
1896
+ const port = await getAvailablePort();
1897
+ let miniflare = null;
1705
1898
  let client = null;
1706
1899
  try {
1707
1900
  miniflare = new Miniflare({
@@ -1732,89 +1925,118 @@ async function startBridgeBackedTestContext(mfConfig) {
1732
1925
  }
1733
1926
  throw new Error("Bridge-backed test context startup exhausted all retry attempts.");
1734
1927
  }
1735
- async function createTestContext(configPath) {
1736
- const callerDir = getCallerDirectory();
1737
- let absolutePath;
1738
- if (configPath) {
1739
- absolutePath = resolve2(callerDir, configPath);
1740
- } else {
1741
- const found = await findNearestConfig(callerDir);
1742
- if (!found) {
1743
- throw new Error(`Could not find a devflare config file. Searched upward from: ${callerDir}
1744
- Expected one of: devflare.config.ts, devflare.config.mts, devflare.config.js, devflare.config.mjs
1745
- Either create a config file or provide an explicit path: createTestContext('./path/to/config.ts')`);
1746
- }
1747
- absolutePath = found;
1928
+
1929
+ // src/test/simple-context-runtime.ts
1930
+ async function bootTestRuntime(mfConfig, usesMultiWorker) {
1931
+ if (usesMultiWorker) {
1932
+ const { Miniflare } = await import("miniflare");
1933
+ const activePort = await getAvailablePort();
1934
+ const miniflare = new Miniflare({
1935
+ ...mfConfig,
1936
+ port: activePort
1937
+ });
1938
+ await miniflare.ready;
1939
+ const miniflareBindings = wrapEnvSendEmailBindings(await miniflare.getBindings());
1940
+ return { activePort, miniflare, miniflareBindings, client: null };
1748
1941
  }
1749
- const configDir6 = dirname4(absolutePath);
1750
- const config = await loadConfig({
1751
- cwd: configDir6,
1752
- configFile: absolutePath.split(/[/\\]/).pop()
1753
- });
1754
- globalRemoteBindings = {};
1755
- if (isRemoteModeActive()) {
1756
- if (config.bindings?.ai) {
1757
- const aiBindingName = config.bindings.ai.binding || "AI";
1758
- globalRemoteBindings[aiBindingName] = createRemoteAI(config.accountId);
1759
- }
1760
- if (config.bindings?.vectorize) {
1761
- for (const [name, vectorConfig] of Object.entries(config.bindings.vectorize)) {
1762
- globalRemoteBindings[name] = createRemoteVectorize(vectorConfig.indexName, config.accountId);
1763
- }
1764
- }
1942
+ const started = await startBridgeBackedTestContext(mfConfig);
1943
+ return {
1944
+ activePort: started.port,
1945
+ miniflare: started.miniflare,
1946
+ miniflareBindings: started.miniflareBindings,
1947
+ client: started.client
1948
+ };
1949
+ }
1950
+
1951
+ // src/test/simple-context-transport.ts
1952
+ import { join as join10 } from "path";
1953
+ async function loadTransportDecoders(configDir6, transportFile) {
1954
+ const transportPath = join10(configDir6, transportFile);
1955
+ const transportModule = await import(transportPath);
1956
+ if (!transportModule.transport) {
1957
+ console.warn(`[devflare] Warning: Transport file "${transportFile}" does not export a named "transport" object.
1958
+ Expected: export const transport = { ... }
1959
+ Transport encoding/decoding will be disabled.`);
1960
+ return null;
1765
1961
  }
1766
- if (config.vars) {
1767
- for (const [key, value] of Object.entries(config.vars)) {
1768
- globalRemoteBindings[key] = value;
1769
- }
1962
+ const decoders = new Map;
1963
+ for (const [typeName, transporter] of Object.entries(transportModule.transport)) {
1964
+ const t = transporter;
1965
+ decoders.set(typeName, t.decode);
1770
1966
  }
1771
- if (config.bindings?.sendEmail) {
1772
- for (const [name, binding] of Object.entries(config.bindings.sendEmail)) {
1773
- globalRemoteBindings[name] = createLocalSendEmailBinding(binding);
1774
- }
1967
+ return decoders;
1968
+ }
1969
+ function decodeTransportValue(decoders, value) {
1970
+ if (!decoders || value === null || typeof value !== "object") {
1971
+ return value;
1775
1972
  }
1776
- const hints = {};
1777
- if (config.bindings?.kv) {
1778
- for (const name of Object.keys(config.bindings.kv)) {
1779
- hints[name] = "kv";
1973
+ if ("__transport" in value) {
1974
+ const encoded = value;
1975
+ const decoder = decoders.get(encoded.__transport);
1976
+ if (decoder) {
1977
+ return decoder(encoded.value);
1780
1978
  }
1781
1979
  }
1782
- if (config.bindings?.r2) {
1783
- for (const name of Object.keys(config.bindings.r2)) {
1784
- hints[name] = "r2";
1785
- }
1980
+ if (Array.isArray(value)) {
1981
+ return value.map((item) => decodeTransportValue(decoders, item));
1786
1982
  }
1787
- if (config.bindings?.d1) {
1788
- for (const name of Object.keys(config.bindings.d1)) {
1789
- hints[name] = "d1";
1790
- }
1983
+ const result = {};
1984
+ for (const [k, v] of Object.entries(value)) {
1985
+ result[k] = decodeTransportValue(decoders, v);
1791
1986
  }
1792
- if (config.bindings?.durableObjects) {
1793
- for (const name of Object.keys(config.bindings.durableObjects)) {
1794
- hints[name] = "do";
1987
+ return result;
1988
+ }
1989
+
1990
+ // src/test/simple-context-multi-worker.ts
1991
+ function applyMultiWorkerConfig(mfConfig, config, serviceBindingResolution, doBindingResolution) {
1992
+ const primaryDurableObjects = {
1993
+ ...mfConfig.durableObjects || {},
1994
+ ...doBindingResolution?.crossWorkerDOBindings || {}
1995
+ };
1996
+ const primaryWorker = {
1997
+ name: config.name ?? "primary",
1998
+ modules: true,
1999
+ script: mfConfig.script,
2000
+ compatibilityDate: config.compatibilityDate ?? "2025-01-01",
2001
+ ...mfConfig.kvNamespaces && { kvNamespaces: mfConfig.kvNamespaces },
2002
+ ...mfConfig.r2Buckets && { r2Buckets: mfConfig.r2Buckets },
2003
+ ...mfConfig.d1Databases && { d1Databases: mfConfig.d1Databases },
2004
+ ...mfConfig.email && { email: mfConfig.email },
2005
+ ...Object.keys(primaryDurableObjects).length > 0 && { durableObjects: primaryDurableObjects },
2006
+ ...serviceBindingResolution?.primaryServiceBindings && {
2007
+ serviceBindings: serviceBindingResolution.primaryServiceBindings
1795
2008
  }
1796
- }
1797
- if (config.bindings?.services) {
1798
- for (const name of Object.keys(config.bindings.services)) {
1799
- hints[name] = "service";
2009
+ };
2010
+ const additionalWorkers = [
2011
+ ...serviceBindingResolution?.workers || [],
2012
+ ...doBindingResolution?.workers || []
2013
+ ];
2014
+ const workersByName = new Map;
2015
+ for (const worker2 of additionalWorkers) {
2016
+ if (!workersByName.has(worker2.name)) {
2017
+ workersByName.set(worker2.name, worker2);
2018
+ continue;
1800
2019
  }
1801
- }
1802
- if (config.bindings?.sendEmail) {
1803
- for (const name of Object.keys(config.bindings.sendEmail)) {
1804
- hints[name] = "sendEmail";
2020
+ const existing = workersByName.get(worker2.name);
2021
+ if (worker2.durableObjects) {
2022
+ existing.durableObjects = {
2023
+ ...existing.durableObjects || {},
2024
+ ...worker2.durableObjects
2025
+ };
1805
2026
  }
1806
2027
  }
1807
- const needsMultiWorkerForServices = hasServiceBindings(config);
1808
- const needsMultiWorkerForDOs = hasCrossWorkerDOs(config);
1809
- const needsMultiWorker = needsMultiWorkerForServices || needsMultiWorkerForDOs;
1810
- let serviceBindingResolution = null;
1811
- let doBindingResolution = null;
1812
- if (needsMultiWorkerForServices) {
1813
- serviceBindingResolution = await resolveServiceBindings(config, configDir6);
1814
- }
1815
- if (needsMultiWorkerForDOs) {
1816
- doBindingResolution = await resolveDOBindings(config, configDir6);
1817
- }
2028
+ const workers = [primaryWorker, ...workersByName.values()];
2029
+ delete mfConfig.script;
2030
+ delete mfConfig.modules;
2031
+ delete mfConfig.kvNamespaces;
2032
+ delete mfConfig.r2Buckets;
2033
+ delete mfConfig.d1Databases;
2034
+ delete mfConfig.durableObjects;
2035
+ mfConfig.workers = workers;
2036
+ }
2037
+
2038
+ // src/test/simple-context-mfconfig.ts
2039
+ function buildInlineBridgeMfConfig(config) {
1818
2040
  const localWorkerBindings = config.vars ?? {};
1819
2041
  const mfConfig = {
1820
2042
  modules: true
@@ -1856,21 +2078,44 @@ Either create a config file or provide an explicit path: createTestContext('./pa
1856
2078
  }))
1857
2079
  };
1858
2080
  }
2081
+ return mfConfig;
2082
+ }
2083
+
2084
+ // src/test/simple-context.ts
2085
+ function createTestContextState() {
2086
+ return {
2087
+ client: null,
2088
+ miniflare: null,
2089
+ envProxy: null,
2090
+ transportDecode: null,
2091
+ remoteBindings: null,
2092
+ miniflareBindings: null
2093
+ };
2094
+ }
2095
+ function shouldPreferBridgeBinding(hint) {
2096
+ return hint === "do" || hint === "service";
2097
+ }
2098
+ async function createTestContext(configPath) {
2099
+ const state = createTestContextState();
2100
+ const { configDir: configDir6, config } = await resolveTestContextConfig(configPath);
2101
+ state.remoteBindings = buildRemoteAndStaticBindings(config);
2102
+ const hints = extractBindingHints(config);
2103
+ const decodeTransport = (value) => decodeTransportValue(state.transportDecode, value);
2104
+ const needsMultiWorkerForServices = hasServiceBindings(config);
2105
+ const needsMultiWorkerForDOs = hasCrossWorkerDOs(config);
2106
+ const needsMultiWorker = needsMultiWorkerForServices || needsMultiWorkerForDOs;
2107
+ let serviceBindingResolution = null;
2108
+ let doBindingResolution = null;
2109
+ if (needsMultiWorkerForServices) {
2110
+ serviceBindingResolution = await resolveServiceBindings(config, configDir6);
2111
+ }
2112
+ if (needsMultiWorkerForDOs) {
2113
+ doBindingResolution = await resolveDOBindings(config, configDir6);
2114
+ }
2115
+ const mfConfig = buildInlineBridgeMfConfig(config);
1859
2116
  const transportFile = resolveTransportFile(configDir6, config.files?.transport);
1860
2117
  if (transportFile) {
1861
- const transportPath = join9(configDir6, transportFile);
1862
- const transportModule = await import(transportPath);
1863
- if (!transportModule.transport) {
1864
- console.warn(`[devflare] Warning: Transport file "${transportFile}" does not export a named "transport" object.
1865
- Expected: export const transport = { ... }
1866
- Transport encoding/decoding will be disabled.`);
1867
- } else {
1868
- globalTransportDecode = new Map;
1869
- for (const [typeName, transporter] of Object.entries(transportModule.transport)) {
1870
- const t = transporter;
1871
- globalTransportDecode.set(typeName, t.decode);
1872
- }
1873
- }
2118
+ state.transportDecode = await loadTransportDecoders(configDir6, transportFile);
1874
2119
  }
1875
2120
  const gateway = await buildDurableObjectGateway(config, configDir6, transportFile);
1876
2121
  mfConfig.script = gateway.script;
@@ -1880,243 +2125,59 @@ Transport encoding/decoding will be disabled.`);
1880
2125
  const hasMultiWorkerServices = serviceBindingResolution && serviceBindingResolution.workers.length > 0;
1881
2126
  const hasMultiWorkerDOs = doBindingResolution && doBindingResolution.workers.length > 0;
1882
2127
  if (hasMultiWorkerServices || hasMultiWorkerDOs) {
1883
- const primaryDurableObjects = {
1884
- ...mfConfig.durableObjects || {},
1885
- ...doBindingResolution?.crossWorkerDOBindings || {}
1886
- };
1887
- const primaryWorker = {
1888
- name: config.name ?? "primary",
1889
- modules: true,
1890
- script: mfConfig.script,
1891
- compatibilityDate: config.compatibilityDate ?? "2025-01-01",
1892
- ...mfConfig.kvNamespaces && { kvNamespaces: mfConfig.kvNamespaces },
1893
- ...mfConfig.r2Buckets && { r2Buckets: mfConfig.r2Buckets },
1894
- ...mfConfig.d1Databases && { d1Databases: mfConfig.d1Databases },
1895
- ...mfConfig.email && { email: mfConfig.email },
1896
- ...Object.keys(primaryDurableObjects).length > 0 && { durableObjects: primaryDurableObjects },
1897
- ...serviceBindingResolution?.primaryServiceBindings && { serviceBindings: serviceBindingResolution.primaryServiceBindings }
1898
- };
1899
- const additionalWorkers = [
1900
- ...serviceBindingResolution?.workers || [],
1901
- ...doBindingResolution?.workers || []
1902
- ];
1903
- const workersByName = new Map;
1904
- for (const worker2 of additionalWorkers) {
1905
- if (!workersByName.has(worker2.name)) {
1906
- workersByName.set(worker2.name, worker2);
1907
- continue;
1908
- }
1909
- const existing = workersByName.get(worker2.name);
1910
- if (worker2.durableObjects) {
1911
- existing.durableObjects = {
1912
- ...existing.durableObjects || {},
1913
- ...worker2.durableObjects
1914
- };
1915
- }
1916
- }
1917
- const workers = [primaryWorker, ...workersByName.values()];
1918
- delete mfConfig.script;
1919
- delete mfConfig.modules;
1920
- delete mfConfig.kvNamespaces;
1921
- delete mfConfig.r2Buckets;
1922
- delete mfConfig.d1Databases;
1923
- delete mfConfig.durableObjects;
1924
- mfConfig.workers = workers;
1925
- }
1926
- let activePort;
1927
- if (hasMultiWorkerServices || hasMultiWorkerDOs) {
1928
- const { Miniflare } = await import("miniflare");
1929
- activePort = await getAvailablePort();
1930
- globalMiniflare = new Miniflare({
1931
- ...mfConfig,
1932
- port: activePort
1933
- });
1934
- await globalMiniflare.ready;
1935
- globalMiniflareBindings = wrapEnvSendEmailBindings(await globalMiniflare.getBindings());
1936
- } else {
1937
- const startedBridgeBackedTestContext = await startBridgeBackedTestContext(mfConfig);
1938
- activePort = startedBridgeBackedTestContext.port;
1939
- globalMiniflare = startedBridgeBackedTestContext.miniflare;
1940
- globalMiniflareBindings = startedBridgeBackedTestContext.miniflareBindings;
1941
- globalClient = startedBridgeBackedTestContext.client;
1942
- }
1943
- const disposeContext = async () => {
1944
- if (globalClient) {
1945
- await globalClient.disconnect();
1946
- globalClient = null;
1947
- }
1948
- if (globalMiniflare) {
1949
- await globalMiniflare.dispose();
1950
- globalMiniflare = null;
1951
- }
1952
- globalEnvProxy = null;
1953
- globalTransportDecode = null;
1954
- globalRemoteBindings = null;
1955
- globalMiniflareBindings = null;
1956
- resetQueueState();
1957
- resetScheduledState();
1958
- resetWorkerState();
1959
- resetTailState();
1960
- resetEmailState();
1961
- __clearTestContext();
1962
- };
2128
+ applyMultiWorkerConfig(mfConfig, config, serviceBindingResolution, doBindingResolution);
2129
+ }
2130
+ const usesMultiWorker = Boolean(hasMultiWorkerServices || hasMultiWorkerDOs);
2131
+ const runtime = await bootTestRuntime(mfConfig, usesMultiWorker);
2132
+ const activePort = runtime.activePort;
2133
+ state.miniflare = runtime.miniflare;
2134
+ state.miniflareBindings = runtime.miniflareBindings;
2135
+ state.client = runtime.client;
2136
+ const disposeContext = createDisposeContext(state);
1963
2137
  const getTestEnv = () => {
1964
2138
  return new Proxy({}, {
1965
2139
  get(_, prop) {
1966
- if (globalRemoteBindings && prop in globalRemoteBindings) {
1967
- return globalRemoteBindings[prop];
2140
+ if (state.remoteBindings && prop in state.remoteBindings) {
2141
+ return state.remoteBindings[prop];
1968
2142
  }
1969
- if (hints[prop] === "sendEmail" && globalEnvProxy && prop in globalEnvProxy) {
1970
- return globalEnvProxy[prop];
2143
+ if (hints[prop] === "sendEmail" && state.envProxy && prop in state.envProxy) {
2144
+ return state.envProxy[prop];
1971
2145
  }
1972
- if (globalMiniflareBindings && prop in globalMiniflareBindings) {
1973
- return globalMiniflareBindings[prop];
2146
+ if (state.miniflareBindings && prop in state.miniflareBindings) {
2147
+ return state.miniflareBindings[prop];
1974
2148
  }
1975
- if (globalEnvProxy && prop in globalEnvProxy) {
1976
- return globalEnvProxy[prop];
2149
+ if (state.envProxy && prop in state.envProxy) {
2150
+ return state.envProxy[prop];
1977
2151
  }
1978
2152
  return;
1979
2153
  },
1980
2154
  has(_, prop) {
1981
- return Boolean(globalRemoteBindings && prop in globalRemoteBindings || globalMiniflareBindings && prop in globalMiniflareBindings || globalEnvProxy && prop in globalEnvProxy);
2155
+ return Boolean(state.remoteBindings && prop in state.remoteBindings || state.miniflareBindings && prop in state.miniflareBindings || state.envProxy && prop in state.envProxy);
1982
2156
  }
1983
2157
  });
1984
2158
  };
1985
- const queuePath = config.files?.queue;
1986
- const scheduledPath = config.files?.scheduled;
1987
- const fetchPath = config.files?.fetch;
1988
- const emailPath = config.files?.email;
1989
- const DEFAULT_FETCH_PATH = "src/fetch.ts";
1990
- const DEFAULT_QUEUE_PATH = "src/queue.ts";
1991
- const DEFAULT_SCHEDULED_PATH = "src/scheduled.ts";
1992
- const DEFAULT_EMAIL_PATH = "src/email.ts";
1993
- const DEFAULT_TAIL_PATH = "src/tail.ts";
1994
- const resolvePath = async (configValue, defaultPath) => {
1995
- if (typeof configValue === "string") {
1996
- return configValue;
1997
- }
1998
- if (configValue === false) {
1999
- return null;
2000
- }
2001
- const defaultAbsolute = join9(configDir6, defaultPath);
2002
- try {
2003
- const fs = await import("fs/promises");
2004
- await fs.access(defaultAbsolute);
2005
- return defaultPath;
2006
- } catch {
2007
- return null;
2008
- }
2009
- };
2010
- const [resolvedFetchPath, resolvedQueuePath, resolvedScheduledPath, resolvedEmailPath, resolvedTailPath, resolvedRoutes] = await Promise.all([
2011
- resolvePath(fetchPath, DEFAULT_FETCH_PATH),
2012
- resolvePath(queuePath, DEFAULT_QUEUE_PATH),
2013
- resolvePath(scheduledPath, DEFAULT_SCHEDULED_PATH),
2014
- resolvePath(emailPath, DEFAULT_EMAIL_PATH),
2015
- resolvePath(undefined, DEFAULT_TAIL_PATH),
2016
- discoverRoutes(configDir6, config)
2017
- ]);
2018
- configureQueue({
2019
- handlerPath: resolvedQueuePath,
2020
- configDir: configDir6,
2021
- getEnv: getTestEnv
2022
- });
2023
- configureScheduled({
2024
- handlerPath: resolvedScheduledPath,
2025
- configDir: configDir6,
2026
- getEnv: getTestEnv
2027
- });
2028
- configureWorker({
2029
- handlerPath: resolvedFetchPath,
2030
- routes: resolvedRoutes?.routes.map((route) => ({
2031
- filePath: route.filePath,
2032
- routePath: route.routePath,
2033
- segments: route.segments
2034
- })) ?? [],
2159
+ const handlerPaths = await resolveHandlerPaths(configDir6, config);
2160
+ configureSurfaceHandlers({
2161
+ handlerPaths,
2035
2162
  configDir: configDir6,
2163
+ activePort,
2036
2164
  getEnv: getTestEnv
2037
2165
  });
2038
- configureTail({
2039
- handlerPath: resolvedTailPath,
2040
- configDir: configDir6,
2041
- getEnv: getTestEnv
2042
- });
2043
- configureEmail({
2044
- port: activePort,
2045
- handlerPath: resolvedEmailPath,
2046
- configDir: configDir6,
2047
- getEnv: getTestEnv
2048
- });
2049
- if (hasMultiWorkerServices || hasMultiWorkerDOs) {
2166
+ if (usesMultiWorker) {
2050
2167
  setBindingHints(hints);
2051
- const envAccessor2 = new Proxy({}, {
2052
- get(_, prop) {
2053
- if (globalRemoteBindings && prop in globalRemoteBindings) {
2054
- return globalRemoteBindings[prop];
2055
- }
2056
- if (globalMiniflareBindings && prop in globalMiniflareBindings) {
2057
- return globalMiniflareBindings[prop];
2058
- }
2059
- return;
2060
- },
2061
- has(_, prop) {
2062
- return Boolean(globalRemoteBindings && prop in globalRemoteBindings || globalMiniflareBindings && prop in globalMiniflareBindings);
2063
- }
2064
- });
2065
- __setTestContext(envAccessor2, disposeContext);
2168
+ __setTestContext(createMultiWorkerEnvAccessor(state), disposeContext);
2066
2169
  return;
2067
2170
  }
2068
- const bridgeClient = globalClient;
2171
+ const bridgeClient = state.client;
2069
2172
  if (!bridgeClient) {
2070
2173
  throw new Error("Bridge-backed test context did not initialize a client.");
2071
2174
  }
2072
2175
  setBindingHints(hints);
2073
- globalEnvProxy = createEnvProxy({
2176
+ state.envProxy = createEnvProxy({
2074
2177
  client: bridgeClient,
2075
2178
  transformResult: (result) => decodeTransport(result)
2076
2179
  });
2077
- const envAccessor = new Proxy({}, {
2078
- get(_, prop) {
2079
- const hint = hints[prop];
2080
- const prefersBridgeBinding = shouldPreferBridgeBinding(hint);
2081
- if (globalRemoteBindings && prop in globalRemoteBindings) {
2082
- return globalRemoteBindings[prop];
2083
- }
2084
- if (!prefersBridgeBinding && globalMiniflareBindings && prop in globalMiniflareBindings) {
2085
- return globalMiniflareBindings[prop];
2086
- }
2087
- if (globalEnvProxy) {
2088
- return globalEnvProxy[prop];
2089
- }
2090
- if (prefersBridgeBinding && globalMiniflareBindings && prop in globalMiniflareBindings) {
2091
- return globalMiniflareBindings[prop];
2092
- }
2093
- return;
2094
- },
2095
- has(_, prop) {
2096
- return Boolean(globalRemoteBindings && prop in globalRemoteBindings || globalMiniflareBindings && prop in globalMiniflareBindings || globalEnvProxy !== null);
2097
- }
2098
- });
2099
- __setTestContext(envAccessor, disposeContext);
2100
- }
2101
- function decodeTransport(value) {
2102
- if (!globalTransportDecode || value === null || typeof value !== "object") {
2103
- return value;
2104
- }
2105
- if ("__transport" in value) {
2106
- const encoded = value;
2107
- const decoder = globalTransportDecode.get(encoded.__transport);
2108
- if (decoder) {
2109
- return decoder(encoded.value);
2110
- }
2111
- }
2112
- if (Array.isArray(value)) {
2113
- return value.map(decodeTransport);
2114
- }
2115
- const result = {};
2116
- for (const [k, v] of Object.entries(value)) {
2117
- result[k] = decodeTransport(v);
2118
- }
2119
- return result;
2180
+ __setTestContext(createBridgeEnvAccessor(state, hints, shouldPreferBridgeBinding), disposeContext);
2120
2181
  }
2121
2182
  // src/test/cf.ts
2122
2183
  var cf = {
@@ -2252,56 +2313,88 @@ async function withTestContext(options, handler) {
2252
2313
  return runWithContext(testCtx.env, testCtx.ctx, options.request ?? null, handler, options.type ?? "fetch");
2253
2314
  }
2254
2315
  function createMockKV(initialData = {}) {
2255
- const store = new Map(Object.entries(initialData));
2316
+ const store = new Map;
2256
2317
  const metadata = new Map;
2318
+ const encoder = new TextEncoder;
2319
+ const decoder = new TextDecoder;
2320
+ for (const [key, value] of Object.entries(initialData)) {
2321
+ store.set(key, encoder.encode(value));
2322
+ }
2323
+ const toBytes = async (value) => {
2324
+ if (typeof value === "string") {
2325
+ return encoder.encode(value);
2326
+ }
2327
+ if (value instanceof ArrayBuffer) {
2328
+ return new Uint8Array(value.slice(0));
2329
+ }
2330
+ if (ArrayBuffer.isView(value)) {
2331
+ const view = value;
2332
+ const copy = new Uint8Array(view.byteLength);
2333
+ copy.set(new Uint8Array(view.buffer, view.byteOffset, view.byteLength));
2334
+ return copy;
2335
+ }
2336
+ const reader = value.getReader();
2337
+ const chunks = [];
2338
+ let total = 0;
2339
+ while (true) {
2340
+ const result = await reader.read();
2341
+ if (result.done)
2342
+ break;
2343
+ if (result.value) {
2344
+ const chunk = result.value instanceof Uint8Array ? result.value : new Uint8Array(result.value);
2345
+ chunks.push(chunk);
2346
+ total += chunk.length;
2347
+ }
2348
+ }
2349
+ const combined = new Uint8Array(total);
2350
+ let offset = 0;
2351
+ for (const chunk of chunks) {
2352
+ combined.set(chunk, offset);
2353
+ offset += chunk.length;
2354
+ }
2355
+ return combined;
2356
+ };
2357
+ const decodeBytes = (bytes, type) => {
2358
+ switch (type) {
2359
+ case "json":
2360
+ return JSON.parse(decoder.decode(bytes));
2361
+ case "arrayBuffer": {
2362
+ const copy = new Uint8Array(bytes.length);
2363
+ copy.set(bytes);
2364
+ return copy.buffer;
2365
+ }
2366
+ case "stream": {
2367
+ const copy = new Uint8Array(bytes.length);
2368
+ copy.set(bytes);
2369
+ return new ReadableStream({
2370
+ start(controller) {
2371
+ controller.enqueue(copy);
2372
+ controller.close();
2373
+ }
2374
+ });
2375
+ }
2376
+ default:
2377
+ return decoder.decode(bytes);
2378
+ }
2379
+ };
2380
+ const resolveType = (options) => {
2381
+ const type = typeof options === "string" ? options : options?.type ?? "text";
2382
+ return type;
2383
+ };
2257
2384
  return {
2258
2385
  async get(key, options) {
2259
- const value = store.get(key);
2260
- if (value === null || value === undefined)
2386
+ const bytes = store.get(key);
2387
+ if (bytes === undefined)
2261
2388
  return null;
2262
- const type = typeof options === "string" ? options : options?.type ?? "text";
2263
- switch (type) {
2264
- case "json":
2265
- return JSON.parse(value);
2266
- case "arrayBuffer":
2267
- return new TextEncoder().encode(value).buffer;
2268
- case "stream":
2269
- return new ReadableStream({
2270
- start(controller) {
2271
- controller.enqueue(new TextEncoder().encode(value));
2272
- controller.close();
2273
- }
2274
- });
2275
- default:
2276
- return value;
2277
- }
2389
+ return decodeBytes(bytes, resolveType(options));
2278
2390
  },
2279
- async put(key, value, options) {
2280
- if (typeof value === "string") {
2281
- store.set(key, value);
2282
- } else if (value instanceof ArrayBuffer) {
2283
- store.set(key, new TextDecoder().decode(value));
2284
- } else {
2285
- const reader = value.getReader();
2286
- const chunks = [];
2287
- let done = false;
2288
- while (!done) {
2289
- const result = await reader.read();
2290
- done = result.done;
2291
- if (result.value)
2292
- chunks.push(result.value);
2293
- }
2294
- const combined = new Uint8Array(chunks.reduce((acc, c) => acc + c.length, 0));
2295
- let offset = 0;
2296
- for (const chunk of chunks) {
2297
- combined.set(chunk, offset);
2298
- offset += chunk.length;
2299
- }
2300
- store.set(key, new TextDecoder().decode(combined));
2301
- }
2391
+ async put(key, value, _options) {
2392
+ const bytes = await toBytes(value);
2393
+ store.set(key, bytes);
2302
2394
  },
2303
2395
  async delete(key) {
2304
2396
  store.delete(key);
2397
+ metadata.delete(key);
2305
2398
  },
2306
2399
  async list(options) {
2307
2400
  const prefix = options?.prefix ?? "";
@@ -2314,52 +2407,106 @@ function createMockKV(initialData = {}) {
2314
2407
  };
2315
2408
  },
2316
2409
  async getWithMetadata(key, options) {
2410
+ const bytes = store.get(key);
2317
2411
  return {
2318
- value: store.get(key) ?? null,
2412
+ value: bytes === undefined ? null : decodeBytes(bytes, resolveType(options)),
2319
2413
  metadata: metadata.get(key) ?? null
2320
2414
  };
2321
2415
  }
2322
2416
  };
2323
2417
  }
2324
- function createMockD1(mockResults = []) {
2325
- let boundValues = [];
2326
- let currentResults = [...mockResults];
2327
- const createStatement = () => ({
2328
- bind(...values) {
2329
- boundValues = values;
2330
- return this;
2331
- },
2332
- async first(column) {
2333
- const row = currentResults[0];
2334
- if (!row)
2335
- return null;
2336
- if (column)
2337
- return row[column];
2338
- return row;
2339
- },
2340
- async all() {
2341
- return {
2342
- results: currentResults,
2343
- success: true,
2344
- meta: { duration: 0, changes: 0, last_row_id: 0 }
2345
- };
2346
- },
2347
- async run() {
2348
- return {
2349
- results: [],
2350
- success: true,
2351
- meta: { duration: 0, changes: 1, last_row_id: 1 }
2352
- };
2353
- },
2354
- async raw(options) {
2355
- return currentResults.map((row) => Object.values(row));
2356
- }
2357
- });
2418
+ var TABLE_NAME_RE = /(?:from|into|update)\s+["'`]?([a-zA-Z_][a-zA-Z0-9_]*)["'`]?/i;
2419
+ var extractTable = (sql) => {
2420
+ const match = TABLE_NAME_RE.exec(sql);
2421
+ return match ? match[1] : null;
2422
+ };
2423
+ var detectOp = (sql) => {
2424
+ const trimmed = sql.trimStart().toLowerCase();
2425
+ if (trimmed.startsWith("select"))
2426
+ return "select";
2427
+ if (trimmed.startsWith("insert"))
2428
+ return "insert";
2429
+ if (trimmed.startsWith("update"))
2430
+ return "update";
2431
+ if (trimmed.startsWith("delete"))
2432
+ return "delete";
2433
+ return "other";
2434
+ };
2435
+ function createMockD1(mockResultsOrOptions = []) {
2436
+ const options = Array.isArray(mockResultsOrOptions) ? { results: mockResultsOrOptions } : mockResultsOrOptions;
2437
+ const tables = new Map;
2438
+ for (const [name, rows] of Object.entries(options.fixtures ?? {})) {
2439
+ tables.set(name, [...rows]);
2440
+ }
2441
+ const fallback = options.results ?? [];
2442
+ const resolveRows = (sql) => {
2443
+ const op = detectOp(sql);
2444
+ const table = extractTable(sql);
2445
+ if (table && tables.has(table)) {
2446
+ return { rows: tables.get(table) ?? [], op, table };
2447
+ }
2448
+ return { rows: [...fallback], op, table };
2449
+ };
2450
+ const createStatement = (sql) => {
2451
+ let boundValues = [];
2452
+ const statement = {
2453
+ bind(...values) {
2454
+ boundValues = values;
2455
+ return statement;
2456
+ },
2457
+ async first(column) {
2458
+ const { rows } = resolveRows(sql);
2459
+ const row = rows[0];
2460
+ if (!row)
2461
+ return null;
2462
+ if (column)
2463
+ return row[column];
2464
+ return row;
2465
+ },
2466
+ async all() {
2467
+ const { rows } = resolveRows(sql);
2468
+ return {
2469
+ results: rows,
2470
+ success: true,
2471
+ meta: { duration: 0, changes: 0, last_row_id: 0 }
2472
+ };
2473
+ },
2474
+ async run() {
2475
+ const { op, table } = resolveRows(sql);
2476
+ let changes = 0;
2477
+ let lastRowId = 0;
2478
+ if (op === "insert" && table) {
2479
+ const rows = tables.get(table) ?? [];
2480
+ const bound = boundValues.length > 0 ? Object.fromEntries(boundValues.map((v, i) => [`col${i}`, v])) : {};
2481
+ rows.push(bound);
2482
+ tables.set(table, rows);
2483
+ changes = 1;
2484
+ lastRowId = rows.length;
2485
+ } else if (op === "delete" && table) {
2486
+ const rows = tables.get(table) ?? [];
2487
+ changes = rows.length;
2488
+ tables.set(table, []);
2489
+ } else if (op === "update" && table) {
2490
+ changes = (tables.get(table) ?? []).length;
2491
+ }
2492
+ return {
2493
+ results: [],
2494
+ success: true,
2495
+ meta: { duration: 0, changes, last_row_id: lastRowId }
2496
+ };
2497
+ },
2498
+ async raw(_options) {
2499
+ const { rows } = resolveRows(sql);
2500
+ return rows.map((row) => Object.values(row));
2501
+ }
2502
+ };
2503
+ return statement;
2504
+ };
2358
2505
  return {
2359
2506
  prepare(query) {
2360
- return createStatement();
2507
+ return createStatement(query);
2361
2508
  },
2362
- async exec(query) {
2509
+ async exec(_query) {
2363
2510
  return {
2364
2511
  results: [],
2365
2512
  success: true,
@@ -2376,7 +2523,7 @@ function createMockD1(mockResults = []) {
2376
2523
  async dump() {
2377
2524
  return new ArrayBuffer(0);
2378
2525
  },
2379
- withSession(constraintOrBookmark) {
2526
+ withSession(_constraintOrBookmark) {
2380
2527
  return this;
2381
2528
  }
2382
2529
  };
@@ -2539,111 +2686,26 @@ function createMockEnv(options = {}) {
2539
2686
  }
2540
2687
  return env2;
2541
2688
  }
2542
- // src/test/bridge-context.ts
2543
- var globalTestContext = null;
2544
- async function createBridgeTestContext(options = {}) {
2545
- if (globalTestContext) {
2546
- await globalTestContext.stop();
2547
- }
2548
- let config = options.config;
2549
- if (options.configPath && !config) {
2550
- config = await loadConfig({ cwd: options.configPath.replace(/[/\\][^/\\]+$/, ""), configFile: options.configPath.split(/[/\\]/).pop() });
2551
- }
2552
- let miniflare;
2553
- if (config) {
2554
- miniflare = await startMiniflareFromConfig(config, {
2555
- ...options.miniflare,
2556
- port: options.port ?? 8787,
2557
- persist: options.persist ?? false,
2558
- verbose: options.verbose ?? false
2559
- });
2560
- } else {
2561
- miniflare = await startMiniflare({
2562
- ...options.miniflare,
2563
- port: options.port ?? 8787,
2564
- persist: options.persist ?? false,
2565
- verbose: options.verbose ?? false
2566
- });
2567
- }
2568
- const bindings = wrapEnvSendEmailBindings(await miniflare.getBindings());
2569
- if (config?.bindings) {
2570
- const hints = {};
2571
- if (config.bindings.kv) {
2572
- Object.keys(config.bindings.kv).forEach((name) => {
2573
- hints[name] = "kv";
2574
- });
2575
- }
2576
- if (config.bindings.r2) {
2577
- Object.keys(config.bindings.r2).forEach((name) => {
2578
- hints[name] = "r2";
2579
- });
2580
- }
2581
- if (config.bindings.d1) {
2582
- Object.keys(config.bindings.d1).forEach((name) => {
2583
- hints[name] = "d1";
2584
- });
2585
- }
2586
- if (config.bindings.durableObjects) {
2587
- Object.keys(config.bindings.durableObjects).forEach((name) => {
2588
- hints[name] = "do";
2589
- });
2590
- }
2591
- if (config.bindings.queues?.consumers) {
2592
- config.bindings.queues.consumers.forEach((c) => {
2593
- hints[c.queue] = "queue";
2594
- });
2595
- }
2596
- if (config.bindings.ai)
2597
- hints[config.bindings.ai.binding] = "ai";
2598
- if (config.bindings.sendEmail) {
2599
- Object.keys(config.bindings.sendEmail).forEach((name) => {
2600
- hints[name] = "sendEmail";
2601
- });
2602
- }
2603
- setBindingHints(hints);
2604
- }
2605
- const ctx = {
2606
- env: bindings,
2607
- miniflare,
2608
- async stop() {
2609
- await miniflare.dispose();
2610
- globalTestContext = null;
2611
- },
2612
- async reset() {
2613
- for (const [name, binding] of Object.entries(bindings)) {
2614
- if (isKVNamespace(binding)) {
2615
- const kv = binding;
2616
- const { keys } = await kv.list();
2617
- for (const key of keys) {
2618
- await kv.delete(key.name);
2619
- }
2620
- }
2621
- }
2622
- }
2623
- };
2624
- globalTestContext = ctx;
2625
- return ctx;
2626
- }
2627
- async function stopBridgeTestContext() {
2628
- if (globalTestContext) {
2629
- await globalTestContext.stop();
2630
- }
2631
- }
2632
- function getBridgeTestContext() {
2633
- if (!globalTestContext) {
2634
- throw new Error("Bridge test context not initialized. Call createBridgeTestContext() in beforeAll().");
2635
- }
2636
- return globalTestContext;
2637
- }
2638
- var testEnv = new Proxy({}, {
2639
- get(target, prop) {
2640
- if (typeof prop !== "string")
2641
- return;
2642
- const ctx = getBridgeTestContext();
2643
- return ctx.env[prop];
2644
- }
2645
- });
2646
- function isKVNamespace(binding) {
2647
- return typeof binding === "object" && binding !== null && "get" in binding && "put" in binding && "delete" in binding && "list" in binding;
2648
- }
2649
- export { clearBundleCache, hasServiceBindings, resolveServiceBindings, hasCrossWorkerDOs, resolveDOBindings, email, queue, scheduled, tail, worker, createTestContext, cf, shouldSkip, createMockTestContext, withTestContext, createMockKV, createMockD1, createMockR2, createMockQueue, createMockEnv, createBridgeTestContext, stopBridgeTestContext, getBridgeTestContext, testEnv };
2689
+ export {
2690
+ worker,
2691
+ withTestContext,
2692
+ tail,
2693
+ shouldSkip,
2694
+ scheduled,
2695
+ resolveServiceBindings,
2696
+ resolveDOBindings,
2697
+ queue,
2698
+ hasServiceBindings,
2699
+ hasCrossWorkerDOs,
2700
+ env,
2701
+ email,
2702
+ createTestContext,
2703
+ createMockTestContext,
2704
+ createMockR2,
2705
+ createMockQueue,
2706
+ createMockKV,
2707
+ createMockEnv,
2708
+ createMockD1,
2709
+ clearBundleCache,
2710
+ cf
2711
+ };