devflare 1.0.0-next.5 → 1.0.0-next.50

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 (594) hide show
  1. package/LICENSE +21 -0
  2. package/LLM.md +17312 -2139
  3. package/README.md +394 -605
  4. package/bin/devflare.js +30 -14
  5. package/dist/_chunks/account-BI3WZMDy.js +462 -0
  6. package/dist/_chunks/account-resources-CsmVowJp.js +159 -0
  7. package/dist/_chunks/ai-CBEuLdoP.js +322 -0
  8. package/dist/_chunks/api-TzdliH-6.js +568 -0
  9. package/dist/_chunks/build-artifacts-DU5V0J0Z.js +483 -0
  10. package/dist/_chunks/build-e0KR38-4.js +24 -0
  11. package/dist/_chunks/cli-DuUz10Mn.js +1163 -0
  12. package/dist/_chunks/cloudflare-BaloqI3H.js +157 -0
  13. package/dist/_chunks/colors-DiK6wPJ5.js +13 -0
  14. package/dist/_chunks/command-utils-DA0Qx9_K.js +45 -0
  15. package/dist/_chunks/compiler-Zw16C9Pi.js +489 -0
  16. package/dist/_chunks/config-Brju62xy.js +78 -0
  17. package/dist/_chunks/config-path-DaL1ylZ_.js +42 -0
  18. package/dist/_chunks/context-CX50Y2Kb.js +2250 -0
  19. package/dist/_chunks/decorators-QmV57ixr.js +19 -0
  20. package/dist/_chunks/dependencies-C2oxFjU_.js +57 -0
  21. package/dist/_chunks/deploy-B-Kku1Vk.js +1032 -0
  22. package/dist/_chunks/dev-D4e_RRZn.js +3471 -0
  23. package/dist/_chunks/doctor-jm_K4dxL.js +219 -0
  24. package/dist/_chunks/durable-object-DMtH0XYX.js +234 -0
  25. package/dist/_chunks/env-S0_nMVz1.js +125 -0
  26. package/dist/_chunks/family-_9-mGSfO.js +143 -0
  27. package/dist/_chunks/generated-artifacts-dMJY4KAt.js +32 -0
  28. package/dist/_chunks/glob-CmQOvunB.js +56 -0
  29. package/dist/_chunks/init-DnkJOmpW.js +165 -0
  30. package/dist/_chunks/loader-Cr0_OWPy.js +1288 -0
  31. package/dist/_chunks/local-dev-vars-CTSa-wvF.js +81 -0
  32. package/dist/_chunks/local-hyperdrive-CJ90j46O.js +119 -0
  33. package/dist/_chunks/local-media-bindings-DsAW4AMF.js +335 -0
  34. package/dist/_chunks/local-secrets-DMPkmOn3.js +123 -0
  35. package/dist/_chunks/local-workflow-entrypoints-Cq_WJajd.js +90 -0
  36. package/dist/_chunks/login-FjTAAQbi.js +51 -0
  37. package/dist/_chunks/package-metadata-DjHBLB-z.js +39 -0
  38. package/dist/_chunks/preferences-BKp_7XJx.js +241 -0
  39. package/dist/_chunks/preview-C3Cdr8an.js +462 -0
  40. package/dist/_chunks/preview-registry-ClAbLTHH.js +1186 -0
  41. package/dist/_chunks/preview-resources-CGMBjsYB.js +359 -0
  42. package/dist/_chunks/previews-C7hs9-BT.js +1134 -0
  43. package/dist/_chunks/productions-T9Als4fE.js +411 -0
  44. package/dist/_chunks/ref-CYJNAAe_.js +178 -0
  45. package/dist/_chunks/remote-CZnP-HLJ.js +79 -0
  46. package/dist/_chunks/remote-config-D39BY9ji.js +132 -0
  47. package/dist/_chunks/resolve-package-qizBfCIm.js +152 -0
  48. package/dist/_chunks/rolldown-runtime-CvQ6eiug.js +14 -0
  49. package/dist/_chunks/routes-BFYCqHb-.js +833 -0
  50. package/dist/_chunks/runtime-DL-Nz3k8.js +550 -0
  51. package/dist/_chunks/schema-normalization-BCwTLTGp.js +660 -0
  52. package/dist/_chunks/secrets-DIpJGe6C.js +95 -0
  53. package/dist/_chunks/tail-IY-ijYmv.js +239 -0
  54. package/dist/_chunks/token-Dmi0KXyX.js +333 -0
  55. package/dist/_chunks/tokens-iVcgNXi-.js +221 -0
  56. package/dist/_chunks/types-DoKsMYfm.js +484 -0
  57. package/dist/_chunks/ui-BUoZApvE.js +103 -0
  58. package/dist/_chunks/usage-BBTGzjon.js +272 -0
  59. package/dist/_chunks/vite-CGtVNf5E.js +1267 -0
  60. package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
  61. package/dist/_chunks/worker-BEZI4od1.js +410 -0
  62. package/dist/_chunks/worker-bundler-dTTnYU3n.js +458 -0
  63. package/dist/_chunks/worker-entrypoint-CQW77lG8.js +247 -0
  64. package/dist/_chunks/workerName-CFJsLZA-.js +23 -0
  65. package/dist/bridge/client.d.ts +49 -7
  66. package/dist/bridge/client.d.ts.map +1 -1
  67. package/dist/bridge/gateway-runtime.d.ts +8 -0
  68. package/dist/bridge/gateway-runtime.d.ts.map +1 -0
  69. package/dist/bridge/index.d.ts +6 -6
  70. package/dist/bridge/index.d.ts.map +1 -1
  71. package/dist/bridge/log.d.ts +5 -0
  72. package/dist/bridge/log.d.ts.map +1 -0
  73. package/dist/bridge/miniflare.d.ts +82 -2
  74. package/dist/bridge/miniflare.d.ts.map +1 -1
  75. package/dist/bridge/proxy.d.ts +12 -11
  76. package/dist/bridge/proxy.d.ts.map +1 -1
  77. package/dist/bridge/server.d.ts +2 -1
  78. package/dist/bridge/server.d.ts.map +1 -1
  79. package/dist/bridge/v2/body-streams.d.ts +53 -0
  80. package/dist/bridge/v2/body-streams.d.ts.map +1 -0
  81. package/dist/bridge/v2/codec.d.ts +106 -0
  82. package/dist/bridge/v2/codec.d.ts.map +1 -0
  83. package/dist/bridge/v2/control-messages.d.ts +46 -0
  84. package/dist/bridge/v2/control-messages.d.ts.map +1 -0
  85. package/dist/bridge/v2/frames.d.ts +109 -0
  86. package/dist/bridge/v2/frames.d.ts.map +1 -0
  87. package/dist/bridge/v2/index.d.ts +11 -0
  88. package/dist/bridge/v2/index.d.ts.map +1 -0
  89. package/dist/bridge/v2/serialization.d.ts +48 -0
  90. package/dist/bridge/v2/serialization.d.ts.map +1 -0
  91. package/dist/bridge/v2/transport.d.ts +31 -0
  92. package/dist/bridge/v2/transport.d.ts.map +1 -0
  93. package/dist/bridge/v2/value-codec.d.ts +61 -0
  94. package/dist/bridge/v2/value-codec.d.ts.map +1 -0
  95. package/dist/bridge/{serialization.d.ts → v2/value-serialization.d.ts} +40 -18
  96. package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
  97. package/dist/bridge/{protocol.d.ts → v2/wire.d.ts} +32 -8
  98. package/dist/bridge/v2/wire.d.ts.map +1 -0
  99. package/dist/bridge/v2/ws-relay.d.ts +53 -0
  100. package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
  101. package/dist/browser-shim/handler.d.ts +2 -2
  102. package/dist/browser-shim/handler.d.ts.map +1 -1
  103. package/dist/browser-shim/index.d.ts +2 -2
  104. package/dist/browser-shim/server.d.ts +63 -0
  105. package/dist/browser-shim/server.d.ts.map +1 -1
  106. package/dist/browser.d.ts +5411 -0
  107. package/dist/browser.d.ts.map +1 -0
  108. package/dist/browser.js +80 -0
  109. package/dist/bundler/defaults.d.ts +23 -0
  110. package/dist/bundler/defaults.d.ts.map +1 -0
  111. package/dist/bundler/do-bundler.d.ts +7 -0
  112. package/dist/bundler/do-bundler.d.ts.map +1 -1
  113. package/dist/bundler/index.d.ts +3 -1
  114. package/dist/bundler/index.d.ts.map +1 -1
  115. package/dist/bundler/rolldown-shared.d.ts +53 -0
  116. package/dist/bundler/rolldown-shared.d.ts.map +1 -0
  117. package/dist/bundler/worker-bundler.d.ts +13 -0
  118. package/dist/bundler/worker-bundler.d.ts.map +1 -0
  119. package/dist/bundler/worker-compat.d.ts +4 -0
  120. package/dist/bundler/worker-compat.d.ts.map +1 -0
  121. package/dist/cli/build-manifest.d.ts +66 -0
  122. package/dist/cli/build-manifest.d.ts.map +1 -0
  123. package/dist/cli/command-utils.d.ts +18 -0
  124. package/dist/cli/command-utils.d.ts.map +1 -0
  125. package/dist/cli/commands/account.d.ts +2 -2
  126. package/dist/cli/commands/account.d.ts.map +1 -1
  127. package/dist/cli/commands/ai.d.ts +1 -1
  128. package/dist/cli/commands/ai.d.ts.map +1 -1
  129. package/dist/cli/commands/build-artifacts.d.ts +40 -0
  130. package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
  131. package/dist/cli/commands/build.d.ts +2 -2
  132. package/dist/cli/commands/build.d.ts.map +1 -1
  133. package/dist/cli/commands/config.d.ts +4 -0
  134. package/dist/cli/commands/config.d.ts.map +1 -0
  135. package/dist/cli/commands/deploy/metadata.d.ts +18 -0
  136. package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
  137. package/dist/cli/commands/deploy/prepare.d.ts +23 -0
  138. package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
  139. package/dist/cli/commands/deploy/runtime.d.ts +4 -0
  140. package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
  141. package/dist/cli/commands/deploy/verification.d.ts +36 -0
  142. package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
  143. package/dist/cli/commands/deploy.d.ts +2 -2
  144. package/dist/cli/commands/deploy.d.ts.map +1 -1
  145. package/dist/cli/commands/dev.d.ts +9 -1
  146. package/dist/cli/commands/dev.d.ts.map +1 -1
  147. package/dist/cli/commands/doctor.d.ts +2 -2
  148. package/dist/cli/commands/doctor.d.ts.map +1 -1
  149. package/dist/cli/commands/init.d.ts +2 -2
  150. package/dist/cli/commands/init.d.ts.map +1 -1
  151. package/dist/cli/commands/login.d.ts +4 -0
  152. package/dist/cli/commands/login.d.ts.map +1 -0
  153. package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
  154. package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
  155. package/dist/cli/commands/previews-support/family.d.ts +10 -0
  156. package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
  157. package/dist/cli/commands/previews-support/render.d.ts +8 -0
  158. package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
  159. package/dist/cli/commands/previews-support/theme.d.ts +10 -0
  160. package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
  161. package/dist/cli/commands/previews-support/types.d.ts +70 -0
  162. package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
  163. package/dist/cli/commands/previews.d.ts +4 -0
  164. package/dist/cli/commands/previews.d.ts.map +1 -0
  165. package/dist/cli/commands/productions.d.ts +4 -0
  166. package/dist/cli/commands/productions.d.ts.map +1 -0
  167. package/dist/cli/commands/remote.d.ts +1 -1
  168. package/dist/cli/commands/remote.d.ts.map +1 -1
  169. package/dist/cli/commands/secrets.d.ts +4 -0
  170. package/dist/cli/commands/secrets.d.ts.map +1 -0
  171. package/dist/cli/commands/tail.d.ts +44 -0
  172. package/dist/cli/commands/tail.d.ts.map +1 -0
  173. package/dist/cli/commands/token.d.ts +4 -0
  174. package/dist/cli/commands/token.d.ts.map +1 -0
  175. package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
  176. package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
  177. package/dist/cli/commands/type-generation/generator.d.ts +121 -0
  178. package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
  179. package/dist/cli/commands/type-generation/models.d.ts +27 -0
  180. package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
  181. package/dist/cli/commands/types.d.ts +2 -2
  182. package/dist/cli/commands/types.d.ts.map +1 -1
  183. package/dist/cli/commands/worker.d.ts +4 -0
  184. package/dist/cli/commands/worker.d.ts.map +1 -0
  185. package/dist/cli/config-path.d.ts +6 -0
  186. package/dist/cli/config-path.d.ts.map +1 -0
  187. package/dist/cli/dependencies.d.ts +2 -1
  188. package/dist/cli/dependencies.d.ts.map +1 -1
  189. package/dist/cli/deploy-strategy.d.ts +17 -0
  190. package/dist/cli/deploy-strategy.d.ts.map +1 -0
  191. package/dist/cli/deploy-target.d.ts +17 -0
  192. package/dist/cli/deploy-target.d.ts.map +1 -0
  193. package/dist/cli/generated-artifacts.d.ts +12 -0
  194. package/dist/cli/generated-artifacts.d.ts.map +1 -0
  195. package/dist/cli/gradual-deploy.d.ts +49 -0
  196. package/dist/cli/gradual-deploy.d.ts.map +1 -0
  197. package/dist/cli/help-pages/pages/account.d.ts +3 -0
  198. package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
  199. package/dist/cli/help-pages/pages/core.d.ts +4 -0
  200. package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
  201. package/dist/cli/help-pages/pages/index.d.ts +3 -0
  202. package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
  203. package/dist/cli/help-pages/pages/misc.d.ts +3 -0
  204. package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
  205. package/dist/cli/help-pages/pages/previews.d.ts +3 -0
  206. package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
  207. package/dist/cli/help-pages/pages/productions.d.ts +3 -0
  208. package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
  209. package/dist/cli/help-pages/render.d.ts +12 -0
  210. package/dist/cli/help-pages/render.d.ts.map +1 -0
  211. package/dist/cli/help-pages/shared.d.ts +15 -0
  212. package/dist/cli/help-pages/shared.d.ts.map +1 -0
  213. package/dist/cli/help-pages/types.d.ts +23 -0
  214. package/dist/cli/help-pages/types.d.ts.map +1 -0
  215. package/dist/cli/help.d.ts +6 -0
  216. package/dist/cli/help.d.ts.map +1 -0
  217. package/dist/cli/index.d.ts +1 -0
  218. package/dist/cli/index.d.ts.map +1 -1
  219. package/dist/cli/index.js +2 -0
  220. package/dist/cli/package-metadata.d.ts +16 -0
  221. package/dist/cli/package-metadata.d.ts.map +1 -0
  222. package/dist/cli/preview-bindings.d.ts +49 -0
  223. package/dist/cli/preview-bindings.d.ts.map +1 -0
  224. package/dist/cli/preview.d.ts +10 -0
  225. package/dist/cli/preview.d.ts.map +1 -0
  226. package/dist/cli/ui.d.ts +37 -0
  227. package/dist/cli/ui.d.ts.map +1 -0
  228. package/dist/cli/workspace-build-guard.d.ts +14 -0
  229. package/dist/cli/workspace-build-guard.d.ts.map +1 -0
  230. package/dist/cli/wrangler-auth.d.ts +1 -1
  231. package/dist/cloudflare/account-core.d.ts +6 -0
  232. package/dist/cloudflare/account-core.d.ts.map +1 -0
  233. package/dist/cloudflare/account-resources.d.ts +40 -0
  234. package/dist/cloudflare/account-resources.d.ts.map +1 -0
  235. package/dist/cloudflare/account-status.d.ts +11 -0
  236. package/dist/cloudflare/account-status.d.ts.map +1 -0
  237. package/dist/cloudflare/account-workers.d.ts +14 -0
  238. package/dist/cloudflare/account-workers.d.ts.map +1 -0
  239. package/dist/cloudflare/account.d.ts +7 -64
  240. package/dist/cloudflare/account.d.ts.map +1 -1
  241. package/dist/cloudflare/api.d.ts +71 -3
  242. package/dist/cloudflare/api.d.ts.map +1 -1
  243. package/dist/cloudflare/auth.d.ts +1 -1
  244. package/dist/cloudflare/auth.d.ts.map +1 -1
  245. package/dist/cloudflare/index.d.ts +61 -6
  246. package/dist/cloudflare/index.d.ts.map +1 -1
  247. package/dist/cloudflare/index.js +4 -13
  248. package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
  249. package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
  250. package/dist/cloudflare/kv-namespace.d.ts +4 -0
  251. package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
  252. package/dist/cloudflare/preferences.d.ts +7 -0
  253. package/dist/cloudflare/preferences.d.ts.map +1 -1
  254. package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
  255. package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
  256. package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
  257. package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
  258. package/dist/cloudflare/preview-registry-records.d.ts +4 -0
  259. package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
  260. package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
  261. package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
  262. package/dist/cloudflare/preview-registry-store.d.ts +14 -0
  263. package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
  264. package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
  265. package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
  266. package/dist/cloudflare/preview-registry-types.d.ts +103 -0
  267. package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
  268. package/dist/cloudflare/preview-registry.d.ts +42 -0
  269. package/dist/cloudflare/preview-registry.d.ts.map +1 -0
  270. package/dist/cloudflare/preview-urls.d.ts +3 -0
  271. package/dist/cloudflare/preview-urls.d.ts.map +1 -0
  272. package/dist/cloudflare/registry-schema.d.ts +253 -0
  273. package/dist/cloudflare/registry-schema.d.ts.map +1 -0
  274. package/dist/cloudflare/remote-config.d.ts.map +1 -1
  275. package/dist/cloudflare/tokens.d.ts +44 -0
  276. package/dist/cloudflare/tokens.d.ts.map +1 -0
  277. package/dist/cloudflare/types.d.ts +124 -7
  278. package/dist/cloudflare/types.d.ts.map +1 -1
  279. package/dist/cloudflare/usage.d.ts +31 -3
  280. package/dist/cloudflare/usage.d.ts.map +1 -1
  281. package/dist/config/binding-resolution-helpers.d.ts +41 -0
  282. package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
  283. package/dist/config/compatibility.d.ts +3 -0
  284. package/dist/config/compatibility.d.ts.map +1 -0
  285. package/dist/config/compiler/bindings.d.ts +14 -0
  286. package/dist/config/compiler/bindings.d.ts.map +1 -0
  287. package/dist/config/compiler/core-helpers.d.ts +6 -0
  288. package/dist/config/compiler/core-helpers.d.ts.map +1 -0
  289. package/dist/config/compiler/do-workers.d.ts +34 -0
  290. package/dist/config/compiler/do-workers.d.ts.map +1 -0
  291. package/dist/config/compiler/paths.d.ts +18 -0
  292. package/dist/config/compiler/paths.d.ts.map +1 -0
  293. package/dist/config/compiler/types.d.ts +298 -0
  294. package/dist/config/compiler/types.d.ts.map +1 -0
  295. package/dist/config/compiler.d.ts +22 -134
  296. package/dist/config/compiler.d.ts.map +1 -1
  297. package/dist/config/cron.d.ts +19 -0
  298. package/dist/config/cron.d.ts.map +1 -0
  299. package/dist/config/define.d.ts +8 -5
  300. package/dist/config/define.d.ts.map +1 -1
  301. package/dist/config/deploy-resources.d.ts +58 -0
  302. package/dist/config/deploy-resources.d.ts.map +1 -0
  303. package/dist/config/env-vars.d.ts +309 -0
  304. package/dist/config/env-vars.d.ts.map +1 -0
  305. package/dist/config/framework-providers.d.ts +9 -0
  306. package/dist/config/framework-providers.d.ts.map +1 -0
  307. package/dist/config/index.d.ts +12 -5
  308. package/dist/config/index.d.ts.map +1 -1
  309. package/dist/config/loader.d.ts +2 -1
  310. package/dist/config/loader.d.ts.map +1 -1
  311. package/dist/config/local-dev-vars.d.ts +15 -0
  312. package/dist/config/local-dev-vars.d.ts.map +1 -0
  313. package/dist/config/preview-resources.d.ts +83 -0
  314. package/dist/config/preview-resources.d.ts.map +1 -0
  315. package/dist/config/preview.d.ts +29 -0
  316. package/dist/config/preview.d.ts.map +1 -0
  317. package/dist/config/ref.d.ts +16 -25
  318. package/dist/config/ref.d.ts.map +1 -1
  319. package/dist/config/resolve-phased.d.ts +72 -0
  320. package/dist/config/resolve-phased.d.ts.map +1 -0
  321. package/dist/config/resolve.d.ts +11 -0
  322. package/dist/config/resolve.d.ts.map +1 -0
  323. package/dist/config/resource-resolution.d.ts +80 -0
  324. package/dist/config/resource-resolution.d.ts.map +1 -0
  325. package/dist/config/schema-bindings.d.ts +2025 -0
  326. package/dist/config/schema-bindings.d.ts.map +1 -0
  327. package/dist/config/schema-build.d.ts +67 -0
  328. package/dist/config/schema-build.d.ts.map +1 -0
  329. package/dist/config/schema-env.d.ts +3579 -0
  330. package/dist/config/schema-env.d.ts.map +1 -0
  331. package/dist/config/schema-normalization.d.ts +265 -0
  332. package/dist/config/schema-normalization.d.ts.map +1 -0
  333. package/dist/config/schema-runtime.d.ts +508 -0
  334. package/dist/config/schema-runtime.d.ts.map +1 -0
  335. package/dist/config/schema-types-bindings-platform.d.ts +508 -0
  336. package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
  337. package/dist/config/schema-types-bindings-resources.d.ts +767 -0
  338. package/dist/config/schema-types-bindings-resources.d.ts.map +1 -0
  339. package/dist/config/schema-types-bindings.d.ts +293 -0
  340. package/dist/config/schema-types-bindings.d.ts.map +1 -0
  341. package/dist/config/schema-types-build.d.ts +86 -0
  342. package/dist/config/schema-types-build.d.ts.map +1 -0
  343. package/dist/config/schema-types-runtime.d.ts +917 -0
  344. package/dist/config/schema-types-runtime.d.ts.map +1 -0
  345. package/dist/config/schema-types.d.ts +424 -0
  346. package/dist/config/schema-types.d.ts.map +1 -0
  347. package/dist/config/schema.d.ts +5324 -2011
  348. package/dist/config/schema.d.ts.map +1 -1
  349. package/dist/config/service-bindings-validation.d.ts +36 -0
  350. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  351. package/dist/config-entry.d.ts +7 -0
  352. package/dist/config-entry.d.ts.map +1 -0
  353. package/dist/config-entry.js +3 -0
  354. package/dist/decorators/durable-object.d.ts.map +1 -1
  355. package/dist/decorators/index.d.ts +2 -2
  356. package/dist/decorators/index.js +2 -9
  357. package/dist/dev-server/d1-migrations.d.ts +36 -0
  358. package/dist/dev-server/d1-migrations.d.ts.map +1 -0
  359. package/dist/dev-server/dev-server-state.d.ts +59 -0
  360. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  361. package/dist/dev-server/gateway-script.d.ts +21 -0
  362. package/dist/dev-server/gateway-script.d.ts.map +1 -0
  363. package/dist/dev-server/index.d.ts +1 -1
  364. package/dist/dev-server/miniflare-bindings.d.ts +81 -0
  365. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  366. package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
  367. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  368. package/dist/dev-server/miniflare-log.d.ts +20 -0
  369. package/dist/dev-server/miniflare-log.d.ts.map +1 -0
  370. package/dist/dev-server/miniflare-worker-config.d.ts +82 -0
  371. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  372. package/dist/dev-server/reload-queue.d.ts +13 -0
  373. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  374. package/dist/dev-server/runtime-stdio.d.ts +8 -0
  375. package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
  376. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  377. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  378. package/dist/dev-server/server.d.ts +2 -0
  379. package/dist/dev-server/server.d.ts.map +1 -1
  380. package/dist/dev-server/vite-process.d.ts +15 -0
  381. package/dist/dev-server/vite-process.d.ts.map +1 -0
  382. package/dist/dev-server/vite-utils.d.ts +19 -1
  383. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  384. package/dist/dev-server/worker-source-watcher.d.ts +17 -0
  385. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
  386. package/dist/dev-server/worker-surface-paths.d.ts +6 -0
  387. package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
  388. package/dist/env.d.ts +10 -0
  389. package/dist/env.d.ts.map +1 -1
  390. package/dist/index.d.ts +8 -12
  391. package/dist/index.d.ts.map +1 -1
  392. package/dist/index.js +9 -298
  393. package/dist/runtime/context-events.d.ts +13 -0
  394. package/dist/runtime/context-events.d.ts.map +1 -0
  395. package/dist/runtime/context-types.d.ts +82 -0
  396. package/dist/runtime/context-types.d.ts.map +1 -0
  397. package/dist/runtime/context.d.ts +20 -44
  398. package/dist/runtime/context.d.ts.map +1 -1
  399. package/dist/runtime/exports.d.ts +70 -55
  400. package/dist/runtime/exports.d.ts.map +1 -1
  401. package/dist/runtime/index.d.ts +10 -3
  402. package/dist/runtime/index.d.ts.map +1 -1
  403. package/dist/runtime/index.js +5 -111
  404. package/dist/runtime/middleware.d.ts +119 -67
  405. package/dist/runtime/middleware.d.ts.map +1 -1
  406. package/dist/runtime/router/index.d.ts +7 -0
  407. package/dist/runtime/router/index.d.ts.map +1 -0
  408. package/dist/runtime/router/types.d.ts +24 -0
  409. package/dist/runtime/router/types.d.ts.map +1 -0
  410. package/dist/runtime/validation.d.ts +18 -4
  411. package/dist/runtime/validation.d.ts.map +1 -1
  412. package/dist/secrets/local-secrets.d.ts +46 -0
  413. package/dist/secrets/local-secrets.d.ts.map +1 -0
  414. package/dist/shims/local-hyperdrive.d.ts +12 -0
  415. package/dist/shims/local-hyperdrive.d.ts.map +1 -0
  416. package/dist/shims/local-media-bindings.d.ts +19 -0
  417. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  418. package/dist/shims/local-worker-loader.d.ts +3 -0
  419. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  420. package/dist/sveltekit/index.d.ts +1 -1
  421. package/dist/sveltekit/index.d.ts.map +1 -1
  422. package/dist/sveltekit/index.js +313 -167
  423. package/dist/sveltekit/local-bindings.d.ts +4 -0
  424. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  425. package/dist/sveltekit/platform.d.ts +20 -2
  426. package/dist/sveltekit/platform.d.ts.map +1 -1
  427. package/dist/test/ai-search.d.ts +39 -0
  428. package/dist/test/ai-search.d.ts.map +1 -0
  429. package/dist/test/alarm.d.ts +55 -0
  430. package/dist/test/alarm.d.ts.map +1 -0
  431. package/dist/test/binding-hints.d.ts +10 -0
  432. package/dist/test/binding-hints.d.ts.map +1 -0
  433. package/dist/test/cf.d.ts +71 -35
  434. package/dist/test/cf.d.ts.map +1 -1
  435. package/dist/test/containers.d.ts +87 -0
  436. package/dist/test/containers.d.ts.map +1 -0
  437. package/dist/test/email.d.ts +16 -7
  438. package/dist/test/email.d.ts.map +1 -1
  439. package/dist/test/index.d.ts +20 -21
  440. package/dist/test/index.d.ts.map +1 -1
  441. package/dist/test/index.js +4971 -70
  442. package/dist/test/offline-bindings.d.ts +115 -0
  443. package/dist/test/offline-bindings.d.ts.map +1 -0
  444. package/dist/test/queue.d.ts.map +1 -1
  445. package/dist/test/remote-ai.d.ts.map +1 -1
  446. package/dist/test/remote-cloudflare.d.ts +13 -0
  447. package/dist/test/remote-cloudflare.d.ts.map +1 -0
  448. package/dist/test/remote-vectorize.d.ts.map +1 -1
  449. package/dist/test/resolve-service-bindings.d.ts +64 -4
  450. package/dist/test/resolve-service-bindings.d.ts.map +1 -1
  451. package/dist/test/scheduled.d.ts.map +1 -1
  452. package/dist/test/should-skip.d.ts +14 -18
  453. package/dist/test/should-skip.d.ts.map +1 -1
  454. package/dist/test/simple-context-bindings.d.ts +13 -0
  455. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  456. package/dist/test/simple-context-durable-objects.d.ts +6 -0
  457. package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
  458. package/dist/test/simple-context-env.d.ts +35 -0
  459. package/dist/test/simple-context-env.d.ts.map +1 -0
  460. package/dist/test/simple-context-gateway-script.d.ts +2 -0
  461. package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
  462. package/dist/test/simple-context-handlers.d.ts +12 -0
  463. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  464. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  465. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  466. package/dist/test/simple-context-mfconfig.d.ts +10 -0
  467. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  468. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  469. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  470. package/dist/test/simple-context-paths.d.ts +40 -0
  471. package/dist/test/simple-context-paths.d.ts.map +1 -0
  472. package/dist/test/simple-context-runtime.d.ts +19 -0
  473. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  474. package/dist/test/simple-context-startup.d.ts +11 -0
  475. package/dist/test/simple-context-startup.d.ts.map +1 -0
  476. package/dist/test/simple-context-transport.d.ts +14 -0
  477. package/dist/test/simple-context-transport.d.ts.map +1 -0
  478. package/dist/test/simple-context.d.ts +8 -27
  479. package/dist/test/simple-context.d.ts.map +1 -1
  480. package/dist/test/tail.d.ts +3 -2
  481. package/dist/test/tail.d.ts.map +1 -1
  482. package/dist/test/utilities/analytics-engine.d.ts +22 -0
  483. package/dist/test/utilities/analytics-engine.d.ts.map +1 -0
  484. package/dist/test/utilities/artifacts.d.ts +11 -0
  485. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  486. package/dist/test/utilities/context.d.ts +39 -0
  487. package/dist/test/utilities/context.d.ts.map +1 -0
  488. package/dist/test/utilities/d1.d.ts +21 -0
  489. package/dist/test/utilities/d1.d.ts.map +1 -0
  490. package/dist/test/utilities/env.d.ts +43 -0
  491. package/dist/test/utilities/env.d.ts.map +1 -0
  492. package/dist/test/utilities/kv.d.ts +11 -0
  493. package/dist/test/utilities/kv.d.ts.map +1 -0
  494. package/dist/test/utilities/media.d.ts +16 -0
  495. package/dist/test/utilities/media.d.ts.map +1 -0
  496. package/dist/test/utilities/platform.d.ts +41 -0
  497. package/dist/test/utilities/platform.d.ts.map +1 -0
  498. package/dist/test/utilities/queue.d.ts +5 -0
  499. package/dist/test/utilities/queue.d.ts.map +1 -0
  500. package/dist/test/utilities/r2.d.ts +2 -0
  501. package/dist/test/utilities/r2.d.ts.map +1 -0
  502. package/dist/test/utilities/stream-flagship.d.ts +27 -0
  503. package/dist/test/utilities/stream-flagship.d.ts.map +1 -0
  504. package/dist/test/utilities/vectorize.d.ts +38 -0
  505. package/dist/test/utilities/vectorize.d.ts.map +1 -0
  506. package/dist/test/utilities/workflows.d.ts +26 -0
  507. package/dist/test/utilities/workflows.d.ts.map +1 -0
  508. package/dist/test/utilities.d.ts +13 -98
  509. package/dist/test/utilities.d.ts.map +1 -1
  510. package/dist/test/worker.d.ts +6 -0
  511. package/dist/test/worker.d.ts.map +1 -1
  512. package/dist/transform/durable-object.d.ts.map +1 -1
  513. package/dist/transform/index.d.ts +2 -2
  514. package/dist/transform/worker-entrypoint.d.ts +5 -0
  515. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  516. package/dist/utils/entrypoint-discovery.d.ts +6 -3
  517. package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
  518. package/dist/utils/glob.d.ts.map +1 -1
  519. package/dist/utils/resolve-package.d.ts.map +1 -1
  520. package/dist/utils/send-email.d.ts +15 -0
  521. package/dist/utils/send-email.d.ts.map +1 -0
  522. package/dist/utils/send-email.js +163 -0
  523. package/dist/vite/config-file.d.ts +25 -0
  524. package/dist/vite/config-file.d.ts.map +1 -0
  525. package/dist/vite/index.d.ts +3 -2
  526. package/dist/vite/index.d.ts.map +1 -1
  527. package/dist/vite/index.js +2 -339
  528. package/dist/vite/plugin-config-hook.d.ts +28 -0
  529. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  530. package/dist/vite/plugin-context.d.ts +27 -0
  531. package/dist/vite/plugin-context.d.ts.map +1 -0
  532. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  533. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  534. package/dist/vite/plugin-programmatic.d.ts +44 -0
  535. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  536. package/dist/vite/plugin-service-bindings.d.ts +13 -0
  537. package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
  538. package/dist/vite/plugin-transform.d.ts +41 -0
  539. package/dist/vite/plugin-transform.d.ts.map +1 -0
  540. package/dist/vite/plugin.d.ts +10 -41
  541. package/dist/vite/plugin.d.ts.map +1 -1
  542. package/dist/worker-entry/composed-worker.d.ts +7 -0
  543. package/dist/worker-entry/composed-worker.d.ts.map +1 -0
  544. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  545. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  546. package/dist/worker-entry/extensions.d.ts +5 -0
  547. package/dist/worker-entry/extensions.d.ts.map +1 -0
  548. package/dist/worker-entry/routes.d.ts +22 -0
  549. package/dist/worker-entry/routes.d.ts.map +1 -0
  550. package/dist/worker-entry/surface-paths.d.ts +26 -0
  551. package/dist/worker-entry/surface-paths.d.ts.map +1 -0
  552. package/dist/worker-entry/validate-fetch-style.d.ts +12 -0
  553. package/dist/worker-entry/validate-fetch-style.d.ts.map +1 -0
  554. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  555. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  556. package/package.json +159 -116
  557. package/R2.md +0 -170
  558. package/dist/account-rvrj687w.js +0 -397
  559. package/dist/ai-dx4fr9jh.js +0 -107
  560. package/dist/bridge/protocol.d.ts.map +0 -1
  561. package/dist/bridge/serialization.d.ts.map +0 -1
  562. package/dist/browser-shim/worker.d.ts +0 -14
  563. package/dist/browser-shim/worker.d.ts.map +0 -1
  564. package/dist/build-mnf6v8gd.js +0 -53
  565. package/dist/deploy-nhceck39.js +0 -70
  566. package/dist/dev-b9dmrj7b.js +0 -2417
  567. package/dist/doctor-fmgb3d28.js +0 -190
  568. package/dist/durable-object-t4kbb0yt.js +0 -13
  569. package/dist/index-07q6yxyc.js +0 -168
  570. package/dist/index-18hvb6gb.js +0 -194
  571. package/dist/index-1xpj0m4r.js +0 -57
  572. package/dist/index-37x76zdn.js +0 -4
  573. package/dist/index-3t6rypgc.js +0 -13
  574. package/dist/index-67qcae0f.js +0 -183
  575. package/dist/index-a855bdsx.js +0 -18
  576. package/dist/index-d8bdkx2h.js +0 -109
  577. package/dist/index-ep3445yc.js +0 -2225
  578. package/dist/index-gz1gndna.js +0 -307
  579. package/dist/index-hcex3rgh.js +0 -266
  580. package/dist/index-m2q41jwa.js +0 -462
  581. package/dist/index-n7rs26ft.js +0 -77
  582. package/dist/index-pf5s73n9.js +0 -1413
  583. package/dist/index-rbht7m9r.js +0 -36
  584. package/dist/index-tfyxa77h.js +0 -850
  585. package/dist/index-tk6ej9dj.js +0 -94
  586. package/dist/index-z14anrqp.js +0 -226
  587. package/dist/init-f9mgmew3.js +0 -186
  588. package/dist/remote-q59qk463.js +0 -97
  589. package/dist/test/bridge-context.d.ts +0 -76
  590. package/dist/test/bridge-context.d.ts.map +0 -1
  591. package/dist/test/multi-worker-context.d.ts +0 -114
  592. package/dist/test/multi-worker-context.d.ts.map +0 -1
  593. package/dist/types-5nyrz1sz.js +0 -454
  594. package/dist/worker-entrypoint-m9th0rg0.js +0 -13
