devflare 1.0.0-next.3 → 1.0.0-next.31

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 (537) hide show
  1. package/LLM.md +15964 -1751
  2. package/README.md +392 -605
  3. package/bin/devflare.js +24 -14
  4. package/dist/account-g99mzrqp.js +475 -0
  5. package/dist/api-2n6dd2ws.js +33 -0
  6. package/dist/bridge/client.d.ts +48 -6
  7. package/dist/bridge/client.d.ts.map +1 -1
  8. package/dist/bridge/gateway-runtime.d.ts +8 -0
  9. package/dist/bridge/gateway-runtime.d.ts.map +1 -0
  10. package/dist/bridge/index.d.ts +3 -3
  11. package/dist/bridge/index.d.ts.map +1 -1
  12. package/dist/bridge/log.d.ts +5 -0
  13. package/dist/bridge/log.d.ts.map +1 -0
  14. package/dist/bridge/miniflare.d.ts +74 -1
  15. package/dist/bridge/miniflare.d.ts.map +1 -1
  16. package/dist/bridge/proxy.d.ts +11 -10
  17. package/dist/bridge/proxy.d.ts.map +1 -1
  18. package/dist/bridge/server.d.ts +2 -1
  19. package/dist/bridge/server.d.ts.map +1 -1
  20. package/dist/bridge/v2/body-streams.d.ts +53 -0
  21. package/dist/bridge/v2/body-streams.d.ts.map +1 -0
  22. package/dist/bridge/v2/codec.d.ts +106 -0
  23. package/dist/bridge/v2/codec.d.ts.map +1 -0
  24. package/dist/bridge/v2/control-messages.d.ts +51 -0
  25. package/dist/bridge/v2/control-messages.d.ts.map +1 -0
  26. package/dist/bridge/v2/frames.d.ts +109 -0
  27. package/dist/bridge/v2/frames.d.ts.map +1 -0
  28. package/dist/bridge/v2/index.d.ts +11 -0
  29. package/dist/bridge/v2/index.d.ts.map +1 -0
  30. package/dist/bridge/v2/serialization.d.ts +48 -0
  31. package/dist/bridge/v2/serialization.d.ts.map +1 -0
  32. package/dist/bridge/v2/transport.d.ts +31 -0
  33. package/dist/bridge/v2/transport.d.ts.map +1 -0
  34. package/dist/bridge/v2/value-codec.d.ts +61 -0
  35. package/dist/bridge/v2/value-codec.d.ts.map +1 -0
  36. package/dist/bridge/{serialization.d.ts → v2/value-serialization.d.ts} +40 -18
  37. package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
  38. package/dist/bridge/{protocol.d.ts → v2/wire.d.ts} +28 -4
  39. package/dist/bridge/v2/wire.d.ts.map +1 -0
  40. package/dist/bridge/v2/ws-relay.d.ts +53 -0
  41. package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
  42. package/dist/browser-shim/handler.d.ts +1 -1
  43. package/dist/browser-shim/handler.d.ts.map +1 -1
  44. package/dist/browser-shim/server.d.ts +63 -0
  45. package/dist/browser-shim/server.d.ts.map +1 -1
  46. package/dist/browser.d.ts +4621 -0
  47. package/dist/browser.d.ts.map +1 -0
  48. package/dist/browser.js +147 -0
  49. package/dist/build-4tyjywn9.js +54 -0
  50. package/dist/bundler/defaults.d.ts +23 -0
  51. package/dist/bundler/defaults.d.ts.map +1 -0
  52. package/dist/bundler/do-bundler.d.ts +7 -0
  53. package/dist/bundler/do-bundler.d.ts.map +1 -1
  54. package/dist/bundler/index.d.ts +2 -0
  55. package/dist/bundler/index.d.ts.map +1 -1
  56. package/dist/bundler/rolldown-shared.d.ts +53 -0
  57. package/dist/bundler/rolldown-shared.d.ts.map +1 -0
  58. package/dist/bundler/worker-bundler.d.ts +13 -0
  59. package/dist/bundler/worker-bundler.d.ts.map +1 -0
  60. package/dist/bundler/worker-compat.d.ts +4 -0
  61. package/dist/bundler/worker-compat.d.ts.map +1 -0
  62. package/dist/cli/build-manifest.d.ts +66 -0
  63. package/dist/cli/build-manifest.d.ts.map +1 -0
  64. package/dist/cli/command-utils.d.ts +18 -0
  65. package/dist/cli/command-utils.d.ts.map +1 -0
  66. package/dist/cli/commands/account.d.ts +1 -1
  67. package/dist/cli/commands/account.d.ts.map +1 -1
  68. package/dist/cli/commands/build-artifacts.d.ts +40 -0
  69. package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
  70. package/dist/cli/commands/build.d.ts.map +1 -1
  71. package/dist/cli/commands/config.d.ts +4 -0
  72. package/dist/cli/commands/config.d.ts.map +1 -0
  73. package/dist/cli/commands/deploy/metadata.d.ts +18 -0
  74. package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
  75. package/dist/cli/commands/deploy/prepare.d.ts +23 -0
  76. package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
  77. package/dist/cli/commands/deploy/runtime.d.ts +4 -0
  78. package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
  79. package/dist/cli/commands/deploy/verification.d.ts +36 -0
  80. package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
  81. package/dist/cli/commands/deploy.d.ts +2 -2
  82. package/dist/cli/commands/deploy.d.ts.map +1 -1
  83. package/dist/cli/commands/dev.d.ts +8 -0
  84. package/dist/cli/commands/dev.d.ts.map +1 -1
  85. package/dist/cli/commands/doctor.d.ts.map +1 -1
  86. package/dist/cli/commands/init.d.ts.map +1 -1
  87. package/dist/cli/commands/login.d.ts +4 -0
  88. package/dist/cli/commands/login.d.ts.map +1 -0
  89. package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
  90. package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
  91. package/dist/cli/commands/previews-support/family.d.ts +10 -0
  92. package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
  93. package/dist/cli/commands/previews-support/render.d.ts +8 -0
  94. package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
  95. package/dist/cli/commands/previews-support/theme.d.ts +10 -0
  96. package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
  97. package/dist/cli/commands/previews-support/types.d.ts +70 -0
  98. package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
  99. package/dist/cli/commands/previews.d.ts +4 -0
  100. package/dist/cli/commands/previews.d.ts.map +1 -0
  101. package/dist/cli/commands/productions.d.ts +4 -0
  102. package/dist/cli/commands/productions.d.ts.map +1 -0
  103. package/dist/cli/commands/secrets.d.ts +4 -0
  104. package/dist/cli/commands/secrets.d.ts.map +1 -0
  105. package/dist/cli/commands/token.d.ts +4 -0
  106. package/dist/cli/commands/token.d.ts.map +1 -0
  107. package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
  108. package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
  109. package/dist/cli/commands/type-generation/generator.d.ts +112 -0
  110. package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
  111. package/dist/cli/commands/type-generation/models.d.ts +27 -0
  112. package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
  113. package/dist/cli/commands/types.d.ts.map +1 -1
  114. package/dist/cli/commands/worker.d.ts +4 -0
  115. package/dist/cli/commands/worker.d.ts.map +1 -0
  116. package/dist/cli/config-path.d.ts +6 -0
  117. package/dist/cli/config-path.d.ts.map +1 -0
  118. package/dist/cli/dependencies.d.ts +1 -0
  119. package/dist/cli/dependencies.d.ts.map +1 -1
  120. package/dist/cli/deploy-strategy.d.ts +17 -0
  121. package/dist/cli/deploy-strategy.d.ts.map +1 -0
  122. package/dist/cli/deploy-target.d.ts +17 -0
  123. package/dist/cli/deploy-target.d.ts.map +1 -0
  124. package/dist/cli/generated-artifacts.d.ts +12 -0
  125. package/dist/cli/generated-artifacts.d.ts.map +1 -0
  126. package/dist/cli/help-pages/pages/account.d.ts +3 -0
  127. package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
  128. package/dist/cli/help-pages/pages/core.d.ts +4 -0
  129. package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
  130. package/dist/cli/help-pages/pages/index.d.ts +3 -0
  131. package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
  132. package/dist/cli/help-pages/pages/misc.d.ts +3 -0
  133. package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
  134. package/dist/cli/help-pages/pages/previews.d.ts +3 -0
  135. package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
  136. package/dist/cli/help-pages/pages/productions.d.ts +3 -0
  137. package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
  138. package/dist/cli/help-pages/render.d.ts +12 -0
  139. package/dist/cli/help-pages/render.d.ts.map +1 -0
  140. package/dist/cli/help-pages/shared.d.ts +15 -0
  141. package/dist/cli/help-pages/shared.d.ts.map +1 -0
  142. package/dist/cli/help-pages/types.d.ts +23 -0
  143. package/dist/cli/help-pages/types.d.ts.map +1 -0
  144. package/dist/cli/help.d.ts +6 -0
  145. package/dist/cli/help.d.ts.map +1 -0
  146. package/dist/cli/index.d.ts +1 -0
  147. package/dist/cli/index.d.ts.map +1 -1
  148. package/dist/cli/index.js +12 -0
  149. package/dist/cli/package-metadata.d.ts +16 -0
  150. package/dist/cli/package-metadata.d.ts.map +1 -0
  151. package/dist/cli/preview-bindings.d.ts +49 -0
  152. package/dist/cli/preview-bindings.d.ts.map +1 -0
  153. package/dist/cli/preview.d.ts +10 -0
  154. package/dist/cli/preview.d.ts.map +1 -0
  155. package/dist/cli/ui.d.ts +37 -0
  156. package/dist/cli/ui.d.ts.map +1 -0
  157. package/dist/cli/workspace-build-guard.d.ts +14 -0
  158. package/dist/cli/workspace-build-guard.d.ts.map +1 -0
  159. package/dist/cloudflare/account-core.d.ts +6 -0
  160. package/dist/cloudflare/account-core.d.ts.map +1 -0
  161. package/dist/cloudflare/account-resources.d.ts +40 -0
  162. package/dist/cloudflare/account-resources.d.ts.map +1 -0
  163. package/dist/cloudflare/account-status.d.ts +11 -0
  164. package/dist/cloudflare/account-status.d.ts.map +1 -0
  165. package/dist/cloudflare/account-workers.d.ts +14 -0
  166. package/dist/cloudflare/account-workers.d.ts.map +1 -0
  167. package/dist/cloudflare/account.d.ts +7 -64
  168. package/dist/cloudflare/account.d.ts.map +1 -1
  169. package/dist/cloudflare/api.d.ts +71 -3
  170. package/dist/cloudflare/api.d.ts.map +1 -1
  171. package/dist/cloudflare/auth.d.ts.map +1 -1
  172. package/dist/cloudflare/index.d.ts +57 -2
  173. package/dist/cloudflare/index.d.ts.map +1 -1
  174. package/dist/cloudflare/index.js +49 -2
  175. package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
  176. package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
  177. package/dist/cloudflare/kv-namespace.d.ts +4 -0
  178. package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
  179. package/dist/cloudflare/preferences.d.ts +7 -0
  180. package/dist/cloudflare/preferences.d.ts.map +1 -1
  181. package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
  182. package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
  183. package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
  184. package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
  185. package/dist/cloudflare/preview-registry-records.d.ts +4 -0
  186. package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
  187. package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
  188. package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
  189. package/dist/cloudflare/preview-registry-store.d.ts +14 -0
  190. package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
  191. package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
  192. package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
  193. package/dist/cloudflare/preview-registry-types.d.ts +103 -0
  194. package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
  195. package/dist/cloudflare/preview-registry.d.ts +42 -0
  196. package/dist/cloudflare/preview-registry.d.ts.map +1 -0
  197. package/dist/cloudflare/preview-urls.d.ts +3 -0
  198. package/dist/cloudflare/preview-urls.d.ts.map +1 -0
  199. package/dist/cloudflare/registry-schema.d.ts +253 -0
  200. package/dist/cloudflare/registry-schema.d.ts.map +1 -0
  201. package/dist/cloudflare/tokens.d.ts +44 -0
  202. package/dist/cloudflare/tokens.d.ts.map +1 -0
  203. package/dist/cloudflare/types.d.ts +124 -7
  204. package/dist/cloudflare/types.d.ts.map +1 -1
  205. package/dist/cloudflare/usage.d.ts +30 -2
  206. package/dist/cloudflare/usage.d.ts.map +1 -1
  207. package/dist/config/binding-resolution-helpers.d.ts +41 -0
  208. package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
  209. package/dist/config/compatibility.d.ts +3 -0
  210. package/dist/config/compatibility.d.ts.map +1 -0
  211. package/dist/config/compiler/bindings.d.ts +14 -0
  212. package/dist/config/compiler/bindings.d.ts.map +1 -0
  213. package/dist/config/compiler/core-helpers.d.ts +6 -0
  214. package/dist/config/compiler/core-helpers.d.ts.map +1 -0
  215. package/dist/config/compiler/do-workers.d.ts +34 -0
  216. package/dist/config/compiler/do-workers.d.ts.map +1 -0
  217. package/dist/config/compiler/paths.d.ts +18 -0
  218. package/dist/config/compiler/paths.d.ts.map +1 -0
  219. package/dist/config/compiler/types.d.ts +270 -0
  220. package/dist/config/compiler/types.d.ts.map +1 -0
  221. package/dist/config/compiler.d.ts +22 -134
  222. package/dist/config/compiler.d.ts.map +1 -1
  223. package/dist/config/define.d.ts +7 -4
  224. package/dist/config/define.d.ts.map +1 -1
  225. package/dist/config/deploy-resources.d.ts +58 -0
  226. package/dist/config/deploy-resources.d.ts.map +1 -0
  227. package/dist/config/env-vars.d.ts +309 -0
  228. package/dist/config/env-vars.d.ts.map +1 -0
  229. package/dist/config/framework-providers.d.ts +9 -0
  230. package/dist/config/framework-providers.d.ts.map +1 -0
  231. package/dist/config/index.d.ts +12 -5
  232. package/dist/config/index.d.ts.map +1 -1
  233. package/dist/config/loader.d.ts +1 -0
  234. package/dist/config/loader.d.ts.map +1 -1
  235. package/dist/config/local-dev-vars.d.ts +15 -0
  236. package/dist/config/local-dev-vars.d.ts.map +1 -0
  237. package/dist/config/preview-resources.d.ts +83 -0
  238. package/dist/config/preview-resources.d.ts.map +1 -0
  239. package/dist/config/preview.d.ts +31 -0
  240. package/dist/config/preview.d.ts.map +1 -0
  241. package/dist/config/ref.d.ts +14 -23
  242. package/dist/config/ref.d.ts.map +1 -1
  243. package/dist/config/resolve-phased.d.ts +72 -0
  244. package/dist/config/resolve-phased.d.ts.map +1 -0
  245. package/dist/config/resolve.d.ts +11 -0
  246. package/dist/config/resolve.d.ts.map +1 -0
  247. package/dist/config/resource-resolution.d.ts +80 -0
  248. package/dist/config/resource-resolution.d.ts.map +1 -0
  249. package/dist/config/schema-bindings.d.ts +1495 -0
  250. package/dist/config/schema-bindings.d.ts.map +1 -0
  251. package/dist/config/schema-build.d.ts +67 -0
  252. package/dist/config/schema-build.d.ts.map +1 -0
  253. package/dist/config/schema-env.d.ts +3023 -0
  254. package/dist/config/schema-env.d.ts.map +1 -0
  255. package/dist/config/schema-normalization.d.ts +184 -0
  256. package/dist/config/schema-normalization.d.ts.map +1 -0
  257. package/dist/config/schema-runtime.d.ts +500 -0
  258. package/dist/config/schema-runtime.d.ts.map +1 -0
  259. package/dist/config/schema-types-bindings-platform.d.ts +378 -0
  260. package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
  261. package/dist/config/schema-types-bindings-resources.d.ts +551 -0
  262. package/dist/config/schema-types-bindings-resources.d.ts.map +1 -0
  263. package/dist/config/schema-types-bindings.d.ts +254 -0
  264. package/dist/config/schema-types-bindings.d.ts.map +1 -0
  265. package/dist/config/schema-types-build.d.ts +86 -0
  266. package/dist/config/schema-types-build.d.ts.map +1 -0
  267. package/dist/config/schema-types-runtime.d.ts +917 -0
  268. package/dist/config/schema-types-runtime.d.ts.map +1 -0
  269. package/dist/config/schema-types.d.ts +424 -0
  270. package/dist/config/schema-types.d.ts.map +1 -0
  271. package/dist/config/schema.d.ts +4537 -2214
  272. package/dist/config/schema.d.ts.map +1 -1
  273. package/dist/config/service-bindings-validation.d.ts +36 -0
  274. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  275. package/dist/config-88sdhx3w.js +105 -0
  276. package/dist/config-entry.d.ts +7 -0
  277. package/dist/config-entry.d.ts.map +1 -0
  278. package/dist/config-entry.js +16 -0
  279. package/dist/decorators/durable-object.d.ts.map +1 -1
  280. package/dist/deploy-8fpav2cw.js +1066 -0
  281. package/dist/dev-nxevkfdv.js +2609 -0
  282. package/dist/dev-server/d1-migrations.d.ts +36 -0
  283. package/dist/dev-server/d1-migrations.d.ts.map +1 -0
  284. package/dist/dev-server/dev-server-state.d.ts +59 -0
  285. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  286. package/dist/dev-server/gateway-script.d.ts +21 -0
  287. package/dist/dev-server/gateway-script.d.ts.map +1 -0
  288. package/dist/dev-server/miniflare-bindings.d.ts +59 -0
  289. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  290. package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
  291. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  292. package/dist/dev-server/miniflare-log.d.ts +20 -0
  293. package/dist/dev-server/miniflare-log.d.ts.map +1 -0
  294. package/dist/dev-server/miniflare-worker-config.d.ts +74 -0
  295. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  296. package/dist/dev-server/reload-queue.d.ts +13 -0
  297. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  298. package/dist/dev-server/runtime-stdio.d.ts +8 -0
  299. package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
  300. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  301. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  302. package/dist/dev-server/server.d.ts +2 -0
  303. package/dist/dev-server/server.d.ts.map +1 -1
  304. package/dist/dev-server/vite-process.d.ts +15 -0
  305. package/dist/dev-server/vite-process.d.ts.map +1 -0
  306. package/dist/dev-server/vite-utils.d.ts +19 -1
  307. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  308. package/dist/dev-server/worker-source-watcher.d.ts +17 -0
  309. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
  310. package/dist/dev-server/worker-surface-paths.d.ts +6 -0
  311. package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
  312. package/dist/{doctor-fmgb3d28.js → doctor-ztwx1y95.js} +104 -35
  313. package/dist/{durable-object-t4kbb0yt.js → durable-object-v3gsnybk.js} +1 -1
  314. package/dist/env.d.ts +10 -0
  315. package/dist/env.d.ts.map +1 -1
  316. package/dist/index-11p28kxx.js +256 -0
  317. package/dist/index-15fpa5tx.js +232 -0
  318. package/dist/index-1d4jg11n.js +542 -0
  319. package/dist/index-3edvz3hs.js +124 -0
  320. package/dist/index-3jme4hgw.js +1234 -0
  321. package/dist/index-627srx16.js +45 -0
  322. package/dist/index-62b3gt2g.js +12 -0
  323. package/dist/index-67gr49zr.js +109 -0
  324. package/dist/index-69c0ed4a.js +895 -0
  325. package/dist/index-6sj0v0dk.js +2284 -0
  326. package/dist/index-7qd7nmdd.js +74 -0
  327. package/dist/index-85yjb686.js +413 -0
  328. package/dist/index-aabgympv.js +39 -0
  329. package/dist/{index-z14anrqp.js → index-aqrwyy57.js} +93 -31
  330. package/dist/index-c8p4njqy.js +479 -0
  331. package/dist/index-dfcp9hsd.js +1581 -0
  332. package/dist/index-dm9q84c7.js +360 -0
  333. package/dist/index-fcmj6641.js +147 -0
  334. package/dist/index-ft3trvra.js +476 -0
  335. package/dist/{index-18hvb6gb.js → index-gn5wy09x.js} +13 -2
  336. package/dist/index-hjjfxv02.js +708 -0
  337. package/dist/index-hpwa6vsw.js +239 -0
  338. package/dist/index-k9x5v335.js +1033 -0
  339. package/dist/index-mg8vwqxf.js +514 -0
  340. package/dist/index-ptwem1nt.js +1428 -0
  341. package/dist/{index-07q6yxyc.js → index-q8f4kawk.js} +68 -32
  342. package/dist/index-qmmqww7h.js +133 -0
  343. package/dist/{index-rbht7m9r.js → index-qwgr4q7s.js} +2 -1
  344. package/dist/index-qz6nbwpw.js +111 -0
  345. package/dist/index-rzp9ejrh.js +185 -0
  346. package/dist/index-s3km3y34.js +1205 -0
  347. package/dist/index-stgn34cr.js +148 -0
  348. package/dist/index-t9y0sve5.js +155 -0
  349. package/dist/index-vez803pp.js +52 -0
  350. package/dist/index-vhqww6tt.js +307 -0
  351. package/dist/index-xz18tstn.js +581 -0
  352. package/dist/{index-1xpj0m4r.js → index-z9gy8w6b.js} +1 -1
  353. package/dist/index-za0r01bx.js +588 -0
  354. package/dist/index.d.ts +3 -7
  355. package/dist/index.d.ts.map +1 -1
  356. package/dist/index.js +34 -269
  357. package/dist/{init-f9mgmew3.js → init-cwpergap.js} +63 -69
  358. package/dist/login-r5ve73kf.js +77 -0
  359. package/dist/previews-qjj98rpp.js +1337 -0
  360. package/dist/productions-gzdtge0e.js +505 -0
  361. package/dist/runtime/context-events.d.ts +13 -0
  362. package/dist/runtime/context-events.d.ts.map +1 -0
  363. package/dist/runtime/context-types.d.ts +82 -0
  364. package/dist/runtime/context-types.d.ts.map +1 -0
  365. package/dist/runtime/context.d.ts +20 -44
  366. package/dist/runtime/context.d.ts.map +1 -1
  367. package/dist/runtime/exports.d.ts +70 -55
  368. package/dist/runtime/exports.d.ts.map +1 -1
  369. package/dist/runtime/index.d.ts +8 -1
  370. package/dist/runtime/index.d.ts.map +1 -1
  371. package/dist/runtime/index.js +108 -99
  372. package/dist/runtime/middleware.d.ts +102 -60
  373. package/dist/runtime/middleware.d.ts.map +1 -1
  374. package/dist/runtime/router/index.d.ts +7 -0
  375. package/dist/runtime/router/index.d.ts.map +1 -0
  376. package/dist/runtime/router/types.d.ts +24 -0
  377. package/dist/runtime/router/types.d.ts.map +1 -0
  378. package/dist/runtime/validation.d.ts +17 -3
  379. package/dist/runtime/validation.d.ts.map +1 -1
  380. package/dist/secrets/local-secrets.d.ts +46 -0
  381. package/dist/secrets/local-secrets.d.ts.map +1 -0
  382. package/dist/secrets-4w5166km.js +91 -0
  383. package/dist/shims/local-hyperdrive.d.ts +12 -0
  384. package/dist/shims/local-hyperdrive.d.ts.map +1 -0
  385. package/dist/shims/local-media-bindings.d.ts +19 -0
  386. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  387. package/dist/shims/local-worker-loader.d.ts +3 -0
  388. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  389. package/dist/sveltekit/index.js +169 -75
  390. package/dist/sveltekit/local-bindings.d.ts +4 -0
  391. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  392. package/dist/sveltekit/platform.d.ts +19 -1
  393. package/dist/sveltekit/platform.d.ts.map +1 -1
  394. package/dist/test/ai-search.d.ts +39 -0
  395. package/dist/test/ai-search.d.ts.map +1 -0
  396. package/dist/test/binding-hints.d.ts +11 -0
  397. package/dist/test/binding-hints.d.ts.map +1 -0
  398. package/dist/test/cf.d.ts +35 -21
  399. package/dist/test/cf.d.ts.map +1 -1
  400. package/dist/test/containers.d.ts +87 -0
  401. package/dist/test/containers.d.ts.map +1 -0
  402. package/dist/test/email.d.ts +16 -7
  403. package/dist/test/email.d.ts.map +1 -1
  404. package/dist/test/index.d.ts +5 -8
  405. package/dist/test/index.d.ts.map +1 -1
  406. package/dist/test/index.js +4641 -43
  407. package/dist/test/offline-bindings.d.ts +65 -0
  408. package/dist/test/offline-bindings.d.ts.map +1 -0
  409. package/dist/test/queue.d.ts.map +1 -1
  410. package/dist/test/remote-ai.d.ts.map +1 -1
  411. package/dist/test/remote-cloudflare.d.ts +13 -0
  412. package/dist/test/remote-cloudflare.d.ts.map +1 -0
  413. package/dist/test/remote-vectorize.d.ts.map +1 -1
  414. package/dist/test/resolve-service-bindings.d.ts +63 -3
  415. package/dist/test/resolve-service-bindings.d.ts.map +1 -1
  416. package/dist/test/scheduled.d.ts.map +1 -1
  417. package/dist/test/should-skip.d.ts +14 -18
  418. package/dist/test/should-skip.d.ts.map +1 -1
  419. package/dist/test/simple-context-bindings.d.ts +13 -0
  420. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  421. package/dist/test/simple-context-durable-objects.d.ts +6 -0
  422. package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
  423. package/dist/test/simple-context-env.d.ts +35 -0
  424. package/dist/test/simple-context-env.d.ts.map +1 -0
  425. package/dist/test/simple-context-gateway-script.d.ts +2 -0
  426. package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
  427. package/dist/test/simple-context-handlers.d.ts +12 -0
  428. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  429. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  430. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  431. package/dist/test/simple-context-mfconfig.d.ts +10 -0
  432. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  433. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  434. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  435. package/dist/test/simple-context-paths.d.ts +40 -0
  436. package/dist/test/simple-context-paths.d.ts.map +1 -0
  437. package/dist/test/simple-context-runtime.d.ts +19 -0
  438. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  439. package/dist/test/simple-context-startup.d.ts +11 -0
  440. package/dist/test/simple-context-startup.d.ts.map +1 -0
  441. package/dist/test/simple-context-transport.d.ts +14 -0
  442. package/dist/test/simple-context-transport.d.ts.map +1 -0
  443. package/dist/test/simple-context.d.ts +7 -26
  444. package/dist/test/simple-context.d.ts.map +1 -1
  445. package/dist/test/tail.d.ts +2 -1
  446. package/dist/test/tail.d.ts.map +1 -1
  447. package/dist/test/utilities/artifacts.d.ts +11 -0
  448. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  449. package/dist/test/utilities/context.d.ts +39 -0
  450. package/dist/test/utilities/context.d.ts.map +1 -0
  451. package/dist/test/utilities/d1.d.ts +21 -0
  452. package/dist/test/utilities/d1.d.ts.map +1 -0
  453. package/dist/test/utilities/env.d.ts +40 -0
  454. package/dist/test/utilities/env.d.ts.map +1 -0
  455. package/dist/test/utilities/kv.d.ts +11 -0
  456. package/dist/test/utilities/kv.d.ts.map +1 -0
  457. package/dist/test/utilities/media.d.ts +16 -0
  458. package/dist/test/utilities/media.d.ts.map +1 -0
  459. package/dist/test/utilities/platform.d.ts +41 -0
  460. package/dist/test/utilities/platform.d.ts.map +1 -0
  461. package/dist/test/utilities/queue.d.ts +5 -0
  462. package/dist/test/utilities/queue.d.ts.map +1 -0
  463. package/dist/test/utilities/r2.d.ts +2 -0
  464. package/dist/test/utilities/r2.d.ts.map +1 -0
  465. package/dist/test/utilities/workflows.d.ts +26 -0
  466. package/dist/test/utilities/workflows.d.ts.map +1 -0
  467. package/dist/test/utilities.d.ts +10 -98
  468. package/dist/test/utilities.d.ts.map +1 -1
  469. package/dist/test/worker.d.ts +6 -0
  470. package/dist/test/worker.d.ts.map +1 -1
  471. package/dist/token-35jcdqq8.js +419 -0
  472. package/dist/transform/durable-object.d.ts.map +1 -1
  473. package/dist/transform/worker-entrypoint.d.ts +5 -0
  474. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  475. package/dist/types-6vc02evc.js +705 -0
  476. package/dist/utils/entrypoint-discovery.d.ts +6 -3
  477. package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
  478. package/dist/utils/resolve-package.d.ts.map +1 -1
  479. package/dist/utils/send-email.d.ts +15 -0
  480. package/dist/utils/send-email.d.ts.map +1 -0
  481. package/dist/utils/send-email.js +19 -0
  482. package/dist/vite/config-file.d.ts +25 -0
  483. package/dist/vite/config-file.d.ts.map +1 -0
  484. package/dist/vite/index.d.ts +1 -0
  485. package/dist/vite/index.d.ts.map +1 -1
  486. package/dist/vite/index.js +25 -331
  487. package/dist/vite/plugin-config-hook.d.ts +28 -0
  488. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  489. package/dist/vite/plugin-context.d.ts +27 -0
  490. package/dist/vite/plugin-context.d.ts.map +1 -0
  491. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  492. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  493. package/dist/vite/plugin-programmatic.d.ts +44 -0
  494. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  495. package/dist/vite/plugin-service-bindings.d.ts +13 -0
  496. package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
  497. package/dist/vite/plugin-transform.d.ts +41 -0
  498. package/dist/vite/plugin-transform.d.ts.map +1 -0
  499. package/dist/vite/plugin.d.ts +10 -41
  500. package/dist/vite/plugin.d.ts.map +1 -1
  501. package/dist/worker-entry/composed-worker.d.ts +7 -0
  502. package/dist/worker-entry/composed-worker.d.ts.map +1 -0
  503. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  504. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  505. package/dist/worker-entry/extensions.d.ts +5 -0
  506. package/dist/worker-entry/extensions.d.ts.map +1 -0
  507. package/dist/worker-entry/routes.d.ts +22 -0
  508. package/dist/worker-entry/routes.d.ts.map +1 -0
  509. package/dist/worker-entry/surface-paths.d.ts +26 -0
  510. package/dist/worker-entry/surface-paths.d.ts.map +1 -0
  511. package/dist/{worker-entrypoint-m9th0rg0.js → worker-entrypoint-3rmzd4c1.js} +3 -1
  512. package/dist/worker-f2v85f7d.js +513 -0
  513. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  514. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  515. package/package.json +154 -115
  516. package/dist/account-rvrj687w.js +0 -397
  517. package/dist/bridge/protocol.d.ts.map +0 -1
  518. package/dist/bridge/serialization.d.ts.map +0 -1
  519. package/dist/browser-shim/worker.d.ts +0 -14
  520. package/dist/browser-shim/worker.d.ts.map +0 -1
  521. package/dist/build-mnf6v8gd.js +0 -53
  522. package/dist/deploy-nhceck39.js +0 -70
  523. package/dist/dev-pa8dhm20.js +0 -2162
  524. package/dist/index-67qcae0f.js +0 -183
  525. package/dist/index-ep3445yc.js +0 -2225
  526. package/dist/index-gz1gndna.js +0 -307
  527. package/dist/index-hcex3rgh.js +0 -266
  528. package/dist/index-m2q41jwa.js +0 -462
  529. package/dist/index-n7rs26ft.js +0 -77
  530. package/dist/index-pf5s73n9.js +0 -1413
  531. package/dist/index-tfyxa77h.js +0 -850
  532. package/dist/index-tk6ej9dj.js +0 -94
  533. package/dist/test/bridge-context.d.ts +0 -76
  534. package/dist/test/bridge-context.d.ts.map +0 -1
  535. package/dist/test/multi-worker-context.d.ts +0 -114
  536. package/dist/test/multi-worker-context.d.ts.map +0 -1
  537. package/dist/types-5nyrz1sz.js +0 -454
