devflare 1.0.0-next.5 → 1.0.0-next.51

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 (596) hide show
  1. package/LICENSE +21 -0
  2. package/LLM.md +17312 -2139
  3. package/README.md +397 -605
  4. package/bin/devflare.js +30 -14
  5. package/dist/_chunks/account-Csog80ie.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-Ccza8VQz.js +24 -0
  10. package/dist/_chunks/build-artifacts-BNssqhxE.js +483 -0
  11. package/dist/_chunks/cli-CU7wSG1-.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-_bGRraDR.js +45 -0
  15. package/dist/_chunks/compiler-BtLp9T9N.js +500 -0
  16. package/dist/_chunks/config-QU8UEWmA.js +78 -0
  17. package/dist/_chunks/config-path-1yI7BiDU.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-aifBaMVv.js +1032 -0
  22. package/dist/_chunks/dev-DF_3baGr.js +3483 -0
  23. package/dist/_chunks/doctor-tR9kGT_Z.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-DKPp4wqj.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-OQ2AWpqm.js +1308 -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-CYoHfvQ1.js +123 -0
  35. package/dist/_chunks/local-workflow-entrypoints-8d_mXh8T.js +90 -0
  36. package/dist/_chunks/login-rVWUZOKC.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-DRWR0gaB.js +359 -0
  42. package/dist/_chunks/previews-BxNq8Y_J.js +1134 -0
  43. package/dist/_chunks/productions-DK7xwbEs.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-B6XiI8Sa.js +851 -0
  50. package/dist/_chunks/runtime-DL-Nz3k8.js +550 -0
  51. package/dist/_chunks/schema-normalization-GjhTATHL.js +666 -0
  52. package/dist/_chunks/secrets-qT1JaBGt.js +95 -0
  53. package/dist/_chunks/tail-CuWI04BL.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-BquPXsFg.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-D_wLDGBs.js +1267 -0
  60. package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
  61. package/dist/_chunks/worker-DEF-e8LL.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 +85 -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 +5705 -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 +309 -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 +2087 -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 +3771 -0
  330. package/dist/config/schema-env.d.ts.map +1 -0
  331. package/dist/config/schema-normalization.d.ts +267 -0
  332. package/dist/config/schema-normalization.d.ts.map +1 -0
  333. package/dist/config/schema-runtime.d.ts +557 -0
  334. package/dist/config/schema-runtime.d.ts.map +1 -0
  335. package/dist/config/schema-types-bindings-platform.d.ts +520 -0
  336. package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
  337. package/dist/config/schema-types-bindings-resources.d.ts +802 -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-server.d.ts +122 -0
  344. package/dist/config/schema-types-runtime-server.d.ts.map +1 -0
  345. package/dist/config/schema-types-runtime.d.ts +913 -0
  346. package/dist/config/schema-types-runtime.d.ts.map +1 -0
  347. package/dist/config/schema-types.d.ts +458 -0
  348. package/dist/config/schema-types.d.ts.map +1 -0
  349. package/dist/config/schema.d.ts +5699 -2021
  350. package/dist/config/schema.d.ts.map +1 -1
  351. package/dist/config/service-bindings-validation.d.ts +36 -0
  352. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  353. package/dist/config-entry.d.ts +7 -0
  354. package/dist/config-entry.d.ts.map +1 -0
  355. package/dist/config-entry.js +3 -0
  356. package/dist/decorators/durable-object.d.ts.map +1 -1
  357. package/dist/decorators/index.d.ts +2 -2
  358. package/dist/decorators/index.js +2 -9
  359. package/dist/dev-server/d1-migrations.d.ts +36 -0
  360. package/dist/dev-server/d1-migrations.d.ts.map +1 -0
  361. package/dist/dev-server/dev-server-state.d.ts +59 -0
  362. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  363. package/dist/dev-server/gateway-script.d.ts +21 -0
  364. package/dist/dev-server/gateway-script.d.ts.map +1 -0
  365. package/dist/dev-server/index.d.ts +1 -1
  366. package/dist/dev-server/miniflare-bindings.d.ts +90 -0
  367. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  368. package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
  369. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  370. package/dist/dev-server/miniflare-log.d.ts +20 -0
  371. package/dist/dev-server/miniflare-log.d.ts.map +1 -0
  372. package/dist/dev-server/miniflare-worker-config.d.ts +93 -0
  373. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  374. package/dist/dev-server/reload-queue.d.ts +13 -0
  375. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  376. package/dist/dev-server/runtime-stdio.d.ts +8 -0
  377. package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
  378. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  379. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  380. package/dist/dev-server/server.d.ts +2 -0
  381. package/dist/dev-server/server.d.ts.map +1 -1
  382. package/dist/dev-server/vite-process.d.ts +15 -0
  383. package/dist/dev-server/vite-process.d.ts.map +1 -0
  384. package/dist/dev-server/vite-utils.d.ts +19 -1
  385. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  386. package/dist/dev-server/worker-source-watcher.d.ts +17 -0
  387. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
  388. package/dist/dev-server/worker-surface-paths.d.ts +6 -0
  389. package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
  390. package/dist/env.d.ts +10 -0
  391. package/dist/env.d.ts.map +1 -1
  392. package/dist/index.d.ts +8 -12
  393. package/dist/index.d.ts.map +1 -1
  394. package/dist/index.js +9 -298
  395. package/dist/runtime/context-events.d.ts +13 -0
  396. package/dist/runtime/context-events.d.ts.map +1 -0
  397. package/dist/runtime/context-types.d.ts +82 -0
  398. package/dist/runtime/context-types.d.ts.map +1 -0
  399. package/dist/runtime/context.d.ts +20 -44
  400. package/dist/runtime/context.d.ts.map +1 -1
  401. package/dist/runtime/exports.d.ts +70 -55
  402. package/dist/runtime/exports.d.ts.map +1 -1
  403. package/dist/runtime/index.d.ts +10 -3
  404. package/dist/runtime/index.d.ts.map +1 -1
  405. package/dist/runtime/index.js +5 -111
  406. package/dist/runtime/middleware.d.ts +119 -67
  407. package/dist/runtime/middleware.d.ts.map +1 -1
  408. package/dist/runtime/router/index.d.ts +7 -0
  409. package/dist/runtime/router/index.d.ts.map +1 -0
  410. package/dist/runtime/router/types.d.ts +24 -0
  411. package/dist/runtime/router/types.d.ts.map +1 -0
  412. package/dist/runtime/validation.d.ts +18 -4
  413. package/dist/runtime/validation.d.ts.map +1 -1
  414. package/dist/secrets/local-secrets.d.ts +46 -0
  415. package/dist/secrets/local-secrets.d.ts.map +1 -0
  416. package/dist/shims/local-hyperdrive.d.ts +12 -0
  417. package/dist/shims/local-hyperdrive.d.ts.map +1 -0
  418. package/dist/shims/local-media-bindings.d.ts +19 -0
  419. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  420. package/dist/shims/local-worker-loader.d.ts +3 -0
  421. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  422. package/dist/sveltekit/index.d.ts +1 -1
  423. package/dist/sveltekit/index.d.ts.map +1 -1
  424. package/dist/sveltekit/index.js +313 -167
  425. package/dist/sveltekit/local-bindings.d.ts +4 -0
  426. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  427. package/dist/sveltekit/platform.d.ts +20 -2
  428. package/dist/sveltekit/platform.d.ts.map +1 -1
  429. package/dist/test/ai-search.d.ts +39 -0
  430. package/dist/test/ai-search.d.ts.map +1 -0
  431. package/dist/test/alarm.d.ts +55 -0
  432. package/dist/test/alarm.d.ts.map +1 -0
  433. package/dist/test/binding-hints.d.ts +10 -0
  434. package/dist/test/binding-hints.d.ts.map +1 -0
  435. package/dist/test/cf.d.ts +71 -35
  436. package/dist/test/cf.d.ts.map +1 -1
  437. package/dist/test/containers.d.ts +87 -0
  438. package/dist/test/containers.d.ts.map +1 -0
  439. package/dist/test/email.d.ts +16 -7
  440. package/dist/test/email.d.ts.map +1 -1
  441. package/dist/test/index.d.ts +20 -21
  442. package/dist/test/index.d.ts.map +1 -1
  443. package/dist/test/index.js +4981 -70
  444. package/dist/test/offline-bindings.d.ts +115 -0
  445. package/dist/test/offline-bindings.d.ts.map +1 -0
  446. package/dist/test/queue.d.ts.map +1 -1
  447. package/dist/test/remote-ai.d.ts.map +1 -1
  448. package/dist/test/remote-cloudflare.d.ts +13 -0
  449. package/dist/test/remote-cloudflare.d.ts.map +1 -0
  450. package/dist/test/remote-vectorize.d.ts.map +1 -1
  451. package/dist/test/resolve-service-bindings.d.ts +64 -4
  452. package/dist/test/resolve-service-bindings.d.ts.map +1 -1
  453. package/dist/test/scheduled.d.ts.map +1 -1
  454. package/dist/test/should-skip.d.ts +14 -18
  455. package/dist/test/should-skip.d.ts.map +1 -1
  456. package/dist/test/simple-context-bindings.d.ts +13 -0
  457. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  458. package/dist/test/simple-context-durable-objects.d.ts +6 -0
  459. package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
  460. package/dist/test/simple-context-env.d.ts +35 -0
  461. package/dist/test/simple-context-env.d.ts.map +1 -0
  462. package/dist/test/simple-context-gateway-script.d.ts +2 -0
  463. package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
  464. package/dist/test/simple-context-handlers.d.ts +12 -0
  465. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  466. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  467. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  468. package/dist/test/simple-context-mfconfig.d.ts +10 -0
  469. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  470. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  471. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  472. package/dist/test/simple-context-paths.d.ts +40 -0
  473. package/dist/test/simple-context-paths.d.ts.map +1 -0
  474. package/dist/test/simple-context-runtime.d.ts +19 -0
  475. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  476. package/dist/test/simple-context-startup.d.ts +11 -0
  477. package/dist/test/simple-context-startup.d.ts.map +1 -0
  478. package/dist/test/simple-context-transport.d.ts +14 -0
  479. package/dist/test/simple-context-transport.d.ts.map +1 -0
  480. package/dist/test/simple-context.d.ts +8 -27
  481. package/dist/test/simple-context.d.ts.map +1 -1
  482. package/dist/test/tail.d.ts +3 -2
  483. package/dist/test/tail.d.ts.map +1 -1
  484. package/dist/test/utilities/analytics-engine.d.ts +22 -0
  485. package/dist/test/utilities/analytics-engine.d.ts.map +1 -0
  486. package/dist/test/utilities/artifacts.d.ts +11 -0
  487. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  488. package/dist/test/utilities/context.d.ts +39 -0
  489. package/dist/test/utilities/context.d.ts.map +1 -0
  490. package/dist/test/utilities/d1.d.ts +21 -0
  491. package/dist/test/utilities/d1.d.ts.map +1 -0
  492. package/dist/test/utilities/env.d.ts +43 -0
  493. package/dist/test/utilities/env.d.ts.map +1 -0
  494. package/dist/test/utilities/kv.d.ts +11 -0
  495. package/dist/test/utilities/kv.d.ts.map +1 -0
  496. package/dist/test/utilities/media.d.ts +16 -0
  497. package/dist/test/utilities/media.d.ts.map +1 -0
  498. package/dist/test/utilities/platform.d.ts +41 -0
  499. package/dist/test/utilities/platform.d.ts.map +1 -0
  500. package/dist/test/utilities/queue.d.ts +5 -0
  501. package/dist/test/utilities/queue.d.ts.map +1 -0
  502. package/dist/test/utilities/r2.d.ts +2 -0
  503. package/dist/test/utilities/r2.d.ts.map +1 -0
  504. package/dist/test/utilities/stream-flagship.d.ts +27 -0
  505. package/dist/test/utilities/stream-flagship.d.ts.map +1 -0
  506. package/dist/test/utilities/vectorize.d.ts +38 -0
  507. package/dist/test/utilities/vectorize.d.ts.map +1 -0
  508. package/dist/test/utilities/workflows.d.ts +26 -0
  509. package/dist/test/utilities/workflows.d.ts.map +1 -0
  510. package/dist/test/utilities.d.ts +13 -98
  511. package/dist/test/utilities.d.ts.map +1 -1
  512. package/dist/test/worker.d.ts +6 -0
  513. package/dist/test/worker.d.ts.map +1 -1
  514. package/dist/transform/durable-object.d.ts.map +1 -1
  515. package/dist/transform/index.d.ts +2 -2
  516. package/dist/transform/worker-entrypoint.d.ts +5 -0
  517. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  518. package/dist/utils/entrypoint-discovery.d.ts +6 -3
  519. package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
  520. package/dist/utils/glob.d.ts.map +1 -1
  521. package/dist/utils/resolve-package.d.ts.map +1 -1
  522. package/dist/utils/send-email.d.ts +15 -0
  523. package/dist/utils/send-email.d.ts.map +1 -0
  524. package/dist/utils/send-email.js +163 -0
  525. package/dist/vite/config-file.d.ts +25 -0
  526. package/dist/vite/config-file.d.ts.map +1 -0
  527. package/dist/vite/index.d.ts +3 -2
  528. package/dist/vite/index.d.ts.map +1 -1
  529. package/dist/vite/index.js +2 -339
  530. package/dist/vite/plugin-config-hook.d.ts +28 -0
  531. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  532. package/dist/vite/plugin-context.d.ts +27 -0
  533. package/dist/vite/plugin-context.d.ts.map +1 -0
  534. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  535. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  536. package/dist/vite/plugin-programmatic.d.ts +44 -0
  537. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  538. package/dist/vite/plugin-service-bindings.d.ts +13 -0
  539. package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
  540. package/dist/vite/plugin-transform.d.ts +41 -0
  541. package/dist/vite/plugin-transform.d.ts.map +1 -0
  542. package/dist/vite/plugin.d.ts +10 -41
  543. package/dist/vite/plugin.d.ts.map +1 -1
  544. package/dist/worker-entry/composed-worker.d.ts +7 -0
  545. package/dist/worker-entry/composed-worker.d.ts.map +1 -0
  546. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  547. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  548. package/dist/worker-entry/extensions.d.ts +5 -0
  549. package/dist/worker-entry/extensions.d.ts.map +1 -0
  550. package/dist/worker-entry/routes.d.ts +22 -0
  551. package/dist/worker-entry/routes.d.ts.map +1 -0
  552. package/dist/worker-entry/surface-paths.d.ts +26 -0
  553. package/dist/worker-entry/surface-paths.d.ts.map +1 -0
  554. package/dist/worker-entry/validate-fetch-style.d.ts +12 -0
  555. package/dist/worker-entry/validate-fetch-style.d.ts.map +1 -0
  556. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  557. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  558. package/package.json +159 -116
  559. package/R2.md +0 -170
  560. package/dist/account-rvrj687w.js +0 -397
  561. package/dist/ai-dx4fr9jh.js +0 -107
  562. package/dist/bridge/protocol.d.ts.map +0 -1
  563. package/dist/bridge/serialization.d.ts.map +0 -1
  564. package/dist/browser-shim/worker.d.ts +0 -14
  565. package/dist/browser-shim/worker.d.ts.map +0 -1
  566. package/dist/build-mnf6v8gd.js +0 -53
  567. package/dist/deploy-nhceck39.js +0 -70
  568. package/dist/dev-b9dmrj7b.js +0 -2417
  569. package/dist/doctor-fmgb3d28.js +0 -190
  570. package/dist/durable-object-t4kbb0yt.js +0 -13
  571. package/dist/index-07q6yxyc.js +0 -168
  572. package/dist/index-18hvb6gb.js +0 -194
  573. package/dist/index-1xpj0m4r.js +0 -57
  574. package/dist/index-37x76zdn.js +0 -4
  575. package/dist/index-3t6rypgc.js +0 -13
  576. package/dist/index-67qcae0f.js +0 -183
  577. package/dist/index-a855bdsx.js +0 -18
  578. package/dist/index-d8bdkx2h.js +0 -109
  579. package/dist/index-ep3445yc.js +0 -2225
  580. package/dist/index-gz1gndna.js +0 -307
  581. package/dist/index-hcex3rgh.js +0 -266
  582. package/dist/index-m2q41jwa.js +0 -462
  583. package/dist/index-n7rs26ft.js +0 -77
  584. package/dist/index-pf5s73n9.js +0 -1413
  585. package/dist/index-rbht7m9r.js +0 -36
  586. package/dist/index-tfyxa77h.js +0 -850
  587. package/dist/index-tk6ej9dj.js +0 -94
  588. package/dist/index-z14anrqp.js +0 -226
  589. package/dist/init-f9mgmew3.js +0 -186
  590. package/dist/remote-q59qk463.js +0 -97
  591. package/dist/test/bridge-context.d.ts +0 -76
  592. package/dist/test/bridge-context.d.ts.map +0 -1
  593. package/dist/test/multi-worker-context.d.ts +0 -114
  594. package/dist/test/multi-worker-context.d.ts.map +0 -1
  595. package/dist/types-5nyrz1sz.js +0 -454
  596. package/dist/worker-entrypoint-m9th0rg0.js +0 -13