@@ -0,0 +1,833 @@
1
+ import { d as configSchema } from "./loader-Cr0_OWPy.js";
2
+ import { _ as normalizeSecretsStoreBinding, c as normalizeFlagshipBinding, f as normalizeMediaBinding, g as normalizeR2Binding, h as normalizeQueueProducer, i as normalizeArtifactsBinding, l as normalizeHyperdriveBinding, m as normalizePipelineBinding, n as getLocalKVNamespaceIdentifier, o as normalizeDOBinding, p as normalizeMtlsCertificateBinding, s as normalizeDispatchNamespaceBinding, t as getLocalD1DatabaseIdentifier, u as normalizeImagesBinding, v as normalizeStreamBinding, x as normalizeWorkflowBinding } from "./schema-normalization-BCwTLTGp.js";
3
+ import { n as findDurableObjectClasses } from "./durable-object-DMtH0XYX.js";
4
+ import { r as SUPPORTED_WORKER_EXTENSIONS, t as transformWorkerEntrypoint } from "./worker-entrypoint-CQW77lG8.js";
5
+ import { a as findFilesSync, i as findFiles, t as DEFAULT_DO_PATTERN } from "./glob-CmQOvunB.js";
6
+ import { r as discoverEntrypointsSync, t as resolvePackageSpecifier } from "./resolve-package-qizBfCIm.js";
7
+ import { relative, resolve } from "pathe";
8
+ import { existsSync, readFileSync } from "fs";
9
+ import { dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
10
+ //#region src/dev-server/miniflare-bindings.ts
11
+ function buildQueueProducers(bindings) {
12
+ if (!bindings.queues?.producers) return;
13
+ const producers = {};
14
+ for (const [bindingName, producer] of Object.entries(bindings.queues.producers)) producers[bindingName] = { queueName: normalizeQueueProducer(producer).queue };
15
+ return producers;
16
+ }
17
+ function buildQueueConsumers(bindings) {
18
+ if (!bindings.queues?.consumers || bindings.queues.consumers.length === 0) return;
19
+ const consumers = {};
20
+ for (const consumer of bindings.queues.consumers) consumers[consumer.queue] = {
21
+ ...consumer.maxBatchSize !== void 0 && { maxBatchSize: consumer.maxBatchSize },
22
+ ...consumer.maxBatchTimeout !== void 0 && { maxBatchTimeout: consumer.maxBatchTimeout },
23
+ ...consumer.maxRetries !== void 0 && { maxRetries: consumer.maxRetries },
24
+ ...consumer.deadLetterQueue && { deadLetterQueue: consumer.deadLetterQueue },
25
+ ...consumer.maxConcurrency !== void 0 && { maxConcurrency: consumer.maxConcurrency },
26
+ ...consumer.retryDelay !== void 0 && { retryDelay: consumer.retryDelay }
27
+ };
28
+ return consumers;
29
+ }
30
+ function buildRateLimitsConfig(bindings) {
31
+ if (!bindings.rateLimits) return;
32
+ return Object.fromEntries(Object.entries(bindings.rateLimits).map(([name, binding]) => [name, { simple: {
33
+ limit: binding.simple.limit,
34
+ period: binding.simple.period
35
+ } }]));
36
+ }
37
+ function buildVersionMetadataConfig(bindings) {
38
+ return bindings.versionMetadata?.binding;
39
+ }
40
+ function buildWorkerLoadersConfig(bindings) {
41
+ if (!bindings.workerLoaders) return;
42
+ return Object.fromEntries(Object.keys(bindings.workerLoaders).map((bindingName) => [bindingName, {}]));
43
+ }
44
+ function buildMtlsCertificatesConfig(bindings) {
45
+ if (!bindings.mtlsCertificates) return;
46
+ return Object.fromEntries(Object.entries(bindings.mtlsCertificates).map(([bindingName, binding]) => {
47
+ const normalized = normalizeMtlsCertificateBinding(binding);
48
+ return [bindingName, {
49
+ certificate_id: normalized.certificateId,
50
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
51
+ }];
52
+ }));
53
+ }
54
+ function buildDispatchNamespacesConfig(bindings) {
55
+ if (!bindings.dispatchNamespaces) return;
56
+ return Object.fromEntries(Object.entries(bindings.dispatchNamespaces).map(([bindingName, binding]) => {
57
+ return [bindingName, { namespace: normalizeDispatchNamespaceBinding(binding).namespace }];
58
+ }));
59
+ }
60
+ function buildWorkflowsConfig(bindings) {
61
+ if (!bindings.workflows) return;
62
+ return Object.fromEntries(Object.entries(bindings.workflows).map(([bindingName, binding]) => {
63
+ const normalized = normalizeWorkflowBinding(binding);
64
+ return [bindingName, {
65
+ name: normalized.name,
66
+ className: normalized.className,
67
+ ...normalized.scriptName && { scriptName: normalized.scriptName },
68
+ ...normalized.limits && { stepLimit: normalized.limits.steps }
69
+ }];
70
+ }));
71
+ }
72
+ function buildPipelinesConfig(bindings) {
73
+ if (!bindings.pipelines) return;
74
+ return Object.fromEntries(Object.entries(bindings.pipelines).map(([bindingName, binding]) => {
75
+ const normalized = normalizePipelineBinding(binding);
76
+ return [bindingName, typeof binding === "string" ? normalized.pipeline : { pipeline: normalized.pipeline }];
77
+ }));
78
+ }
79
+ function getHyperdriveLocalConnectionString(bindingName, binding) {
80
+ const cloudflareEnvName = `CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_${bindingName}`;
81
+ const wranglerEnvName = `WRANGLER_HYPERDRIVE_LOCAL_CONNECTION_STRING_${bindingName}`;
82
+ const envValue = process.env[cloudflareEnvName] ?? process.env[wranglerEnvName];
83
+ if (envValue?.trim()) return envValue;
84
+ return normalizeHyperdriveBinding(binding).localConnectionString;
85
+ }
86
+ function buildHyperdrivesConfig(bindings) {
87
+ if (!bindings.hyperdrive) return;
88
+ const hyperdrives = Object.fromEntries(Object.entries(bindings.hyperdrive).map(([bindingName, binding]) => {
89
+ const localConnectionString = getHyperdriveLocalConnectionString(bindingName, binding);
90
+ return localConnectionString ? [bindingName, localConnectionString] : null;
91
+ }).filter((entry) => entry !== null));
92
+ return Object.keys(hyperdrives).length > 0 ? hyperdrives : void 0;
93
+ }
94
+ function buildImagesConfig(bindings) {
95
+ if (!bindings.images) return;
96
+ const [entry] = Object.entries(bindings.images);
97
+ if (!entry) return;
98
+ const [bindingName, binding] = entry;
99
+ return { binding: normalizeImagesBinding(bindingName, binding).binding };
100
+ }
101
+ function buildMediaConfig(bindings) {
102
+ if (!bindings.media) return;
103
+ const [entry] = Object.entries(bindings.media);
104
+ if (!entry) return;
105
+ const [bindingName, binding] = entry;
106
+ return { binding: normalizeMediaBinding(bindingName, binding).binding };
107
+ }
108
+ function buildStreamConfig(bindings) {
109
+ if (!bindings.stream) return;
110
+ const [entry] = Object.entries(bindings.stream);
111
+ if (!entry) return;
112
+ const [bindingName, binding] = entry;
113
+ return { binding: normalizeStreamBinding(bindingName, binding).binding };
114
+ }
115
+ function buildFlagshipConfig(bindings) {
116
+ if (!bindings.flagship) return;
117
+ return Object.fromEntries(Object.entries(bindings.flagship).map(([bindingName, binding]) => {
118
+ return [bindingName, { app_id: normalizeFlagshipBinding(binding).appId }];
119
+ }));
120
+ }
121
+ function buildAnalyticsEngineConfig(bindings) {
122
+ if (!bindings.analyticsEngine) return;
123
+ return Object.fromEntries(Object.entries(bindings.analyticsEngine).map(([bindingName, binding]) => [bindingName, { dataset: binding.dataset }]));
124
+ }
125
+ function buildArtifactsConfig(bindings) {
126
+ if (!bindings.artifacts) return;
127
+ return Object.fromEntries(Object.entries(bindings.artifacts).map(([bindingName, binding]) => {
128
+ return [bindingName, { namespace: normalizeArtifactsBinding(binding).namespace }];
129
+ }));
130
+ }
131
+ function buildAiSearchNamespacesConfig(bindings) {
132
+ if (!bindings.aiSearchNamespaces) return;
133
+ return Object.fromEntries(Object.entries(bindings.aiSearchNamespaces).map(([bindingName, binding]) => [bindingName, { namespace: binding.namespace }]));
134
+ }
135
+ function buildAiSearchInstancesConfig(bindings) {
136
+ if (!bindings.aiSearch) return;
137
+ return Object.fromEntries(Object.entries(bindings.aiSearch).map(([bindingName, binding]) => [bindingName, { instance_name: binding.instanceName }]));
138
+ }
139
+ function buildSecretsStoreConfig(bindings, defaultSecretsStoreId, excludedBindingNames = /* @__PURE__ */ new Set()) {
140
+ if (!bindings.secretsStore) return;
141
+ const entries = Object.entries(bindings.secretsStore).flatMap(([bindingName, binding]) => {
142
+ if (excludedBindingNames.has(bindingName)) return [];
143
+ const normalized = normalizeSecretsStoreBinding(binding, defaultSecretsStoreId, bindingName);
144
+ return [[bindingName, {
145
+ store_id: normalized.storeId,
146
+ secret_name: normalized.secretName
147
+ }]];
148
+ });
149
+ return entries.length > 0 ? Object.fromEntries(entries) : void 0;
150
+ }
151
+ function buildSendEmailConfig(bindings) {
152
+ if (!bindings.sendEmail) return;
153
+ return { send_email: Object.entries(bindings.sendEmail).map(([name, binding]) => ({
154
+ name,
155
+ ...binding.destinationAddress && { destination_address: binding.destinationAddress },
156
+ ...binding.allowedDestinationAddresses && { allowed_destination_addresses: binding.allowedDestinationAddresses },
157
+ ...binding.allowedSenderAddresses && { allowed_sender_addresses: binding.allowedSenderAddresses }
158
+ })) };
159
+ }
160
+ /**
161
+ * Translate the top-level `tailConsumers` config into Miniflare's per-worker
162
+ * `tails` option (an array of service designators). Each tail consumer points
163
+ * at ANOTHER Worker by service name; Miniflare delivers tail events to that
164
+ * Worker only when it is present in the same Miniflare `workers` array. In
165
+ * single-worker local dev the consumer Worker is typically absent, in which
166
+ * case the designator simply resolves to nothing — local delivery degrades
167
+ * cleanly (no crash) and live delivery works only when the consumer Worker is
168
+ * also run locally. The tail *handler* on a Worker is wired separately and is
169
+ * always testable (`cf.tail.trigger()`).
170
+ */
171
+ function buildTailConsumersConfig(config) {
172
+ if (!config.tailConsumers || config.tailConsumers.length === 0) return;
173
+ const tails = config.tailConsumers.map((consumer) => typeof consumer === "string" ? consumer : consumer.service);
174
+ return tails.length > 0 ? tails : void 0;
175
+ }
176
+ //#endregion
177
+ //#region src/test/resolve-service-bindings.ts
178
+ function getBunRuntime() {
179
+ const g = globalThis;
180
+ if (typeof g.Bun === "object" && g.Bun !== null) return g.Bun;
181
+ }
182
+ /**
183
+ * Discover DO files matching do.*.ts/js pattern recursively in a directory
184
+ * Uses the same glob pattern as the rest of the codebase for consistency.
185
+ * Returns map of className -> filePath
186
+ */
187
+ function discoverDOFilesSync(dir, pattern = DEFAULT_DO_PATTERN) {
188
+ const classToPath = /* @__PURE__ */ new Map();
189
+ try {
190
+ const files = findFilesSync(pattern, { cwd: dir });
191
+ for (const filePath of files) try {
192
+ const classNames = findDurableObjectClasses(readFileSync(filePath, "utf-8"));
193
+ for (const className of classNames) if (!classToPath.has(className)) classToPath.set(className, filePath);
194
+ } catch {}
195
+ } catch {}
196
+ return classToPath;
197
+ }
198
+ /**
199
+ * Cache for bundled worker scripts to avoid re-bundling in repeated test runs.
200
+ * Key: entryPath + entrypoint, Value: bundled script code
201
+ */
202
+ const bundleCache = /* @__PURE__ */ new Map();
203
+ /**
204
+ * Clear the bundle cache (useful between test suites)
205
+ */
206
+ function clearBundleCache() {
207
+ bundleCache.clear();
208
+ }
209
+ function findDefaultServiceWorkerEntrypoint(refConfigDir) {
210
+ for (const candidate of [
211
+ "worker.ts",
212
+ "worker.js",
213
+ "src/worker.ts",
214
+ "src/worker.js"
215
+ ]) {
216
+ const absolutePath = resolve$1(refConfigDir, candidate);
217
+ if (existsSync(absolutePath)) return absolutePath;
218
+ }
219
+ return null;
220
+ }
221
+ function buildRawServiceBindings(services) {
222
+ if (!services || Object.keys(services).length === 0) return;
223
+ return Object.fromEntries(Object.entries(services).map(([bindingName, binding]) => [bindingName, {
224
+ name: binding.service,
225
+ ...binding.entrypoint && { entrypoint: binding.entrypoint }
226
+ }]));
227
+ }
228
+ function buildReferencedWorkerRuntimeConfig(config) {
229
+ const bindings = config.bindings ?? {};
230
+ const queueProducers = buildQueueProducers(bindings);
231
+ const queueConsumers = buildQueueConsumers(bindings);
232
+ const rateLimits = buildRateLimitsConfig(bindings);
233
+ const versionMetadata = buildVersionMetadataConfig(bindings);
234
+ const workerLoaders = buildWorkerLoadersConfig(bindings);
235
+ const mtlsCertificates = buildMtlsCertificatesConfig(bindings);
236
+ const dispatchNamespaces = buildDispatchNamespacesConfig(bindings);
237
+ const workflows = buildWorkflowsConfig(bindings);
238
+ const pipelines = buildPipelinesConfig(bindings);
239
+ const hyperdrives = buildHyperdrivesConfig(bindings);
240
+ const media = buildMediaConfig(bindings);
241
+ const artifacts = buildArtifactsConfig(bindings);
242
+ const aiSearchNamespaces = buildAiSearchNamespacesConfig(bindings);
243
+ const aiSearchInstances = buildAiSearchInstancesConfig(bindings);
244
+ const secretsStoreSecrets = buildSecretsStoreConfig(bindings, config.secretsStoreId);
245
+ const email = buildSendEmailConfig(bindings);
246
+ const serviceBindings = buildRawServiceBindings(bindings.services);
247
+ return {
248
+ ...config.compatibilityFlags && { compatibilityFlags: config.compatibilityFlags },
249
+ ...config.vars && { bindings: config.vars },
250
+ ...bindings.kv && { kvNamespaces: Object.fromEntries(Object.entries(bindings.kv).map(([bindingName, bindingConfig]) => [bindingName, getLocalKVNamespaceIdentifier(bindingConfig)])) },
251
+ ...bindings.r2 && { r2Buckets: Object.fromEntries(Object.entries(bindings.r2).map(([bindingName, bindingConfig]) => [bindingName, normalizeR2Binding(bindingConfig).bucketName])) },
252
+ ...bindings.d1 && { d1Databases: Object.fromEntries(Object.entries(bindings.d1).map(([bindingName, bindingConfig]) => [bindingName, getLocalD1DatabaseIdentifier(bindingConfig)])) },
253
+ ...queueProducers && { queueProducers },
254
+ ...queueConsumers && { queueConsumers },
255
+ ...rateLimits && { ratelimits: rateLimits },
256
+ ...versionMetadata && { versionMetadata },
257
+ ...workerLoaders && { workerLoaders },
258
+ ...mtlsCertificates && { mtlsCertificates },
259
+ ...dispatchNamespaces && { dispatchNamespaces },
260
+ ...workflows && { workflows },
261
+ ...pipelines && { pipelines },
262
+ ...hyperdrives && { hyperdrives },
263
+ ...media && { media },
264
+ ...artifacts && { artifacts },
265
+ ...aiSearchNamespaces && { aiSearchNamespaces },
266
+ ...aiSearchInstances && { aiSearchInstances },
267
+ ...secretsStoreSecrets && { secretsStoreSecrets },
268
+ ...email && { email },
269
+ ...serviceBindings && { serviceBindings }
270
+ };
271
+ }
272
+ function normalizeReferencedConfig(config) {
273
+ return configSchema.parse(config);
274
+ }
275
+ function resolveReferencedConfigDir(ref, parentConfigDir) {
276
+ const configPath = ref.configPath;
277
+ if (!configPath || configPath === "<resolved>") return null;
278
+ return dirname$1(resolvePackageSpecifier(configPath, parentConfigDir));
279
+ }
280
+ async function resolveReferencedLocalDurableObjects(config, configDir, workerName, serviceBindings = {}) {
281
+ const doPattern = config.files?.durableObjects;
282
+ const dosConfig = config.bindings?.durableObjects;
283
+ if (typeof doPattern !== "string" || !dosConfig || Object.keys(dosConfig).length === 0) return {
284
+ workers: [],
285
+ bindings: {}
286
+ };
287
+ const discoveredDOs = discoverDOFilesSync(configDir, doPattern);
288
+ const doClasses = [];
289
+ for (const [bindingName, rawDoConfig] of Object.entries(dosConfig)) {
290
+ const doConfig = normalizeDOBinding(rawDoConfig);
291
+ if (doConfig.kind !== "local") continue;
292
+ const scriptPath = discoveredDOs.get(doConfig.className);
293
+ if (!scriptPath) {
294
+ console.warn(`[devflare] DO "${bindingName}" (class: ${doConfig.className}) not found in files.durableObjects for "${workerName}"`);
295
+ continue;
296
+ }
297
+ doClasses.push({
298
+ bindingName,
299
+ className: doConfig.className,
300
+ scriptPath
301
+ });
302
+ }
303
+ if (doClasses.length === 0) return {
304
+ workers: [],
305
+ bindings: {}
306
+ };
307
+ const doWorkerName = `${workerName}-durable-objects`;
308
+ const script = await bundleDOClasses(doClasses, doWorkerName);
309
+ if (!script) return {
310
+ workers: [],
311
+ bindings: {}
312
+ };
313
+ const durableObjects = Object.fromEntries(doClasses.map((do_) => [do_.bindingName, do_.className]));
314
+ const runtimeConfig = buildReferencedWorkerRuntimeConfig(config);
315
+ const doRuntimeConfig = { ...runtimeConfig };
316
+ delete doRuntimeConfig.queueConsumers;
317
+ const mergedServiceBindings = {
318
+ ...runtimeConfig.serviceBindings ?? {},
319
+ ...serviceBindings
320
+ };
321
+ return {
322
+ workers: [{
323
+ name: doWorkerName,
324
+ script,
325
+ modules: true,
326
+ compatibilityDate: config.compatibilityDate,
327
+ ...doRuntimeConfig,
328
+ ...Object.keys(mergedServiceBindings).length > 0 && { serviceBindings: mergedServiceBindings },
329
+ durableObjects
330
+ }],
331
+ bindings: Object.fromEntries(doClasses.map((do_) => [do_.bindingName, {
332
+ className: do_.className,
333
+ scriptName: doWorkerName
334
+ }]))
335
+ };
336
+ }
337
+ /**
338
+ * Check if a config has service bindings that need multi-worker setup
339
+ */
340
+ function hasServiceBindings(config) {
341
+ const services = config.bindings?.services;
342
+ if (!services) return false;
343
+ return Object.keys(services).length > 0;
344
+ }
345
+ /**
346
+ * Resolve service bindings from a config
347
+ * Returns the workers array and service bindings for Miniflare setup
348
+ */
349
+ async function resolveServiceBindings(config, configDir, seenWorkers = /* @__PURE__ */ new Set()) {
350
+ const services = config.bindings?.services;
351
+ if (!services) return {
352
+ workers: [],
353
+ primaryServiceBindings: {}
354
+ };
355
+ const workersByName = /* @__PURE__ */ new Map();
356
+ const primaryServiceBindings = {};
357
+ for (const [bindingName, binding] of Object.entries(services)) {
358
+ const workerBinding = binding;
359
+ const ref = workerBinding.__ref;
360
+ if (ref) {
361
+ if ("__import" in ref && typeof ref.__import === "function") await ref.resolve();
362
+ const workerName = ref.name;
363
+ const entrypoint = workerBinding.entrypoint;
364
+ if (!workersByName.has(workerName) && !seenWorkers.has(workerName)) {
365
+ const refConfig = normalizeReferencedConfig(ref.config);
366
+ const worker = await resolveRefWorker(ref, entrypoint, configDir, refConfig);
367
+ if (worker) {
368
+ const refConfigDir = resolveReferencedConfigDir(ref, configDir);
369
+ if (ref.config && refConfigDir) {
370
+ const nested = await resolveServiceBindings(refConfig, refConfigDir, new Set([...seenWorkers, workerName]));
371
+ worker.serviceBindings = {
372
+ ...worker.serviceBindings ?? {},
373
+ ...nested.primaryServiceBindings
374
+ };
375
+ for (const nestedWorker of nested.workers) if (!workersByName.has(nestedWorker.name)) workersByName.set(nestedWorker.name, nestedWorker);
376
+ const localDOs = await resolveReferencedLocalDurableObjects(refConfig, refConfigDir, workerName, nested.primaryServiceBindings);
377
+ worker.durableObjects = {
378
+ ...worker.durableObjects ?? {},
379
+ ...localDOs.bindings
380
+ };
381
+ for (const doWorker of localDOs.workers) if (!workersByName.has(doWorker.name)) workersByName.set(doWorker.name, doWorker);
382
+ }
383
+ workersByName.set(workerName, worker);
384
+ }
385
+ }
386
+ primaryServiceBindings[bindingName] = {
387
+ name: workerName,
388
+ ...entrypoint && { entrypoint }
389
+ };
390
+ } else primaryServiceBindings[bindingName] = {
391
+ name: workerBinding.service,
392
+ ...workerBinding.entrypoint && { entrypoint: workerBinding.entrypoint }
393
+ };
394
+ }
395
+ return {
396
+ workers: [...workersByName.values()],
397
+ primaryServiceBindings
398
+ };
399
+ }
400
+ /**
401
+ * Resolve a referenced worker config to a bundled script.
402
+ * Bundles the default `worker.{ts,js}` (root) or `src/worker.{ts,js}` RPC
403
+ * surface plus any named entrypoints discovered from `files.entrypoints` into a
404
+ * single script.
405
+ */
406
+ async function resolveRefWorker(ref, _entrypoint, parentConfigDir, resolvedConfig) {
407
+ const config = resolvedConfig ?? normalizeReferencedConfig(ref.config);
408
+ if (!config) return null;
409
+ const refConfigDir = resolveReferencedConfigDir(ref, parentConfigDir);
410
+ if (!refConfigDir) {
411
+ console.warn(`[devflare] Cannot resolve worker "${ref.name}" - configPath not available`);
412
+ return null;
413
+ }
414
+ const entrypoints = [];
415
+ const workerEntrypointPath = findDefaultServiceWorkerEntrypoint(refConfigDir);
416
+ if (workerEntrypointPath) entrypoints.push({
417
+ path: workerEntrypointPath,
418
+ className: "Worker",
419
+ isWorkerTs: true
420
+ });
421
+ if (config.files?.entrypoints !== false) {
422
+ const discoveredEntrypoints = discoverEntrypointsSync(refConfigDir, typeof config.files?.entrypoints === "string" ? config.files.entrypoints : void 0);
423
+ for (const ep of discoveredEntrypoints) entrypoints.push({
424
+ path: ep.filePath,
425
+ className: ep.className,
426
+ isWorkerTs: false
427
+ });
428
+ }
429
+ if (entrypoints.length === 0) {
430
+ console.warn(`[devflare] Worker "${ref.name}" has no entry points`);
431
+ return null;
432
+ }
433
+ const script = await bundleAllEntrypoints(entrypoints, ref.name);
434
+ if (!script) return null;
435
+ return {
436
+ name: ref.name,
437
+ script,
438
+ modules: true,
439
+ compatibilityDate: config.compatibilityDate ?? "2025-01-01",
440
+ ...buildReferencedWorkerRuntimeConfig(config)
441
+ };
442
+ }
443
+ /**
444
+ * Bundle multiple entrypoints into a single worker script
445
+ */
446
+ async function bundleAllEntrypoints(entrypoints, workerName) {
447
+ const cacheKey = entrypoints.map((ep) => `${ep.path}::${ep.className}`).join("|");
448
+ const cached = bundleCache.get(cacheKey);
449
+ if (cached) return cached;
450
+ const bun = getBunRuntime();
451
+ if (!bun) {
452
+ console.warn(`[devflare] Cannot bundle service worker "${workerName}" — the Bun runtime is required to bundle worker scripts, but this process is not running under Bun. The service binding will be left unresolved. Run your tests with \`bun test\` (or the devflare test runner) to enable multi-worker service bindings.`);
453
+ return null;
454
+ }
455
+ try {
456
+ const { readFileSync, writeFileSync, mkdirSync, unlinkSync } = await import("fs");
457
+ const imports = [];
458
+ const exports = [];
459
+ let defaultExportClass = null;
460
+ for (let i = 0; i < entrypoints.length; i++) {
461
+ const ep = entrypoints[i];
462
+ const sourceCode = readFileSync(ep.path, "utf-8");
463
+ if (ep.isWorkerTs) {
464
+ const result = transformWorkerEntrypoint(sourceCode, ep.path, {
465
+ className: ep.className,
466
+ injectContext: false
467
+ });
468
+ if (result) {
469
+ const tempDir = join$1(dirname$1(ep.path), ".devflare");
470
+ mkdirSync(tempDir, { recursive: true });
471
+ const tempPath = join$1(tempDir, `__${ep.className}_${i}.ts`);
472
+ writeFileSync(tempPath, result.code);
473
+ imports.push(`import { ${ep.className} } from '${tempPath.replace(/\\/g, "/")}'`);
474
+ exports.push(ep.className);
475
+ if (!defaultExportClass) defaultExportClass = ep.className;
476
+ }
477
+ } else {
478
+ imports.push(`import { ${ep.className} } from '${ep.path.replace(/\\/g, "/")}'`);
479
+ exports.push(ep.className);
480
+ }
481
+ }
482
+ const defaultExport = defaultExportClass ? `\nexport default ${defaultExportClass}` : "";
483
+ const entryCode = `
484
+ ${imports.join("\n")}
485
+ export { ${exports.join(", ")} }${defaultExport}
486
+ `;
487
+ const tempDir = join$1(dirname$1(entrypoints[0].path), ".devflare");
488
+ mkdirSync(tempDir, { recursive: true });
489
+ const entryPath = join$1(tempDir, `__entry_${workerName}.ts`);
490
+ writeFileSync(entryPath, entryCode);
491
+ try {
492
+ const result = await bun.build({
493
+ entrypoints: [entryPath],
494
+ target: "browser",
495
+ format: "esm",
496
+ minify: false,
497
+ external: ["cloudflare:workers", "cloudflare:*"]
498
+ });
499
+ if (!result.success) {
500
+ console.warn(`[devflare] Failed to bundle worker "${workerName}": ${result.logs.join("\n")}`);
501
+ return null;
502
+ }
503
+ const bundledCode = await result.outputs[0].text();
504
+ bundleCache.set(cacheKey, bundledCode);
505
+ return bundledCode;
506
+ } finally {
507
+ try {
508
+ unlinkSync(entryPath);
509
+ } catch {}
510
+ }
511
+ } catch (error) {
512
+ console.warn(`[devflare] Error bundling worker "${workerName}":`, error);
513
+ return null;
514
+ }
515
+ }
516
+ /**
517
+ * Check if a config has cross-worker DO bindings
518
+ */
519
+ function hasCrossWorkerDOs(config) {
520
+ const dos = config.bindings?.durableObjects;
521
+ if (!dos) return false;
522
+ for (const doConfig of Object.values(dos)) if (normalizeDOBinding(doConfig).__ref) return true;
523
+ return false;
524
+ }
525
+ /**
526
+ * Resolve cross-worker DO bindings
527
+ * Returns workers to set up and DO bindings for the primary worker
528
+ */
529
+ async function resolveDOBindings(config, configDir) {
530
+ const dos = config.bindings?.durableObjects;
531
+ if (!dos) return {
532
+ workers: [],
533
+ crossWorkerDOBindings: {}
534
+ };
535
+ const workersByName = /* @__PURE__ */ new Map();
536
+ const crossWorkerDOBindings = {};
537
+ for (const [bindingName, rawDoConfig] of Object.entries(dos)) {
538
+ if (!(typeof rawDoConfig === "object" && "__ref" in rawDoConfig)) continue;
539
+ const ref = rawDoConfig.__ref;
540
+ if ("__import" in ref && typeof ref.__import === "function") await ref.resolve();
541
+ const doConfig = normalizeDOBinding(rawDoConfig);
542
+ const workerName = ref.name;
543
+ if (!workersByName.has(workerName)) {
544
+ const worker = await resolveDORefWorker(ref, configDir);
545
+ if (worker) workersByName.set(workerName, worker);
546
+ }
547
+ crossWorkerDOBindings[bindingName] = {
548
+ className: doConfig.className,
549
+ scriptName: workerName
550
+ };
551
+ }
552
+ return {
553
+ workers: [...workersByName.values()],
554
+ crossWorkerDOBindings
555
+ };
556
+ }
557
+ /**
558
+ * Resolve a referenced worker for DO hosting
559
+ * Bundles the DO classes with RPC wrappers
560
+ */
561
+ async function resolveDORefWorker(ref, parentConfigDir) {
562
+ const config = ref.config;
563
+ if (!config) return null;
564
+ const configPath = ref.configPath;
565
+ if (!configPath || configPath === "<resolved>") {
566
+ console.warn(`[devflare] Cannot resolve DO worker "${ref.name}" - configPath not available`);
567
+ return null;
568
+ }
569
+ const refConfigDir = dirname$1(resolvePackageSpecifier(configPath, parentConfigDir));
570
+ const dosConfig = config.bindings?.durableObjects;
571
+ if (!dosConfig || Object.keys(dosConfig).length === 0) {
572
+ console.warn(`[devflare] Referenced worker "${ref.name}" has no Durable Objects`);
573
+ return null;
574
+ }
575
+ const discoveredDOs = discoverDOFilesSync(refConfigDir);
576
+ const doClasses = [];
577
+ for (const [bindingName, rawDoConfig] of Object.entries(dosConfig)) {
578
+ const doConfig = normalizeDOBinding(rawDoConfig);
579
+ const className = doConfig.className;
580
+ const scriptName = doConfig.scriptName;
581
+ if (scriptName) {
582
+ const scriptPath = resolve$1(refConfigDir, "src", scriptName);
583
+ if (!existsSync(scriptPath)) {
584
+ const altPath = resolve$1(refConfigDir, scriptName);
585
+ if (!existsSync(altPath)) {
586
+ console.warn(`[devflare] DO script not found: ${scriptPath} or ${altPath}`);
587
+ continue;
588
+ }
589
+ doClasses.push({
590
+ bindingName,
591
+ className,
592
+ scriptPath: altPath
593
+ });
594
+ } else doClasses.push({
595
+ bindingName,
596
+ className,
597
+ scriptPath
598
+ });
599
+ } else {
600
+ const discoveredPath = discoveredDOs.get(className);
601
+ if (discoveredPath) doClasses.push({
602
+ bindingName,
603
+ className,
604
+ scriptPath: discoveredPath
605
+ });
606
+ else console.warn(`[devflare] DO "${bindingName}" (class: ${className}) not found in do.*.ts files in "${ref.name}"`);
607
+ }
608
+ }
609
+ if (doClasses.length === 0) {
610
+ console.warn(`[devflare] No valid DO classes found in "${ref.name}"`);
611
+ return null;
612
+ }
613
+ const script = await bundleDOClasses(doClasses, ref.name);
614
+ if (!script) return null;
615
+ const durableObjects = {};
616
+ for (const do_ of doClasses) durableObjects[do_.bindingName] = do_.className;
617
+ return {
618
+ name: ref.name,
619
+ script,
620
+ modules: true,
621
+ compatibilityDate: config.compatibilityDate ?? "2025-01-01",
622
+ durableObjects
623
+ };
624
+ }
625
+ /**
626
+ * Bundle DO classes with RPC wrappers for Miniflare
627
+ */
628
+ async function bundleDOClasses(doClasses, workerName) {
629
+ const cacheKey = `do:${doClasses.map((d) => `${d.scriptPath}::${d.className}`).join("|")}`;
630
+ const cached = bundleCache.get(cacheKey);
631
+ if (cached) return cached;
632
+ const bun = getBunRuntime();
633
+ if (!bun) {
634
+ console.warn(`[devflare] Cannot bundle Durable Object worker "${workerName}" — the Bun runtime is required to bundle DO classes, but this process is not running under Bun. The Durable Object binding will be left unresolved. Run your tests with \`bun test\` (or the devflare test runner) to enable cross-worker Durable Objects.`);
635
+ return null;
636
+ }
637
+ try {
638
+ const { writeFileSync, mkdirSync, unlinkSync } = await import("fs");
639
+ const entryCode = `
640
+ ${doClasses.map((d) => `import { ${d.className} } from '${d.scriptPath.replace(/\\/g, "/")}'`).join("\n")}
641
+
642
+ // Re-export DO classes for Miniflare binding
643
+ export { ${doClasses.map((d) => d.className).join(", ")} }
644
+
645
+ // Default export with fetch handler
646
+ export default {
647
+ async fetch(request, env) {
648
+ return new Response('DO Worker: ${workerName}')
649
+ }
650
+ }
651
+ `;
652
+ const tempDir = join$1(dirname$1(doClasses[0].scriptPath), ".devflare");
653
+ mkdirSync(tempDir, { recursive: true });
654
+ const entryPath = join$1(tempDir, `__do_entry_${workerName}.ts`);
655
+ writeFileSync(entryPath, entryCode);
656
+ try {
657
+ const result = await bun.build({
658
+ entrypoints: [entryPath],
659
+ target: "browser",
660
+ format: "esm",
661
+ minify: false,
662
+ external: ["cloudflare:workers", "cloudflare:*"]
663
+ });
664
+ if (!result.success) {
665
+ console.warn(`[devflare] Failed to bundle DO worker "${workerName}": ${result.logs.join("\n")}`);
666
+ return null;
667
+ }
668
+ const bundledCode = await result.outputs[0].text();
669
+ bundleCache.set(cacheKey, bundledCode);
670
+ return bundledCode;
671
+ } finally {
672
+ try {
673
+ unlinkSync(entryPath);
674
+ } catch {}
675
+ }
676
+ } catch (error) {
677
+ console.warn(`[devflare] Error bundling DO worker "${workerName}":`, error);
678
+ return null;
679
+ }
680
+ }
681
+ const DEFAULT_ROUTE_FILE_PATTERNS = SUPPORTED_WORKER_EXTENSIONS.map((ext) => `**/*${ext}`);
682
+ function normalizeRoutePrefix(prefix) {
683
+ if (!prefix || prefix === "/") return "";
684
+ return (prefix.startsWith("/") ? prefix : `/${prefix}`).replace(/\/+$/g, "");
685
+ }
686
+ function createStaticSegmentsFromPrefix(prefix) {
687
+ if (!prefix) return [];
688
+ return prefix.split("/").filter(Boolean).map((value) => ({
689
+ type: "static",
690
+ value
691
+ }));
692
+ }
693
+ function shouldIgnoreRouteFile(relativePath) {
694
+ return relativePath.split("/").some((segment) => segment.startsWith("_"));
695
+ }
696
+ function toRoutePath(segments) {
697
+ if (segments.length === 0) return "/";
698
+ return `/${segments.map((segment) => {
699
+ if (segment.type === "static") return segment.value;
700
+ if (segment.type === "param") return `[${segment.name}]`;
701
+ if (segment.type === "rest") return `[...${segment.name}]`;
702
+ return `[[...${segment.name}]]`;
703
+ }).join("/")}`;
704
+ }
705
+ function getRouteSignature(segments) {
706
+ if (segments.length === 0) return "/";
707
+ return segments.map((segment) => {
708
+ if (segment.type === "static") return `static:${segment.value}`;
709
+ if (segment.type === "param") return "param";
710
+ if (segment.type === "rest") return "rest";
711
+ return "optional-rest";
712
+ }).join("/");
713
+ }
714
+ function getSegmentPriority(segment) {
715
+ if (segment.type === "static") return 4;
716
+ if (segment.type === "param") return 3;
717
+ if (segment.type === "rest") return 1;
718
+ return 0;
719
+ }
720
+ function compareRoutes(a, b) {
721
+ const maxLength = Math.max(a.segments.length, b.segments.length);
722
+ for (let index = 0; index < maxLength; index += 1) {
723
+ const left = a.segments[index];
724
+ const right = b.segments[index];
725
+ if (!left && !right) break;
726
+ if (!left) return 1;
727
+ if (!right) return -1;
728
+ const priorityDifference = getSegmentPriority(right) - getSegmentPriority(left);
729
+ if (priorityDifference !== 0) return priorityDifference;
730
+ if (left.type === "static" && right.type === "static") {
731
+ const lexicalDifference = left.value.localeCompare(right.value);
732
+ if (lexicalDifference !== 0) return lexicalDifference;
733
+ }
734
+ }
735
+ return a.filePath.localeCompare(b.filePath);
736
+ }
737
+ function parseRouteSegments(relativePath, prefixSegments) {
738
+ const rawSegments = relativePath.replace(/\.[^.]+$/u, "").split("/").filter(Boolean);
739
+ const routeSegments = [...prefixSegments];
740
+ for (let index = 0; index < rawSegments.length; index += 1) {
741
+ const segment = rawSegments[index];
742
+ const isLastSegment = index === rawSegments.length - 1;
743
+ if (segment === "index" && isLastSegment) continue;
744
+ const optionalRestMatch = segment.match(/^\[\[\.\.\.(.+)\]\]$/u);
745
+ if (optionalRestMatch) {
746
+ if (!isLastSegment) throw new Error(`Optional rest segment must be the final segment: ${relativePath}`);
747
+ routeSegments.push({
748
+ type: "optional-rest",
749
+ name: optionalRestMatch[1]
750
+ });
751
+ continue;
752
+ }
753
+ const restMatch = segment.match(/^\[\.\.\.(.+)\]$/u);
754
+ if (restMatch) {
755
+ if (!isLastSegment) throw new Error(`Rest segment must be the final segment: ${relativePath}`);
756
+ routeSegments.push({
757
+ type: "rest",
758
+ name: restMatch[1]
759
+ });
760
+ continue;
761
+ }
762
+ const dynamicMatch = segment.match(/^\[(.+)\]$/u);
763
+ if (dynamicMatch) {
764
+ routeSegments.push({
765
+ type: "param",
766
+ name: dynamicMatch[1]
767
+ });
768
+ continue;
769
+ }
770
+ routeSegments.push({
771
+ type: "static",
772
+ value: segment
773
+ });
774
+ }
775
+ return routeSegments;
776
+ }
777
+ async function directoryExists(dirPath) {
778
+ const fs = await import("node:fs/promises");
779
+ try {
780
+ return (await fs.stat(dirPath)).isDirectory();
781
+ } catch {
782
+ return false;
783
+ }
784
+ }
785
+ function getRouteDirectoryCandidate(cwd, config) {
786
+ const routesConfig = config.files?.routes;
787
+ if (routesConfig === false) return null;
788
+ const dir = routesConfig?.dir ?? "src/routes";
789
+ return {
790
+ dir,
791
+ absoluteDir: resolve(cwd, dir),
792
+ prefix: normalizeRoutePrefix(routesConfig?.prefix)
793
+ };
794
+ }
795
+ async function discoverRoutes(cwd, config) {
796
+ const routeDirectory = getRouteDirectoryCandidate(cwd, config);
797
+ if (!routeDirectory) return null;
798
+ if (!await directoryExists(routeDirectory.absoluteDir)) return null;
799
+ const prefixSegments = createStaticSegmentsFromPrefix(routeDirectory.prefix);
800
+ const files = await findFiles(DEFAULT_ROUTE_FILE_PATTERNS, {
801
+ cwd: routeDirectory.absoluteDir,
802
+ absolute: true
803
+ });
804
+ const discoveredRoutes = [];
805
+ const routeSignatures = /* @__PURE__ */ new Map();
806
+ for (const absolutePath of files) {
807
+ const relativeToRouteDir = relative(routeDirectory.absoluteDir, absolutePath).replace(/\\/g, "/");
808
+ if (shouldIgnoreRouteFile(relativeToRouteDir)) continue;
809
+ const segments = parseRouteSegments(relativeToRouteDir, prefixSegments);
810
+ const routePath = toRoutePath(segments);
811
+ const filePath = relative(cwd, absolutePath).replace(/\\/g, "/");
812
+ const signature = getRouteSignature(segments);
813
+ const existingFilePath = routeSignatures.get(signature);
814
+ if (existingFilePath) throw new Error(`Conflicting file routes detected for "${routePath}". Both "${existingFilePath}" and "${filePath}" resolve to the same route.`);
815
+ routeSignatures.set(signature, filePath);
816
+ discoveredRoutes.push({
817
+ absolutePath,
818
+ filePath,
819
+ routePath,
820
+ segments
821
+ });
822
+ }
823
+ if (discoveredRoutes.length === 0) return null;
824
+ discoveredRoutes.sort(compareRoutes);
825
+ return {
826
+ dir: routeDirectory.dir,
827
+ absoluteDir: routeDirectory.absoluteDir,
828
+ prefix: routeDirectory.prefix,
829
+ routes: discoveredRoutes
830
+ };
831
+ }
832
+ //#endregion
833
+ export { buildSendEmailConfig as C, buildWorkerLoadersConfig as D, buildVersionMetadataConfig as E, buildWorkflowsConfig as O, buildSecretsStoreConfig as S, buildTailConsumersConfig as T, buildMtlsCertificatesConfig as _, hasServiceBindings as a, buildQueueProducers as b, buildAiSearchInstancesConfig as c, buildArtifactsConfig as d, buildDispatchNamespacesConfig as f, buildMediaConfig as g, buildImagesConfig as h, hasCrossWorkerDOs as i, buildAiSearchNamespacesConfig as l, buildHyperdrivesConfig as m, getRouteDirectoryCandidate as n, resolveDOBindings as o, buildFlagshipConfig as p, clearBundleCache as r, resolveServiceBindings as s, discoverRoutes as t, buildAnalyticsEngineConfig as u, buildPipelinesConfig as v, buildStreamConfig as w, buildRateLimitsConfig as x, buildQueueConsumers as y };