@@ -1,6 +1,26 @@
1
1
  // src/transform/worker-entrypoint.ts
2
2
  import ts from "typescript";
3
3
  import MagicString from "magic-string";
4
+
5
+ // src/worker-entry/extensions.ts
6
+ var SUPPORTED_WORKER_EXTENSIONS = [
7
+ ".ts",
8
+ ".tsx",
9
+ ".mts",
10
+ ".mjs",
11
+ ".cts",
12
+ ".cjs",
13
+ ".js",
14
+ ".jsx"
15
+ ];
16
+ var TS_WORKER_EXTENSIONS = [
17
+ ".ts",
18
+ ".tsx",
19
+ ".mts",
20
+ ".cts"
21
+ ];
22
+
23
+ // src/transform/worker-entrypoint.ts
4
24
  function findExportedFunctions(code) {
5
25
  const functions = [];
6
26
  const sourceFile = ts.createSourceFile("worker.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
@@ -79,8 +99,14 @@ function findExportedFunctions(code) {
79
99
  visit(sourceFile);
80
100
  return functions;
81
101
  }
102
+ function shouldEmitTsSyntax(filename) {
103
+ const lower = filename.toLowerCase();
104
+ return TS_WORKER_EXTENSIONS.some((ext) => lower.endsWith(ext));
105
+ }
82
106
  function shouldTransformWorker(code, filePath) {
83
- if (!filePath.endsWith("worker.ts") && !filePath.endsWith("worker.js")) {
107
+ const lower = filePath.toLowerCase();
108
+ const isWorkerFile = SUPPORTED_WORKER_EXTENSIONS.some((ext) => lower.endsWith(`worker${ext}`));
109
+ if (!isWorkerFile) {
84
110
  return false;
85
111
  }
86
112
  const functions = findExportedFunctions(code);
@@ -89,63 +115,98 @@ function shouldTransformWorker(code, filePath) {
89
115
  function transformWorkerEntrypoint(code, id, options = {}) {
90
116
  const className = options.className ?? "Worker";
91
117
  const injectContext = options.injectContext ?? true;
118
+ const emitTs = shouldEmitTsSyntax(id);
92
119
  const functions = findExportedFunctions(code);
93
120
  if (functions.length === 0) {
94
121
  return null;
95
122
  }
96
123
  const fetchFn = functions.find((f) => f.name === "fetch");
97
124
  const rpcMethods = functions.filter((f) => f.name !== "fetch");
125
+ const needsFetchHelpers = Boolean(fetchFn);
98
126
  const s = new MagicString(code);
99
127
  const importStatement = `import { WorkerEntrypoint } from 'cloudflare:workers'
100
128
  `;
101
- if (injectContext) {
102
- s.prepend(`import { runWithContext } from 'devflare/runtime'
129
+ if (needsFetchHelpers) {
130
+ const runtimeImports = ["createFetchEvent", "invokeFetchHandler"];
131
+ if (injectContext) {
132
+ runtimeImports.push("runWithEventContext");
133
+ }
134
+ s.prepend(`import { ${runtimeImports.join(", ")} } from 'devflare/runtime'
103
135
  `);
104
136
  }
105
137
  s.prepend(importStatement);
106
- for (const fn of functions) {
107
- const fnCode = code.substring(fn.start, fn.end);
108
- const internalName = fn.name === "fetch" ? "__originalFetch" : `__original_${fn.name}`;
109
- if (fn.isDefault) {
110
- const replacement = fnCode.replace(/^export\s+default\s+(async\s+)?function\s*/, (_, asyncKw) => `const ${internalName} = ${asyncKw || ""}function `);
111
- s.overwrite(fn.start, fn.end, replacement);
112
- } else if (fnCode.startsWith("export function") || fnCode.startsWith("export async function")) {
113
- const replacement = fnCode.replace(/^export\s+(async\s+)?function\s+\w+/, (_, asyncKw) => `${asyncKw || ""}function ${internalName}`);
114
- s.overwrite(fn.start, fn.end, replacement);
115
- } else if (fnCode.startsWith("export const")) {
116
- const replacement = fnCode.replace(/^export\s+const\s+\w+/, () => `const ${internalName}`);
117
- s.overwrite(fn.start, fn.end, replacement);
138
+ const sourceFile = ts.createSourceFile("worker.ts", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
139
+ const internalNameFor = (name) => name === "fetch" ? "__originalFetch" : `__original_${name}`;
140
+ function visit(node) {
141
+ if (ts.isFunctionDeclaration(node)) {
142
+ const modifiers = ts.getModifiers(node);
143
+ const exportMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
144
+ const defaultMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.DefaultKeyword);
145
+ const asyncMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.AsyncKeyword);
146
+ if (exportMod) {
147
+ const isDefault = Boolean(defaultMod);
148
+ const logicalName = isDefault ? "fetch" : node.name?.text;
149
+ if (logicalName) {
150
+ const internal = internalNameFor(logicalName);
151
+ if (isDefault && !node.name) {
152
+ const funcKeyword = node.getChildren(sourceFile).find((c) => c.kind === ts.SyntaxKind.FunctionKeyword);
153
+ if (funcKeyword) {
154
+ const asyncKw = asyncMod ? "async " : "";
155
+ s.overwrite(node.getStart(sourceFile), funcKeyword.getStart(sourceFile), `const ${internal} = ${asyncKw}`);
156
+ }
157
+ } else if (node.name) {
158
+ s.remove(exportMod.getStart(sourceFile), exportMod.getEnd());
159
+ if (defaultMod) {
160
+ s.remove(defaultMod.getStart(sourceFile), defaultMod.getEnd());
161
+ }
162
+ s.overwrite(node.name.getStart(sourceFile), node.name.getEnd(), internal);
163
+ }
164
+ }
165
+ }
166
+ } else if (ts.isVariableStatement(node)) {
167
+ const modifiers = ts.getModifiers(node);
168
+ const exportMod = modifiers?.find((m) => m.kind === ts.SyntaxKind.ExportKeyword);
169
+ if (exportMod) {
170
+ let rewroteAny = false;
171
+ for (const decl of node.declarationList.declarations) {
172
+ if (ts.isIdentifier(decl.name) && decl.initializer && (ts.isFunctionExpression(decl.initializer) || ts.isArrowFunction(decl.initializer))) {
173
+ const internal = internalNameFor(decl.name.text);
174
+ s.overwrite(decl.name.getStart(sourceFile), decl.name.getEnd(), internal);
175
+ rewroteAny = true;
176
+ }
177
+ }
178
+ if (rewroteAny) {
179
+ s.remove(exportMod.getStart(sourceFile), exportMod.getEnd());
180
+ }
181
+ }
118
182
  }
183
+ ts.forEachChild(node, visit);
119
184
  }
185
+ visit(sourceFile);
120
186
  let classBody = `
121
187
 
122
188
  // ============ Devflare WorkerEntrypoint ============
123
189
  class ${className} extends WorkerEntrypoint {
124
190
  `;
125
191
  if (fetchFn) {
126
- if (injectContext) {
127
- classBody += ` async fetch(request: Request): Promise<Response> {
128
- `;
129
- classBody += ` return runWithContext(
192
+ const fetchSig = emitTs ? "async fetch(request: Request): Promise<Response>" : "async fetch(request)";
193
+ classBody += ` ${fetchSig} {
130
194
  `;
131
- classBody += ` this.env,
195
+ classBody += ` const __devflareEvent = createFetchEvent(request, this.env, this.ctx)
132
196
  `;
133
- classBody += ` this.ctx,
134
- `;
135
- classBody += ` request,
197
+ if (injectContext) {
198
+ classBody += ` return runWithEventContext(
136
199
  `;
137
- classBody += ` () => __originalFetch(request, this.env, this.ctx),
200
+ classBody += ` __devflareEvent,
138
201
  `;
139
- classBody += ` 'fetch'
202
+ classBody += ` () => invokeFetchHandler(__originalFetch, __devflareEvent)
140
203
  `;
141
204
  classBody += ` )
142
205
  `;
143
206
  classBody += ` }
144
207
  `;
145
208
  } else {
146
- classBody += ` async fetch(request: Request): Promise<Response> {
147
- `;
148
- classBody += ` return __originalFetch(request, this.env, this.ctx)
209
+ classBody += ` return invokeFetchHandler(__originalFetch, __devflareEvent)
149
210
  `;
150
211
  classBody += ` }
151
212
  `;
@@ -153,10 +214,11 @@ class ${className} extends WorkerEntrypoint {
153
214
  }
154
215
  for (const fn of rpcMethods) {
155
216
  const asyncPrefix = fn.isAsync ? "async " : "";
156
- const returnType = fn.returnType ? `: ${fn.returnType}` : "";
157
217
  const paramNames = extractParamNames(fn.params);
218
+ const signatureParams = emitTs ? fn.params : paramNames;
219
+ const returnType = emitTs && fn.returnType ? `: ${fn.returnType}` : "";
158
220
  classBody += `
159
- ${asyncPrefix}${fn.name}(${fn.params})${returnType} {
221
+ ${asyncPrefix}${fn.name}(${signatureParams})${returnType} {
160
222
  `;
161
223
  classBody += ` return __original_${fn.name}(${paramNames})
162
224
  `;
@@ -223,4 +285,4 @@ function generateRpcInterface(functions, interfaceName) {
223
285
  return output;
224
286
  }
225
287
 
226
- export { findExportedFunctions, shouldTransformWorker, transformWorkerEntrypoint, generateRpcInterface };
288
+ export { SUPPORTED_WORKER_EXTENSIONS, findExportedFunctions, shouldEmitTsSyntax, shouldTransformWorker, transformWorkerEntrypoint, generateRpcInterface };
@@ -0,0 +1,479 @@
1
+ // src/config/env-vars.ts
2
+ import { existsSync } from "node:fs";
3
+ import { readFile } from "node:fs/promises";
4
+ import { dirname, resolve } from "pathe";
5
+ var ENV_DESCRIPTOR_FLAG = "__devflareEnvDescriptor";
6
+ function createDescriptor(state) {
7
+ const descriptor = {
8
+ [ENV_DESCRIPTOR_FLAG]: true,
9
+ __state: state,
10
+ optional() {
11
+ return createDescriptor({
12
+ ...state,
13
+ optional: true
14
+ });
15
+ },
16
+ parse(parser) {
17
+ return createDescriptor({
18
+ ...state,
19
+ parser
20
+ });
21
+ },
22
+ parser(parser) {
23
+ return this.parse(parser);
24
+ },
25
+ default(value) {
26
+ return createDescriptor({
27
+ ...state,
28
+ defaultValue: value,
29
+ hasDefault: true,
30
+ optional: false
31
+ });
32
+ },
33
+ dev(value) {
34
+ return createDescriptor({
35
+ ...state,
36
+ devValue: value,
37
+ hasDevDefault: true
38
+ });
39
+ }
40
+ };
41
+ return descriptor;
42
+ }
43
+ function createEnvVarDescriptor(name) {
44
+ return createDescriptor({
45
+ name,
46
+ optional: false,
47
+ hasDefault: false,
48
+ hasDevDefault: false
49
+ });
50
+ }
51
+ var env = new Proxy({}, {
52
+ get(_target, prop) {
53
+ if (typeof prop !== "string") {
54
+ return;
55
+ }
56
+ return createEnvVarDescriptor(prop);
57
+ }
58
+ });
59
+ function isEnvVarDescriptor(value) {
60
+ return Boolean(value && typeof value === "object" && value[ENV_DESCRIPTOR_FLAG] === true);
61
+ }
62
+ function parseEnvValue(rawValue) {
63
+ const trimmed = rawValue.trim();
64
+ const quote = trimmed[0];
65
+ if ((quote === '"' || quote === "'" || quote === "`") && trimmed.endsWith(quote) && trimmed.length >= 2) {
66
+ const inner = trimmed.slice(1, -1);
67
+ if (quote !== '"') {
68
+ return inner;
69
+ }
70
+ return inner.replace(/\\n/g, `
71
+ `).replace(/\\r/g, "\r").replace(/\\t/g, "\t").replace(/\\"/g, '"').replace(/\\\\/g, "\\");
72
+ }
73
+ return trimmed;
74
+ }
75
+ function parseDevflareEnvFile(contents) {
76
+ const values = {};
77
+ for (const line of contents.split(/\r?\n/)) {
78
+ const trimmed = line.trim();
79
+ if (!trimmed || trimmed.startsWith("#")) {
80
+ continue;
81
+ }
82
+ const assignment = trimmed.startsWith("export ") ? trimmed.slice("export ".length).trimStart() : trimmed;
83
+ const equalsIndex = assignment.indexOf("=");
84
+ if (equalsIndex <= 0) {
85
+ continue;
86
+ }
87
+ const key = assignment.slice(0, equalsIndex).trim();
88
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
89
+ continue;
90
+ }
91
+ values[key] = parseEnvValue(assignment.slice(equalsIndex + 1));
92
+ }
93
+ return values;
94
+ }
95
+ function collectAncestorDirectories(startDir) {
96
+ const directories = [];
97
+ let current = resolve(startDir);
98
+ while (true) {
99
+ directories.push(current);
100
+ const parent = dirname(current);
101
+ if (parent === current) {
102
+ break;
103
+ }
104
+ current = parent;
105
+ }
106
+ return directories.reverse();
107
+ }
108
+ function getDevflareDotenvPaths(startDir) {
109
+ return collectAncestorDirectories(startDir).flatMap((directory) => [
110
+ resolve(directory, ".env.dev"),
111
+ resolve(directory, ".env")
112
+ ]);
113
+ }
114
+ async function loadDevflareDotenv(startDir) {
115
+ const values = {};
116
+ const files = [];
117
+ for (const filePath of getDevflareDotenvPaths(startDir)) {
118
+ if (!existsSync(filePath)) {
119
+ continue;
120
+ }
121
+ Object.assign(values, parseDevflareEnvFile(await readFile(filePath, "utf8")));
122
+ files.push(filePath);
123
+ }
124
+ return { values, files };
125
+ }
126
+ async function loadDevflareDotenvIntoProcess(startDir) {
127
+ const loaded = await loadDevflareDotenv(startDir);
128
+ for (const [key, value] of Object.entries(loaded.values)) {
129
+ if (process.env[key] === undefined) {
130
+ process.env[key] = value;
131
+ }
132
+ }
133
+ return loaded;
134
+ }
135
+ function formatMissingEnvTree(missing) {
136
+ const root = {};
137
+ for (const item of missing) {
138
+ let current = root;
139
+ for (const segment of item.path.slice(0, -1)) {
140
+ const next = current[segment];
141
+ if (!next || typeof next !== "object") {
142
+ current[segment] = {};
143
+ }
144
+ current = current[segment];
145
+ }
146
+ current[item.path[item.path.length - 1] ?? item.name] = item.name;
147
+ }
148
+ const lines = [];
149
+ const writeNode = (node, depth) => {
150
+ const indent = "\t".repeat(depth);
151
+ for (const [key, value] of Object.entries(node)) {
152
+ if (value && typeof value === "object") {
153
+ lines.push(`${indent}${key}:`);
154
+ writeNode(value, depth + 1);
155
+ } else {
156
+ lines.push(`${indent}${key}: ${String(value)}`);
157
+ }
158
+ }
159
+ };
160
+ writeNode(root, 1);
161
+ return lines.join(`
162
+ `);
163
+ }
164
+
165
+ class EnvVarResolutionError extends Error {
166
+ missing;
167
+ mode;
168
+ code = "ENV_VARS_MISSING";
169
+ constructor(missing, mode) {
170
+ super([
171
+ "These environment variables are missing:",
172
+ "",
173
+ formatMissingEnvTree(missing)
174
+ ].join(`
175
+ `));
176
+ this.missing = missing;
177
+ this.mode = mode;
178
+ this.name = "EnvVarResolutionError";
179
+ }
180
+ }
181
+
182
+ class EnvVarParseError extends Error {
183
+ variableName;
184
+ path;
185
+ code = "ENV_VAR_PARSE_FAILED";
186
+ constructor(variableName, path, cause) {
187
+ super(`Could not parse environment variable ${variableName} for vars.${path.join(".")}.
188
+ ` + `Parser error: ${cause instanceof Error ? cause.message : String(cause)}`);
189
+ this.variableName = variableName;
190
+ this.path = path;
191
+ this.name = "EnvVarParseError";
192
+ }
193
+ }
194
+ function isPlainObject(value) {
195
+ if (!value || typeof value !== "object" || Array.isArray(value) || isEnvVarDescriptor(value)) {
196
+ return false;
197
+ }
198
+ const prototype = Object.getPrototypeOf(value);
199
+ return prototype === Object.prototype || prototype === null;
200
+ }
201
+ var OMIT_VALUE = Symbol("omit optional env var");
202
+ function resolveDescriptorValue(descriptor, sources, path, mode, missing) {
203
+ const state = descriptor.__state;
204
+ const rawValue = sources[state.name];
205
+ if (rawValue !== undefined) {
206
+ try {
207
+ return state.parser ? state.parser(rawValue) : rawValue;
208
+ } catch (error) {
209
+ throw new EnvVarParseError(state.name, path, error);
210
+ }
211
+ }
212
+ if (mode === "dev" && state.hasDevDefault) {
213
+ return state.devValue;
214
+ }
215
+ if (state.hasDefault) {
216
+ return state.defaultValue;
217
+ }
218
+ if (state.optional) {
219
+ return OMIT_VALUE;
220
+ }
221
+ missing.push({ path, name: state.name });
222
+ return OMIT_VALUE;
223
+ }
224
+ function resolveVarValue(value, sources, path, mode, missing) {
225
+ if (isEnvVarDescriptor(value)) {
226
+ return resolveDescriptorValue(value, sources, path, mode, missing);
227
+ }
228
+ if (Array.isArray(value)) {
229
+ return value.map((item, index) => resolveVarValue(item, sources, [...path, String(index)], mode, missing)).filter((item) => item !== OMIT_VALUE);
230
+ }
231
+ if (isPlainObject(value)) {
232
+ const resolved = {};
233
+ for (const [key, childValue] of Object.entries(value)) {
234
+ const child = resolveVarValue(childValue, sources, [...path, key], mode, missing);
235
+ if (child !== OMIT_VALUE) {
236
+ resolved[key] = child;
237
+ }
238
+ }
239
+ return resolved;
240
+ }
241
+ return value;
242
+ }
243
+ function resolveVarsObject(vars, sources, mode, missing) {
244
+ if (!vars) {
245
+ return vars;
246
+ }
247
+ const resolved = resolveVarValue(vars, sources, [], mode, missing);
248
+ return resolved === OMIT_VALUE ? undefined : resolved;
249
+ }
250
+ async function resolveConfigEnvVars(config, options) {
251
+ const startDir = options.configPath ? dirname(resolve(options.cwd, options.configPath)) : options.cwd;
252
+ const dotenv = await loadDevflareDotenv(startDir);
253
+ const sources = {
254
+ ...dotenv.values,
255
+ ...process.env
256
+ };
257
+ const missing = [];
258
+ const vars = resolveVarsObject(config.vars, sources, options.mode, missing);
259
+ if (missing.length > 0) {
260
+ throw new EnvVarResolutionError(missing, options.mode);
261
+ }
262
+ return vars === config.vars ? config : {
263
+ ...config,
264
+ vars
265
+ };
266
+ }
267
+
268
+ // src/config/preview.ts
269
+ var PREVIEW_SCOPED_NAME_PREFIX = "__DEVFLARE_PREVIEW_SCOPE__:";
270
+ function getPreviewScopedSeparator(options) {
271
+ return options?.separator ?? "-";
272
+ }
273
+ function encodePreviewScopedName(value) {
274
+ return `${PREVIEW_SCOPED_NAME_PREFIX}${JSON.stringify(value)}`;
275
+ }
276
+ function invalidPreviewScopedName(reason) {
277
+ throw new Error(`Invalid Devflare preview-scoped value: ${reason}. Recreate it with preview.scope(...) instead of constructing preview markers manually.`);
278
+ }
279
+ function decodePreviewScopedName(value) {
280
+ const payload = value.slice(PREVIEW_SCOPED_NAME_PREFIX.length);
281
+ let parsed;
282
+ try {
283
+ parsed = JSON.parse(payload);
284
+ } catch {
285
+ invalidPreviewScopedName("the encoded payload is not valid JSON");
286
+ }
287
+ const baseName = typeof parsed.baseName === "string" ? parsed.baseName : "";
288
+ if (!baseName.trim()) {
289
+ invalidPreviewScopedName("the encoded payload is missing a non-empty baseName");
290
+ }
291
+ return {
292
+ baseName,
293
+ separator: typeof parsed.separator === "string" && parsed.separator.length > 0 ? parsed.separator : "-"
294
+ };
295
+ }
296
+ function normalizePreviewFragment(rawValue) {
297
+ let normalized = rawValue.toLowerCase().replace(/[^a-z0-9-]+/g, "-").replace(/-+/g, "-").replace(/^-+|-+$/g, "");
298
+ if (!normalized) {
299
+ normalized = "preview";
300
+ }
301
+ if (!/^[a-z]/.test(normalized)) {
302
+ normalized = `b-${normalized}`;
303
+ }
304
+ return normalized;
305
+ }
306
+ function getPreviewIdentifierFromEnv(env2) {
307
+ const explicitIdentifier = env2.DEVFLARE_PREVIEW_IDENTIFIER?.trim();
308
+ if (explicitIdentifier) {
309
+ return {
310
+ identifier: normalizePreviewFragment(explicitIdentifier),
311
+ source: "env-identifier"
312
+ };
313
+ }
314
+ const previewPr = env2.DEVFLARE_PREVIEW_PR?.trim();
315
+ if (previewPr) {
316
+ return {
317
+ identifier: normalizePreviewFragment(`pr-${previewPr}`),
318
+ source: "env-pr"
319
+ };
320
+ }
321
+ const previewBranch = env2.DEVFLARE_PREVIEW_BRANCH?.trim();
322
+ if (previewBranch) {
323
+ return {
324
+ identifier: normalizePreviewFragment(previewBranch),
325
+ source: "env-branch"
326
+ };
327
+ }
328
+ return {
329
+ identifier: undefined,
330
+ source: "none"
331
+ };
332
+ }
333
+ function resolvePreviewIdentifier(options = {}) {
334
+ if (options.identifier?.trim()) {
335
+ return {
336
+ identifier: normalizePreviewFragment(options.identifier),
337
+ source: "identifier"
338
+ };
339
+ }
340
+ const env2 = options.env ?? process.env;
341
+ const envIdentifier = getPreviewIdentifierFromEnv(env2);
342
+ if (envIdentifier.identifier) {
343
+ return envIdentifier;
344
+ }
345
+ return options.environment === "preview" ? {
346
+ identifier: "preview",
347
+ source: "environment"
348
+ } : {
349
+ identifier: undefined,
350
+ source: "none"
351
+ };
352
+ }
353
+ function mapRecordValues(record, mapper) {
354
+ return Object.fromEntries(Object.entries(record).map(([key, value]) => [key, mapper(value)]));
355
+ }
356
+ var preview = {
357
+ scope(defaults = {}) {
358
+ return (baseName, options = {}) => {
359
+ if (!baseName.trim()) {
360
+ throw new Error("preview.scope(...) requires a non-empty baseName.");
361
+ }
362
+ return encodePreviewScopedName({
363
+ baseName,
364
+ separator: getPreviewScopedSeparator({
365
+ ...defaults,
366
+ ...options
367
+ })
368
+ });
369
+ };
370
+ }
371
+ };
372
+ function isPreviewScopedName(value) {
373
+ return typeof value === "string" && value.startsWith(PREVIEW_SCOPED_NAME_PREFIX);
374
+ }
375
+ function materializePreviewScopedString(value, options = {}) {
376
+ if (!isPreviewScopedName(value)) {
377
+ return value;
378
+ }
379
+ const scoped = decodePreviewScopedName(value);
380
+ const previewIdentifier = resolvePreviewIdentifier(options).identifier;
381
+ return previewIdentifier ? `${scoped.baseName}${scoped.separator}${previewIdentifier}` : scoped.baseName;
382
+ }
383
+ function materializePreviewScopedConfig(config, options = {}) {
384
+ if (!config.bindings) {
385
+ return config;
386
+ }
387
+ const bindings = config.bindings;
388
+ const hasPreviewIdentifier = Boolean(resolvePreviewIdentifier(options).identifier);
389
+ return {
390
+ ...config,
391
+ bindings: {
392
+ ...bindings,
393
+ ...bindings.kv ? {
394
+ kv: mapRecordValues(bindings.kv, (binding) => {
395
+ return typeof binding === "string" ? materializePreviewScopedString(binding, options) : binding;
396
+ })
397
+ } : {},
398
+ ...bindings.d1 ? {
399
+ d1: mapRecordValues(bindings.d1, (binding) => {
400
+ return typeof binding === "string" ? materializePreviewScopedString(binding, options) : binding;
401
+ })
402
+ } : {},
403
+ ...bindings.r2 ? {
404
+ r2: mapRecordValues(bindings.r2, (binding) => {
405
+ return materializePreviewScopedString(binding, options);
406
+ })
407
+ } : {},
408
+ ...bindings.queues ? {
409
+ queues: {
410
+ ...bindings.queues,
411
+ ...bindings.queues.producers ? {
412
+ producers: mapRecordValues(bindings.queues.producers, (queueName) => {
413
+ return materializePreviewScopedString(queueName, options);
414
+ })
415
+ } : {},
416
+ ...bindings.queues.consumers ? {
417
+ consumers: bindings.queues.consumers.map((consumer) => ({
418
+ ...consumer,
419
+ queue: materializePreviewScopedString(consumer.queue, options),
420
+ ...consumer.deadLetterQueue ? {
421
+ deadLetterQueue: materializePreviewScopedString(consumer.deadLetterQueue, options)
422
+ } : {}
423
+ }))
424
+ } : {}
425
+ }
426
+ } : {},
427
+ ...bindings.services ? {
428
+ services: mapRecordValues(bindings.services, (binding) => ({
429
+ ...binding,
430
+ service: materializePreviewScopedString(binding.service, options)
431
+ }))
432
+ } : {},
433
+ ...bindings.vectorize ? {
434
+ vectorize: mapRecordValues(bindings.vectorize, (binding) => ({
435
+ ...binding,
436
+ indexName: materializePreviewScopedString(binding.indexName, options)
437
+ }))
438
+ } : {},
439
+ ...bindings.hyperdrive ? {
440
+ hyperdrive: mapRecordValues(bindings.hyperdrive, (binding) => {
441
+ if (typeof binding === "string") {
442
+ return materializePreviewScopedString(binding, options);
443
+ }
444
+ if (binding && typeof binding === "object" && "name" in binding && typeof binding.name === "string") {
445
+ if (hasPreviewIdentifier && binding.previewId) {
446
+ return {
447
+ id: binding.previewId,
448
+ ...binding.localConnectionString && {
449
+ localConnectionString: binding.localConnectionString
450
+ },
451
+ ...!binding.localConnectionString && binding.previewLocalConnectionString && {
452
+ localConnectionString: binding.previewLocalConnectionString
453
+ }
454
+ };
455
+ }
456
+ return {
457
+ ...binding,
458
+ name: materializePreviewScopedString(binding.name, options)
459
+ };
460
+ }
461
+ return binding;
462
+ })
463
+ } : {},
464
+ ...bindings.browser ? {
465
+ browser: mapRecordValues(bindings.browser, (binding) => {
466
+ return typeof binding === "string" ? materializePreviewScopedString(binding, options) : binding;
467
+ })
468
+ } : {},
469
+ ...bindings.analyticsEngine ? {
470
+ analyticsEngine: mapRecordValues(bindings.analyticsEngine, (binding) => ({
471
+ ...binding,
472
+ dataset: materializePreviewScopedString(binding.dataset, options)
473
+ }))
474
+ } : {}
475
+ }
476
+ };
477
+ }
478
+
479
+ export { env, isEnvVarDescriptor, getDevflareDotenvPaths, loadDevflareDotenvIntoProcess, EnvVarResolutionError, resolveConfigEnvVars, resolvePreviewIdentifier, preview, isPreviewScopedName, materializePreviewScopedString, materializePreviewScopedConfig };