@@ -0,0 +1,247 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-CvQ6eiug.js";
2
+ import MagicString from "magic-string";
3
+ import ts from "typescript";
4
+ //#region src/worker-entry/extensions.ts
5
+ /** Extensions accepted as worker source modules. */
6
+ const SUPPORTED_WORKER_EXTENSIONS = [
7
+ ".ts",
8
+ ".tsx",
9
+ ".mts",
10
+ ".mjs",
11
+ ".cts",
12
+ ".cjs",
13
+ ".js",
14
+ ".jsx"
15
+ ];
16
+ /** Subset of {@link SUPPORTED_WORKER_EXTENSIONS} that may host TypeScript-only syntax. */
17
+ const TS_WORKER_EXTENSIONS = [
18
+ ".ts",
19
+ ".tsx",
20
+ ".mts",
21
+ ".cts"
22
+ ];
23
+ //#endregion
24
+ //#region src/transform/worker-entrypoint.ts
25
+ var worker_entrypoint_exports = /* @__PURE__ */ __exportAll({
26
+ findExportedFunctions: () => findExportedFunctions,
27
+ shouldEmitTsSyntax: () => shouldEmitTsSyntax,
28
+ shouldTransformWorker: () => shouldTransformWorker,
29
+ transformWorkerEntrypoint: () => transformWorkerEntrypoint
30
+ });
31
+ /**
32
+ * Find all exported functions in a worker.ts file using TypeScript AST
33
+ */
34
+ function findExportedFunctions(code) {
35
+ const functions = [];
36
+ const sourceFile = ts.createSourceFile("worker.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
37
+ function visit(node) {
38
+ if (ts.isFunctionDeclaration(node) && node.name) {
39
+ const modifiers = ts.getModifiers(node);
40
+ const isExported = modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
41
+ const isDefault = modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword);
42
+ if (isExported) {
43
+ const isAsync = modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
44
+ const funcName = isDefault ? "fetch" : node.name.text;
45
+ const params = node.parameters.map((p) => code.substring(p.getStart(sourceFile), p.getEnd())).join(", ");
46
+ const returnType = node.type ? code.substring(node.type.getStart(sourceFile), node.type.getEnd()) : void 0;
47
+ functions.push({
48
+ name: funcName,
49
+ isAsync,
50
+ params,
51
+ returnType,
52
+ start: node.getStart(sourceFile),
53
+ end: node.getEnd(),
54
+ isDefault
55
+ });
56
+ }
57
+ }
58
+ if (ts.isFunctionDeclaration(node) && !node.name) {
59
+ const modifiers = ts.getModifiers(node);
60
+ const isExported = modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
61
+ const isDefault = modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword);
62
+ if (isExported && isDefault) {
63
+ const isAsync = modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? false;
64
+ const params = node.parameters.map((p) => code.substring(p.getStart(sourceFile), p.getEnd())).join(", ");
65
+ const returnType = node.type ? code.substring(node.type.getStart(sourceFile), node.type.getEnd()) : void 0;
66
+ functions.push({
67
+ name: "fetch",
68
+ isAsync,
69
+ params,
70
+ returnType,
71
+ start: node.getStart(sourceFile),
72
+ end: node.getEnd(),
73
+ isDefault: true
74
+ });
75
+ }
76
+ }
77
+ if (ts.isVariableStatement(node)) {
78
+ if (ts.getModifiers(node)?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
79
+ for (const decl of node.declarationList.declarations) if (ts.isIdentifier(decl.name) && decl.initializer) {
80
+ let funcExpr;
81
+ if (ts.isFunctionExpression(decl.initializer)) funcExpr = decl.initializer;
82
+ else if (ts.isArrowFunction(decl.initializer)) funcExpr = decl.initializer;
83
+ if (funcExpr) {
84
+ const isAsync = ts.getModifiers(funcExpr)?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ?? (ts.isArrowFunction(funcExpr) && funcExpr.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) ?? false;
85
+ const params = funcExpr.parameters.map((p) => code.substring(p.getStart(sourceFile), p.getEnd())).join(", ");
86
+ const returnType = funcExpr.type ? code.substring(funcExpr.type.getStart(sourceFile), funcExpr.type.getEnd()) : void 0;
87
+ functions.push({
88
+ name: decl.name.text,
89
+ isAsync,
90
+ params,
91
+ returnType,
92
+ start: node.getStart(sourceFile),
93
+ end: node.getEnd()
94
+ });
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ts.forEachChild(node, visit);
100
+ }
101
+ visit(sourceFile);
102
+ return functions;
103
+ }
104
+ /**
105
+ * Returns true when the filename has an extension that permits TS-only syntax.
106
+ * Gates injection of interfaces and type annotations into emitted worker code.
107
+ */
108
+ function shouldEmitTsSyntax(filename) {
109
+ const lower = filename.toLowerCase();
110
+ return TS_WORKER_EXTENSIONS.some((ext) => lower.endsWith(ext));
111
+ }
112
+ /**
113
+ * Check if a file should be transformed as a worker entrypoint
114
+ * Returns true if the file has exported functions that could be RPC methods
115
+ */
116
+ function shouldTransformWorker(code, filePath) {
117
+ const lower = filePath.toLowerCase();
118
+ if (!SUPPORTED_WORKER_EXTENSIONS.some((ext) => lower.endsWith(`worker${ext}`))) return false;
119
+ return findExportedFunctions(code).length > 0;
120
+ }
121
+ /**
122
+ * Transform a worker.ts file into a WorkerEntrypoint class
123
+ *
124
+ * @param code - Source code to transform
125
+ * @param id - File path/id for source mapping
126
+ * @param options - Transform options
127
+ * @returns Transformed code with source map
128
+ */
129
+ function transformWorkerEntrypoint(code, id, options = {}) {
130
+ const className = options.className ?? "Worker";
131
+ const injectContext = options.injectContext ?? true;
132
+ const emitTs = shouldEmitTsSyntax(id);
133
+ const functions = findExportedFunctions(code);
134
+ if (functions.length === 0) return null;
135
+ const fetchFn = functions.find((f) => f.name === "fetch");
136
+ const rpcMethods = functions.filter((f) => f.name !== "fetch");
137
+ const needsFetchHelpers = Boolean(fetchFn);
138
+ const s = new MagicString(code);
139
+ const importStatement = `import { WorkerEntrypoint } from 'cloudflare:workers'\n`;
140
+ if (needsFetchHelpers) {
141
+ const runtimeImports = ["createFetchEvent", "invokeFetchHandler"];
142
+ if (injectContext) runtimeImports.push("runWithEventContext");
143
+ s.prepend(`import { ${runtimeImports.join(", ")} } from 'devflare/runtime'\n`);
144
+ }
145
+ s.prepend(importStatement);
146
+ const sourceFile = ts.createSourceFile("worker.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
147
+ const internalNameFor = (name) => name === "fetch" ? "__originalFetch" : `__original_${name}`;
148
+ function visit(node) {
149
+ if (ts.isFunctionDeclaration(node)) {
150
+ const modifiers = ts.getModifiers(node);
151
+ const exportMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
152
+ const defaultMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.DefaultKeyword);
153
+ const asyncMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
154
+ if (exportMod) {
155
+ const isDefault = Boolean(defaultMod);
156
+ const logicalName = isDefault ? "fetch" : node.name?.text;
157
+ if (logicalName) {
158
+ const internal = internalNameFor(logicalName);
159
+ if (isDefault && !node.name) {
160
+ const funcKeyword = node.getChildren(sourceFile).find((c) => c.kind === ts.SyntaxKind.FunctionKeyword);
161
+ if (funcKeyword) {
162
+ const asyncKw = asyncMod ? "async " : "";
163
+ s.overwrite(node.getStart(sourceFile), funcKeyword.getStart(sourceFile), `const ${internal} = ${asyncKw}`);
164
+ }
165
+ } else if (node.name) {
166
+ s.remove(exportMod.getStart(sourceFile), exportMod.getEnd());
167
+ if (defaultMod) s.remove(defaultMod.getStart(sourceFile), defaultMod.getEnd());
168
+ s.overwrite(node.name.getStart(sourceFile), node.name.getEnd(), internal);
169
+ }
170
+ }
171
+ }
172
+ } else if (ts.isVariableStatement(node)) {
173
+ const exportMod = ts.getModifiers(node)?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
174
+ if (exportMod) {
175
+ let rewroteAny = false;
176
+ for (const decl of node.declarationList.declarations) if (ts.isIdentifier(decl.name) && decl.initializer && (ts.isFunctionExpression(decl.initializer) || ts.isArrowFunction(decl.initializer))) {
177
+ const internal = internalNameFor(decl.name.text);
178
+ s.overwrite(decl.name.getStart(sourceFile), decl.name.getEnd(), internal);
179
+ rewroteAny = true;
180
+ }
181
+ if (rewroteAny) s.remove(exportMod.getStart(sourceFile), exportMod.getEnd());
182
+ }
183
+ }
184
+ ts.forEachChild(node, visit);
185
+ }
186
+ visit(sourceFile);
187
+ let classBody = `\n\n// ============ Devflare WorkerEntrypoint ============\nclass ${className} extends WorkerEntrypoint {\n`;
188
+ if (fetchFn) {
189
+ classBody += `\t${emitTs ? "async fetch(request: Request): Promise<Response>" : "async fetch(request)"} {\n`;
190
+ classBody += `\t\tconst __devflareEvent = createFetchEvent(request, this.env, this.ctx)\n`;
191
+ if (injectContext) {
192
+ classBody += `\t\treturn runWithEventContext(\n`;
193
+ classBody += `\t\t\t__devflareEvent,\n`;
194
+ classBody += `\t\t\t() => invokeFetchHandler(__originalFetch, __devflareEvent)\n`;
195
+ classBody += `\t\t)\n`;
196
+ classBody += `\t}\n`;
197
+ } else {
198
+ classBody += `\t\treturn invokeFetchHandler(__originalFetch, __devflareEvent)\n`;
199
+ classBody += `\t}\n`;
200
+ }
201
+ }
202
+ for (const fn of rpcMethods) {
203
+ const asyncPrefix = fn.isAsync ? "async " : "";
204
+ const paramNames = extractParamNames(fn.params);
205
+ const signatureParams = emitTs ? fn.params : paramNames;
206
+ const returnType = emitTs && fn.returnType ? `: ${fn.returnType}` : "";
207
+ classBody += `\n\t${asyncPrefix}${fn.name}(${signatureParams})${returnType} {\n`;
208
+ classBody += `\t\treturn __original_${fn.name}(${paramNames})\n`;
209
+ classBody += `\t}\n`;
210
+ }
211
+ classBody += `}\n\n`;
212
+ classBody += `export { ${className} }\n`;
213
+ classBody += `export { ${className} as default }\n`;
214
+ classBody += `// ============ End Devflare WorkerEntrypoint ============\n`;
215
+ s.append(classBody);
216
+ return {
217
+ code: s.toString(),
218
+ map: s.generateMap({
219
+ source: id,
220
+ file: id + ".map",
221
+ includeContent: true
222
+ }),
223
+ rpcMethods: rpcMethods.map((fn) => fn.name),
224
+ className
225
+ };
226
+ }
227
+ /**
228
+ * Extract parameter names from a parameter string
229
+ * "a: number, b: string" -> "a, b"
230
+ */
231
+ function extractParamNames(params) {
232
+ if (!params.trim()) return "";
233
+ const tempCode = `function f(${params}) {}`;
234
+ const sourceFile = ts.createSourceFile("temp.ts", tempCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
235
+ const names = [];
236
+ function visit(node) {
237
+ if (ts.isFunctionDeclaration(node)) {
238
+ for (const param of node.parameters) if (ts.isIdentifier(param.name)) names.push(param.name.text);
239
+ else if (ts.isObjectBindingPattern(param.name) || ts.isArrayBindingPattern(param.name)) names.push(tempCode.substring(param.name.getStart(sourceFile), param.name.getEnd()));
240
+ }
241
+ ts.forEachChild(node, visit);
242
+ }
243
+ visit(sourceFile);
244
+ return names.join(", ");
245
+ }
246
+ //#endregion
247
+ export { worker_entrypoint_exports as n, SUPPORTED_WORKER_EXTENSIONS as r, transformWorkerEntrypoint as t };
@@ -0,0 +1,23 @@
1
+ //#region src/workerName.ts
2
+ /**
3
+ * The current worker's name from devflare.config.ts
4
+ *
5
+ * This value is injected at build time by the devflare bundler.
6
+ * In development (non-bundled), it will be 'unknown' or throw an error.
7
+ *
8
+ * @example
9
+ * import { workerName } from 'devflare'
10
+ *
11
+ * export default {
12
+ * fetch(request) {
13
+ * return new Response(`Hello from ${workerName}`)
14
+ * }
15
+ * }
16
+ */
17
+ const workerName = (() => {
18
+ if (typeof __DEVFLARE_WORKER_NAME__ !== "undefined") return __DEVFLARE_WORKER_NAME__;
19
+ if (typeof process !== "undefined" && process.env?.DEVFLARE_WORKER_NAME) return process.env.DEVFLARE_WORKER_NAME;
20
+ return "unknown";
21
+ })();
22
+ //#endregion
23
+ export { workerName as t };
@@ -1,5 +1,7 @@
1
+ type WebSocketConstructor = new (url: string) => WebSocket;
2
+ export declare function resolveBridgeWebSocketConstructor(runtimeWebSocket?: unknown): Promise<WebSocketConstructor>;
1
3
  export interface BridgeClientOptions {
2
- /** Bridge WebSocket URL (default: ws://localhost:8686) */
4
+ /** Bridge WebSocket URL (default: ws://localhost:8787) */
3
5
  url?: string;
4
6
  /** Auto-reconnect on disconnect */
5
7
  autoReconnect?: boolean;
@@ -17,22 +19,38 @@ export interface ActiveStream {
17
19
  controller: ReadableStreamDefaultController<Uint8Array>;
18
20
  buffer: Uint8Array[];
19
21
  creditRemaining: number;
22
+ /** Resolver for a pending pull waiting on bytes or end */
23
+ pendingPull: {
24
+ resolve: () => void;
25
+ reject: (error: Error) => void;
26
+ } | null;
27
+ /** Stream ended (from server) — signal pull to flush and close */
28
+ ended: boolean;
29
+ /** Stream was cancelled locally or aborted */
30
+ closed: boolean;
20
31
  }
21
32
  export interface ActiveWsProxy {
22
33
  clientWs: WebSocket;
23
34
  onMessage: (data: Uint8Array | string) => void;
24
35
  onClose: (code?: number, reason?: string) => void;
25
36
  }
37
+ export interface PendingWsOpen {
38
+ resolve: () => void;
39
+ reject: (error: Error) => void;
40
+ }
26
41
  export declare class BridgeClient {
27
42
  private ws;
43
+ private codec;
44
+ private adapter;
28
45
  private url;
29
46
  private autoReconnect;
30
47
  private reconnectDelay;
31
48
  private connectTimeout;
32
- private pendingCalls;
33
49
  private activeStreams;
34
50
  private wsProxies;
51
+ private pendingWsOpens;
35
52
  private outgoingStreams;
53
+ private eventListeners;
36
54
  private connectPromise;
37
55
  private isConnected;
38
56
  constructor(options?: BridgeClientOptions);
@@ -42,13 +60,31 @@ export declare class BridgeClient {
42
60
  getHttpUrl(): string;
43
61
  /** Connect to the bridge */
44
62
  connect(): Promise<void>;
45
- /** Disconnect from the bridge */
63
+ private openConnectionWithPackageFallback;
64
+ private openConnection;
65
+ /** Disconnect from the bridge and tear down all pending state */
46
66
  disconnect(): void;
67
+ /** Alias for disconnect() */
68
+ close(): void;
47
69
  /** Check if connected */
48
70
  get connected(): boolean;
49
71
  private handleDisconnect;
72
+ /** Reject/close all pending streams and ws proxies (codec owns RPC pending). */
73
+ private cleanupPending;
50
74
  /** Call an RPC method */
51
75
  call(method: string, params: unknown[], timeoutMs?: number): Promise<unknown>;
76
+ /**
77
+ * Subscribe to bridge `event` notifications for a topic.
78
+ *
79
+ * Pass `'*'` to receive every event regardless of topic. Returns an
80
+ * unsubscribe function; calling it removes this listener. Subscriptions
81
+ * survive auto-reconnect and are only dropped on an explicit disconnect().
82
+ *
83
+ * NOTE: no gateway currently emits `event` frames, so listeners will not
84
+ * fire until an event producer is wired on the gateway side. The subscriber
85
+ * surface is provided so consumers can register ahead of that work.
86
+ */
87
+ on(topic: string, cb: (data: unknown) => void): () => void;
52
88
  /** Create a proxied WebSocket to a Durable Object */
53
89
  createWsProxy(binding: string, id: string, url: string, headers?: [string, string][]): Promise<{
54
90
  wid: number;
@@ -59,12 +95,15 @@ export declare class BridgeClient {
59
95
  }>;
60
96
  /** Create a readable stream that pulls from the bridge */
61
97
  createReadableStream(sid: number): ReadableStream<Uint8Array>;
62
- private handleMessage;
63
98
  private handleJsonMessage;
64
- private handleBinaryMessage;
65
- private handleRpcOk;
66
- private handleRpcErr;
99
+ /**
100
+ * Receive a v2 binary frame. Frame format is byte-identical to the legacy
101
+ * v1 frames for kinds 1 (StreamChunk) and 2 (WsData); v2 owns kind 3
102
+ * (BodyChunk) which the codec handles internally before reaching here.
103
+ */
104
+ private handleV2BinaryFrame;
67
105
  private handleEvent;
106
+ private dispatchEvent;
68
107
  private handleStreamPull;
69
108
  private pumpStream;
70
109
  private handleStreamChunk;
@@ -72,11 +111,14 @@ export declare class BridgeClient {
72
111
  private handleStreamAbort;
73
112
  private handleWsData;
74
113
  private handleWsClose;
114
+ private handleWsOpened;
75
115
  private ensureConnected;
76
116
  private send;
117
+ private sendBinary;
77
118
  }
78
119
  /** Get or create the default bridge client */
79
120
  export declare function getClient(options?: BridgeClientOptions): BridgeClient;
80
121
  /** Reset the default client (for testing) */
81
122
  export declare function resetClient(): void;
123
+ export {};
82
124
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/bridge/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/bridge/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared gateway helpers (base64, R2 serializers, email) and the RPC method
3
+ * dispatcher. Designed to be embedded verbatim at the top level of a worker
4
+ * module. All symbols are declared with `function`/`const` so they are
5
+ * hoisted in both embedding sites.
6
+ */
7
+ export declare const GATEWAY_RUNTIME_JS = "\nconst RAW_EMAIL = 'EmailMessage::raw'\n\n// Inline body cap for proxied DO/service-fetch responses. Matches\n// HTTP_TRANSFER_THRESHOLD in wire.ts (512 KB). A larger body would exceed\n// workerd's ~1 MB WebSocket message limit once base64-encoded into the rpc.ok\n// frame, so it is rejected with a clear error rather than silently truncated.\nconst HTTP_TRANSFER_THRESHOLD = 512 * 1024\n\nfunction arrayBufferToBase64(buffer) {\n\tconst bytes = new Uint8Array(buffer)\n\tlet binary = ''\n\tfor (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i])\n\treturn btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64) {\n\tconst binary = atob(base64)\n\tconst bytes = new Uint8Array(binary.length)\n\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i)\n\treturn bytes.buffer\n}\n\n// Binary WsData frame codec (10-byte header: kind:u8, id:u32 LE, seq:u32 LE,\n// flags:u8 + payload). MUST match wire.ts encodeBinaryFrame/decodeBinaryFrame so\n// the bridge client and this gateway agree on the WS-data wire format\n// (BinaryKind.WsData = 2, BinaryFlags.TEXT = 2).\nfunction encodeWsDataFrame(wid, flags, payload) {\n\tconst frame = new Uint8Array(10 + payload.byteLength)\n\tconst view = new DataView(frame.buffer)\n\tview.setUint8(0, 2)\n\tview.setUint32(1, wid, true)\n\tview.setUint32(5, 0, true)\n\tview.setUint8(9, flags)\n\tframe.set(payload, 10)\n\treturn frame\n}\n\nfunction decodeWsDataFrame(buffer) {\n\tconst bytes = new Uint8Array(buffer)\n\tif (bytes.byteLength < 10) return null\n\tconst view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n\treturn {\n\t\tkind: view.getUint8(0),\n\t\tid: view.getUint32(1, true),\n\t\tflags: view.getUint8(9),\n\t\tpayload: bytes.subarray(10)\n\t}\n}\n\nfunction serializeR2Object(obj) {\n\tif (!obj) return null\n\treturn {\n\t\t__type: 'R2Object',\n\t\tkey: obj.key,\n\t\tversion: obj.version,\n\t\tsize: obj.size,\n\t\tetag: obj.etag,\n\t\thttpEtag: obj.httpEtag,\n\t\tchecksums: obj.checksums,\n\t\tuploaded: obj.uploaded?.toISOString(),\n\t\thttpMetadata: obj.httpMetadata,\n\t\tcustomMetadata: obj.customMetadata,\n\t\trange: obj.range,\n\t\tstorageClass: obj.storageClass\n\t}\n}\n\nfunction serializeR2ObjectBody(obj, bodyData) {\n\tif (!obj) return null\n\treturn {\n\t\t__type: 'R2ObjectBody',\n\t\tkey: obj.key,\n\t\tversion: obj.version,\n\t\tsize: obj.size,\n\t\tetag: obj.etag,\n\t\thttpEtag: obj.httpEtag,\n\t\tchecksums: obj.checksums,\n\t\tuploaded: obj.uploaded?.toISOString(),\n\t\thttpMetadata: obj.httpMetadata,\n\t\tcustomMetadata: obj.customMetadata,\n\t\trange: obj.range,\n\t\tstorageClass: obj.storageClass,\n\t\tbodyData\n\t}\n}\n\nfunction serializeR2Objects(result) {\n\tif (!result) return null\n\treturn {\n\t\tobjects: result.objects.map(serializeR2Object),\n\t\ttruncated: result.truncated,\n\t\tcursor: result.cursor,\n\t\tdelimitedPrefixes: result.delimitedPrefixes\n\t}\n}\n\nasync function serializeResponse(response) {\n\tlet body = null\n\tif (response.body) {\n\t\tconst bytes = await response.arrayBuffer()\n\t\tif (bytes.byteLength > HTTP_TRANSFER_THRESHOLD) {\n\t\t\tthrow new Error(\n\t\t\t\t'[devflare][bridge] Response body (' + bytes.byteLength + ' bytes) exceeds the '\n\t\t\t\t+ HTTP_TRANSFER_THRESHOLD + '-byte inline limit. DO and service-binding fetch responses '\n\t\t\t\t+ 'are delivered inline over the bridge WebSocket and cannot be streamed locally; keep '\n\t\t\t\t+ 'proxied response bodies under the limit (large R2 objects are exempt \u2014 read them through '\n\t\t\t\t+ 'the R2 binding, which uses the HTTP transfer side-channel).'\n\t\t\t)\n\t\t}\n\t\tif (bytes.byteLength > 0) {\n\t\t\tbody = { type: 'bytes', data: arrayBufferToBase64(bytes) }\n\t\t}\n\t}\n\treturn {\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: [...response.headers.entries()],\n\t\tbody\n\t}\n}\n\nfunction deserializeRequest(serializedReq) {\n\treturn new Request(serializedReq.url, {\n\t\tmethod: serializedReq.method,\n\t\theaders: serializedReq.headers,\n\t\tbody: serializedReq.body?.type === 'bytes'\n\t\t\t? base64ToArrayBuffer(serializedReq.body.data)\n\t\t\t: undefined,\n\t\tredirect: serializedReq.redirect\n\t})\n}\n\nfunction createEmailMessageRaw(raw) {\n\tif (typeof raw === 'string' || raw instanceof ReadableStream) {\n\t\treturn raw\n\t}\n\tif (raw instanceof ArrayBuffer || raw instanceof Uint8Array) {\n\t\treturn new Response(raw).body\n\t}\n\tthrow new Error('Unsupported EmailMessage raw payload')\n}\n\nfunction isDurableObjectNamespace(binding) {\n\treturn !!binding\n\t\t&& typeof binding.idFromName === 'function'\n\t\t&& typeof binding.idFromString === 'function'\n\t\t&& typeof binding.newUniqueId === 'function'\n}\n\n/**\n * Resolve a (possibly jurisdiction-scoped) DurableObjectNamespace.\n * Forwards the jurisdiction faithfully when the binding supports it\n * (real Cloudflare), and degrades to the plain binding otherwise\n * (miniflare/workerd local emulation, which does not pin jurisdictions).\n */\nfunction resolveDoNamespace(binding, jurisdiction) {\n\tif (jurisdiction && typeof binding.jurisdiction === 'function') {\n\t\treturn binding.jurisdiction(jurisdiction)\n\t}\n\treturn binding\n}\n\n/**\n * Execute an RPC method against the gateway's bindings.\n *\n * Method format: \"binding.operation\". Operations must be namespaced by\n * binding kind (e.g. \"kv.get\", \"r2.head\", \"d1.stmt.first\", \"do.fetch\",\n * \"service.fetch\", \"queue.send\", \"email.send\", \"ai.run\"). Bare verbs and the legacy\n * \"stmt.*\" / \"stub.*\" sub-prefixes were removed in B3-final and now throw.\n * Method vocabulary must stay in sync with the canonical server in\n * src/bridge/server.ts.\n */\nasync function executeRpcMethod(method, params, env, _ctx) {\n\tconst parts = method.split('.')\n\tif (parts.length < 2) throw new Error('Invalid method format: ' + method)\n\n\tconst bindingName = parts[0]\n\tconst operation = parts.slice(1).join('.')\n\tconst binding = env[bindingName]\n\n\tif (!binding) throw new Error('Binding not found: ' + bindingName)\n\n\tconst isNamespaced =\n\t\toperation.indexOf('kv.') === 0 ||\n\t\toperation.indexOf('r2.') === 0 ||\n\t\toperation.indexOf('d1.') === 0 ||\n\t\toperation.indexOf('do.') === 0 ||\n\t\toperation.indexOf('service.') === 0 ||\n\t\toperation.indexOf('queue.') === 0 ||\n\t\toperation.indexOf('email.') === 0 ||\n\t\toperation.indexOf('ai.') === 0 ||\n\t\toperation.indexOf('workflow.') === 0 ||\n\t\toperation.indexOf('var.') === 0\n\tif (!isNamespaced) {\n\t\tthrow new Error(createUnsupportedBridgeOperationErrorMessage(bindingName, operation))\n\t}\n\n\t// KV\n\tif (operation === 'kv.get') return binding.get(params[0], params[1])\n\tif (operation === 'kv.put') return binding.put(params[0], params[1], params[2])\n\tif (operation === 'kv.delete') return binding.delete(params[0])\n\tif (operation === 'kv.list') return binding.list(params[0])\n\tif (operation === 'kv.getWithMetadata') return binding.getWithMetadata(params[0], params[1])\n\n\t// DO get (returns DOStub reference)\n\tif (operation === 'do.get') {\n\t\treturn { __type: 'DOStub', binding: bindingName, id: params[0] }\n\t}\n\n\t// R2\n\tif (operation === 'r2.head') return serializeR2Object(await binding.head(params[0]))\n\tif (operation === 'r2.get') {\n\t\tconst obj = await binding.get(params[0], params[1])\n\t\tif (!obj) return null\n\t\tconst body = await obj.arrayBuffer()\n\t\treturn serializeR2ObjectBody(obj, arrayBufferToBase64(body))\n\t}\n\tif (operation === 'r2.put') {\n\t\tlet value = params[1]\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (value.__type === 'ArrayBuffer' || value.__type === 'Uint8Array') {\n\t\t\t\tvalue = base64ToArrayBuffer(value.data)\n\t\t\t}\n\t\t}\n\t\treturn serializeR2Object(await binding.put(params[0], value, params[2]))\n\t}\n\tif (operation === 'r2.delete') return binding.delete(params[0])\n\tif (operation === 'r2.list') return serializeR2Objects(await binding.list(params[0]))\n\n\t// D1\n\tif (operation === 'd1.exec') return binding.exec(params[0])\n\tif (operation === 'd1.batch') {\n\t\tconst statements = params[0].map((s) => binding.prepare(s.sql).bind(...(s.bindings || [])))\n\t\treturn binding.batch(statements)\n\t}\n\tif (operation.indexOf('d1.stmt.') === 0) {\n\t\tconst mode = operation.split('.')[2]\n\t\tconst [sql, ...rest] = params\n\t\tlet bindings = rest\n\t\tlet extraParam\n\t\tif (mode === 'first' || mode === 'raw') {\n\t\t\textraParam = rest[rest.length - 1]\n\t\t\tbindings = rest.slice(0, -1)\n\t\t}\n\t\tlet stmt = binding.prepare(sql)\n\t\tif (bindings.length > 0) stmt = stmt.bind(...bindings)\n\t\tif (mode === 'first') {\n\t\t\tif (typeof extraParam === 'string' && extraParam.length > 0) return stmt.first(extraParam)\n\t\t\treturn stmt.first()\n\t\t}\n\t\tif (mode === 'all') return stmt.all()\n\t\tif (mode === 'run') return stmt.run()\n\t\tif (mode === 'raw') return stmt.raw(extraParam)\n\t\tthrow new Error('Unknown stmt mode: ' + mode)\n\t}\n\n\t// Durable Objects\n\tif (operation === 'do.idFromName') {\n\t\tconst ns = resolveDoNamespace(binding, params[1])\n\t\tconst id = ns.idFromName(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.idFromString') {\n\t\tconst id = binding.idFromString(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.newUniqueId') {\n\t\tconst ns = resolveDoNamespace(binding, params[1])\n\t\tconst id = ns.newUniqueId(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.fetch') {\n\t\tconst [, serializedId, serializedReq] = params\n\t\tconst id = binding.idFromString(serializedId.hex)\n\t\tconst stub = binding.get(id)\n\t\tconst response = await stub.fetch(new Request(serializedReq.url, {\n\t\t\tmethod: serializedReq.method,\n\t\t\theaders: serializedReq.headers,\n\t\t\tbody: serializedReq.body?.type === 'bytes'\n\t\t\t\t? base64ToArrayBuffer(serializedReq.body.data)\n\t\t\t\t: undefined\n\t\t}))\n\t\treturn serializeResponse(response)\n\t}\n\tif (operation === 'do.rpc') {\n\t\tconst [, serializedId, methodName, args] = params\n\t\tconst id = binding.idFromString(serializedId.hex)\n\t\tconst stub = binding.get(id)\n\t\tconst response = await stub.fetch(new Request('http://do/_rpc', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ method: methodName, params: args })\n\t\t}))\n\t\tconst result = await response.json()\n\t\tif (!result.ok) throw new Error(result.error?.message || 'RPC failed')\n\t\treturn result.result\n\t}\n\n\t// Service Bindings\n\tif (operation === 'service.fetch') {\n\t\tif (!binding || typeof binding.fetch !== 'function') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' does not support fetch()')\n\t\t}\n\t\tconst response = await binding.fetch(deserializeRequest(params[0]))\n\t\treturn serializeResponse(response)\n\t}\n\tif (operation === 'service.rpc') {\n\t\tconst methodName = params[0]\n\t\tif (typeof methodName !== 'string') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' RPC method name must be a string')\n\t\t}\n\t\tconst args = Array.isArray(params[1]) ? params[1] : []\n\t\tconst method = binding && binding[methodName]\n\t\tif (typeof method !== 'function') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' does not support ' + methodName + '()')\n\t\t}\n\t\treturn method.apply(binding, args)\n\t}\n\n\t// Queues\n\tif (operation === 'queue.send') return binding.send(params[0], params[1])\n\tif (operation === 'queue.sendBatch') return binding.sendBatch(params[0], params[1])\n\n\t// Send Email\n\tif (operation === 'email.send') {\n\t\tif (binding && typeof binding.send === 'function') {\n\t\t\tconst message = params[0]\n\t\t\tif (message && typeof message === 'object' && 'from' in message && 'to' in message && 'raw' in message) {\n\t\t\t\treturn binding.send({\n\t\t\t\t\tfrom: message.from,\n\t\t\t\t\tto: message.to,\n\t\t\t\t\t[RAW_EMAIL]: createEmailMessageRaw(message.raw)\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn binding.send(message)\n\t\t}\n\t\treturn { ok: true, simulated: true }\n\t}\n\n\t// Workflows\n\tif (operation === 'workflow.create') {\n\t\treturn serializeWorkflowInstance(await binding.create(params[0]))\n\t}\n\tif (operation === 'workflow.get') {\n\t\treturn serializeWorkflowInstance(await binding.get(params[0]))\n\t}\n\tif (operation === 'workflow.status') {\n\t\treturn (await binding.get(params[0])).status()\n\t}\n\tif (operation === 'workflow.pause') {\n\t\treturn (await binding.get(params[0])).pause()\n\t}\n\tif (operation === 'workflow.resume') {\n\t\treturn (await binding.get(params[0])).resume()\n\t}\n\tif (operation === 'workflow.terminate') {\n\t\treturn (await binding.get(params[0])).terminate()\n\t}\n\tif (operation === 'workflow.restart') {\n\t\treturn (await binding.get(params[0])).restart()\n\t}\n\tif (operation === 'workflow.sendEvent') {\n\t\treturn (await binding.get(params[0])).sendEvent(params[1])\n\t}\n\n\t// AI / generic run()\n\tif (operation === 'ai.run') {\n\t\tif (typeof binding.run !== 'function') {\n\t\t\tthrow new Error('Binding ' + bindingName + ' does not support run(): ' + method)\n\t\t}\n\t\treturn binding.run(params[0], params[1])\n\t}\n\n\tthrow new Error('Unknown operation: ' + method)\n}\n\nfunction createUnsupportedBridgeOperationErrorMessage(bindingName, operation) {\n\tconst base = \"[devflare][bridge] Unsupported bridge operation '\" + operation + \"' for binding '\" + bindingName + \"'.\"\n\tif (operation === 'fetch') {\n\t\treturn base + ' Devflare could not dispatch fetch() for this binding through the local bridge. '\n\t\t\t+ 'Expected Cloudflare API: env.' + bindingName + '.fetch(request). '\n\t\t\t+ 'If this came from SvelteKit platform.env, make sure the binding is declared as a service binding; '\n\t\t\t+ 'this is a Devflare local bridge issue when service bindings fall back to a bare fetch operation.'\n\t}\n\tif (operation === 'toString') {\n\t\treturn base + ' A platform.env value was coerced to a string through the bridge. '\n\t\t\t+ 'For SvelteKit local dev, declared vars should be plain string values and missing env names should read as undefined.'\n\t}\n\treturn base + ' Bare verbs and the legacy stmt.*/stub.* sub-prefixes are not supported; '\n\t\t+ 'use the namespaced form (e.g. kv.get, r2.put, d1.stmt.first, do.fetch, service.fetch).'\n}\n\nfunction serializeWorkflowInstance(instance) {\n\treturn {\n\t\t__type: 'WorkflowInstance',\n\t\tid: instance.id\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// WebSocket bridge (shared with src/bridge/server.ts in shape)\n// ---------------------------------------------------------------------------\n// NOTE: wsProxies is intentionally created per handleBridgeWebSocket call so\n// state never leaks across connections or across gateway-script regenerations.\n\nasync function handleBridgeRpcCall(msg, ws, env, ctx) {\n\ttry {\n\t\tconst result = await executeRpcMethod(msg.method, msg.params, env, ctx)\n\t\tws.send(JSON.stringify({ t: 'rpc.ok', id: msg.id, result }))\n\t} catch (error) {\n\t\tws.send(JSON.stringify({\n\t\t\tt: 'rpc.err',\n\t\t\tid: msg.id,\n\t\t\terror: {\n\t\t\t\tcode: error?.code || 'INTERNAL_ERROR',\n\t\t\t\tmessage: error?.message || String(error)\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function handleBridgeWsOpen(msg, ws, env, wsProxies) {\n\ttry {\n\t\tconst binding = env[msg.target.binding]\n\t\tconst id = binding.idFromString(msg.target.id)\n\t\tconst stub = binding.get(id)\n\n\t\tconst headers = new Headers(msg.target.headers || [])\n\t\theaders.set('Upgrade', 'websocket')\n\n\t\tconst response = await stub.fetch(new Request(msg.target.url, { method: 'GET', headers }))\n\t\tconst doWs = response.webSocket\n\n\t\tif (!doWs) {\n\t\t\tws.send(JSON.stringify({\n\t\t\t\tt: 'rpc.err',\n\t\t\t\tid: 'ws_' + msg.wid,\n\t\t\t\terror: { code: 'WS_FAILED', message: 'No WebSocket returned' }\n\t\t\t}))\n\t\t\treturn\n\t\t}\n\n\t\tdoWs.accept()\n\t\twsProxies.set(msg.wid, { doWs })\n\n\t\tdoWs.addEventListener('message', (event) => {\n\t\t\tconst isText = typeof event.data === 'string'\n\t\t\tconst payload = isText\n\t\t\t\t? new TextEncoder().encode(event.data)\n\t\t\t\t: new Uint8Array(event.data)\n\t\t\tconst flags = isText ? 2 : 0\n\t\t\tws.send(encodeWsDataFrame(msg.wid, flags, payload))\n\t\t})\n\n\t\tdoWs.addEventListener('close', (event) => {\n\t\t\tws.send(JSON.stringify({ t: 'ws.close', wid: msg.wid, code: event.code, reason: event.reason }))\n\t\t\twsProxies.delete(msg.wid)\n\t\t})\n\n\t\tws.send(JSON.stringify({ t: 'ws.opened', wid: msg.wid }))\n\t} catch (error) {\n\t\tws.send(JSON.stringify({\n\t\t\tt: 'rpc.err',\n\t\t\tid: 'ws_' + msg.wid,\n\t\t\terror: { code: 'WS_FAILED', message: error.message }\n\t\t}))\n\t}\n}\n\nfunction handleBridgeWsClose(msg, wsProxies) {\n\tconst proxy = wsProxies.get(msg.wid)\n\tif (proxy) {\n\t\tproxy.doWs.close(msg.code, msg.reason)\n\t\twsProxies.delete(msg.wid)\n\t}\n}\n\n// Relay an inbound binary WsData frame (client -> DO). Mirrors server.ts\n// handleBinaryMessage: decode the frame, look up the proxy by ws id, and forward\n// the payload to the DO socket honoring the TEXT flag.\nfunction handleBridgeBinaryMessage(buffer, wsProxies) {\n\tconst frame = decodeWsDataFrame(buffer)\n\tif (!frame || frame.kind !== 2) return\n\tconst proxy = wsProxies.get(frame.id)\n\tif (!proxy) return\n\tif ((frame.flags & 2) !== 0) {\n\t\tproxy.doWs.send(new TextDecoder().decode(frame.payload))\n\t} else {\n\t\tproxy.doWs.send(frame.payload)\n\t}\n}\n\nasync function handleBridgeJsonMessage(data, ws, env, ctx, wsProxies) {\n\tconst msg = JSON.parse(data)\n\tswitch (msg.t) {\n\t\tcase 'hello':\n\t\t\t// v2 handshake \u2014 acknowledge with welcome echoing the negotiated\n\t\t\t// capability intersection. The gateway advertises only what it\n\t\t\t// implements end-to-end: 'ws-relay' (binary WsData relay to/from DO\n\t\t\t// sockets) and 'http-transfer' (the R2 transfer HTTP side-channel).\n\t\t\t// 'streams' is intentionally NOT advertised \u2014 large DO/service-fetch\n\t\t\t// responses are inlined, not streamed, in this gateway.\n\t\t\tws.send(JSON.stringify({\n\t\t\t\tt: 'welcome',\n\t\t\t\tprotocolVersion: 2,\n\t\t\t\tcapabilities: ['ws-relay', 'http-transfer']\n\t\t\t\t\t.filter((c) => Array.isArray(msg.capabilities) && msg.capabilities.includes(c))\n\t\t\t\t\t.sort()\n\t\t\t}))\n\t\t\tbreak\n\t\tcase 'rpc.call':\n\t\t\tawait handleBridgeRpcCall(msg, ws, env, ctx)\n\t\t\tbreak\n\t\tcase 'ws.open':\n\t\t\tawait handleBridgeWsOpen(msg, ws, env, wsProxies)\n\t\t\tbreak\n\t\tcase 'ws.close':\n\t\t\thandleBridgeWsClose(msg, wsProxies)\n\t\t\tbreak\n\t}\n}\n\nfunction handleBridgeWebSocket(request, env, ctx) {\n\tconst { 0: client, 1: server } = new WebSocketPair()\n\tserver.accept()\n\n\t// Per-connection state: recreated for every bridge client so reloads and\n\t// concurrent clients never share WS proxy entries.\n\tconst wsProxies = new Map()\n\n\tserver.addEventListener('message', async (event) => {\n\t\ttry {\n\t\t\tif (typeof event.data === 'string') {\n\t\t\t\tawait handleBridgeJsonMessage(event.data, server, env, ctx, wsProxies)\n\t\t\t} else {\n\t\t\t\thandleBridgeBinaryMessage(event.data, wsProxies)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[Gateway] Error:', error)\n\t\t}\n\t})\n\n\tserver.addEventListener('close', () => {\n\t\tfor (const proxy of wsProxies.values()) {\n\t\t\t// Best-effort cleanup: the DO-side WS may already be closed or in an\n\t\t\t// invalid state; any throw here would abort sibling closes. Surface\n\t\t\t// the swallowed error when DEVFLARE_DEBUG_BRIDGE is enabled.\n\t\t\ttry { proxy.doWs.close() } catch (error) {\n\t\t\t\tif (globalThis.DEVFLARE_DEBUG_BRIDGE) {\n\t\t\t\t\tconsole.warn('[devflare:bridge] proxy.doWs.close() failed', error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\twsProxies.clear()\n\t})\n\n\treturn new Response(null, { status: 101, webSocket: client })\n}\n\n// ---------------------------------------------------------------------------\n// HTTP transfer for R2 bodies (shared with src/bridge/server.ts in shape)\n// ---------------------------------------------------------------------------\n\nasync function handleHttpTransfer(request, env, url) {\n\tconst transferIdEncoded = url.pathname.split('/').pop()\n\tconst transferId = decodeURIComponent(transferIdEncoded || '')\n\tconst [binding, ...keyParts] = transferId.split(':')\n\tconst key = keyParts.join(':')\n\tconst bucket = env[binding]\n\n\tif (!bucket) return new Response('Bucket not found: ' + binding, { status: 404 })\n\n\tif (request.method === 'PUT' || request.method === 'POST') {\n\t\tconst result = await bucket.put(key, request.body)\n\t\treturn new Response(JSON.stringify(serializeR2Object(result)), {\n\t\t\theaders: { 'Content-Type': 'application/json' }\n\t\t})\n\t}\n\n\tif (request.method === 'GET') {\n\t\tconst object = await bucket.get(key)\n\t\tif (!object) return new Response('Not found', { status: 404 })\n\t\treturn new Response(object.body, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': object.httpMetadata?.contentType || 'application/octet-stream',\n\t\t\t\t'Content-Length': String(object.size)\n\t\t\t}\n\t\t})\n\t}\n\n\treturn new Response('Method not allowed', { status: 405 })\n}\n";
8
+ //# sourceMappingURL=gateway-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/bridge/gateway-runtime.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,+1pBAilB9B,CAAA"}
@@ -1,7 +1,7 @@
1
- export { type JsonMsg, type RpcCall, type RpcOk, type RpcErr, type StreamPull, type StreamOpen, type StreamEnd, type StreamAbort, type WsOpen, type WsOpened, type WsClose, type EventMsg, type HttpTransfer, type DecodedBinaryFrame, BinaryKind, BinaryFlags, BINARY_HEADER_SIZE, encodeBinaryFrame, decodeBinaryFrame, isFin, isText, parseJsonMsg, stringifyJsonMsg, nextRpcId, nextStreamId, nextWsId, resetIdCounters, DEFAULT_CHUNK_SIZE, HTTP_TRANSFER_THRESHOLD, DEFAULT_BRIDGE_PORT, DEFAULT_HTTP_PORT } from './protocol';
2
- export { type SerializedRequest, type SerializedResponse, type BodyRef, serializeRequest, deserializeRequest, serializeResponse, deserializeResponse, serializeValue, deserializeValue, serializeDOId } from './serialization';
3
- export { type BridgeClientOptions, type PendingCall, BridgeClient, getClient } from './client';
4
- export { type EnvProxyOptions, type BindingHints, createEnvProxy, bridgeEnv, env, initEnv, setBindingHints } from './proxy';
5
- export { startMiniflare, startMiniflareFromConfig, getMiniflare, stopMiniflare, type MiniflareInstance, type MiniflareOptions } from './miniflare';
6
- export { default as gateway } from './server';
1
+ export { type JsonMsg, type RpcCall, type RpcOk, type RpcErr, type StreamPull, type StreamOpen, type StreamEnd, type StreamAbort, type WsOpen, type WsOpened, type WsClose, type EventMsg, type HttpTransfer, type DecodedBinaryFrame, BinaryKind, BinaryFlags, BINARY_HEADER_SIZE, encodeBinaryFrame, decodeBinaryFrame, isFin, isText, parseJsonMsg, stringifyJsonMsg, nextRpcId, nextStreamId, nextWsId, resetIdCounters, DEFAULT_CHUNK_SIZE, HTTP_TRANSFER_THRESHOLD, DEFAULT_BRIDGE_PORT, DEFAULT_HTTP_PORT } from './v2/wire.js';
2
+ export { type SerializedRequest, type SerializedResponse, type BodyRef, serializeRequest, deserializeRequest, serializeResponse, deserializeResponse, serializeValue, deserializeValue, serializeDOId } from './v2/value-serialization.js';
3
+ export { type BridgeClientOptions, type PendingCall, BridgeClient, getClient } from './client.js';
4
+ export { type EnvProxyOptions, type BindingHints, createEnvProxy, bridgeEnv, initEnv, setBindingHints } from './proxy.js';
5
+ export { startMiniflare, startMiniflareFromConfig, getMiniflare, stopMiniflare, type MiniflareInstance, type MiniflareOptions } from './miniflare.js';
6
+ export { default as gateway } from './server.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,YAAY,EACZ,SAAS,EACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,cAAc,EACd,SAAS,EACT,GAAG,EACH,OAAO,EACP,eAAe,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACN,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,YAAY,EACZ,SAAS,EACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,cAAc,EACd,SAAS,EACT,OAAO,EACP,eAAe,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACN,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare const bridgeLog: {
2
+ warn(message: string, error?: unknown): void;
3
+ debug(message: string, error?: unknown): void;
4
+ };
5
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/bridge/log.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS;IACrB,IAAI,UAAU,MAAM,UAAU,OAAO,GAAG,IAAI;IAI5C,KAAK,UAAU,MAAM,UAAU,OAAO,GAAG,IAAI;CAI7C,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { Miniflare as MiniflareType } from 'miniflare';
2
- import { type DevflareConfig } from '../config';
2
+ import { type DevflareConfig } from '../config/index.js';
3
+ import { type LocalSecretWrappedBindingConfig } from '../secrets/local-secrets.js';
3
4
  export interface MiniflareInstance {
4
5
  /** Ready promise - resolves when Miniflare is ready */
5
6
  ready: Promise<void>;
@@ -20,6 +21,7 @@ export interface MiniflareInstance {
20
21
  /** The underlying Miniflare instance */
21
22
  _mf: MiniflareType;
22
23
  }
24
+ export declare function isIgnorableMiniflareDisposeError(error: unknown): boolean;
23
25
  export interface MiniflareOptions {
24
26
  /** Devflare config to derive bindings from */
25
27
  config?: DevflareConfig;
@@ -44,13 +46,94 @@ export interface MiniflareOptions {
44
46
  d1Databases?: string[] | Record<string, string>;
45
47
  /** Queue bindings */
46
48
  queues?: string[];
49
+ /** Rate Limiting bindings */
50
+ rateLimits?: Record<string, {
51
+ simple: {
52
+ limit: number;
53
+ period: 10 | 60;
54
+ };
55
+ }>;
56
+ /** Version Metadata binding name */
57
+ versionMetadata?: string;
58
+ /** Worker Loader bindings */
59
+ workerLoaders?: Record<string, Record<string, never>>;
60
+ /** mTLS Certificate bindings */
61
+ mtlsCertificates?: Record<string, {
62
+ certificate_id: string;
63
+ remote?: boolean;
64
+ }>;
65
+ /** Dispatch Namespace bindings */
66
+ dispatchNamespaces?: Record<string, {
67
+ namespace: string;
68
+ }>;
69
+ /** Workflow bindings */
70
+ workflows?: Record<string, {
71
+ name: string;
72
+ className: string;
73
+ scriptName?: string;
74
+ stepLimit?: number;
75
+ }>;
76
+ /** Pipeline bindings */
77
+ pipelines?: Record<string, string | {
78
+ pipeline: string;
79
+ }>;
80
+ /** Images binding */
81
+ images?: {
82
+ binding: string;
83
+ };
84
+ /** Media Transformations binding */
85
+ media?: {
86
+ binding: string;
87
+ };
88
+ /** Analytics Engine dataset bindings */
89
+ analyticsEngine?: Record<string, {
90
+ dataset: string;
91
+ }>;
92
+ /** Tail consumer service names (cross-Worker tail delivery) */
93
+ tailConsumers?: string[];
94
+ /** Streaming tail consumer service names (cross-Worker streaming tail delivery) */
95
+ streamingTailConsumers?: string[];
96
+ /** Artifacts bindings */
97
+ artifacts?: Record<string, {
98
+ namespace: string;
99
+ }>;
100
+ /** Secrets Store bindings */
101
+ secretsStore?: Record<string, {
102
+ store_id: string;
103
+ secret_name: string;
104
+ }>;
105
+ /** Send Email bindings */
106
+ sendEmail?: Record<string, {
107
+ destinationAddress?: string;
108
+ allowedDestinationAddresses?: string[];
109
+ allowedSenderAddresses?: string[];
110
+ remote?: boolean;
111
+ }>;
47
112
  /** Environment variables */
48
- bindings?: Record<string, string>;
113
+ bindings?: Record<string, unknown>;
114
+ /** Service bindings */
115
+ serviceBindings?: Record<string, {
116
+ name: string;
117
+ entrypoint?: string;
118
+ }>;
119
+ /** Wrapped bindings to expose object-shaped local binding shims */
120
+ wrappedBindings?: LocalSecretWrappedBindingConfig['wrappedBindings'];
121
+ /** Additional module workers needed by wrapped bindings */
122
+ auxiliaryWorkers?: LocalSecretWrappedBindingConfig['workers'];
123
+ /** Node-side binding shims merged into `getBindings()` results */
124
+ nodeBindingOverrides?: Record<string, unknown>;
125
+ /** Project root used to load `.dev.vars`/`.env*` for config-based Miniflare */
126
+ cwd?: string;
127
+ /** Config file path used as the anchor for `.dev.vars`/`.env*` */
128
+ configPath?: string;
129
+ /** Cloudflare environment name used for local dev var file selection */
130
+ environment?: string;
49
131
  /** Compatibility date */
50
132
  compatibilityDate?: string;
51
133
  /** Compatibility flags */
52
134
  compatibilityFlags?: string[];
53
135
  }
136
+ export declare function createMiniflareInstanceHandle(mf: MiniflareType, primaryWorkerName?: string, nodeBindingOverrides?: Record<string, unknown>): MiniflareInstance;
54
137
  /**
55
138
  * Start a Miniflare instance with the given configuration
56
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"miniflare.d.ts","sourceRoot":"","sources":["../../src/bridge/miniflare.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAsB,KAAK,cAAc,EAA6B,MAAM,WAAW,CAAA;AAM9F,MAAM,WAAW,iBAAiB;IACjC,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,qCAAqC;IACrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,2CAA2C;IAC3C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,kDAAkD;IAClD,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;IAC/C,+CAA+C;IAC/C,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACzC,iDAAiD;IACjD,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAC7C,qDAAqD;IACrD,yBAAyB,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAA;IACrE,2CAA2C;IAC3C,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAC7C,wCAAwC;IACxC,GAAG,EAAE,aAAa,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3E,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B;AAwLD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+F/F;AAMD;;GAEG;AACH,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAQD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAKzF;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD"}
1
+ {"version":3,"file":"miniflare.d.ts","sourceRoot":"","sources":["../../src/bridge/miniflare.ts"],"names":[],"mappings":"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"}