devflare 1.0.0-next.19 → 1.0.0-next.20

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 (360) hide show
  1. package/LLM.md +6807 -888
  2. package/README.md +375 -957
  3. package/dist/account-05zgta47.js +475 -0
  4. package/dist/account-b2ag1esh.js +475 -0
  5. package/dist/account-bxtcz61a.js +475 -0
  6. package/dist/account-gyfqg964.js +475 -0
  7. package/dist/account-q6pvs9d9.js +475 -0
  8. package/dist/account-rp4zbvw1.js +475 -0
  9. package/dist/bridge/client.d.ts +5 -0
  10. package/dist/bridge/client.d.ts.map +1 -1
  11. package/dist/bridge/gateway-runtime.d.ts +1 -1
  12. package/dist/bridge/gateway-runtime.d.ts.map +1 -1
  13. package/dist/bridge/miniflare.d.ts +67 -0
  14. package/dist/bridge/miniflare.d.ts.map +1 -1
  15. package/dist/bridge/proxy.d.ts +2 -1
  16. package/dist/bridge/proxy.d.ts.map +1 -1
  17. package/dist/bridge/server.d.ts.map +1 -1
  18. package/dist/browser.d.ts +2520 -40
  19. package/dist/browser.d.ts.map +1 -1
  20. package/dist/browser.js +3 -3
  21. package/dist/build-2s5paw5p.js +54 -0
  22. package/dist/build-4c350cp7.js +54 -0
  23. package/dist/build-e7wym63t.js +54 -0
  24. package/dist/build-ge6qp3t4.js +54 -0
  25. package/dist/build-ta8c6t11.js +54 -0
  26. package/dist/build-wvjj8f28.js +54 -0
  27. package/dist/build-ypg6f2kw.js +54 -0
  28. package/dist/build-yts8wwgf.js +54 -0
  29. package/dist/build-yzkdqexs.js +54 -0
  30. package/dist/cli/build-manifest.d.ts +12 -0
  31. package/dist/cli/build-manifest.d.ts.map +1 -1
  32. package/dist/cli/commands/deploy/metadata.d.ts +18 -0
  33. package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
  34. package/dist/cli/commands/deploy/prepare.d.ts +23 -0
  35. package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
  36. package/dist/cli/commands/deploy/runtime.d.ts +4 -0
  37. package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
  38. package/dist/cli/commands/deploy/verification.d.ts +36 -0
  39. package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
  40. package/dist/cli/commands/deploy.d.ts +2 -2
  41. package/dist/cli/commands/deploy.d.ts.map +1 -1
  42. package/dist/cli/commands/secrets.d.ts +4 -0
  43. package/dist/cli/commands/secrets.d.ts.map +1 -0
  44. package/dist/cli/commands/type-generation/generator.d.ts +67 -1
  45. package/dist/cli/commands/type-generation/generator.d.ts.map +1 -1
  46. package/dist/cli/help-pages/pages/core.d.ts +1 -1
  47. package/dist/cli/help-pages/pages/core.d.ts.map +1 -1
  48. package/dist/cli/help-pages/shared.d.ts +1 -1
  49. package/dist/cli/help-pages/shared.d.ts.map +1 -1
  50. package/dist/cli/index.d.ts.map +1 -1
  51. package/dist/cli/index.js +2 -2
  52. package/dist/cli/package-metadata.d.ts.map +1 -1
  53. package/dist/cli/preview-bindings.d.ts.map +1 -1
  54. package/dist/cloudflare/index.js +2 -2
  55. package/dist/cloudflare/preview-registry-store.d.ts +1 -1
  56. package/dist/cloudflare/preview-registry-store.d.ts.map +1 -1
  57. package/dist/cloudflare/types.d.ts +1 -1
  58. package/dist/cloudflare/types.d.ts.map +1 -1
  59. package/dist/config/binding-resolution-helpers.d.ts +5 -0
  60. package/dist/config/binding-resolution-helpers.d.ts.map +1 -1
  61. package/dist/config/compiler/bindings.d.ts +14 -0
  62. package/dist/config/compiler/bindings.d.ts.map +1 -0
  63. package/dist/config/compiler/core-helpers.d.ts +6 -0
  64. package/dist/config/compiler/core-helpers.d.ts.map +1 -0
  65. package/dist/config/compiler/do-workers.d.ts +34 -0
  66. package/dist/config/compiler/do-workers.d.ts.map +1 -0
  67. package/dist/config/compiler/paths.d.ts +18 -0
  68. package/dist/config/compiler/paths.d.ts.map +1 -0
  69. package/dist/config/compiler/types.d.ts +267 -0
  70. package/dist/config/compiler/types.d.ts.map +1 -0
  71. package/dist/config/compiler.d.ts +11 -175
  72. package/dist/config/compiler.d.ts.map +1 -1
  73. package/dist/config/deploy-resources.d.ts.map +1 -1
  74. package/dist/config/index.d.ts +1 -1
  75. package/dist/config/index.d.ts.map +1 -1
  76. package/dist/config/local-dev-vars.d.ts +15 -0
  77. package/dist/config/local-dev-vars.d.ts.map +1 -0
  78. package/dist/config/preview-resources.d.ts.map +1 -1
  79. package/dist/config/preview.d.ts.map +1 -1
  80. package/dist/config/resolve.d.ts.map +1 -1
  81. package/dist/config/resource-resolution.d.ts.map +1 -1
  82. package/dist/config/schema-bindings.d.ts +559 -19
  83. package/dist/config/schema-bindings.d.ts.map +1 -1
  84. package/dist/config/schema-env.d.ts +1306 -34
  85. package/dist/config/schema-env.d.ts.map +1 -1
  86. package/dist/config/schema-normalization.d.ts +97 -1
  87. package/dist/config/schema-normalization.d.ts.map +1 -1
  88. package/dist/config/schema-runtime.d.ts +245 -7
  89. package/dist/config/schema-runtime.d.ts.map +1 -1
  90. package/dist/config/schema.d.ts +2976 -57
  91. package/dist/config/schema.d.ts.map +1 -1
  92. package/dist/config-6m0n7d84.js +59 -0
  93. package/dist/config-7cf004ag.js +59 -0
  94. package/dist/config-b98dp58n.js +59 -0
  95. package/dist/config-cf3djhqy.js +59 -0
  96. package/dist/config-entry.js +1 -1
  97. package/dist/config-wa7hm0w9.js +59 -0
  98. package/dist/deploy-1jfagtn9.js +1055 -0
  99. package/dist/deploy-2afw0jfg.js +1055 -0
  100. package/dist/deploy-2fzj68kq.js +1055 -0
  101. package/dist/deploy-57nzn9wj.js +1045 -0
  102. package/dist/deploy-asyryrvm.js +1055 -0
  103. package/dist/deploy-hc927rw6.js +1045 -0
  104. package/dist/deploy-pnnf8tgy.js +1045 -0
  105. package/dist/deploy-q33bw715.js +1055 -0
  106. package/dist/deploy-tmdgecs3.js +1055 -0
  107. package/dist/deploy-v0y8kczr.js +1055 -0
  108. package/dist/deploy-xhj6zbcx.js +1055 -0
  109. package/dist/dev-1mvcts8w.js +2515 -0
  110. package/dist/dev-2a283xts.js +2515 -0
  111. package/dist/dev-62nhytf8.js +2505 -0
  112. package/dist/dev-75acm2xj.js +2478 -0
  113. package/dist/dev-802rg9dp.js +2515 -0
  114. package/dist/dev-d1bb2t0f.js +2515 -0
  115. package/dist/dev-dwry8494.js +2489 -0
  116. package/dist/dev-g6112y4w.js +2515 -0
  117. package/dist/dev-h2kneh95.js +2496 -0
  118. package/dist/dev-kybq3mwr.js +2489 -0
  119. package/dist/dev-n8qndkyg.js +2512 -0
  120. package/dist/dev-p32fkbwf.js +2489 -0
  121. package/dist/dev-qm9d4mfh.js +2478 -0
  122. package/dist/dev-rcthnse5.js +2473 -0
  123. package/dist/dev-server/dev-server-state.d.ts +1 -0
  124. package/dist/dev-server/dev-server-state.d.ts.map +1 -1
  125. package/dist/dev-server/miniflare-bindings.d.ts +44 -1
  126. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -1
  127. package/dist/dev-server/miniflare-dev-config.d.ts +1 -0
  128. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -1
  129. package/dist/dev-server/miniflare-log.d.ts +8 -0
  130. package/dist/dev-server/miniflare-log.d.ts.map +1 -1
  131. package/dist/dev-server/miniflare-worker-config.d.ts +31 -1
  132. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -1
  133. package/dist/dev-server/server.d.ts.map +1 -1
  134. package/dist/dev-server/vite-process.d.ts +1 -0
  135. package/dist/dev-server/vite-process.d.ts.map +1 -1
  136. package/dist/dev-tgwja5mz.js +2496 -0
  137. package/dist/doctor-2shhdak6.js +245 -0
  138. package/dist/doctor-5g73w40j.js +245 -0
  139. package/dist/doctor-gamefzcs.js +245 -0
  140. package/dist/doctor-rn53ctfs.js +245 -0
  141. package/dist/index-01kehw41.js +348 -0
  142. package/dist/index-06bg0z9y.js +185 -0
  143. package/dist/index-0d7tw5r4.js +136 -0
  144. package/dist/index-0m6e4mxz.js +133 -0
  145. package/dist/index-0vah20er.js +1410 -0
  146. package/dist/index-0wa0ebm1.js +68 -0
  147. package/dist/index-1714y3cz.js +1410 -0
  148. package/dist/index-1qs5gcm7.js +895 -0
  149. package/dist/index-29k04v43.js +574 -0
  150. package/dist/index-2jywf4pz.js +1372 -0
  151. package/dist/index-2qhk9nbx.js +1372 -0
  152. package/dist/index-2vq6bveq.js +574 -0
  153. package/dist/index-36h8gkhb.js +1088 -0
  154. package/dist/index-38fq7pww.js +560 -0
  155. package/dist/index-3bxqn033.js +1410 -0
  156. package/dist/index-3jme4hgw.js +1234 -0
  157. package/dist/index-3p7s9mk9.js +360 -0
  158. package/dist/index-47w35sft.js +244 -0
  159. package/dist/index-4by4c7rm.js +52 -0
  160. package/dist/index-4phjwd6h.js +412 -0
  161. package/dist/index-4z5jrw0j.js +594 -0
  162. package/dist/index-51mzqy0d.js +895 -0
  163. package/dist/index-53pqqpq9.js +74 -0
  164. package/dist/index-5enq8ntr.js +1766 -0
  165. package/dist/index-5fnq9r9m.js +1410 -0
  166. package/dist/index-5w9f2b17.js +695 -0
  167. package/dist/index-627srx16.js +45 -0
  168. package/dist/index-6bqgf5x8.js +227 -0
  169. package/dist/index-6xknvbyk.js +1088 -0
  170. package/dist/index-7ef3ktz5.js +1372 -0
  171. package/dist/index-7hpjfdzh.js +185 -0
  172. package/dist/index-8052df4m.js +627 -0
  173. package/dist/index-82epjzrr.js +1410 -0
  174. package/dist/index-82z7rvz6.js +1238 -0
  175. package/dist/index-8atc1yb9.js +68 -0
  176. package/dist/index-8tj0awnv.js +476 -0
  177. package/dist/index-8x745h59.js +1069 -0
  178. package/dist/index-9bawzcny.js +574 -0
  179. package/dist/index-9bjjqdfc.js +236 -0
  180. package/dist/index-9d7x3vfr.js +236 -0
  181. package/dist/index-9nf8zs4p.js +1069 -0
  182. package/dist/index-acwbmagz.js +412 -0
  183. package/dist/index-aqjdaem7.js +74 -0
  184. package/dist/index-b6448fd0.js +133 -0
  185. package/dist/index-b9j55r7q.js +240 -0
  186. package/dist/index-bdatd1za.js +1372 -0
  187. package/dist/index-c3nxftnp.js +699 -0
  188. package/dist/index-c643s0gv.js +488 -0
  189. package/dist/index-d2md1j3d.js +185 -0
  190. package/dist/index-dbr6bfz6.js +528 -0
  191. package/dist/index-dd1g0g7e.js +360 -0
  192. package/dist/index-dktb9az5.js +1372 -0
  193. package/dist/index-dm9q84c7.js +360 -0
  194. package/dist/index-f51mkh13.js +1088 -0
  195. package/dist/index-f86n1fpd.js +55 -0
  196. package/dist/index-fnk0tkw7.js +412 -0
  197. package/dist/index-g5aq66bj.js +1534 -0
  198. package/dist/index-gj5qh491.js +54 -0
  199. package/dist/index-gq39t0rx.js +895 -0
  200. package/dist/index-h5dqna7q.js +1410 -0
  201. package/dist/index-hjs9j2g9.js +895 -0
  202. package/dist/index-hn5nbxbt.js +147 -0
  203. package/dist/index-hpjh0qjx.js +1723 -0
  204. package/dist/index-hs6ekcfs.js +412 -0
  205. package/dist/index-jdzrvnfj.js +52 -0
  206. package/dist/index-jg720mq7.js +476 -0
  207. package/dist/index-jrzddxvt.js +2167 -0
  208. package/dist/index-kgstnk6g.js +239 -0
  209. package/dist/index-khnw972v.js +117 -0
  210. package/dist/index-kwqff3ba.js +1410 -0
  211. package/dist/index-m2v0fj08.js +74 -0
  212. package/dist/index-mjve6tqn.js +447 -0
  213. package/dist/index-mkxzgn0q.js +1372 -0
  214. package/dist/index-mzmq3v0d.js +1088 -0
  215. package/dist/index-ng9n3znd.js +1372 -0
  216. package/dist/index-nhbkm2ba.js +467 -0
  217. package/dist/index-nrfhk0k5.js +1088 -0
  218. package/dist/index-p0zppqxm.js +467 -0
  219. package/dist/index-pkxf6h87.js +895 -0
  220. package/dist/index-pqp4312v.js +52 -0
  221. package/dist/index-pw9jn6kz.js +574 -0
  222. package/dist/index-q31ne0xa.js +412 -0
  223. package/dist/index-qf2dkqxh.js +249 -0
  224. package/dist/index-qmtdf7k5.js +639 -0
  225. package/dist/index-qwgr4q7s.js +37 -0
  226. package/dist/index-rab2dfh3.js +494 -0
  227. package/dist/index-rz7rx80s.js +1410 -0
  228. package/dist/index-s37h3jgk.js +572 -0
  229. package/dist/index-sb705m7d.js +52 -0
  230. package/dist/index-syscwrjp.js +1576 -0
  231. package/dist/index-t14zr0ys.js +1063 -0
  232. package/dist/index-tjc99447.js +68 -0
  233. package/dist/index-v35460hf.js +574 -0
  234. package/dist/index-v7q00d1e.js +1410 -0
  235. package/dist/index-vkkmx4xe.js +1372 -0
  236. package/dist/index-vrps1gky.js +2202 -0
  237. package/dist/index-w4c9vmvg.js +1517 -0
  238. package/dist/index-wqd8n2qk.js +574 -0
  239. package/dist/index-x12e6fzy.js +476 -0
  240. package/dist/index-xagpz645.js +2199 -0
  241. package/dist/index-xbth1r6e.js +572 -0
  242. package/dist/index-xm9fqhcb.js +447 -0
  243. package/dist/index-y59hnmd0.js +132 -0
  244. package/dist/index-y7mkb00x.js +133 -0
  245. package/dist/index-z40mjts9.js +212 -0
  246. package/dist/index-z5k5bjc7.js +1218 -0
  247. package/dist/index-z73sytma.js +895 -0
  248. package/dist/index-zjv6apef.js +1410 -0
  249. package/dist/index.js +8 -8
  250. package/dist/init-cwpergap.js +180 -0
  251. package/dist/login-83bjfhvz.js +77 -0
  252. package/dist/login-ddw888xb.js +77 -0
  253. package/dist/login-e7pytkdc.js +77 -0
  254. package/dist/login-fe0brfcr.js +77 -0
  255. package/dist/login-h7sm5trm.js +77 -0
  256. package/dist/login-vd0m3xr4.js +77 -0
  257. package/dist/previews-2wfvsjfy.js +1337 -0
  258. package/dist/previews-31feb8r3.js +1337 -0
  259. package/dist/previews-3w4pxqby.js +1337 -0
  260. package/dist/previews-93ttrf5f.js +1337 -0
  261. package/dist/previews-bdrefjzx.js +1337 -0
  262. package/dist/previews-cfcn56b4.js +1337 -0
  263. package/dist/previews-mssq1hrm.js +1337 -0
  264. package/dist/previews-tcaz1gt8.js +1337 -0
  265. package/dist/productions-4h80j2c7.js +505 -0
  266. package/dist/productions-86jaqt7m.js +505 -0
  267. package/dist/productions-bn2q31my.js +505 -0
  268. package/dist/productions-dv8g7f6g.js +505 -0
  269. package/dist/productions-e2m9s4tr.js +505 -0
  270. package/dist/productions-fgshs1m7.js +505 -0
  271. package/dist/productions-hphmt68n.js +505 -0
  272. package/dist/productions-vhq7yx86.js +505 -0
  273. package/dist/runtime/index.js +8 -8
  274. package/dist/secrets/local-secrets.d.ts +46 -0
  275. package/dist/secrets/local-secrets.d.ts.map +1 -0
  276. package/dist/secrets-8wcj47nh.js +91 -0
  277. package/dist/secrets-b2ww34ta.js +91 -0
  278. package/dist/secrets-b7g4z621.js +91 -0
  279. package/dist/shims/local-media-bindings.d.ts +19 -0
  280. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  281. package/dist/shims/local-worker-loader.d.ts +3 -0
  282. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  283. package/dist/sveltekit/index.js +163 -26
  284. package/dist/sveltekit/local-bindings.d.ts +4 -0
  285. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  286. package/dist/sveltekit/platform.d.ts +8 -0
  287. package/dist/sveltekit/platform.d.ts.map +1 -1
  288. package/dist/test/ai-search.d.ts +39 -0
  289. package/dist/test/ai-search.d.ts.map +1 -0
  290. package/dist/test/binding-hints.d.ts.map +1 -1
  291. package/dist/test/cf.d.ts +3 -3
  292. package/dist/test/containers.d.ts +87 -0
  293. package/dist/test/containers.d.ts.map +1 -0
  294. package/dist/test/index.d.ts +4 -1
  295. package/dist/test/index.d.ts.map +1 -1
  296. package/dist/test/index.js +2833 -543
  297. package/dist/test/local-worker-loader.d.ts +3 -0
  298. package/dist/test/local-worker-loader.d.ts.map +1 -0
  299. package/dist/test/offline-bindings.d.ts +65 -0
  300. package/dist/test/offline-bindings.d.ts.map +1 -0
  301. package/dist/test/queue.d.ts.map +1 -1
  302. package/dist/test/remote-ai.d.ts.map +1 -1
  303. package/dist/test/should-skip.d.ts +14 -0
  304. package/dist/test/should-skip.d.ts.map +1 -1
  305. package/dist/test/simple-context-bindings.d.ts.map +1 -1
  306. package/dist/test/simple-context-durable-objects.d.ts.map +1 -1
  307. package/dist/test/simple-context-gateway-script.d.ts +1 -1
  308. package/dist/test/simple-context-gateway-script.d.ts.map +1 -1
  309. package/dist/test/simple-context-lifecycle.d.ts.map +1 -1
  310. package/dist/test/simple-context-mfconfig.d.ts +4 -1
  311. package/dist/test/simple-context-mfconfig.d.ts.map +1 -1
  312. package/dist/test/simple-context-multi-worker.d.ts.map +1 -1
  313. package/dist/test/simple-context-startup.d.ts.map +1 -1
  314. package/dist/test/tail.d.ts.map +1 -1
  315. package/dist/test/utilities/artifacts.d.ts +11 -0
  316. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  317. package/dist/test/utilities/context.d.ts +39 -0
  318. package/dist/test/utilities/context.d.ts.map +1 -0
  319. package/dist/test/utilities/d1.d.ts +21 -0
  320. package/dist/test/utilities/d1.d.ts.map +1 -0
  321. package/dist/test/utilities/env.d.ts +40 -0
  322. package/dist/test/utilities/env.d.ts.map +1 -0
  323. package/dist/test/utilities/kv.d.ts +11 -0
  324. package/dist/test/utilities/kv.d.ts.map +1 -0
  325. package/dist/test/utilities/media.d.ts +16 -0
  326. package/dist/test/utilities/media.d.ts.map +1 -0
  327. package/dist/test/utilities/platform.d.ts +38 -0
  328. package/dist/test/utilities/platform.d.ts.map +1 -0
  329. package/dist/test/utilities/queue.d.ts +5 -0
  330. package/dist/test/utilities/queue.d.ts.map +1 -0
  331. package/dist/test/utilities/r2.d.ts +12 -0
  332. package/dist/test/utilities/r2.d.ts.map +1 -0
  333. package/dist/test/utilities/workflows.d.ts +26 -0
  334. package/dist/test/utilities/workflows.d.ts.map +1 -0
  335. package/dist/test/utilities.d.ts +10 -106
  336. package/dist/test/utilities.d.ts.map +1 -1
  337. package/dist/types-2ejrbba1.js +695 -0
  338. package/dist/types-7jkbm95a.js +695 -0
  339. package/dist/types-a2fk9yns.js +695 -0
  340. package/dist/types-dyb3c6zw.js +695 -0
  341. package/dist/types-e2n9f3pd.js +695 -0
  342. package/dist/types-j4s6qcrc.js +695 -0
  343. package/dist/utils/send-email.d.ts.map +1 -1
  344. package/dist/utils/send-email.js +1 -1
  345. package/dist/vite/index.js +6 -6
  346. package/dist/vite/plugin-context.d.ts.map +1 -1
  347. package/dist/worker-663em30d.js +513 -0
  348. package/dist/worker-argxc7fb.js +513 -0
  349. package/dist/worker-entry/composed-worker.d.ts.map +1 -1
  350. package/dist/worker-entry/surface-paths.d.ts +2 -0
  351. package/dist/worker-entry/surface-paths.d.ts.map +1 -1
  352. package/dist/worker-fcdsnj14.js +513 -0
  353. package/dist/worker-fk42rzse.js +513 -0
  354. package/dist/worker-jkemk8d2.js +513 -0
  355. package/dist/worker-m4ze8djx.js +513 -0
  356. package/dist/worker-wnan5dca.js +513 -0
  357. package/dist/worker-yw3atfb1.js +513 -0
  358. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  359. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  360. package/package.json +13 -12
