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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. package/LICENSE +21 -0
  2. package/LLM.md +17312 -2139
  3. package/README.md +394 -605
  4. package/bin/devflare.js +30 -14
  5. package/dist/_chunks/account-BI3WZMDy.js +462 -0
  6. package/dist/_chunks/account-resources-CsmVowJp.js +159 -0
  7. package/dist/_chunks/ai-CBEuLdoP.js +322 -0
  8. package/dist/_chunks/api-TzdliH-6.js +568 -0
  9. package/dist/_chunks/build-artifacts-DU5V0J0Z.js +483 -0
  10. package/dist/_chunks/build-e0KR38-4.js +24 -0
  11. package/dist/_chunks/cli-DuUz10Mn.js +1163 -0
  12. package/dist/_chunks/cloudflare-BaloqI3H.js +157 -0
  13. package/dist/_chunks/colors-DiK6wPJ5.js +13 -0
  14. package/dist/_chunks/command-utils-DA0Qx9_K.js +45 -0
  15. package/dist/_chunks/compiler-Zw16C9Pi.js +489 -0
  16. package/dist/_chunks/config-Brju62xy.js +78 -0
  17. package/dist/_chunks/config-path-DaL1ylZ_.js +42 -0
  18. package/dist/_chunks/context-CX50Y2Kb.js +2250 -0
  19. package/dist/_chunks/decorators-QmV57ixr.js +19 -0
  20. package/dist/_chunks/dependencies-C2oxFjU_.js +57 -0
  21. package/dist/_chunks/deploy-B-Kku1Vk.js +1032 -0
  22. package/dist/_chunks/dev-D4e_RRZn.js +3471 -0
  23. package/dist/_chunks/doctor-jm_K4dxL.js +219 -0
  24. package/dist/_chunks/durable-object-DMtH0XYX.js +234 -0
  25. package/dist/_chunks/env-S0_nMVz1.js +125 -0
  26. package/dist/_chunks/family-_9-mGSfO.js +143 -0
  27. package/dist/_chunks/generated-artifacts-dMJY4KAt.js +32 -0
  28. package/dist/_chunks/glob-CmQOvunB.js +56 -0
  29. package/dist/_chunks/init-DnkJOmpW.js +165 -0
  30. package/dist/_chunks/loader-Cr0_OWPy.js +1288 -0
  31. package/dist/_chunks/local-dev-vars-CTSa-wvF.js +81 -0
  32. package/dist/_chunks/local-hyperdrive-CJ90j46O.js +119 -0
  33. package/dist/_chunks/local-media-bindings-DsAW4AMF.js +335 -0
  34. package/dist/_chunks/local-secrets-DMPkmOn3.js +123 -0
  35. package/dist/_chunks/local-workflow-entrypoints-Cq_WJajd.js +90 -0
  36. package/dist/_chunks/login-FjTAAQbi.js +51 -0
  37. package/dist/_chunks/package-metadata-DjHBLB-z.js +39 -0
  38. package/dist/_chunks/preferences-BKp_7XJx.js +241 -0
  39. package/dist/_chunks/preview-C3Cdr8an.js +462 -0
  40. package/dist/_chunks/preview-registry-ClAbLTHH.js +1186 -0
  41. package/dist/_chunks/preview-resources-CGMBjsYB.js +359 -0
  42. package/dist/_chunks/previews-C7hs9-BT.js +1134 -0
  43. package/dist/_chunks/productions-T9Als4fE.js +411 -0
  44. package/dist/_chunks/ref-CYJNAAe_.js +178 -0
  45. package/dist/_chunks/remote-CZnP-HLJ.js +79 -0
  46. package/dist/_chunks/remote-config-D39BY9ji.js +132 -0
  47. package/dist/_chunks/resolve-package-qizBfCIm.js +152 -0
  48. package/dist/_chunks/rolldown-runtime-CvQ6eiug.js +14 -0
  49. package/dist/_chunks/routes-BFYCqHb-.js +833 -0
  50. package/dist/_chunks/runtime-DL-Nz3k8.js +550 -0
  51. package/dist/_chunks/schema-normalization-BCwTLTGp.js +660 -0
  52. package/dist/_chunks/secrets-DIpJGe6C.js +95 -0
  53. package/dist/_chunks/tail-IY-ijYmv.js +239 -0
  54. package/dist/_chunks/token-Dmi0KXyX.js +333 -0
  55. package/dist/_chunks/tokens-iVcgNXi-.js +221 -0
  56. package/dist/_chunks/types-DoKsMYfm.js +484 -0
  57. package/dist/_chunks/ui-BUoZApvE.js +103 -0
  58. package/dist/_chunks/usage-BBTGzjon.js +272 -0
  59. package/dist/_chunks/vite-CGtVNf5E.js +1267 -0
  60. package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
  61. package/dist/_chunks/worker-BEZI4od1.js +410 -0
  62. package/dist/_chunks/worker-bundler-dTTnYU3n.js +458 -0
  63. package/dist/_chunks/worker-entrypoint-CQW77lG8.js +247 -0
  64. package/dist/_chunks/workerName-CFJsLZA-.js +23 -0
  65. package/dist/bridge/client.d.ts +49 -7
  66. package/dist/bridge/client.d.ts.map +1 -1
  67. package/dist/bridge/gateway-runtime.d.ts +8 -0
  68. package/dist/bridge/gateway-runtime.d.ts.map +1 -0
  69. package/dist/bridge/index.d.ts +6 -6
  70. package/dist/bridge/index.d.ts.map +1 -1
  71. package/dist/bridge/log.d.ts +5 -0
  72. package/dist/bridge/log.d.ts.map +1 -0
  73. package/dist/bridge/miniflare.d.ts +82 -2
  74. package/dist/bridge/miniflare.d.ts.map +1 -1
  75. package/dist/bridge/proxy.d.ts +12 -11
  76. package/dist/bridge/proxy.d.ts.map +1 -1
  77. package/dist/bridge/server.d.ts +2 -1
  78. package/dist/bridge/server.d.ts.map +1 -1
  79. package/dist/bridge/v2/body-streams.d.ts +53 -0
  80. package/dist/bridge/v2/body-streams.d.ts.map +1 -0
  81. package/dist/bridge/v2/codec.d.ts +106 -0
  82. package/dist/bridge/v2/codec.d.ts.map +1 -0
  83. package/dist/bridge/v2/control-messages.d.ts +46 -0
  84. package/dist/bridge/v2/control-messages.d.ts.map +1 -0
  85. package/dist/bridge/v2/frames.d.ts +109 -0
  86. package/dist/bridge/v2/frames.d.ts.map +1 -0
  87. package/dist/bridge/v2/index.d.ts +11 -0
  88. package/dist/bridge/v2/index.d.ts.map +1 -0
  89. package/dist/bridge/v2/serialization.d.ts +48 -0
  90. package/dist/bridge/v2/serialization.d.ts.map +1 -0
  91. package/dist/bridge/v2/transport.d.ts +31 -0
  92. package/dist/bridge/v2/transport.d.ts.map +1 -0
  93. package/dist/bridge/v2/value-codec.d.ts +61 -0
  94. package/dist/bridge/v2/value-codec.d.ts.map +1 -0
  95. package/dist/bridge/{serialization.d.ts → v2/value-serialization.d.ts} +40 -18
  96. package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
  97. package/dist/bridge/{protocol.d.ts → v2/wire.d.ts} +32 -8
  98. package/dist/bridge/v2/wire.d.ts.map +1 -0
  99. package/dist/bridge/v2/ws-relay.d.ts +53 -0
  100. package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
  101. package/dist/browser-shim/handler.d.ts +2 -2
  102. package/dist/browser-shim/handler.d.ts.map +1 -1
  103. package/dist/browser-shim/index.d.ts +2 -2
  104. package/dist/browser-shim/server.d.ts +63 -0
  105. package/dist/browser-shim/server.d.ts.map +1 -1
  106. package/dist/browser.d.ts +5411 -0
  107. package/dist/browser.d.ts.map +1 -0
  108. package/dist/browser.js +80 -0
  109. package/dist/bundler/defaults.d.ts +23 -0
  110. package/dist/bundler/defaults.d.ts.map +1 -0
  111. package/dist/bundler/do-bundler.d.ts +7 -0
  112. package/dist/bundler/do-bundler.d.ts.map +1 -1
  113. package/dist/bundler/index.d.ts +3 -1
  114. package/dist/bundler/index.d.ts.map +1 -1
  115. package/dist/bundler/rolldown-shared.d.ts +53 -0
  116. package/dist/bundler/rolldown-shared.d.ts.map +1 -0
  117. package/dist/bundler/worker-bundler.d.ts +13 -0
  118. package/dist/bundler/worker-bundler.d.ts.map +1 -0
  119. package/dist/bundler/worker-compat.d.ts +4 -0
  120. package/dist/bundler/worker-compat.d.ts.map +1 -0
  121. package/dist/cli/build-manifest.d.ts +66 -0
  122. package/dist/cli/build-manifest.d.ts.map +1 -0
  123. package/dist/cli/command-utils.d.ts +18 -0
  124. package/dist/cli/command-utils.d.ts.map +1 -0
  125. package/dist/cli/commands/account.d.ts +2 -2
  126. package/dist/cli/commands/account.d.ts.map +1 -1
  127. package/dist/cli/commands/ai.d.ts +1 -1
  128. package/dist/cli/commands/ai.d.ts.map +1 -1
  129. package/dist/cli/commands/build-artifacts.d.ts +40 -0
  130. package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
  131. package/dist/cli/commands/build.d.ts +2 -2
  132. package/dist/cli/commands/build.d.ts.map +1 -1
  133. package/dist/cli/commands/config.d.ts +4 -0
  134. package/dist/cli/commands/config.d.ts.map +1 -0
  135. package/dist/cli/commands/deploy/metadata.d.ts +18 -0
  136. package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
  137. package/dist/cli/commands/deploy/prepare.d.ts +23 -0
  138. package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
  139. package/dist/cli/commands/deploy/runtime.d.ts +4 -0
  140. package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
  141. package/dist/cli/commands/deploy/verification.d.ts +36 -0
  142. package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
  143. package/dist/cli/commands/deploy.d.ts +2 -2
  144. package/dist/cli/commands/deploy.d.ts.map +1 -1
  145. package/dist/cli/commands/dev.d.ts +9 -1
  146. package/dist/cli/commands/dev.d.ts.map +1 -1
  147. package/dist/cli/commands/doctor.d.ts +2 -2
  148. package/dist/cli/commands/doctor.d.ts.map +1 -1
  149. package/dist/cli/commands/init.d.ts +2 -2
  150. package/dist/cli/commands/init.d.ts.map +1 -1
  151. package/dist/cli/commands/login.d.ts +4 -0
  152. package/dist/cli/commands/login.d.ts.map +1 -0
  153. package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
  154. package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
  155. package/dist/cli/commands/previews-support/family.d.ts +10 -0
  156. package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
  157. package/dist/cli/commands/previews-support/render.d.ts +8 -0
  158. package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
  159. package/dist/cli/commands/previews-support/theme.d.ts +10 -0
  160. package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
  161. package/dist/cli/commands/previews-support/types.d.ts +70 -0
  162. package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
  163. package/dist/cli/commands/previews.d.ts +4 -0
  164. package/dist/cli/commands/previews.d.ts.map +1 -0
  165. package/dist/cli/commands/productions.d.ts +4 -0
  166. package/dist/cli/commands/productions.d.ts.map +1 -0
  167. package/dist/cli/commands/remote.d.ts +1 -1
  168. package/dist/cli/commands/remote.d.ts.map +1 -1
  169. package/dist/cli/commands/secrets.d.ts +4 -0
  170. package/dist/cli/commands/secrets.d.ts.map +1 -0
  171. package/dist/cli/commands/tail.d.ts +44 -0
  172. package/dist/cli/commands/tail.d.ts.map +1 -0
  173. package/dist/cli/commands/token.d.ts +4 -0
  174. package/dist/cli/commands/token.d.ts.map +1 -0
  175. package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
  176. package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
  177. package/dist/cli/commands/type-generation/generator.d.ts +121 -0
  178. package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
  179. package/dist/cli/commands/type-generation/models.d.ts +27 -0
  180. package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
  181. package/dist/cli/commands/types.d.ts +2 -2
  182. package/dist/cli/commands/types.d.ts.map +1 -1
  183. package/dist/cli/commands/worker.d.ts +4 -0
  184. package/dist/cli/commands/worker.d.ts.map +1 -0
  185. package/dist/cli/config-path.d.ts +6 -0
  186. package/dist/cli/config-path.d.ts.map +1 -0
  187. package/dist/cli/dependencies.d.ts +2 -1
  188. package/dist/cli/dependencies.d.ts.map +1 -1
  189. package/dist/cli/deploy-strategy.d.ts +17 -0
  190. package/dist/cli/deploy-strategy.d.ts.map +1 -0
  191. package/dist/cli/deploy-target.d.ts +17 -0
  192. package/dist/cli/deploy-target.d.ts.map +1 -0
  193. package/dist/cli/generated-artifacts.d.ts +12 -0
  194. package/dist/cli/generated-artifacts.d.ts.map +1 -0
  195. package/dist/cli/gradual-deploy.d.ts +49 -0
  196. package/dist/cli/gradual-deploy.d.ts.map +1 -0
  197. package/dist/cli/help-pages/pages/account.d.ts +3 -0
  198. package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
  199. package/dist/cli/help-pages/pages/core.d.ts +4 -0
  200. package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
  201. package/dist/cli/help-pages/pages/index.d.ts +3 -0
  202. package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
  203. package/dist/cli/help-pages/pages/misc.d.ts +3 -0
  204. package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
  205. package/dist/cli/help-pages/pages/previews.d.ts +3 -0
  206. package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
  207. package/dist/cli/help-pages/pages/productions.d.ts +3 -0
  208. package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
  209. package/dist/cli/help-pages/render.d.ts +12 -0
  210. package/dist/cli/help-pages/render.d.ts.map +1 -0
  211. package/dist/cli/help-pages/shared.d.ts +15 -0
  212. package/dist/cli/help-pages/shared.d.ts.map +1 -0
  213. package/dist/cli/help-pages/types.d.ts +23 -0
  214. package/dist/cli/help-pages/types.d.ts.map +1 -0
  215. package/dist/cli/help.d.ts +6 -0
  216. package/dist/cli/help.d.ts.map +1 -0
  217. package/dist/cli/index.d.ts +1 -0
  218. package/dist/cli/index.d.ts.map +1 -1
  219. package/dist/cli/index.js +2 -0
  220. package/dist/cli/package-metadata.d.ts +16 -0
  221. package/dist/cli/package-metadata.d.ts.map +1 -0
  222. package/dist/cli/preview-bindings.d.ts +49 -0
  223. package/dist/cli/preview-bindings.d.ts.map +1 -0
  224. package/dist/cli/preview.d.ts +10 -0
  225. package/dist/cli/preview.d.ts.map +1 -0
  226. package/dist/cli/ui.d.ts +37 -0
  227. package/dist/cli/ui.d.ts.map +1 -0
  228. package/dist/cli/workspace-build-guard.d.ts +14 -0
  229. package/dist/cli/workspace-build-guard.d.ts.map +1 -0
  230. package/dist/cli/wrangler-auth.d.ts +1 -1
  231. package/dist/cloudflare/account-core.d.ts +6 -0
  232. package/dist/cloudflare/account-core.d.ts.map +1 -0
  233. package/dist/cloudflare/account-resources.d.ts +40 -0
  234. package/dist/cloudflare/account-resources.d.ts.map +1 -0
  235. package/dist/cloudflare/account-status.d.ts +11 -0
  236. package/dist/cloudflare/account-status.d.ts.map +1 -0
  237. package/dist/cloudflare/account-workers.d.ts +14 -0
  238. package/dist/cloudflare/account-workers.d.ts.map +1 -0
  239. package/dist/cloudflare/account.d.ts +7 -64
  240. package/dist/cloudflare/account.d.ts.map +1 -1
  241. package/dist/cloudflare/api.d.ts +71 -3
  242. package/dist/cloudflare/api.d.ts.map +1 -1
  243. package/dist/cloudflare/auth.d.ts +1 -1
  244. package/dist/cloudflare/auth.d.ts.map +1 -1
  245. package/dist/cloudflare/index.d.ts +61 -6
  246. package/dist/cloudflare/index.d.ts.map +1 -1
  247. package/dist/cloudflare/index.js +4 -13
  248. package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
  249. package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
  250. package/dist/cloudflare/kv-namespace.d.ts +4 -0
  251. package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
  252. package/dist/cloudflare/preferences.d.ts +7 -0
  253. package/dist/cloudflare/preferences.d.ts.map +1 -1
  254. package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
  255. package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
  256. package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
  257. package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
  258. package/dist/cloudflare/preview-registry-records.d.ts +4 -0
  259. package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
  260. package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
  261. package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
  262. package/dist/cloudflare/preview-registry-store.d.ts +14 -0
  263. package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
  264. package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
  265. package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
  266. package/dist/cloudflare/preview-registry-types.d.ts +103 -0
  267. package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
  268. package/dist/cloudflare/preview-registry.d.ts +42 -0
  269. package/dist/cloudflare/preview-registry.d.ts.map +1 -0
  270. package/dist/cloudflare/preview-urls.d.ts +3 -0
  271. package/dist/cloudflare/preview-urls.d.ts.map +1 -0
  272. package/dist/cloudflare/registry-schema.d.ts +253 -0
  273. package/dist/cloudflare/registry-schema.d.ts.map +1 -0
  274. package/dist/cloudflare/remote-config.d.ts.map +1 -1
  275. package/dist/cloudflare/tokens.d.ts +44 -0
  276. package/dist/cloudflare/tokens.d.ts.map +1 -0
  277. package/dist/cloudflare/types.d.ts +124 -7
  278. package/dist/cloudflare/types.d.ts.map +1 -1
  279. package/dist/cloudflare/usage.d.ts +31 -3
  280. package/dist/cloudflare/usage.d.ts.map +1 -1
  281. package/dist/config/binding-resolution-helpers.d.ts +41 -0
  282. package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
  283. package/dist/config/compatibility.d.ts +3 -0
  284. package/dist/config/compatibility.d.ts.map +1 -0
  285. package/dist/config/compiler/bindings.d.ts +14 -0
  286. package/dist/config/compiler/bindings.d.ts.map +1 -0
  287. package/dist/config/compiler/core-helpers.d.ts +6 -0
  288. package/dist/config/compiler/core-helpers.d.ts.map +1 -0
  289. package/dist/config/compiler/do-workers.d.ts +34 -0
  290. package/dist/config/compiler/do-workers.d.ts.map +1 -0
  291. package/dist/config/compiler/paths.d.ts +18 -0
  292. package/dist/config/compiler/paths.d.ts.map +1 -0
  293. package/dist/config/compiler/types.d.ts +298 -0
  294. package/dist/config/compiler/types.d.ts.map +1 -0
  295. package/dist/config/compiler.d.ts +22 -134
  296. package/dist/config/compiler.d.ts.map +1 -1
  297. package/dist/config/cron.d.ts +19 -0
  298. package/dist/config/cron.d.ts.map +1 -0
  299. package/dist/config/define.d.ts +8 -5
  300. package/dist/config/define.d.ts.map +1 -1
  301. package/dist/config/deploy-resources.d.ts +58 -0
  302. package/dist/config/deploy-resources.d.ts.map +1 -0
  303. package/dist/config/env-vars.d.ts +309 -0
  304. package/dist/config/env-vars.d.ts.map +1 -0
  305. package/dist/config/framework-providers.d.ts +9 -0
  306. package/dist/config/framework-providers.d.ts.map +1 -0
  307. package/dist/config/index.d.ts +12 -5
  308. package/dist/config/index.d.ts.map +1 -1
  309. package/dist/config/loader.d.ts +2 -1
  310. package/dist/config/loader.d.ts.map +1 -1
  311. package/dist/config/local-dev-vars.d.ts +15 -0
  312. package/dist/config/local-dev-vars.d.ts.map +1 -0
  313. package/dist/config/preview-resources.d.ts +83 -0
  314. package/dist/config/preview-resources.d.ts.map +1 -0
  315. package/dist/config/preview.d.ts +29 -0
  316. package/dist/config/preview.d.ts.map +1 -0
  317. package/dist/config/ref.d.ts +16 -25
  318. package/dist/config/ref.d.ts.map +1 -1
  319. package/dist/config/resolve-phased.d.ts +72 -0
  320. package/dist/config/resolve-phased.d.ts.map +1 -0
  321. package/dist/config/resolve.d.ts +11 -0
  322. package/dist/config/resolve.d.ts.map +1 -0
  323. package/dist/config/resource-resolution.d.ts +80 -0
  324. package/dist/config/resource-resolution.d.ts.map +1 -0
  325. package/dist/config/schema-bindings.d.ts +2025 -0
  326. package/dist/config/schema-bindings.d.ts.map +1 -0
  327. package/dist/config/schema-build.d.ts +67 -0
  328. package/dist/config/schema-build.d.ts.map +1 -0
  329. package/dist/config/schema-env.d.ts +3579 -0
  330. package/dist/config/schema-env.d.ts.map +1 -0
  331. package/dist/config/schema-normalization.d.ts +265 -0
  332. package/dist/config/schema-normalization.d.ts.map +1 -0
  333. package/dist/config/schema-runtime.d.ts +508 -0
  334. package/dist/config/schema-runtime.d.ts.map +1 -0
  335. package/dist/config/schema-types-bindings-platform.d.ts +508 -0
  336. package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
  337. package/dist/config/schema-types-bindings-resources.d.ts +767 -0
  338. package/dist/config/schema-types-bindings-resources.d.ts.map +1 -0
  339. package/dist/config/schema-types-bindings.d.ts +293 -0
  340. package/dist/config/schema-types-bindings.d.ts.map +1 -0
  341. package/dist/config/schema-types-build.d.ts +86 -0
  342. package/dist/config/schema-types-build.d.ts.map +1 -0
  343. package/dist/config/schema-types-runtime.d.ts +917 -0
  344. package/dist/config/schema-types-runtime.d.ts.map +1 -0
  345. package/dist/config/schema-types.d.ts +424 -0
  346. package/dist/config/schema-types.d.ts.map +1 -0
  347. package/dist/config/schema.d.ts +5324 -2011
  348. package/dist/config/schema.d.ts.map +1 -1
  349. package/dist/config/service-bindings-validation.d.ts +36 -0
  350. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  351. package/dist/config-entry.d.ts +7 -0
  352. package/dist/config-entry.d.ts.map +1 -0
  353. package/dist/config-entry.js +3 -0
  354. package/dist/decorators/durable-object.d.ts.map +1 -1
  355. package/dist/decorators/index.d.ts +2 -2
  356. package/dist/decorators/index.js +2 -9
  357. package/dist/dev-server/d1-migrations.d.ts +36 -0
  358. package/dist/dev-server/d1-migrations.d.ts.map +1 -0
  359. package/dist/dev-server/dev-server-state.d.ts +59 -0
  360. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  361. package/dist/dev-server/gateway-script.d.ts +21 -0
  362. package/dist/dev-server/gateway-script.d.ts.map +1 -0
  363. package/dist/dev-server/index.d.ts +1 -1
  364. package/dist/dev-server/miniflare-bindings.d.ts +81 -0
  365. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  366. package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
  367. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  368. package/dist/dev-server/miniflare-log.d.ts +20 -0
  369. package/dist/dev-server/miniflare-log.d.ts.map +1 -0
  370. package/dist/dev-server/miniflare-worker-config.d.ts +82 -0
  371. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  372. package/dist/dev-server/reload-queue.d.ts +13 -0
  373. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  374. package/dist/dev-server/runtime-stdio.d.ts +8 -0
  375. package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
  376. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  377. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  378. package/dist/dev-server/server.d.ts +2 -0
  379. package/dist/dev-server/server.d.ts.map +1 -1
  380. package/dist/dev-server/vite-process.d.ts +15 -0
  381. package/dist/dev-server/vite-process.d.ts.map +1 -0
  382. package/dist/dev-server/vite-utils.d.ts +19 -1
  383. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  384. package/dist/dev-server/worker-source-watcher.d.ts +17 -0
  385. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
  386. package/dist/dev-server/worker-surface-paths.d.ts +6 -0
  387. package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
  388. package/dist/env.d.ts +10 -0
  389. package/dist/env.d.ts.map +1 -1
  390. package/dist/index.d.ts +8 -12
  391. package/dist/index.d.ts.map +1 -1
  392. package/dist/index.js +9 -298
  393. package/dist/runtime/context-events.d.ts +13 -0
  394. package/dist/runtime/context-events.d.ts.map +1 -0
  395. package/dist/runtime/context-types.d.ts +82 -0
  396. package/dist/runtime/context-types.d.ts.map +1 -0
  397. package/dist/runtime/context.d.ts +20 -44
  398. package/dist/runtime/context.d.ts.map +1 -1
  399. package/dist/runtime/exports.d.ts +70 -55
  400. package/dist/runtime/exports.d.ts.map +1 -1
  401. package/dist/runtime/index.d.ts +10 -3
  402. package/dist/runtime/index.d.ts.map +1 -1
  403. package/dist/runtime/index.js +5 -111
  404. package/dist/runtime/middleware.d.ts +119 -67
  405. package/dist/runtime/middleware.d.ts.map +1 -1
  406. package/dist/runtime/router/index.d.ts +7 -0
  407. package/dist/runtime/router/index.d.ts.map +1 -0
  408. package/dist/runtime/router/types.d.ts +24 -0
  409. package/dist/runtime/router/types.d.ts.map +1 -0
  410. package/dist/runtime/validation.d.ts +18 -4
  411. package/dist/runtime/validation.d.ts.map +1 -1
  412. package/dist/secrets/local-secrets.d.ts +46 -0
  413. package/dist/secrets/local-secrets.d.ts.map +1 -0
  414. package/dist/shims/local-hyperdrive.d.ts +12 -0
  415. package/dist/shims/local-hyperdrive.d.ts.map +1 -0
  416. package/dist/shims/local-media-bindings.d.ts +19 -0
  417. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  418. package/dist/shims/local-worker-loader.d.ts +3 -0
  419. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  420. package/dist/sveltekit/index.d.ts +1 -1
  421. package/dist/sveltekit/index.d.ts.map +1 -1
  422. package/dist/sveltekit/index.js +313 -167
  423. package/dist/sveltekit/local-bindings.d.ts +4 -0
  424. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  425. package/dist/sveltekit/platform.d.ts +20 -2
  426. package/dist/sveltekit/platform.d.ts.map +1 -1
  427. package/dist/test/ai-search.d.ts +39 -0
  428. package/dist/test/ai-search.d.ts.map +1 -0
  429. package/dist/test/alarm.d.ts +55 -0
  430. package/dist/test/alarm.d.ts.map +1 -0
  431. package/dist/test/binding-hints.d.ts +10 -0
  432. package/dist/test/binding-hints.d.ts.map +1 -0
  433. package/dist/test/cf.d.ts +71 -35
  434. package/dist/test/cf.d.ts.map +1 -1
  435. package/dist/test/containers.d.ts +87 -0
  436. package/dist/test/containers.d.ts.map +1 -0
  437. package/dist/test/email.d.ts +16 -7
  438. package/dist/test/email.d.ts.map +1 -1
  439. package/dist/test/index.d.ts +20 -21
  440. package/dist/test/index.d.ts.map +1 -1
  441. package/dist/test/index.js +4971 -70
  442. package/dist/test/offline-bindings.d.ts +115 -0
  443. package/dist/test/offline-bindings.d.ts.map +1 -0
  444. package/dist/test/queue.d.ts.map +1 -1
  445. package/dist/test/remote-ai.d.ts.map +1 -1
  446. package/dist/test/remote-cloudflare.d.ts +13 -0
  447. package/dist/test/remote-cloudflare.d.ts.map +1 -0
  448. package/dist/test/remote-vectorize.d.ts.map +1 -1
  449. package/dist/test/resolve-service-bindings.d.ts +64 -4
  450. package/dist/test/resolve-service-bindings.d.ts.map +1 -1
  451. package/dist/test/scheduled.d.ts.map +1 -1
  452. package/dist/test/should-skip.d.ts +14 -18
  453. package/dist/test/should-skip.d.ts.map +1 -1
  454. package/dist/test/simple-context-bindings.d.ts +13 -0
  455. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  456. package/dist/test/simple-context-durable-objects.d.ts +6 -0
  457. package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
  458. package/dist/test/simple-context-env.d.ts +35 -0
  459. package/dist/test/simple-context-env.d.ts.map +1 -0
  460. package/dist/test/simple-context-gateway-script.d.ts +2 -0
  461. package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
  462. package/dist/test/simple-context-handlers.d.ts +12 -0
  463. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  464. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  465. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  466. package/dist/test/simple-context-mfconfig.d.ts +10 -0
  467. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  468. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  469. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  470. package/dist/test/simple-context-paths.d.ts +40 -0
  471. package/dist/test/simple-context-paths.d.ts.map +1 -0
  472. package/dist/test/simple-context-runtime.d.ts +19 -0
  473. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  474. package/dist/test/simple-context-startup.d.ts +11 -0
  475. package/dist/test/simple-context-startup.d.ts.map +1 -0
  476. package/dist/test/simple-context-transport.d.ts +14 -0
  477. package/dist/test/simple-context-transport.d.ts.map +1 -0
  478. package/dist/test/simple-context.d.ts +8 -27
  479. package/dist/test/simple-context.d.ts.map +1 -1
  480. package/dist/test/tail.d.ts +3 -2
  481. package/dist/test/tail.d.ts.map +1 -1
  482. package/dist/test/utilities/analytics-engine.d.ts +22 -0
  483. package/dist/test/utilities/analytics-engine.d.ts.map +1 -0
  484. package/dist/test/utilities/artifacts.d.ts +11 -0
  485. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  486. package/dist/test/utilities/context.d.ts +39 -0
  487. package/dist/test/utilities/context.d.ts.map +1 -0
  488. package/dist/test/utilities/d1.d.ts +21 -0
  489. package/dist/test/utilities/d1.d.ts.map +1 -0
  490. package/dist/test/utilities/env.d.ts +43 -0
  491. package/dist/test/utilities/env.d.ts.map +1 -0
  492. package/dist/test/utilities/kv.d.ts +11 -0
  493. package/dist/test/utilities/kv.d.ts.map +1 -0
  494. package/dist/test/utilities/media.d.ts +16 -0
  495. package/dist/test/utilities/media.d.ts.map +1 -0
  496. package/dist/test/utilities/platform.d.ts +41 -0
  497. package/dist/test/utilities/platform.d.ts.map +1 -0
  498. package/dist/test/utilities/queue.d.ts +5 -0
  499. package/dist/test/utilities/queue.d.ts.map +1 -0
  500. package/dist/test/utilities/r2.d.ts +2 -0
  501. package/dist/test/utilities/r2.d.ts.map +1 -0
  502. package/dist/test/utilities/stream-flagship.d.ts +27 -0
  503. package/dist/test/utilities/stream-flagship.d.ts.map +1 -0
  504. package/dist/test/utilities/vectorize.d.ts +38 -0
  505. package/dist/test/utilities/vectorize.d.ts.map +1 -0
  506. package/dist/test/utilities/workflows.d.ts +26 -0
  507. package/dist/test/utilities/workflows.d.ts.map +1 -0
  508. package/dist/test/utilities.d.ts +13 -98
  509. package/dist/test/utilities.d.ts.map +1 -1
  510. package/dist/test/worker.d.ts +6 -0
  511. package/dist/test/worker.d.ts.map +1 -1
  512. package/dist/transform/durable-object.d.ts.map +1 -1
  513. package/dist/transform/index.d.ts +2 -2
  514. package/dist/transform/worker-entrypoint.d.ts +5 -0
  515. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  516. package/dist/utils/entrypoint-discovery.d.ts +6 -3
  517. package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
  518. package/dist/utils/glob.d.ts.map +1 -1
  519. package/dist/utils/resolve-package.d.ts.map +1 -1
  520. package/dist/utils/send-email.d.ts +15 -0
  521. package/dist/utils/send-email.d.ts.map +1 -0
  522. package/dist/utils/send-email.js +163 -0
  523. package/dist/vite/config-file.d.ts +25 -0
  524. package/dist/vite/config-file.d.ts.map +1 -0
  525. package/dist/vite/index.d.ts +3 -2
  526. package/dist/vite/index.d.ts.map +1 -1
  527. package/dist/vite/index.js +2 -339
  528. package/dist/vite/plugin-config-hook.d.ts +28 -0
  529. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  530. package/dist/vite/plugin-context.d.ts +27 -0
  531. package/dist/vite/plugin-context.d.ts.map +1 -0
  532. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  533. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  534. package/dist/vite/plugin-programmatic.d.ts +44 -0
  535. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  536. package/dist/vite/plugin-service-bindings.d.ts +13 -0
  537. package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
  538. package/dist/vite/plugin-transform.d.ts +41 -0
  539. package/dist/vite/plugin-transform.d.ts.map +1 -0
  540. package/dist/vite/plugin.d.ts +10 -41
  541. package/dist/vite/plugin.d.ts.map +1 -1
  542. package/dist/worker-entry/composed-worker.d.ts +7 -0
  543. package/dist/worker-entry/composed-worker.d.ts.map +1 -0
  544. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  545. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  546. package/dist/worker-entry/extensions.d.ts +5 -0
  547. package/dist/worker-entry/extensions.d.ts.map +1 -0
  548. package/dist/worker-entry/routes.d.ts +22 -0
  549. package/dist/worker-entry/routes.d.ts.map +1 -0
  550. package/dist/worker-entry/surface-paths.d.ts +26 -0
  551. package/dist/worker-entry/surface-paths.d.ts.map +1 -0
  552. package/dist/worker-entry/validate-fetch-style.d.ts +12 -0
  553. package/dist/worker-entry/validate-fetch-style.d.ts.map +1 -0
  554. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  555. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  556. package/package.json +159 -116
  557. package/R2.md +0 -170
  558. package/dist/account-rvrj687w.js +0 -397
  559. package/dist/ai-dx4fr9jh.js +0 -107
  560. package/dist/bridge/protocol.d.ts.map +0 -1
  561. package/dist/bridge/serialization.d.ts.map +0 -1
  562. package/dist/browser-shim/worker.d.ts +0 -14
  563. package/dist/browser-shim/worker.d.ts.map +0 -1
  564. package/dist/build-mnf6v8gd.js +0 -53
  565. package/dist/deploy-nhceck39.js +0 -70
  566. package/dist/dev-b9dmrj7b.js +0 -2417
  567. package/dist/doctor-fmgb3d28.js +0 -190
  568. package/dist/durable-object-t4kbb0yt.js +0 -13
  569. package/dist/index-07q6yxyc.js +0 -168
  570. package/dist/index-18hvb6gb.js +0 -194
  571. package/dist/index-1xpj0m4r.js +0 -57
  572. package/dist/index-37x76zdn.js +0 -4
  573. package/dist/index-3t6rypgc.js +0 -13
  574. package/dist/index-67qcae0f.js +0 -183
  575. package/dist/index-a855bdsx.js +0 -18
  576. package/dist/index-d8bdkx2h.js +0 -109
  577. package/dist/index-ep3445yc.js +0 -2225
  578. package/dist/index-gz1gndna.js +0 -307
  579. package/dist/index-hcex3rgh.js +0 -266
  580. package/dist/index-m2q41jwa.js +0 -462
  581. package/dist/index-n7rs26ft.js +0 -77
  582. package/dist/index-pf5s73n9.js +0 -1413
  583. package/dist/index-rbht7m9r.js +0 -36
  584. package/dist/index-tfyxa77h.js +0 -850
  585. package/dist/index-tk6ej9dj.js +0 -94
  586. package/dist/index-z14anrqp.js +0 -226
  587. package/dist/init-f9mgmew3.js +0 -186
  588. package/dist/remote-q59qk463.js +0 -97
  589. package/dist/test/bridge-context.d.ts +0 -76
  590. package/dist/test/bridge-context.d.ts.map +0 -1
  591. package/dist/test/multi-worker-context.d.ts +0 -114
  592. package/dist/test/multi-worker-context.d.ts.map +0 -1
  593. package/dist/types-5nyrz1sz.js +0 -454
  594. package/dist/worker-entrypoint-m9th0rg0.js +0 -13