@@ -0,0 +1,467 @@
1
+ import {
2
+ bridgeEnv
3
+ } from "./index-hpjh0qjx.js";
4
+ import {
5
+ wrapEnvSendEmailBindings
6
+ } from "./index-124e9t4t.js";
7
+
8
+ // src/runtime/validation.ts
9
+ class ContextAccessError extends Error {
10
+ contextName;
11
+ propertyName;
12
+ constructor(contextName, propertyName) {
13
+ super(`Cannot access ${contextName}.${propertyName} outside of an active Devflare handler trail.
14
+
15
+ ` + `This typically happens when:
16
+ ` + ` 1. Accessing ${contextName} at module top-level (during import)
17
+ ` + ` 2. Accessing ${contextName} in a callback that runs after the handler ends
18
+ ` + ` 3. Accessing ${contextName} in a setTimeout/setInterval callback
19
+
20
+ ` + `Move the access inside your handler function or middleware.`);
21
+ this.name = "ContextAccessError";
22
+ this.contextName = contextName;
23
+ this.propertyName = propertyName;
24
+ }
25
+ }
26
+ function createContextProxy(getter, name, options = {}) {
27
+ const mutable = options.mutable ?? true;
28
+ return new Proxy({}, {
29
+ get(_target, prop) {
30
+ const ctx = getter();
31
+ if (ctx === undefined || ctx === null) {
32
+ throw new ContextAccessError(name, String(prop));
33
+ }
34
+ return ctx[prop];
35
+ },
36
+ set(_target, prop, value) {
37
+ if (!mutable) {
38
+ throw new TypeError(`Cannot assign to '${String(prop)}' on '${name}' because it is read-only.
39
+ ` + `Use 'locals' for mutable request-scoped data.`);
40
+ }
41
+ const ctx = getter();
42
+ if (ctx === undefined || ctx === null) {
43
+ throw new ContextAccessError(name, String(prop));
44
+ }
45
+ ctx[prop] = value;
46
+ return true;
47
+ },
48
+ deleteProperty(_target, prop) {
49
+ if (!mutable) {
50
+ throw new TypeError(`Cannot delete property '${String(prop)}' from '${name}' because it is read-only.`);
51
+ }
52
+ const ctx = getter();
53
+ if (ctx === undefined || ctx === null) {
54
+ return true;
55
+ }
56
+ return Reflect.deleteProperty(ctx, prop);
57
+ },
58
+ has(_target, prop) {
59
+ const ctx = getter();
60
+ if (ctx === undefined || ctx === null) {
61
+ return false;
62
+ }
63
+ return prop in ctx;
64
+ },
65
+ ownKeys(_target) {
66
+ const ctx = getter();
67
+ if (ctx === undefined || ctx === null) {
68
+ return [];
69
+ }
70
+ return Reflect.ownKeys(ctx);
71
+ },
72
+ getOwnPropertyDescriptor(_target, prop) {
73
+ const ctx = getter();
74
+ if (ctx === undefined || ctx === null) {
75
+ return;
76
+ }
77
+ const descriptor = Reflect.getOwnPropertyDescriptor(ctx, prop);
78
+ if (!descriptor) {
79
+ return;
80
+ }
81
+ if (!mutable) {
82
+ return { ...descriptor, writable: false };
83
+ }
84
+ return descriptor;
85
+ }
86
+ });
87
+ }
88
+
89
+ // src/runtime/context-events.ts
90
+ function createLocals(locals) {
91
+ return locals ?? {};
92
+ }
93
+ function prepareEventShell(env, options = {}) {
94
+ return {
95
+ env: wrapEnvSendEmailBindings(env),
96
+ locals: createLocals(options.locals)
97
+ };
98
+ }
99
+ function createAugmentedTarget(target, extra) {
100
+ return new Proxy(target, {
101
+ get(target2, prop) {
102
+ if (prop in extra) {
103
+ return extra[prop];
104
+ }
105
+ const value = Reflect.get(target2, prop, target2);
106
+ return typeof value === "function" ? value.bind(target2) : value;
107
+ },
108
+ has(target2, prop) {
109
+ return prop in extra || prop in target2;
110
+ },
111
+ ownKeys(target2) {
112
+ return Array.from(new Set([
113
+ ...Reflect.ownKeys(target2),
114
+ ...Reflect.ownKeys(extra)
115
+ ]));
116
+ },
117
+ getOwnPropertyDescriptor(target2, prop) {
118
+ if (prop in extra) {
119
+ return {
120
+ configurable: true,
121
+ enumerable: true,
122
+ writable: false,
123
+ value: extra[prop]
124
+ };
125
+ }
126
+ return Reflect.getOwnPropertyDescriptor(target2, prop);
127
+ }
128
+ });
129
+ }
130
+ function createBaseEvent(type, env, ctx, options = {}) {
131
+ const shell = prepareEventShell(env, { locals: options.locals });
132
+ return {
133
+ type,
134
+ ctx,
135
+ ...shell,
136
+ request: options.request ?? null,
137
+ params: options.params
138
+ };
139
+ }
140
+ function createFetchEvent(request, env, ctx, options = {}) {
141
+ const shell = prepareEventShell(env, { locals: options.locals });
142
+ return createAugmentedTarget(request, {
143
+ type: "fetch",
144
+ ctx,
145
+ ...shell,
146
+ url: new URL(request.url),
147
+ request,
148
+ params: options.params ?? {}
149
+ });
150
+ }
151
+ function createQueueEvent(batch, env, ctx, options = {}) {
152
+ const shell = prepareEventShell(env, { locals: options.locals });
153
+ return createAugmentedTarget(batch, {
154
+ type: "queue",
155
+ ctx,
156
+ ...shell,
157
+ batch
158
+ });
159
+ }
160
+ function createScheduledEvent(controller, env, ctx, options = {}) {
161
+ const shell = prepareEventShell(env, { locals: options.locals });
162
+ return createAugmentedTarget(controller, {
163
+ type: "scheduled",
164
+ ctx,
165
+ ...shell,
166
+ controller
167
+ });
168
+ }
169
+ function createEmailEvent(message, env, ctx, options = {}) {
170
+ const shell = prepareEventShell(env, { locals: options.locals });
171
+ return createAugmentedTarget(message, {
172
+ type: "email",
173
+ ctx,
174
+ ...shell,
175
+ message
176
+ });
177
+ }
178
+ function createTailEvent(events, env, ctx, options = {}) {
179
+ const shell = prepareEventShell(env, { locals: options.locals });
180
+ return createAugmentedTarget(events, {
181
+ type: "tail",
182
+ ctx,
183
+ ...shell,
184
+ events
185
+ });
186
+ }
187
+ function createDurableObjectFetchEvent(request, env, state, options = {}) {
188
+ const shell = prepareEventShell(env, { locals: options.locals });
189
+ return createAugmentedTarget(request, {
190
+ type: "durable-object-fetch",
191
+ ctx: state,
192
+ state,
193
+ ...shell,
194
+ request
195
+ });
196
+ }
197
+ function createDurableObjectAlarmEvent(env, state, options = {}) {
198
+ const shell = prepareEventShell(env, { locals: options.locals });
199
+ return {
200
+ type: "durable-object-alarm",
201
+ ctx: state,
202
+ state,
203
+ ...shell
204
+ };
205
+ }
206
+ function createDurableObjectWebSocketMessageEvent(ws, message, env, state, options = {}) {
207
+ const shell = prepareEventShell(env, { locals: options.locals });
208
+ return createAugmentedTarget(ws, {
209
+ type: "durable-object-websocket-message",
210
+ ctx: state,
211
+ state,
212
+ ...shell,
213
+ ws,
214
+ message
215
+ });
216
+ }
217
+ function createDurableObjectWebSocketCloseEvent(ws, code, reason, wasClean, env, state, options = {}) {
218
+ const shell = prepareEventShell(env, { locals: options.locals });
219
+ return createAugmentedTarget(ws, {
220
+ type: "durable-object-websocket-close",
221
+ ctx: state,
222
+ state,
223
+ ...shell,
224
+ ws,
225
+ code,
226
+ reason,
227
+ wasClean
228
+ });
229
+ }
230
+ function createDurableObjectWebSocketErrorEvent(ws, error, env, state, options = {}) {
231
+ const shell = prepareEventShell(env, { locals: options.locals });
232
+ return createAugmentedTarget(ws, {
233
+ type: "durable-object-websocket-error",
234
+ ctx: state,
235
+ state,
236
+ ...shell,
237
+ ws,
238
+ error
239
+ });
240
+ }
241
+ function createDefaultEvent(env, ctx, request, type, locals) {
242
+ switch (type) {
243
+ case "fetch": {
244
+ if (request && ctx) {
245
+ return createFetchEvent(request, env, ctx, { locals });
246
+ }
247
+ return createBaseEvent(type, env, ctx, { locals, request });
248
+ }
249
+ case "durable-object-fetch": {
250
+ if (request && ctx) {
251
+ return createDurableObjectFetchEvent(request, env, ctx, { locals });
252
+ }
253
+ return createBaseEvent(type, env, ctx, { locals, request });
254
+ }
255
+ case "durable-object-alarm": {
256
+ if (ctx) {
257
+ return createDurableObjectAlarmEvent(env, ctx, { locals });
258
+ }
259
+ return createBaseEvent(type, env, ctx, { locals });
260
+ }
261
+ case "queue":
262
+ case "scheduled":
263
+ case "email":
264
+ case "tail":
265
+ case "durable-object-websocket-message":
266
+ case "durable-object-websocket-close":
267
+ case "durable-object-websocket-error":
268
+ return createBaseEvent(type, env, ctx, { locals, request });
269
+ default: {
270
+ const exhaustive = type;
271
+ throw new Error(`createDefaultEvent: unknown event type ${String(exhaustive)}`);
272
+ }
273
+ }
274
+ }
275
+
276
+ // src/runtime/context.ts
277
+ import { AsyncLocalStorage } from "node:async_hooks";
278
+ var storage = new AsyncLocalStorage;
279
+ function createLocals2() {
280
+ return {};
281
+ }
282
+ function runWithContext(env, ctx, request, fn, type = "fetch") {
283
+ const locals = createLocals2();
284
+ const event = createDefaultEvent(env, ctx, request, type, locals);
285
+ return runWithEventContext(event, fn);
286
+ }
287
+ function runWithEventContext(event, fn) {
288
+ const context = {
289
+ env: event.env,
290
+ ctx: event.ctx,
291
+ request: event.request ?? null,
292
+ locals: event.locals,
293
+ type: event.type,
294
+ event
295
+ };
296
+ return storage.run(context, fn);
297
+ }
298
+ function getContext() {
299
+ const context = storage.getStore();
300
+ if (!context) {
301
+ throw new ContextUnavailableError;
302
+ }
303
+ return context;
304
+ }
305
+ function getContextOrNull() {
306
+ const context = storage.getStore();
307
+ return context ?? null;
308
+ }
309
+ function getEventContext() {
310
+ return getContext().event;
311
+ }
312
+ function getEventContextOrNull() {
313
+ return getContextOrNull()?.event ?? null;
314
+ }
315
+ function hasContext() {
316
+ return storage.getStore() !== undefined;
317
+ }
318
+ function createEventAccessor(name, matcher) {
319
+ const accessor = () => {
320
+ const currentEvent = getEventContextOrNull();
321
+ if (!currentEvent) {
322
+ throw new ContextUnavailableError;
323
+ }
324
+ if (!matcher(currentEvent)) {
325
+ throw new ContextUnavailableError(`${name} is not available in the current '${currentEvent.type}' context.
326
+
327
+ Devflare stores event objects in AsyncLocalStorage so helpers called within a handler can reach the active event.
328
+ Use ${name}.safe() to return null instead of throwing, or call the getter that matches the active surface.`);
329
+ }
330
+ return currentEvent;
331
+ };
332
+ accessor.safe = () => {
333
+ const currentEvent = getEventContextOrNull();
334
+ return currentEvent && matcher(currentEvent) ? currentEvent : null;
335
+ };
336
+ return accessor;
337
+ }
338
+ function isFetchEvent(event) {
339
+ return event.type === "fetch" && event.request instanceof Request;
340
+ }
341
+ function isQueueEvent(event) {
342
+ return event.type === "queue" && "batch" in event;
343
+ }
344
+ function isScheduledEvent(event) {
345
+ return event.type === "scheduled" && "controller" in event;
346
+ }
347
+ function isEmailEvent(event) {
348
+ return event.type === "email" && "message" in event;
349
+ }
350
+ function isTailEvent(event) {
351
+ return event.type === "tail" && Array.isArray(event) && "events" in event;
352
+ }
353
+ function isDurableObjectEvent(event) {
354
+ return event.type.startsWith("durable-object-") && "state" in event;
355
+ }
356
+ function isDurableObjectFetchEvent(event) {
357
+ return event.type === "durable-object-fetch" && event.request instanceof Request;
358
+ }
359
+ function isDurableObjectAlarmEvent(event) {
360
+ return event.type === "durable-object-alarm" && "state" in event;
361
+ }
362
+ function isDurableObjectWebSocketMessageEvent(event) {
363
+ return event.type === "durable-object-websocket-message" && "ws" in event && "message" in event;
364
+ }
365
+ function isDurableObjectWebSocketCloseEvent(event) {
366
+ return event.type === "durable-object-websocket-close" && "ws" in event && "code" in event;
367
+ }
368
+ function isDurableObjectWebSocketErrorEvent(event) {
369
+ return event.type === "durable-object-websocket-error" && "ws" in event && "error" in event;
370
+ }
371
+ var getFetchEvent = createEventAccessor("getFetchEvent()", isFetchEvent);
372
+ var getQueueEvent = createEventAccessor("getQueueEvent()", isQueueEvent);
373
+ var getScheduledEvent = createEventAccessor("getScheduledEvent()", isScheduledEvent);
374
+ var getEmailEvent = createEventAccessor("getEmailEvent()", isEmailEvent);
375
+ var getTailEvent = createEventAccessor("getTailEvent()", isTailEvent);
376
+ var getDurableObjectEvent = createEventAccessor("getDurableObjectEvent()", isDurableObjectEvent);
377
+ var getDurableObjectFetchEvent = createEventAccessor("getDurableObjectFetchEvent()", isDurableObjectFetchEvent);
378
+ var getDurableObjectAlarmEvent = createEventAccessor("getDurableObjectAlarmEvent()", isDurableObjectAlarmEvent);
379
+ var getDurableObjectWebSocketMessageEvent = createEventAccessor("getDurableObjectWebSocketMessageEvent()", isDurableObjectWebSocketMessageEvent);
380
+ var getDurableObjectWebSocketCloseEvent = createEventAccessor("getDurableObjectWebSocketCloseEvent()", isDurableObjectWebSocketCloseEvent);
381
+ var getDurableObjectWebSocketErrorEvent = createEventAccessor("getDurableObjectWebSocketErrorEvent()", isDurableObjectWebSocketErrorEvent);
382
+
383
+ class ContextUnavailableError extends ContextAccessError {
384
+ code = "CONTEXT_UNAVAILABLE";
385
+ constructor(message) {
386
+ super("context", "<unavailable>");
387
+ if (message !== undefined) {
388
+ this.message = message;
389
+ } else {
390
+ this.message = `Context not available. Devflare uses AsyncLocalStorage to carry the active event through fetch, queue, scheduled, email, tail, and Durable Object handler call chains.
391
+
392
+ ` + `This usually means one of:
393
+
394
+ ` + `1. Accessing context at module top-level (runs at cold start, not per-request)
395
+ ` + `2. Accessing context in setTimeout/setInterval callbacks
396
+ ` + `3. Missing 'nodejs_compat' compatibility flag in your worker config
397
+
398
+ ` + `Fix: Move the access inside your handler, middleware, or a helper called from that handler trail.
399
+ ` + `Learn more: https://devflare.dev/docs/context-errors`;
400
+ }
401
+ this.name = "ContextUnavailableError";
402
+ }
403
+ }
404
+
405
+ // src/env.ts
406
+ var testContextEnv = null;
407
+ var testContextDispose = null;
408
+ function __setTestContext(envBindings, dispose) {
409
+ testContextEnv = envBindings;
410
+ testContextDispose = dispose;
411
+ }
412
+ function __clearTestContext() {
413
+ testContextEnv = null;
414
+ testContextDispose = null;
415
+ }
416
+ var env = new Proxy({}, {
417
+ get(_target, prop) {
418
+ if (prop === "dispose") {
419
+ return async () => {
420
+ if (testContextDispose) {
421
+ await testContextDispose();
422
+ __clearTestContext();
423
+ }
424
+ };
425
+ }
426
+ const ctx = getContextOrNull();
427
+ if (ctx?.env) {
428
+ return ctx.env[prop];
429
+ }
430
+ if (testContextEnv) {
431
+ return testContextEnv[prop];
432
+ }
433
+ return bridgeEnv[prop];
434
+ },
435
+ has(_target, prop) {
436
+ if (prop === "dispose")
437
+ return true;
438
+ const ctx = getContextOrNull();
439
+ if (ctx?.env) {
440
+ return prop in ctx.env;
441
+ }
442
+ if (testContextEnv) {
443
+ return prop in testContextEnv;
444
+ }
445
+ return prop in bridgeEnv;
446
+ },
447
+ ownKeys(_target) {
448
+ const ctx = getContextOrNull();
449
+ if (ctx?.env) {
450
+ return Reflect.ownKeys(ctx.env);
451
+ }
452
+ if (testContextEnv) {
453
+ return Reflect.ownKeys(testContextEnv);
454
+ }
455
+ return Reflect.ownKeys(bridgeEnv);
456
+ },
457
+ getOwnPropertyDescriptor(_target, prop) {
458
+ if (prop === "dispose") {
459
+ return { configurable: true, enumerable: false, writable: false };
460
+ }
461
+ const ctx = getContextOrNull();
462
+ const source = ctx?.env ?? testContextEnv ?? bridgeEnv;
463
+ return Reflect.getOwnPropertyDescriptor(source, prop);
464
+ }
465
+ });
466
+
467
+ export { ContextAccessError, createContextProxy, createFetchEvent, createQueueEvent, createScheduledEvent, createEmailEvent, createTailEvent, createDurableObjectFetchEvent, createDurableObjectAlarmEvent, createDurableObjectWebSocketMessageEvent, createDurableObjectWebSocketCloseEvent, createDurableObjectWebSocketErrorEvent, runWithContext, runWithEventContext, getContext, getContextOrNull, getEventContext, getEventContextOrNull, hasContext, getFetchEvent, getQueueEvent, getScheduledEvent, getEmailEvent, getTailEvent, getDurableObjectEvent, getDurableObjectFetchEvent, getDurableObjectAlarmEvent, getDurableObjectWebSocketMessageEvent, getDurableObjectWebSocketCloseEvent, getDurableObjectWebSocketErrorEvent, ContextUnavailableError, __setTestContext, __clearTestContext, env };