@@ -0,0 +1,95 @@
1
+ import { i as listLocalSecrets, o as writeLocalSecret, r as deleteLocalSecret } from "./local-secrets-DMPkmOn3.js";
2
+ //#region src/cli/commands/secrets.ts
3
+ function getStringOption(options, key) {
4
+ const value = options[key];
5
+ return typeof value === "string" ? value : void 0;
6
+ }
7
+ function getCwd(options) {
8
+ return options.cwd ?? process.cwd();
9
+ }
10
+ function requireLocalFlag(parsed, logger) {
11
+ if (parsed.options.local === true) return true;
12
+ logger.error("Local Secrets Store commands require --local.");
13
+ return false;
14
+ }
15
+ function requireStoreAndName(parsed, logger) {
16
+ const storeId = getStringOption(parsed.options, "store");
17
+ const name = getStringOption(parsed.options, "name");
18
+ if (!storeId || !name) {
19
+ logger.error("Pass --store <id> and --name <name>.");
20
+ return;
21
+ }
22
+ return {
23
+ storeId,
24
+ name
25
+ };
26
+ }
27
+ function formatSecretRef(storeId, name) {
28
+ return `${storeId}/${name}`;
29
+ }
30
+ function usage() {
31
+ return [
32
+ "devflare secrets --local --store <id> --name <name> --value <value>",
33
+ "devflare secrets --local --store <id> --list",
34
+ "devflare secrets --local --store <id> --name <name> --delete"
35
+ ].join("\n");
36
+ }
37
+ function runSecretsCommand(parsed, logger, options) {
38
+ if (!requireLocalFlag(parsed, logger)) return {
39
+ exitCode: 1,
40
+ output: usage()
41
+ };
42
+ const cwd = getCwd(options);
43
+ const storeId = getStringOption(parsed.options, "store");
44
+ if (parsed.options.list === true) {
45
+ const output = listLocalSecrets({
46
+ cwd,
47
+ storeId
48
+ }).map((row) => formatSecretRef(row.storeId, row.name)).join("\n");
49
+ if (output) logger.info(output);
50
+ return {
51
+ exitCode: 0,
52
+ output
53
+ };
54
+ }
55
+ const required = requireStoreAndName(parsed, logger);
56
+ if (!required) return {
57
+ exitCode: 1,
58
+ output: usage()
59
+ };
60
+ if (parsed.options.delete === true) {
61
+ deleteLocalSecret({
62
+ cwd,
63
+ storeId: required.storeId,
64
+ name: required.name
65
+ });
66
+ const output = formatSecretRef(required.storeId, required.name);
67
+ logger.success(`Deleted local secret ${output}`);
68
+ return {
69
+ exitCode: 0,
70
+ output
71
+ };
72
+ }
73
+ const value = getStringOption(parsed.options, "value");
74
+ if (value === void 0) {
75
+ logger.error("Pass --value <value>, --list, or --delete.");
76
+ return {
77
+ exitCode: 1,
78
+ output: usage()
79
+ };
80
+ }
81
+ writeLocalSecret({
82
+ cwd,
83
+ storeId: required.storeId,
84
+ name: required.name,
85
+ value
86
+ });
87
+ const output = formatSecretRef(required.storeId, required.name);
88
+ logger.success(`Stored local secret ${output}`);
89
+ return {
90
+ exitCode: 0,
91
+ output
92
+ };
93
+ }
94
+ //#endregion
95
+ export { runSecretsCommand };
@@ -0,0 +1,239 @@
1
+ import { r as loadConfig } from "./loader-Cr0_OWPy.js";
2
+ import { p as getApiToken } from "./api-TzdliH-6.js";
3
+ import { d as green, f as logLine, g as yellow, h as whiteDim, m as red, o as dim, r as createCliTheme } from "./ui-BUoZApvE.js";
4
+ import { r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-DA0Qx9_K.js";
5
+ //#region src/cli/commands/tail.ts
6
+ const CLOUDFLARE_API_BASE = "https://api.cloudflare.com/client/v4";
7
+ const TAIL_SUBPROTOCOL = "trace-v1";
8
+ function parseTailFormat(value) {
9
+ const normalized = asOptionalString(value)?.toLowerCase();
10
+ if (normalized === void 0 || normalized === "pretty") return "pretty";
11
+ if (normalized === "json") return "json";
12
+ throw new Error(`--format must be "pretty" or "json", received "${String(value)}".`);
13
+ }
14
+ function formatTimestamp(timestamp) {
15
+ if (typeof timestamp !== "number" || !Number.isFinite(timestamp)) return (/* @__PURE__ */ new Date()).toISOString();
16
+ return new Date(timestamp).toISOString();
17
+ }
18
+ function describeTriggerEvent(event) {
19
+ if (!event) return "event";
20
+ if (event.request?.url) return `${event.request.method ?? "GET"} ${event.request.url}`;
21
+ if (event.cron) return `cron ${event.cron}`;
22
+ if (event.queue) return `queue ${event.queue}`;
23
+ if (event.mailFrom) return `email from ${event.mailFrom}`;
24
+ if (event.rpcMethod) return `rpc ${event.rpcMethod}`;
25
+ return "event";
26
+ }
27
+ function stringifyLogMessage(message) {
28
+ if (typeof message === "string") return message;
29
+ if (Array.isArray(message)) return message.map((part) => stringifyLogMessage(part)).join(" ");
30
+ if (message === void 0) return "";
31
+ try {
32
+ return JSON.stringify(message);
33
+ } catch {
34
+ return String(message);
35
+ }
36
+ }
37
+ /**
38
+ * Render one trace event as the lines `devflare tail` prints in pretty mode.
39
+ * Returns an ordered list of `{ level, text }` so the caller can route each
40
+ * line to the matching logger method (and tests can assert content without
41
+ * ANSI noise).
42
+ */
43
+ function formatTailEventLines(event) {
44
+ const lines = [];
45
+ const timestamp = formatTimestamp(event.eventTimestamp);
46
+ const outcome = event.outcome ?? "unknown";
47
+ const trigger = describeTriggerEvent(event.event);
48
+ const scriptName = event.scriptName ? ` ${event.scriptName}` : "";
49
+ lines.push({
50
+ level: outcome === "ok" ? "info" : "error",
51
+ text: `[${timestamp}]${scriptName} ${trigger} — ${outcome}`
52
+ });
53
+ for (const log of event.logs ?? []) {
54
+ const level = log.level ?? "log";
55
+ const text = stringifyLogMessage(log.message);
56
+ lines.push({
57
+ level: level === "error" || level === "warn" ? level : "info",
58
+ text: ` ${level}: ${text}`
59
+ });
60
+ }
61
+ for (const exception of event.exceptions ?? []) {
62
+ const name = exception.name ?? "Error";
63
+ const message = exception.message ?? "";
64
+ lines.push({
65
+ level: "error",
66
+ text: ` exception ${name}: ${message}`
67
+ });
68
+ }
69
+ return lines;
70
+ }
71
+ async function readEnvelope(response, endpoint) {
72
+ const text = await response.text();
73
+ let parsed;
74
+ try {
75
+ parsed = JSON.parse(text);
76
+ } catch {
77
+ throw new Error(`Cloudflare ${endpoint} returned an invalid response (status ${response.status}).`);
78
+ }
79
+ if (!parsed.success) {
80
+ const first = parsed.errors?.[0];
81
+ throw new Error(first ? `Cloudflare ${endpoint} failed (${first.code}): ${first.message}` : `Cloudflare ${endpoint} failed (status ${response.status}).`);
82
+ }
83
+ return parsed.result;
84
+ }
85
+ async function createTail(accountId, workerName, token) {
86
+ const result = await readEnvelope(await fetch(`${CLOUDFLARE_API_BASE}/accounts/${accountId}/workers/scripts/${encodeURIComponent(workerName)}/tails`, {
87
+ method: "POST",
88
+ headers: {
89
+ Authorization: `Bearer ${token}`,
90
+ "Content-Type": "application/json"
91
+ }
92
+ }), `create tail for ${workerName}`);
93
+ return {
94
+ id: result.id,
95
+ url: result.url,
96
+ expiresAt: result.expires_at
97
+ };
98
+ }
99
+ async function deleteTail(accountId, workerName, tailId, token) {
100
+ const response = await fetch(`${CLOUDFLARE_API_BASE}/accounts/${accountId}/workers/scripts/${encodeURIComponent(workerName)}/tails/${encodeURIComponent(tailId)}`, {
101
+ method: "DELETE",
102
+ headers: { Authorization: `Bearer ${token}` }
103
+ });
104
+ if (!response.ok) await readEnvelope(response, `delete tail ${tailId}`);
105
+ }
106
+ function parseTailMessage(raw) {
107
+ const parsed = JSON.parse(raw);
108
+ if (Array.isArray(parsed)) return parsed;
109
+ return [parsed];
110
+ }
111
+ async function resolveWorkerName(parsed, cwd, configFile, fallbackArg) {
112
+ const explicit = asOptionalString(parsed.options.worker) ?? fallbackArg;
113
+ if (explicit) return explicit;
114
+ try {
115
+ return (await loadConfig({
116
+ cwd,
117
+ configFile
118
+ })).name;
119
+ } catch {
120
+ return;
121
+ }
122
+ }
123
+ async function runTailCommand(parsed, logger, options) {
124
+ const theme = createCliTheme(parsed.options);
125
+ const cwd = options.cwd ?? process.cwd();
126
+ const configFile = asOptionalString(parsed.options.config);
127
+ let format;
128
+ try {
129
+ format = parseTailFormat(parsed.options.format);
130
+ } catch (error) {
131
+ logger.error(error instanceof Error ? error.message : String(error));
132
+ return { exitCode: 1 };
133
+ }
134
+ const fallbackArg = parsed.args[0];
135
+ const workerName = await resolveWorkerName(parsed, cwd, configFile, fallbackArg);
136
+ if (!workerName) {
137
+ logger.error("No Worker name could be resolved.");
138
+ logLine(logger, dim("Pass a Worker name (`devflare tail <worker>`), --worker <name>, or run inside a configured package.", theme));
139
+ return { exitCode: 1 };
140
+ }
141
+ const token = await getApiToken();
142
+ if (!token) {
143
+ logger.error("Not authenticated with Cloudflare.");
144
+ logLine(logger, dim("Run `devflare login` first, or set CLOUDFLARE_API_TOKEN.", theme));
145
+ return { exitCode: 1 };
146
+ }
147
+ let configuredAccountId;
148
+ try {
149
+ configuredAccountId = (await loadConfig({
150
+ cwd,
151
+ configFile
152
+ })).accountId;
153
+ } catch {
154
+ configuredAccountId = void 0;
155
+ }
156
+ const accountId = await resolveCloudflareAccountId({
157
+ explicitAccountId: asOptionalString(parsed.options.account),
158
+ configuredAccountId
159
+ });
160
+ if (!accountId) {
161
+ logger.error("No Cloudflare account could be resolved.");
162
+ logLine(logger, dim("Use --account <id> or set accountId in devflare.config.* / CLOUDFLARE_ACCOUNT_ID.", theme));
163
+ return { exitCode: 1 };
164
+ }
165
+ logLine(logger);
166
+ logLine(logger, `${yellow("tail", theme)} ${dim("Streaming live logs from Cloudflare", theme)}`);
167
+ logLine(logger, `${dim("worker", theme)} ${green(workerName, theme)}`);
168
+ logLine(logger, `${dim("account", theme)} ${whiteDim(accountId, theme)}`);
169
+ let createdTail;
170
+ try {
171
+ createdTail = await createTail(accountId, workerName, token);
172
+ } catch (error) {
173
+ logger.error(error instanceof Error ? error.message : String(error));
174
+ return { exitCode: 1 };
175
+ }
176
+ logLine(logger, dim(`Connected to tail ${createdTail.id}${createdTail.expiresAt ? ` (expires ${createdTail.expiresAt})` : ""}. Press Ctrl-C to stop.`, theme));
177
+ const { WebSocket: WsWebSocket } = await import("ws");
178
+ return new Promise((resolve) => {
179
+ let settled = false;
180
+ const socket = new WsWebSocket(createdTail.url, TAIL_SUBPROTOCOL, { headers: {
181
+ Authorization: `Bearer ${token}`,
182
+ "User-Agent": "devflare"
183
+ } });
184
+ const cleanup = async (exitCode) => {
185
+ if (settled) return;
186
+ settled = true;
187
+ try {
188
+ socket.close();
189
+ } catch {}
190
+ process.off("SIGINT", onSigint);
191
+ try {
192
+ await deleteTail(accountId, workerName, createdTail.id, token);
193
+ } catch (error) {
194
+ logger.warn(`Could not delete the tail session ${createdTail.id}; it will expire on its own. ${error instanceof Error ? error.message : String(error)}`);
195
+ }
196
+ resolve({ exitCode });
197
+ };
198
+ const onSigint = () => {
199
+ logLine(logger);
200
+ logLine(logger, dim("Stopping tail…", theme));
201
+ cleanup(0);
202
+ };
203
+ process.on("SIGINT", onSigint);
204
+ socket.on("open", () => {
205
+ logger.success("Tail stream open");
206
+ });
207
+ socket.on("message", (data) => {
208
+ const raw = typeof data === "string" ? data : String(data);
209
+ let events;
210
+ try {
211
+ events = parseTailMessage(raw);
212
+ } catch {
213
+ logger.warn(`Received a non-JSON tail message: ${raw.slice(0, 200)}`);
214
+ return;
215
+ }
216
+ for (const event of events) {
217
+ if (format === "json") {
218
+ logger.log(JSON.stringify(event));
219
+ continue;
220
+ }
221
+ for (const line of formatTailEventLines(event)) if (line.level === "error") logLine(logger, red(line.text, theme));
222
+ else if (line.level === "warn") logLine(logger, yellow(line.text, theme));
223
+ else logLine(logger, line.text);
224
+ }
225
+ });
226
+ socket.on("error", (error) => {
227
+ logger.error(`Tail stream error: ${error.message}`);
228
+ cleanup(1);
229
+ });
230
+ socket.on("close", () => {
231
+ if (!settled) {
232
+ logLine(logger, dim("Tail stream closed.", theme));
233
+ cleanup(0);
234
+ }
235
+ });
236
+ });
237
+ }
238
+ //#endregion
239
+ export { runTailCommand };
@@ -0,0 +1,333 @@
1
+ import { n as CloudflareAPIError, t as AuthenticationError } from "./api-TzdliH-6.js";
2
+ import { d as getPrimaryAccount, i as getWorkspaceAccountId } from "./preferences-BKp_7XJx.js";
3
+ import { d as green, f as logLine, g as yellow, h as whiteDim, o as dim, p as logTable, r as createCliTheme } from "./ui-BUoZApvE.js";
4
+ import { a as listAccountTokenPermissionGroups, c as selectAllReusablePermissionGroups, i as listAccountOwnedAPITokens, l as selectDevflarePermissionGroups, n as deleteAccountOwnedAPIToken, o as normalizeDevflareTokenName, r as filterDevflareManagedTokens, s as rollAccountOwnedAPITokenValue, t as createAccountOwnedAPIToken, u as stripDevflareTokenNamePrefix } from "./tokens-iVcgNXi-.js";
5
+ //#region src/cli/commands/token.ts
6
+ const CLI_API_OPTIONS = { timeout: 1e4 };
7
+ const TOKENS_USAGE = "devflare tokens <bootstrap-token> (--list | --new [token-name] | --roll [token-name] | --delete [token-name] | --delete-all) [--account <id>] [--all-flags]";
8
+ const TOKEN_OPERATION_SUMMARY_LINES = [
9
+ "--list List Devflare-managed account-owned tokens",
10
+ "--new [name] Create a Devflare-managed account-owned token",
11
+ "--roll [name] Roll a Devflare-managed account-owned token secret",
12
+ "--delete [name] Delete a Devflare-managed account-owned token",
13
+ "--delete-all Delete every Devflare-managed account-owned token",
14
+ "--all-flags With --new, include every reusable account/zone-scoped permission group"
15
+ ];
16
+ function getTrimmedStringOption(options, key) {
17
+ const value = options[key];
18
+ if (typeof value !== "string") return;
19
+ return value.trim() || void 0;
20
+ }
21
+ function formatTokenTimestamp(value) {
22
+ if (!value) return "—";
23
+ return value.toISOString().replace(/:\d{2}\.\d{3}Z$/, "Z").replace("T", " ");
24
+ }
25
+ function sortTokens(tokens) {
26
+ return [...tokens].sort((left, right) => {
27
+ const nameComparison = left.name.localeCompare(right.name);
28
+ if (nameComparison !== 0) return nameComparison;
29
+ return (right.modifiedOn?.getTime() ?? 0) - (left.modifiedOn?.getTime() ?? 0);
30
+ });
31
+ }
32
+ function logUsage(logger, theme) {
33
+ logLine(logger);
34
+ logLine(logger, `${dim("Usage:", theme)} ${TOKENS_USAGE}`);
35
+ logLine(logger, dim("Operations:", theme));
36
+ for (const line of TOKEN_OPERATION_SUMMARY_LINES) logLine(logger, ` ${line}`);
37
+ logLine(logger, dim("Token names are normalized to the devflare- prefix automatically.", theme));
38
+ logLine(logger, dim("The bootstrap token must include Cloudflare API token management permissions.", theme));
39
+ logLine(logger);
40
+ }
41
+ function resolveTokenOperation(parsed) {
42
+ const newOption = parsed.options.new;
43
+ const rollOption = parsed.options.roll;
44
+ const deleteOption = parsed.options.delete;
45
+ const requestedOperations = [
46
+ newOption !== void 0 ? "new" : null,
47
+ rollOption !== void 0 ? "roll" : null,
48
+ deleteOption !== void 0 ? "delete" : null,
49
+ parsed.options.list === true ? "list" : null,
50
+ parsed.options["delete-all"] === true ? "delete-all" : null
51
+ ].filter(Boolean);
52
+ if (parsed.options["all-flags"] && !requestedOperations.includes("new")) return "--all-flags can only be used together with --new.";
53
+ if (requestedOperations.length === 0) return "Choose one token operation: --list, --new, --roll, --delete, or --delete-all.";
54
+ if (requestedOperations.length > 1) return "Choose only one token operation at a time.";
55
+ switch (requestedOperations[0]) {
56
+ case "new": return {
57
+ kind: "new",
58
+ requestedName: typeof newOption === "string" ? newOption.trim() || void 0 : void 0
59
+ };
60
+ case "roll": return {
61
+ kind: "roll",
62
+ requestedName: typeof rollOption === "string" ? rollOption.trim() || void 0 : void 0
63
+ };
64
+ case "delete": return {
65
+ kind: "delete",
66
+ requestedName: typeof deleteOption === "string" ? deleteOption.trim() || void 0 : void 0
67
+ };
68
+ case "list": return { kind: "list" };
69
+ case "delete-all": return { kind: "delete-all" };
70
+ }
71
+ }
72
+ function formatManagedTokenDisplayName(name) {
73
+ return stripDevflareTokenNamePrefix(name);
74
+ }
75
+ async function promptForTokenName(logger, theme, message) {
76
+ while (true) {
77
+ const selected = await logger.prompt(message, {
78
+ type: "text",
79
+ placeholder: "preview",
80
+ cancel: "symbol"
81
+ });
82
+ if (typeof selected === "symbol") {
83
+ logLine(logger, dim("Cancelled", theme));
84
+ return null;
85
+ }
86
+ const trimmedValue = selected.trim();
87
+ if (trimmedValue) return trimmedValue;
88
+ logger.error("Token name is required.");
89
+ }
90
+ }
91
+ async function resolveTokenName(requestedName, logger, theme, promptMessage) {
92
+ const rawName = requestedName ?? await promptForTokenName(logger, theme, promptMessage);
93
+ if (!rawName) return null;
94
+ return normalizeDevflareTokenName(rawName);
95
+ }
96
+ async function resolveNamedManagedTokens(accountId, accountSource, bootstrapToken, requestedName, logger, theme, options) {
97
+ const tokenName = await resolveTokenName(requestedName, logger, theme, options.promptMessage);
98
+ if (!tokenName) return { exitCode: 0 };
99
+ logLine(logger);
100
+ logLine(logger, `${yellow("tokens", theme)} ${dim(`${options.actionLabel} a Devflare-managed account-owned token…`, theme)}`);
101
+ logLine(logger, `${dim("Account:", theme)} ${green(accountId, theme)} ${whiteDim(`(${accountSource})`, theme)}`);
102
+ logLine(logger, `${dim("Name:", theme)} ${green(tokenName, theme)}`);
103
+ const matchingTokens = filterDevflareManagedTokens(await listAccountOwnedAPITokens(accountId, {
104
+ ...CLI_API_OPTIONS,
105
+ token: bootstrapToken
106
+ })).filter((token) => token.name === tokenName);
107
+ if (matchingTokens.length === 0) {
108
+ logger.error(`No Devflare-managed token named ${tokenName} was found.`);
109
+ return { exitCode: 1 };
110
+ }
111
+ if (matchingTokens.length > 1) logLine(logger, dim(`Found ${matchingTokens.length} tokens with that name. ${options.multipleMatchMessage}.`, theme));
112
+ return {
113
+ tokenName,
114
+ matchingTokens
115
+ };
116
+ }
117
+ async function resolveRequestedAccountId(requestedAccountId, bootstrapToken) {
118
+ if (requestedAccountId) return {
119
+ accountId: requestedAccountId,
120
+ source: "flag"
121
+ };
122
+ const workspaceAccountId = getWorkspaceAccountId();
123
+ if (workspaceAccountId) return {
124
+ accountId: workspaceAccountId,
125
+ source: "workspace"
126
+ };
127
+ const primaryAccount = await getPrimaryAccount({
128
+ ...CLI_API_OPTIONS,
129
+ token: bootstrapToken
130
+ });
131
+ if (!primaryAccount) throw new Error("No Cloudflare accounts found for this bootstrap token");
132
+ return {
133
+ accountId: primaryAccount.id,
134
+ source: "primary"
135
+ };
136
+ }
137
+ async function createManagedToken(accountId, accountSource, bootstrapToken, requestedName, includeAllFlags, logger, theme) {
138
+ const tokenName = await resolveTokenName(requestedName, logger, theme, "Enter a Devflare token name:");
139
+ if (!tokenName) return { exitCode: 0 };
140
+ logLine(logger);
141
+ logLine(logger, `${yellow("tokens", theme)} ${dim("Creating an account-owned Devflare token…", theme)}`);
142
+ logLine(logger, `${dim("Account:", theme)} ${green(accountId, theme)} ${whiteDim(`(${accountSource})`, theme)}`);
143
+ logLine(logger, `${dim("Name:", theme)} ${green(tokenName, theme)}`);
144
+ const permissionGroups = await listAccountTokenPermissionGroups(accountId, {
145
+ ...CLI_API_OPTIONS,
146
+ token: bootstrapToken
147
+ });
148
+ if (permissionGroups.length === 0) {
149
+ logger.error("Cloudflare returned zero account token permission groups for this account.");
150
+ return { exitCode: 1 };
151
+ }
152
+ const selectedPermissionGroups = includeAllFlags ? selectAllReusablePermissionGroups(permissionGroups) : selectDevflarePermissionGroups(permissionGroups);
153
+ const createdToken = await createAccountOwnedAPIToken(accountId, {
154
+ name: tokenName,
155
+ permissionGroups: selectedPermissionGroups
156
+ }, {
157
+ ...CLI_API_OPTIONS,
158
+ token: bootstrapToken
159
+ });
160
+ if (!createdToken.value) {
161
+ logger.error("Cloudflare created the token but did not return a token value.");
162
+ return { exitCode: 1 };
163
+ }
164
+ logger.success(`Created ${createdToken.name || tokenName}`);
165
+ logLine(logger, `${dim("Permission groups:", theme)} ${selectedPermissionGroups.length} ${includeAllFlags ? "reusable account/zone-scoped" : "Devflare-relevant account/zone-scoped"} selected from ${permissionGroups.length} available`);
166
+ if (includeAllFlags) {
167
+ logLine(logger, dim("Account-owned Devflare tokens include account resources plus all zones in the account; user-scoped groups are skipped automatically.", theme));
168
+ logLine(logger, dim("Account API Tokens permissions are still excluded because Cloudflare does not allow sub-tokens to manage other tokens.", theme));
169
+ }
170
+ logger.warn("Cloudflare only returns the token secret once. Store it safely now.");
171
+ logger.log(createdToken.value);
172
+ return {
173
+ exitCode: 0,
174
+ output: createdToken.value
175
+ };
176
+ }
177
+ async function listManagedTokens(accountId, accountSource, bootstrapToken, logger, theme) {
178
+ logLine(logger);
179
+ logLine(logger, `${yellow("tokens", theme)} ${dim("Listing Devflare-managed account-owned tokens…", theme)}`);
180
+ logLine(logger, `${dim("Account:", theme)} ${green(accountId, theme)} ${whiteDim(`(${accountSource})`, theme)}`);
181
+ const accountTokens = await listAccountOwnedAPITokens(accountId, {
182
+ ...CLI_API_OPTIONS,
183
+ token: bootstrapToken
184
+ });
185
+ const managedTokens = sortTokens(filterDevflareManagedTokens(accountTokens));
186
+ if (managedTokens.length === 0) {
187
+ logLine(logger, dim("No Devflare-managed account-owned tokens found for this account.", theme));
188
+ return {
189
+ exitCode: 0,
190
+ output: ""
191
+ };
192
+ }
193
+ logTable(logger, {
194
+ title: "Devflare-managed tokens",
195
+ rows: managedTokens,
196
+ columns: [
197
+ {
198
+ label: "Name",
199
+ value: (token) => formatManagedTokenDisplayName(token.name),
200
+ width: 46
201
+ },
202
+ {
203
+ label: "Status",
204
+ value: (token) => token.status ?? "unknown",
205
+ width: 10
206
+ },
207
+ {
208
+ label: "Token ID",
209
+ value: (token) => token.id.slice(0, 12),
210
+ width: 12
211
+ },
212
+ {
213
+ label: "Modified",
214
+ value: (token) => formatTokenTimestamp(token.modifiedOn)
215
+ }
216
+ ],
217
+ theme
218
+ });
219
+ const untouchedTokenCount = accountTokens.length - managedTokens.length;
220
+ if (untouchedTokenCount > 0) logLine(logger, dim(`Left ${untouchedTokenCount} non-Devflare token(s) out of this list.`, theme));
221
+ return {
222
+ exitCode: 0,
223
+ output: managedTokens.map((token) => formatManagedTokenDisplayName(token.name)).join("\n")
224
+ };
225
+ }
226
+ async function rollManagedTokensByName(accountId, accountSource, bootstrapToken, requestedName, logger, theme) {
227
+ const selectedTokens = await resolveNamedManagedTokens(accountId, accountSource, bootstrapToken, requestedName, logger, theme, {
228
+ promptMessage: "Enter the Devflare token name to roll:",
229
+ actionLabel: "Rolling",
230
+ multipleMatchMessage: "Rolling all exact matches"
231
+ });
232
+ if ("exitCode" in selectedTokens) return selectedTokens;
233
+ const { tokenName, matchingTokens } = selectedTokens;
234
+ const rolledValues = [];
235
+ for (const token of matchingTokens) {
236
+ const rolledValue = await rollAccountOwnedAPITokenValue(accountId, token.id, {
237
+ ...CLI_API_OPTIONS,
238
+ token: bootstrapToken
239
+ });
240
+ rolledValues.push(rolledValue);
241
+ }
242
+ logger.success(`Rolled ${matchingTokens.length} Devflare-managed token(s) named ${tokenName}`);
243
+ logger.warn("Cloudflare only returns the new token secret once. Store it safely now.");
244
+ if (rolledValues.length === 1) logger.log(rolledValues[0]);
245
+ else for (const [index, value] of rolledValues.entries()) logLine(logger, `${dim(`${matchingTokens[index].id.slice(0, 12)}:`, theme)} ${value}`);
246
+ return {
247
+ exitCode: 0,
248
+ output: rolledValues.join("\n")
249
+ };
250
+ }
251
+ async function deleteManagedTokensByName(accountId, accountSource, bootstrapToken, requestedName, logger, theme) {
252
+ const selectedTokens = await resolveNamedManagedTokens(accountId, accountSource, bootstrapToken, requestedName, logger, theme, {
253
+ promptMessage: "Enter the Devflare token name to delete:",
254
+ actionLabel: "Deleting",
255
+ multipleMatchMessage: "Deleting all exact matches"
256
+ });
257
+ if ("exitCode" in selectedTokens) return selectedTokens;
258
+ const { tokenName, matchingTokens } = selectedTokens;
259
+ for (const token of matchingTokens) await deleteAccountOwnedAPIToken(accountId, token.id, {
260
+ ...CLI_API_OPTIONS,
261
+ token: bootstrapToken
262
+ });
263
+ logger.success(`Deleted ${matchingTokens.length} Devflare-managed token(s) named ${tokenName}`);
264
+ return {
265
+ exitCode: 0,
266
+ output: matchingTokens.map((token) => token.id).join("\n")
267
+ };
268
+ }
269
+ async function deleteAllManagedTokens(accountId, accountSource, bootstrapToken, logger, theme) {
270
+ logLine(logger);
271
+ logLine(logger, `${yellow("tokens", theme)} ${dim("Deleting all Devflare-managed account-owned tokens…", theme)}`);
272
+ logLine(logger, `${dim("Account:", theme)} ${green(accountId, theme)} ${whiteDim(`(${accountSource})`, theme)}`);
273
+ const accountTokens = await listAccountOwnedAPITokens(accountId, {
274
+ ...CLI_API_OPTIONS,
275
+ token: bootstrapToken
276
+ });
277
+ const managedTokens = filterDevflareManagedTokens(accountTokens);
278
+ if (managedTokens.length === 0) {
279
+ logger.success("No Devflare-managed tokens were found, so nothing was deleted.");
280
+ return { exitCode: 0 };
281
+ }
282
+ for (const token of managedTokens) await deleteAccountOwnedAPIToken(accountId, token.id, {
283
+ ...CLI_API_OPTIONS,
284
+ token: bootstrapToken
285
+ });
286
+ logger.success(`Deleted ${managedTokens.length} Devflare-managed token(s)`);
287
+ const untouchedTokenCount = accountTokens.length - managedTokens.length;
288
+ if (untouchedTokenCount > 0) logLine(logger, dim(`Left ${untouchedTokenCount} non-Devflare token(s) untouched.`, theme));
289
+ return {
290
+ exitCode: 0,
291
+ output: managedTokens.map((token) => token.id).join("\n")
292
+ };
293
+ }
294
+ async function runTokenCommand(parsed, logger, _options) {
295
+ const bootstrapToken = parsed.args[0]?.trim();
296
+ const theme = createCliTheme(parsed.options);
297
+ if (!bootstrapToken) {
298
+ logUsage(logger, theme);
299
+ return { exitCode: 1 };
300
+ }
301
+ const tokenOperation = resolveTokenOperation(parsed);
302
+ if (typeof tokenOperation === "string") {
303
+ logUsage(logger, theme);
304
+ return { exitCode: 1 };
305
+ }
306
+ const requestedAccountId = getTrimmedStringOption(parsed.options, "account");
307
+ try {
308
+ const { accountId, source } = await resolveRequestedAccountId(requestedAccountId, bootstrapToken);
309
+ switch (tokenOperation.kind) {
310
+ case "new": return createManagedToken(accountId, source, bootstrapToken, tokenOperation.requestedName, parsed.options["all-flags"] === true, logger, theme);
311
+ case "roll": return rollManagedTokensByName(accountId, source, bootstrapToken, tokenOperation.requestedName, logger, theme);
312
+ case "list": return listManagedTokens(accountId, source, bootstrapToken, logger, theme);
313
+ case "delete": return deleteManagedTokensByName(accountId, source, bootstrapToken, tokenOperation.requestedName, logger, theme);
314
+ case "delete-all": return deleteAllManagedTokens(accountId, source, bootstrapToken, logger, theme);
315
+ }
316
+ } catch (error) {
317
+ if (error instanceof AuthenticationError) {
318
+ logger.error(error.message);
319
+ return { exitCode: 1 };
320
+ }
321
+ if (error instanceof CloudflareAPIError) {
322
+ logger.error(`API Error: ${error.message}`);
323
+ return { exitCode: 1 };
324
+ }
325
+ if (error instanceof Error) {
326
+ logger.error(error.message);
327
+ return { exitCode: 1 };
328
+ }
329
+ throw error;
330
+ }
331
+ }
332
+ //#endregion
333
+ export { runTokenCommand };