devflare 1.0.0-next.4 → 1.0.0-next.41

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 (577) hide show
  1. package/LICENSE +21 -0
  2. package/LLM.md +15966 -2139
  3. package/README.md +393 -605
  4. package/bin/devflare.js +22 -14
  5. package/dist/_chunks/account-BtWcv3X9.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-C0pZGUL7.js +24 -0
  10. package/dist/_chunks/build-artifacts-CGdnp2BT.js +483 -0
  11. package/dist/_chunks/cli-DPeh2U50.js +1128 -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-BsfkmTqh.js +45 -0
  15. package/dist/_chunks/compiler-uoyAQ8zW.js +424 -0
  16. package/dist/_chunks/config-D5u-bEkn.js +78 -0
  17. package/dist/_chunks/config-path-DCPto4XB.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-C2siy20T.js +915 -0
  22. package/dist/_chunks/dev-CvRHmRFZ.js +3456 -0
  23. package/dist/_chunks/doctor-C0g8X36G.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-DXC5SdFK.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-DLXO60RO.js +1153 -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-DMmEOygL.js +123 -0
  35. package/dist/_chunks/local-workflow-entrypoints-Wip3o1u8.js +90 -0
  36. package/dist/_chunks/login-BmnDzDlH.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-BhqDmq8I.js +456 -0
  40. package/dist/_chunks/preview-registry-ClAbLTHH.js +1186 -0
  41. package/dist/_chunks/preview-resources-DdXj8LMM.js +358 -0
  42. package/dist/_chunks/previews-Dlr13x5M.js +1134 -0
  43. package/dist/_chunks/productions-D3AnOHac.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-Y84HB3Nt.js +133 -0
  48. package/dist/_chunks/rolldown-runtime-CvQ6eiug.js +14 -0
  49. package/dist/_chunks/routes-C3FqES2W.js +796 -0
  50. package/dist/_chunks/runtime-FvXvfuZ2.js +550 -0
  51. package/dist/_chunks/schema-normalization-DWVleVxo.js +477 -0
  52. package/dist/_chunks/secrets-70eN0Q6C.js +95 -0
  53. package/dist/_chunks/token-kguIDmej.js +333 -0
  54. package/dist/_chunks/tokens-iVcgNXi-.js +221 -0
  55. package/dist/_chunks/types-OrLbzv4I.js +476 -0
  56. package/dist/_chunks/ui-BUoZApvE.js +103 -0
  57. package/dist/_chunks/usage-BBTGzjon.js +272 -0
  58. package/dist/_chunks/vite-CsI0E-uV.js +1235 -0
  59. package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
  60. package/dist/_chunks/worker-CS1jgNFE.js +410 -0
  61. package/dist/_chunks/worker-bundler-dTTnYU3n.js +458 -0
  62. package/dist/_chunks/worker-entrypoint-CQW77lG8.js +247 -0
  63. package/dist/_chunks/workerName-CFJsLZA-.js +23 -0
  64. package/dist/bridge/client.d.ts +49 -7
  65. package/dist/bridge/client.d.ts.map +1 -1
  66. package/dist/bridge/gateway-runtime.d.ts +8 -0
  67. package/dist/bridge/gateway-runtime.d.ts.map +1 -0
  68. package/dist/bridge/index.d.ts +6 -6
  69. package/dist/bridge/index.d.ts.map +1 -1
  70. package/dist/bridge/log.d.ts +5 -0
  71. package/dist/bridge/log.d.ts.map +1 -0
  72. package/dist/bridge/miniflare.d.ts +75 -2
  73. package/dist/bridge/miniflare.d.ts.map +1 -1
  74. package/dist/bridge/proxy.d.ts +12 -11
  75. package/dist/bridge/proxy.d.ts.map +1 -1
  76. package/dist/bridge/server.d.ts +2 -1
  77. package/dist/bridge/server.d.ts.map +1 -1
  78. package/dist/bridge/v2/body-streams.d.ts +53 -0
  79. package/dist/bridge/v2/body-streams.d.ts.map +1 -0
  80. package/dist/bridge/v2/codec.d.ts +106 -0
  81. package/dist/bridge/v2/codec.d.ts.map +1 -0
  82. package/dist/bridge/v2/control-messages.d.ts +46 -0
  83. package/dist/bridge/v2/control-messages.d.ts.map +1 -0
  84. package/dist/bridge/v2/frames.d.ts +109 -0
  85. package/dist/bridge/v2/frames.d.ts.map +1 -0
  86. package/dist/bridge/v2/index.d.ts +11 -0
  87. package/dist/bridge/v2/index.d.ts.map +1 -0
  88. package/dist/bridge/v2/serialization.d.ts +48 -0
  89. package/dist/bridge/v2/serialization.d.ts.map +1 -0
  90. package/dist/bridge/v2/transport.d.ts +31 -0
  91. package/dist/bridge/v2/transport.d.ts.map +1 -0
  92. package/dist/bridge/v2/value-codec.d.ts +61 -0
  93. package/dist/bridge/v2/value-codec.d.ts.map +1 -0
  94. package/dist/bridge/{serialization.d.ts → v2/value-serialization.d.ts} +40 -18
  95. package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
  96. package/dist/bridge/{protocol.d.ts → v2/wire.d.ts} +32 -8
  97. package/dist/bridge/v2/wire.d.ts.map +1 -0
  98. package/dist/bridge/v2/ws-relay.d.ts +53 -0
  99. package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
  100. package/dist/browser-shim/handler.d.ts +2 -2
  101. package/dist/browser-shim/handler.d.ts.map +1 -1
  102. package/dist/browser-shim/index.d.ts +2 -2
  103. package/dist/browser-shim/server.d.ts +63 -0
  104. package/dist/browser-shim/server.d.ts.map +1 -1
  105. package/dist/browser.d.ts +4621 -0
  106. package/dist/browser.d.ts.map +1 -0
  107. package/dist/browser.js +80 -0
  108. package/dist/bundler/defaults.d.ts +23 -0
  109. package/dist/bundler/defaults.d.ts.map +1 -0
  110. package/dist/bundler/do-bundler.d.ts +7 -0
  111. package/dist/bundler/do-bundler.d.ts.map +1 -1
  112. package/dist/bundler/index.d.ts +3 -1
  113. package/dist/bundler/index.d.ts.map +1 -1
  114. package/dist/bundler/rolldown-shared.d.ts +53 -0
  115. package/dist/bundler/rolldown-shared.d.ts.map +1 -0
  116. package/dist/bundler/worker-bundler.d.ts +13 -0
  117. package/dist/bundler/worker-bundler.d.ts.map +1 -0
  118. package/dist/bundler/worker-compat.d.ts +4 -0
  119. package/dist/bundler/worker-compat.d.ts.map +1 -0
  120. package/dist/cli/build-manifest.d.ts +66 -0
  121. package/dist/cli/build-manifest.d.ts.map +1 -0
  122. package/dist/cli/command-utils.d.ts +18 -0
  123. package/dist/cli/command-utils.d.ts.map +1 -0
  124. package/dist/cli/commands/account.d.ts +2 -2
  125. package/dist/cli/commands/account.d.ts.map +1 -1
  126. package/dist/cli/commands/ai.d.ts +1 -1
  127. package/dist/cli/commands/ai.d.ts.map +1 -1
  128. package/dist/cli/commands/build-artifacts.d.ts +40 -0
  129. package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
  130. package/dist/cli/commands/build.d.ts +2 -2
  131. package/dist/cli/commands/build.d.ts.map +1 -1
  132. package/dist/cli/commands/config.d.ts +4 -0
  133. package/dist/cli/commands/config.d.ts.map +1 -0
  134. package/dist/cli/commands/deploy/metadata.d.ts +18 -0
  135. package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
  136. package/dist/cli/commands/deploy/prepare.d.ts +23 -0
  137. package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
  138. package/dist/cli/commands/deploy/runtime.d.ts +4 -0
  139. package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
  140. package/dist/cli/commands/deploy/verification.d.ts +36 -0
  141. package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
  142. package/dist/cli/commands/deploy.d.ts +2 -2
  143. package/dist/cli/commands/deploy.d.ts.map +1 -1
  144. package/dist/cli/commands/dev.d.ts +9 -1
  145. package/dist/cli/commands/dev.d.ts.map +1 -1
  146. package/dist/cli/commands/doctor.d.ts +2 -2
  147. package/dist/cli/commands/doctor.d.ts.map +1 -1
  148. package/dist/cli/commands/init.d.ts +2 -2
  149. package/dist/cli/commands/init.d.ts.map +1 -1
  150. package/dist/cli/commands/login.d.ts +4 -0
  151. package/dist/cli/commands/login.d.ts.map +1 -0
  152. package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
  153. package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
  154. package/dist/cli/commands/previews-support/family.d.ts +10 -0
  155. package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
  156. package/dist/cli/commands/previews-support/render.d.ts +8 -0
  157. package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
  158. package/dist/cli/commands/previews-support/theme.d.ts +10 -0
  159. package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
  160. package/dist/cli/commands/previews-support/types.d.ts +70 -0
  161. package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
  162. package/dist/cli/commands/previews.d.ts +4 -0
  163. package/dist/cli/commands/previews.d.ts.map +1 -0
  164. package/dist/cli/commands/productions.d.ts +4 -0
  165. package/dist/cli/commands/productions.d.ts.map +1 -0
  166. package/dist/cli/commands/remote.d.ts +1 -1
  167. package/dist/cli/commands/remote.d.ts.map +1 -1
  168. package/dist/cli/commands/secrets.d.ts +4 -0
  169. package/dist/cli/commands/secrets.d.ts.map +1 -0
  170. package/dist/cli/commands/token.d.ts +4 -0
  171. package/dist/cli/commands/token.d.ts.map +1 -0
  172. package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
  173. package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
  174. package/dist/cli/commands/type-generation/generator.d.ts +112 -0
  175. package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
  176. package/dist/cli/commands/type-generation/models.d.ts +27 -0
  177. package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
  178. package/dist/cli/commands/types.d.ts +2 -2
  179. package/dist/cli/commands/types.d.ts.map +1 -1
  180. package/dist/cli/commands/worker.d.ts +4 -0
  181. package/dist/cli/commands/worker.d.ts.map +1 -0
  182. package/dist/cli/config-path.d.ts +6 -0
  183. package/dist/cli/config-path.d.ts.map +1 -0
  184. package/dist/cli/dependencies.d.ts +2 -1
  185. package/dist/cli/dependencies.d.ts.map +1 -1
  186. package/dist/cli/deploy-strategy.d.ts +17 -0
  187. package/dist/cli/deploy-strategy.d.ts.map +1 -0
  188. package/dist/cli/deploy-target.d.ts +17 -0
  189. package/dist/cli/deploy-target.d.ts.map +1 -0
  190. package/dist/cli/generated-artifacts.d.ts +12 -0
  191. package/dist/cli/generated-artifacts.d.ts.map +1 -0
  192. package/dist/cli/help-pages/pages/account.d.ts +3 -0
  193. package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
  194. package/dist/cli/help-pages/pages/core.d.ts +4 -0
  195. package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
  196. package/dist/cli/help-pages/pages/index.d.ts +3 -0
  197. package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
  198. package/dist/cli/help-pages/pages/misc.d.ts +3 -0
  199. package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
  200. package/dist/cli/help-pages/pages/previews.d.ts +3 -0
  201. package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
  202. package/dist/cli/help-pages/pages/productions.d.ts +3 -0
  203. package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
  204. package/dist/cli/help-pages/render.d.ts +12 -0
  205. package/dist/cli/help-pages/render.d.ts.map +1 -0
  206. package/dist/cli/help-pages/shared.d.ts +15 -0
  207. package/dist/cli/help-pages/shared.d.ts.map +1 -0
  208. package/dist/cli/help-pages/types.d.ts +23 -0
  209. package/dist/cli/help-pages/types.d.ts.map +1 -0
  210. package/dist/cli/help.d.ts +6 -0
  211. package/dist/cli/help.d.ts.map +1 -0
  212. package/dist/cli/index.d.ts +1 -0
  213. package/dist/cli/index.d.ts.map +1 -1
  214. package/dist/cli/index.js +2 -0
  215. package/dist/cli/package-metadata.d.ts +16 -0
  216. package/dist/cli/package-metadata.d.ts.map +1 -0
  217. package/dist/cli/preview-bindings.d.ts +49 -0
  218. package/dist/cli/preview-bindings.d.ts.map +1 -0
  219. package/dist/cli/preview.d.ts +10 -0
  220. package/dist/cli/preview.d.ts.map +1 -0
  221. package/dist/cli/ui.d.ts +37 -0
  222. package/dist/cli/ui.d.ts.map +1 -0
  223. package/dist/cli/workspace-build-guard.d.ts +14 -0
  224. package/dist/cli/workspace-build-guard.d.ts.map +1 -0
  225. package/dist/cli/wrangler-auth.d.ts +1 -1
  226. package/dist/cloudflare/account-core.d.ts +6 -0
  227. package/dist/cloudflare/account-core.d.ts.map +1 -0
  228. package/dist/cloudflare/account-resources.d.ts +40 -0
  229. package/dist/cloudflare/account-resources.d.ts.map +1 -0
  230. package/dist/cloudflare/account-status.d.ts +11 -0
  231. package/dist/cloudflare/account-status.d.ts.map +1 -0
  232. package/dist/cloudflare/account-workers.d.ts +14 -0
  233. package/dist/cloudflare/account-workers.d.ts.map +1 -0
  234. package/dist/cloudflare/account.d.ts +7 -64
  235. package/dist/cloudflare/account.d.ts.map +1 -1
  236. package/dist/cloudflare/api.d.ts +71 -3
  237. package/dist/cloudflare/api.d.ts.map +1 -1
  238. package/dist/cloudflare/auth.d.ts +1 -1
  239. package/dist/cloudflare/auth.d.ts.map +1 -1
  240. package/dist/cloudflare/index.d.ts +61 -6
  241. package/dist/cloudflare/index.d.ts.map +1 -1
  242. package/dist/cloudflare/index.js +4 -13
  243. package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
  244. package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
  245. package/dist/cloudflare/kv-namespace.d.ts +4 -0
  246. package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
  247. package/dist/cloudflare/preferences.d.ts +7 -0
  248. package/dist/cloudflare/preferences.d.ts.map +1 -1
  249. package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
  250. package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
  251. package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
  252. package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
  253. package/dist/cloudflare/preview-registry-records.d.ts +4 -0
  254. package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
  255. package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
  256. package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
  257. package/dist/cloudflare/preview-registry-store.d.ts +14 -0
  258. package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
  259. package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
  260. package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
  261. package/dist/cloudflare/preview-registry-types.d.ts +103 -0
  262. package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
  263. package/dist/cloudflare/preview-registry.d.ts +42 -0
  264. package/dist/cloudflare/preview-registry.d.ts.map +1 -0
  265. package/dist/cloudflare/preview-urls.d.ts +3 -0
  266. package/dist/cloudflare/preview-urls.d.ts.map +1 -0
  267. package/dist/cloudflare/registry-schema.d.ts +253 -0
  268. package/dist/cloudflare/registry-schema.d.ts.map +1 -0
  269. package/dist/cloudflare/remote-config.d.ts.map +1 -1
  270. package/dist/cloudflare/tokens.d.ts +44 -0
  271. package/dist/cloudflare/tokens.d.ts.map +1 -0
  272. package/dist/cloudflare/types.d.ts +124 -7
  273. package/dist/cloudflare/types.d.ts.map +1 -1
  274. package/dist/cloudflare/usage.d.ts +31 -3
  275. package/dist/cloudflare/usage.d.ts.map +1 -1
  276. package/dist/config/binding-resolution-helpers.d.ts +41 -0
  277. package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
  278. package/dist/config/compatibility.d.ts +3 -0
  279. package/dist/config/compatibility.d.ts.map +1 -0
  280. package/dist/config/compiler/bindings.d.ts +14 -0
  281. package/dist/config/compiler/bindings.d.ts.map +1 -0
  282. package/dist/config/compiler/core-helpers.d.ts +6 -0
  283. package/dist/config/compiler/core-helpers.d.ts.map +1 -0
  284. package/dist/config/compiler/do-workers.d.ts +34 -0
  285. package/dist/config/compiler/do-workers.d.ts.map +1 -0
  286. package/dist/config/compiler/paths.d.ts +18 -0
  287. package/dist/config/compiler/paths.d.ts.map +1 -0
  288. package/dist/config/compiler/types.d.ts +270 -0
  289. package/dist/config/compiler/types.d.ts.map +1 -0
  290. package/dist/config/compiler.d.ts +22 -134
  291. package/dist/config/compiler.d.ts.map +1 -1
  292. package/dist/config/define.d.ts +8 -5
  293. package/dist/config/define.d.ts.map +1 -1
  294. package/dist/config/deploy-resources.d.ts +58 -0
  295. package/dist/config/deploy-resources.d.ts.map +1 -0
  296. package/dist/config/env-vars.d.ts +309 -0
  297. package/dist/config/env-vars.d.ts.map +1 -0
  298. package/dist/config/framework-providers.d.ts +9 -0
  299. package/dist/config/framework-providers.d.ts.map +1 -0
  300. package/dist/config/index.d.ts +12 -5
  301. package/dist/config/index.d.ts.map +1 -1
  302. package/dist/config/loader.d.ts +2 -1
  303. package/dist/config/loader.d.ts.map +1 -1
  304. package/dist/config/local-dev-vars.d.ts +15 -0
  305. package/dist/config/local-dev-vars.d.ts.map +1 -0
  306. package/dist/config/preview-resources.d.ts +83 -0
  307. package/dist/config/preview-resources.d.ts.map +1 -0
  308. package/dist/config/preview.d.ts +29 -0
  309. package/dist/config/preview.d.ts.map +1 -0
  310. package/dist/config/ref.d.ts +16 -25
  311. package/dist/config/ref.d.ts.map +1 -1
  312. package/dist/config/resolve-phased.d.ts +72 -0
  313. package/dist/config/resolve-phased.d.ts.map +1 -0
  314. package/dist/config/resolve.d.ts +11 -0
  315. package/dist/config/resolve.d.ts.map +1 -0
  316. package/dist/config/resource-resolution.d.ts +80 -0
  317. package/dist/config/resource-resolution.d.ts.map +1 -0
  318. package/dist/config/schema-bindings.d.ts +1495 -0
  319. package/dist/config/schema-bindings.d.ts.map +1 -0
  320. package/dist/config/schema-build.d.ts +67 -0
  321. package/dist/config/schema-build.d.ts.map +1 -0
  322. package/dist/config/schema-env.d.ts +3023 -0
  323. package/dist/config/schema-env.d.ts.map +1 -0
  324. package/dist/config/schema-normalization.d.ts +184 -0
  325. package/dist/config/schema-normalization.d.ts.map +1 -0
  326. package/dist/config/schema-runtime.d.ts +500 -0
  327. package/dist/config/schema-runtime.d.ts.map +1 -0
  328. package/dist/config/schema-types-bindings-platform.d.ts +378 -0
  329. package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
  330. package/dist/config/schema-types-bindings-resources.d.ts +550 -0
  331. package/dist/config/schema-types-bindings-resources.d.ts.map +1 -0
  332. package/dist/config/schema-types-bindings.d.ts +254 -0
  333. package/dist/config/schema-types-bindings.d.ts.map +1 -0
  334. package/dist/config/schema-types-build.d.ts +86 -0
  335. package/dist/config/schema-types-build.d.ts.map +1 -0
  336. package/dist/config/schema-types-runtime.d.ts +917 -0
  337. package/dist/config/schema-types-runtime.d.ts.map +1 -0
  338. package/dist/config/schema-types.d.ts +424 -0
  339. package/dist/config/schema-types.d.ts.map +1 -0
  340. package/dist/config/schema.d.ts +4537 -2214
  341. package/dist/config/schema.d.ts.map +1 -1
  342. package/dist/config/service-bindings-validation.d.ts +36 -0
  343. package/dist/config/service-bindings-validation.d.ts.map +1 -0
  344. package/dist/config-entry.d.ts +7 -0
  345. package/dist/config-entry.d.ts.map +1 -0
  346. package/dist/config-entry.js +3 -0
  347. package/dist/decorators/durable-object.d.ts.map +1 -1
  348. package/dist/decorators/index.d.ts +2 -2
  349. package/dist/decorators/index.js +2 -9
  350. package/dist/dev-server/d1-migrations.d.ts +36 -0
  351. package/dist/dev-server/d1-migrations.d.ts.map +1 -0
  352. package/dist/dev-server/dev-server-state.d.ts +59 -0
  353. package/dist/dev-server/dev-server-state.d.ts.map +1 -0
  354. package/dist/dev-server/gateway-script.d.ts +21 -0
  355. package/dist/dev-server/gateway-script.d.ts.map +1 -0
  356. package/dist/dev-server/index.d.ts +1 -1
  357. package/dist/dev-server/miniflare-bindings.d.ts +59 -0
  358. package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
  359. package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
  360. package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
  361. package/dist/dev-server/miniflare-log.d.ts +20 -0
  362. package/dist/dev-server/miniflare-log.d.ts.map +1 -0
  363. package/dist/dev-server/miniflare-worker-config.d.ts +74 -0
  364. package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
  365. package/dist/dev-server/reload-queue.d.ts +13 -0
  366. package/dist/dev-server/reload-queue.d.ts.map +1 -0
  367. package/dist/dev-server/runtime-stdio.d.ts +8 -0
  368. package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
  369. package/dist/dev-server/server-startup-helpers.d.ts +84 -0
  370. package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
  371. package/dist/dev-server/server.d.ts +2 -0
  372. package/dist/dev-server/server.d.ts.map +1 -1
  373. package/dist/dev-server/vite-process.d.ts +15 -0
  374. package/dist/dev-server/vite-process.d.ts.map +1 -0
  375. package/dist/dev-server/vite-utils.d.ts +19 -1
  376. package/dist/dev-server/vite-utils.d.ts.map +1 -1
  377. package/dist/dev-server/worker-source-watcher.d.ts +17 -0
  378. package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
  379. package/dist/dev-server/worker-surface-paths.d.ts +6 -0
  380. package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
  381. package/dist/env.d.ts +10 -0
  382. package/dist/env.d.ts.map +1 -1
  383. package/dist/index.d.ts +8 -12
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +9 -298
  386. package/dist/runtime/context-events.d.ts +13 -0
  387. package/dist/runtime/context-events.d.ts.map +1 -0
  388. package/dist/runtime/context-types.d.ts +82 -0
  389. package/dist/runtime/context-types.d.ts.map +1 -0
  390. package/dist/runtime/context.d.ts +20 -44
  391. package/dist/runtime/context.d.ts.map +1 -1
  392. package/dist/runtime/exports.d.ts +70 -55
  393. package/dist/runtime/exports.d.ts.map +1 -1
  394. package/dist/runtime/index.d.ts +10 -3
  395. package/dist/runtime/index.d.ts.map +1 -1
  396. package/dist/runtime/index.js +5 -111
  397. package/dist/runtime/middleware.d.ts +102 -60
  398. package/dist/runtime/middleware.d.ts.map +1 -1
  399. package/dist/runtime/router/index.d.ts +7 -0
  400. package/dist/runtime/router/index.d.ts.map +1 -0
  401. package/dist/runtime/router/types.d.ts +24 -0
  402. package/dist/runtime/router/types.d.ts.map +1 -0
  403. package/dist/runtime/validation.d.ts +18 -4
  404. package/dist/runtime/validation.d.ts.map +1 -1
  405. package/dist/secrets/local-secrets.d.ts +46 -0
  406. package/dist/secrets/local-secrets.d.ts.map +1 -0
  407. package/dist/shims/local-hyperdrive.d.ts +12 -0
  408. package/dist/shims/local-hyperdrive.d.ts.map +1 -0
  409. package/dist/shims/local-media-bindings.d.ts +19 -0
  410. package/dist/shims/local-media-bindings.d.ts.map +1 -0
  411. package/dist/shims/local-worker-loader.d.ts +3 -0
  412. package/dist/shims/local-worker-loader.d.ts.map +1 -0
  413. package/dist/sveltekit/index.d.ts +1 -1
  414. package/dist/sveltekit/index.d.ts.map +1 -1
  415. package/dist/sveltekit/index.js +313 -167
  416. package/dist/sveltekit/local-bindings.d.ts +4 -0
  417. package/dist/sveltekit/local-bindings.d.ts.map +1 -0
  418. package/dist/sveltekit/platform.d.ts +20 -2
  419. package/dist/sveltekit/platform.d.ts.map +1 -1
  420. package/dist/test/ai-search.d.ts +39 -0
  421. package/dist/test/ai-search.d.ts.map +1 -0
  422. package/dist/test/binding-hints.d.ts +10 -0
  423. package/dist/test/binding-hints.d.ts.map +1 -0
  424. package/dist/test/cf.d.ts +49 -35
  425. package/dist/test/cf.d.ts.map +1 -1
  426. package/dist/test/containers.d.ts +87 -0
  427. package/dist/test/containers.d.ts.map +1 -0
  428. package/dist/test/email.d.ts +16 -7
  429. package/dist/test/email.d.ts.map +1 -1
  430. package/dist/test/index.d.ts +18 -21
  431. package/dist/test/index.d.ts.map +1 -1
  432. package/dist/test/index.js +4495 -70
  433. package/dist/test/offline-bindings.d.ts +81 -0
  434. package/dist/test/offline-bindings.d.ts.map +1 -0
  435. package/dist/test/queue.d.ts.map +1 -1
  436. package/dist/test/remote-ai.d.ts.map +1 -1
  437. package/dist/test/remote-cloudflare.d.ts +13 -0
  438. package/dist/test/remote-cloudflare.d.ts.map +1 -0
  439. package/dist/test/remote-vectorize.d.ts.map +1 -1
  440. package/dist/test/resolve-service-bindings.d.ts +64 -4
  441. package/dist/test/resolve-service-bindings.d.ts.map +1 -1
  442. package/dist/test/scheduled.d.ts.map +1 -1
  443. package/dist/test/should-skip.d.ts +14 -18
  444. package/dist/test/should-skip.d.ts.map +1 -1
  445. package/dist/test/simple-context-bindings.d.ts +13 -0
  446. package/dist/test/simple-context-bindings.d.ts.map +1 -0
  447. package/dist/test/simple-context-durable-objects.d.ts +6 -0
  448. package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
  449. package/dist/test/simple-context-env.d.ts +35 -0
  450. package/dist/test/simple-context-env.d.ts.map +1 -0
  451. package/dist/test/simple-context-gateway-script.d.ts +2 -0
  452. package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
  453. package/dist/test/simple-context-handlers.d.ts +12 -0
  454. package/dist/test/simple-context-handlers.d.ts.map +1 -0
  455. package/dist/test/simple-context-lifecycle.d.ts +32 -0
  456. package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
  457. package/dist/test/simple-context-mfconfig.d.ts +10 -0
  458. package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
  459. package/dist/test/simple-context-multi-worker.d.ts +16 -0
  460. package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
  461. package/dist/test/simple-context-paths.d.ts +40 -0
  462. package/dist/test/simple-context-paths.d.ts.map +1 -0
  463. package/dist/test/simple-context-runtime.d.ts +19 -0
  464. package/dist/test/simple-context-runtime.d.ts.map +1 -0
  465. package/dist/test/simple-context-startup.d.ts +11 -0
  466. package/dist/test/simple-context-startup.d.ts.map +1 -0
  467. package/dist/test/simple-context-transport.d.ts +14 -0
  468. package/dist/test/simple-context-transport.d.ts.map +1 -0
  469. package/dist/test/simple-context.d.ts +8 -27
  470. package/dist/test/simple-context.d.ts.map +1 -1
  471. package/dist/test/tail.d.ts +3 -2
  472. package/dist/test/tail.d.ts.map +1 -1
  473. package/dist/test/utilities/artifacts.d.ts +11 -0
  474. package/dist/test/utilities/artifacts.d.ts.map +1 -0
  475. package/dist/test/utilities/context.d.ts +39 -0
  476. package/dist/test/utilities/context.d.ts.map +1 -0
  477. package/dist/test/utilities/d1.d.ts +21 -0
  478. package/dist/test/utilities/d1.d.ts.map +1 -0
  479. package/dist/test/utilities/env.d.ts +40 -0
  480. package/dist/test/utilities/env.d.ts.map +1 -0
  481. package/dist/test/utilities/kv.d.ts +11 -0
  482. package/dist/test/utilities/kv.d.ts.map +1 -0
  483. package/dist/test/utilities/media.d.ts +16 -0
  484. package/dist/test/utilities/media.d.ts.map +1 -0
  485. package/dist/test/utilities/platform.d.ts +41 -0
  486. package/dist/test/utilities/platform.d.ts.map +1 -0
  487. package/dist/test/utilities/queue.d.ts +5 -0
  488. package/dist/test/utilities/queue.d.ts.map +1 -0
  489. package/dist/test/utilities/r2.d.ts +2 -0
  490. package/dist/test/utilities/r2.d.ts.map +1 -0
  491. package/dist/test/utilities/workflows.d.ts +26 -0
  492. package/dist/test/utilities/workflows.d.ts.map +1 -0
  493. package/dist/test/utilities.d.ts +10 -98
  494. package/dist/test/utilities.d.ts.map +1 -1
  495. package/dist/test/worker.d.ts +6 -0
  496. package/dist/test/worker.d.ts.map +1 -1
  497. package/dist/transform/durable-object.d.ts.map +1 -1
  498. package/dist/transform/index.d.ts +2 -2
  499. package/dist/transform/worker-entrypoint.d.ts +5 -0
  500. package/dist/transform/worker-entrypoint.d.ts.map +1 -1
  501. package/dist/utils/entrypoint-discovery.d.ts +6 -3
  502. package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
  503. package/dist/utils/glob.d.ts.map +1 -1
  504. package/dist/utils/resolve-package.d.ts.map +1 -1
  505. package/dist/utils/send-email.d.ts +15 -0
  506. package/dist/utils/send-email.d.ts.map +1 -0
  507. package/dist/utils/send-email.js +163 -0
  508. package/dist/vite/config-file.d.ts +25 -0
  509. package/dist/vite/config-file.d.ts.map +1 -0
  510. package/dist/vite/index.d.ts +3 -2
  511. package/dist/vite/index.d.ts.map +1 -1
  512. package/dist/vite/index.js +2 -339
  513. package/dist/vite/plugin-config-hook.d.ts +28 -0
  514. package/dist/vite/plugin-config-hook.d.ts.map +1 -0
  515. package/dist/vite/plugin-context.d.ts +27 -0
  516. package/dist/vite/plugin-context.d.ts.map +1 -0
  517. package/dist/vite/plugin-durable-objects.d.ts +18 -0
  518. package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
  519. package/dist/vite/plugin-programmatic.d.ts +44 -0
  520. package/dist/vite/plugin-programmatic.d.ts.map +1 -0
  521. package/dist/vite/plugin-service-bindings.d.ts +13 -0
  522. package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
  523. package/dist/vite/plugin-transform.d.ts +41 -0
  524. package/dist/vite/plugin-transform.d.ts.map +1 -0
  525. package/dist/vite/plugin.d.ts +10 -41
  526. package/dist/vite/plugin.d.ts.map +1 -1
  527. package/dist/worker-entry/composed-worker.d.ts +7 -0
  528. package/dist/worker-entry/composed-worker.d.ts.map +1 -0
  529. package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
  530. package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
  531. package/dist/worker-entry/extensions.d.ts +5 -0
  532. package/dist/worker-entry/extensions.d.ts.map +1 -0
  533. package/dist/worker-entry/routes.d.ts +22 -0
  534. package/dist/worker-entry/routes.d.ts.map +1 -0
  535. package/dist/worker-entry/surface-paths.d.ts +26 -0
  536. package/dist/worker-entry/surface-paths.d.ts.map +1 -0
  537. package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
  538. package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
  539. package/package.json +159 -116
  540. package/R2.md +0 -170
  541. package/dist/account-rvrj687w.js +0 -397
  542. package/dist/ai-dx4fr9jh.js +0 -107
  543. package/dist/bridge/protocol.d.ts.map +0 -1
  544. package/dist/bridge/serialization.d.ts.map +0 -1
  545. package/dist/browser-shim/worker.d.ts +0 -14
  546. package/dist/browser-shim/worker.d.ts.map +0 -1
  547. package/dist/build-mnf6v8gd.js +0 -53
  548. package/dist/deploy-nhceck39.js +0 -70
  549. package/dist/dev-pa8dhm20.js +0 -2162
  550. package/dist/doctor-fmgb3d28.js +0 -190
  551. package/dist/durable-object-t4kbb0yt.js +0 -13
  552. package/dist/index-07q6yxyc.js +0 -168
  553. package/dist/index-18hvb6gb.js +0 -194
  554. package/dist/index-1xpj0m4r.js +0 -57
  555. package/dist/index-37x76zdn.js +0 -4
  556. package/dist/index-3t6rypgc.js +0 -13
  557. package/dist/index-67qcae0f.js +0 -183
  558. package/dist/index-a855bdsx.js +0 -18
  559. package/dist/index-d8bdkx2h.js +0 -109
  560. package/dist/index-ep3445yc.js +0 -2225
  561. package/dist/index-gz1gndna.js +0 -307
  562. package/dist/index-hcex3rgh.js +0 -266
  563. package/dist/index-m2q41jwa.js +0 -462
  564. package/dist/index-n7rs26ft.js +0 -77
  565. package/dist/index-pf5s73n9.js +0 -1413
  566. package/dist/index-rbht7m9r.js +0 -36
  567. package/dist/index-tfyxa77h.js +0 -850
  568. package/dist/index-tk6ej9dj.js +0 -94
  569. package/dist/index-z14anrqp.js +0 -226
  570. package/dist/init-f9mgmew3.js +0 -186
  571. package/dist/remote-q59qk463.js +0 -97
  572. package/dist/test/bridge-context.d.ts +0 -76
  573. package/dist/test/bridge-context.d.ts.map +0 -1
  574. package/dist/test/multi-worker-context.d.ts +0 -114
  575. package/dist/test/multi-worker-context.d.ts.map +0 -1
  576. package/dist/types-5nyrz1sz.js +0 -454
  577. package/dist/worker-entrypoint-m9th0rg0.js +0 -13
@@ -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 };
@@ -0,0 +1,221 @@
1
+ import { a as apiGetAll, c as apiPut, r as apiDelete, s as apiPost } from "./api-TzdliH-6.js";
2
+ //#region src/cloudflare/known-permission-group-ids.generated.ts
3
+ const KNOWN_PERMISSION_GROUP_IDS_DATA = {
4
+ WORKERS_SCRIPTS_WRITE: null,
5
+ WORKERS_SCRIPTS_READ: null,
6
+ ACCOUNT_SETTINGS_READ: null,
7
+ WORKERS_KV_STORAGE_WRITE: null,
8
+ WORKERS_KV_STORAGE_READ: null,
9
+ ACCOUNT_API_TOKENS_WRITE: null,
10
+ ACCOUNT_API_TOKENS_READ: null
11
+ };
12
+ //#endregion
13
+ //#region src/cloudflare/tokens.ts
14
+ const MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS = 300;
15
+ const DEVFLARE_MANAGED_TOKEN_PREFIX = "devflare-";
16
+ const ACCOUNT_OWNED_TOKEN_SCOPE = "com.cloudflare.api.account";
17
+ const ACCOUNT_ZONE_OWNED_TOKEN_SCOPE = "com.cloudflare.api.account.zone";
18
+ const ACCOUNT_API_TOKENS_PERMISSION_GROUP_NAME_PATTERN = /^Account API Tokens\b/i;
19
+ const DEVFLARE_MANAGED_TOKEN_NAME_PATTERN = /^devflare-/i;
20
+ const DEVFLARE_PERMISSION_GROUP_NAME_PATTERNS = [
21
+ /^Account Analytics /i,
22
+ /^Account Settings /i,
23
+ /^Account Filter Lists /i,
24
+ /^AI /i,
25
+ /^Analytics /i,
26
+ /^Browser Rendering /i,
27
+ /^Cache Purge\b/i,
28
+ /^D1 /i,
29
+ /^DNS /i,
30
+ /^Email /i,
31
+ /^Hyperdrive /i,
32
+ /^Images /i,
33
+ /^Logs /i,
34
+ /^Logpush /i,
35
+ /^Pages /i,
36
+ /^Queues /i,
37
+ /^R2 /i,
38
+ /^SSL and Certificates /i,
39
+ /^Stream /i,
40
+ /^Vectorize /i,
41
+ /^Workers /i,
42
+ /^Zone Settings /i,
43
+ /^Zone /i
44
+ ];
45
+ /**
46
+ * Symbolic names for individual Cloudflare permission groups we care about
47
+ * when reasoning about a Devflare token policy. Stable ids (when known)
48
+ * should be preferred over display names, which Cloudflare is free to
49
+ * rename or localize at any time.
50
+ *
51
+ * Entries set to `undefined` have not been confidently verified against
52
+ * Cloudflare's `GET /accounts/:id/tokens/permission_groups` endpoint and
53
+ * fall back to exact display-name matching via
54
+ * {@link KNOWN_PERMISSION_GROUP_DISPLAY_NAMES}.
55
+ *
56
+ * The verified UUIDs (or `null` placeholders) live in
57
+ * `known-permission-group-ids.generated.ts`, which is rewritten by
58
+ * `scripts/refresh-permission-groups.ts` against a maintainer's Cloudflare
59
+ * account so this file does not need hand-edits when Cloudflare publishes
60
+ * or rotates permission-group ids.
61
+ */
62
+ function deriveKnownPermissionGroupIds(data) {
63
+ const result = {};
64
+ for (const key of Object.keys(data)) {
65
+ const value = data[key];
66
+ result[key] = value === null ? void 0 : value;
67
+ }
68
+ return result;
69
+ }
70
+ deriveKnownPermissionGroupIds(KNOWN_PERMISSION_GROUP_IDS_DATA);
71
+ function dedupePermissionGroups(permissionGroups) {
72
+ const seenIds = /* @__PURE__ */ new Set();
73
+ return permissionGroups.filter((permissionGroup) => {
74
+ if (seenIds.has(permissionGroup.id)) return false;
75
+ seenIds.add(permissionGroup.id);
76
+ return true;
77
+ });
78
+ }
79
+ function dedupePermissionGroupIds(permissionGroupIds) {
80
+ return Array.from(new Set(permissionGroupIds.map((id) => id.trim()).filter(Boolean)));
81
+ }
82
+ function dedupeScopedPermissionGroups(permissionGroups) {
83
+ const seenIds = /* @__PURE__ */ new Set();
84
+ return permissionGroups.filter((permissionGroup) => {
85
+ const id = permissionGroup.id.trim();
86
+ if (!id || seenIds.has(id)) return false;
87
+ seenIds.add(id);
88
+ return true;
89
+ });
90
+ }
91
+ function permissionGroupHasScope(permissionGroup, scope) {
92
+ return permissionGroup.scopes.some((value) => value.trim() === scope);
93
+ }
94
+ function buildCreateTokenPoliciesFromPermissionGroups(accountId, permissionGroups) {
95
+ const dedupedPermissionGroups = dedupeScopedPermissionGroups(permissionGroups);
96
+ const accountPermissionGroupIds = dedupePermissionGroupIds(dedupedPermissionGroups.filter((permissionGroup) => permissionGroupHasScope(permissionGroup, ACCOUNT_OWNED_TOKEN_SCOPE)).map((permissionGroup) => permissionGroup.id));
97
+ const zonePermissionGroupIds = dedupePermissionGroupIds(dedupedPermissionGroups.filter((permissionGroup) => permissionGroupHasScope(permissionGroup, ACCOUNT_ZONE_OWNED_TOKEN_SCOPE)).map((permissionGroup) => permissionGroup.id));
98
+ const policies = [];
99
+ if (accountPermissionGroupIds.length > 0) policies.push({
100
+ effect: "allow",
101
+ resources: { [`com.cloudflare.api.account.${accountId}`]: "*" },
102
+ permission_groups: accountPermissionGroupIds.map((id) => ({ id }))
103
+ });
104
+ if (zonePermissionGroupIds.length > 0) policies.push({
105
+ effect: "allow",
106
+ resources: { [`com.cloudflare.api.account.${accountId}`]: { [`${ACCOUNT_ZONE_OWNED_TOKEN_SCOPE}.*`]: "*" } },
107
+ permission_groups: zonePermissionGroupIds.map((id) => ({ id }))
108
+ });
109
+ return policies;
110
+ }
111
+ function buildCreateTokenPoliciesFromPermissionGroupIds(accountId, permissionGroupIds) {
112
+ const dedupedPermissionGroupIds = dedupePermissionGroupIds(permissionGroupIds);
113
+ if (dedupedPermissionGroupIds.length === 0) return [];
114
+ return [{
115
+ effect: "allow",
116
+ resources: { [`com.cloudflare.api.account.${accountId}`]: "*" },
117
+ permission_groups: dedupedPermissionGroupIds.map((id) => ({ id }))
118
+ }];
119
+ }
120
+ function excludeAccountApiTokensPermissionGroups(permissionGroups) {
121
+ return permissionGroups.filter((permissionGroup) => {
122
+ return !ACCOUNT_API_TOKENS_PERMISSION_GROUP_NAME_PATTERN.test(permissionGroup.name);
123
+ });
124
+ }
125
+ function keepAccountOwnedTokenCompatiblePermissionGroups(permissionGroups) {
126
+ return permissionGroups.filter((permissionGroup) => {
127
+ return permissionGroup.scopes.some((scope) => {
128
+ const normalizedScope = scope.trim();
129
+ return normalizedScope === ACCOUNT_OWNED_TOKEN_SCOPE || normalizedScope === ACCOUNT_ZONE_OWNED_TOKEN_SCOPE;
130
+ });
131
+ });
132
+ }
133
+ function selectReusableAccountOwnedTokenPermissionGroups(permissionGroups) {
134
+ return dedupePermissionGroups(excludeAccountApiTokensPermissionGroups(keepAccountOwnedTokenCompatiblePermissionGroups(permissionGroups)));
135
+ }
136
+ function parseOptionalDate(value) {
137
+ if (!value) return;
138
+ const parsed = new Date(value);
139
+ return Number.isNaN(parsed.getTime()) ? void 0 : parsed;
140
+ }
141
+ function mapAccountOwnedAPITokenPolicy(policy) {
142
+ return {
143
+ id: policy.id,
144
+ effect: policy.effect,
145
+ permissionGroups: policy.permission_groups?.map((permissionGroup) => ({
146
+ id: permissionGroup.id,
147
+ name: permissionGroup.name
148
+ }))
149
+ };
150
+ }
151
+ function mapAccountOwnedAPIToken(token) {
152
+ return {
153
+ id: token.id,
154
+ name: token.name ?? token.id,
155
+ status: token.status,
156
+ value: token.value,
157
+ issuedOn: parseOptionalDate(token.issued_on),
158
+ modifiedOn: parseOptionalDate(token.modified_on),
159
+ lastUsedOn: parseOptionalDate(token.last_used_on),
160
+ policies: token.policies?.map(mapAccountOwnedAPITokenPolicy)
161
+ };
162
+ }
163
+ function isDevflareManagedTokenName(name) {
164
+ return DEVFLARE_MANAGED_TOKEN_NAME_PATTERN.test(name.trim());
165
+ }
166
+ function normalizeDevflareTokenName(name) {
167
+ const trimmedName = name.trim();
168
+ if (!trimmedName) throw new Error("Devflare token name cannot be empty");
169
+ const suffix = isDevflareManagedTokenName(trimmedName) ? trimmedName.replace(DEVFLARE_MANAGED_TOKEN_NAME_PATTERN, "") : trimmedName;
170
+ if (!suffix) throw new Error("Devflare token name cannot be empty");
171
+ return `${DEVFLARE_MANAGED_TOKEN_PREFIX}${suffix}`;
172
+ }
173
+ function stripDevflareTokenNamePrefix(name) {
174
+ const trimmedName = name.trim();
175
+ if (!trimmedName) return trimmedName;
176
+ return trimmedName.replace(DEVFLARE_MANAGED_TOKEN_NAME_PATTERN, "") || trimmedName;
177
+ }
178
+ function filterDevflareManagedTokens(tokens) {
179
+ return tokens.filter((token) => isDevflareManagedTokenName(token.name));
180
+ }
181
+ function selectDevflarePermissionGroups(permissionGroups) {
182
+ const selectedPermissionGroups = dedupePermissionGroups(selectReusableAccountOwnedTokenPermissionGroups(permissionGroups).filter((permissionGroup) => {
183
+ return DEVFLARE_PERMISSION_GROUP_NAME_PATTERNS.some((pattern) => {
184
+ return pattern.test(permissionGroup.name);
185
+ });
186
+ }));
187
+ if (selectedPermissionGroups.length === 0) throw new Error("Could not map the available Cloudflare permission groups to a Devflare token policy.");
188
+ if (selectedPermissionGroups.length > MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS) throw new Error(`Devflare selected ${selectedPermissionGroups.length} permission groups, which exceeds Cloudflare's ${MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS}-group limit for account-owned tokens.`);
189
+ return selectedPermissionGroups;
190
+ }
191
+ function selectAllReusablePermissionGroups(permissionGroups) {
192
+ const selectedPermissionGroups = selectReusableAccountOwnedTokenPermissionGroups(permissionGroups);
193
+ if (selectedPermissionGroups.length === 0) throw new Error("Could not find any reusable account/zone-scoped Cloudflare permission groups for this Devflare token.");
194
+ if (selectedPermissionGroups.length > MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS) throw new Error(`Devflare selected ${selectedPermissionGroups.length} permission groups, which exceeds Cloudflare\'s ${MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS}-group limit for account-owned tokens.`);
195
+ return selectedPermissionGroups;
196
+ }
197
+ async function listAccountTokenPermissionGroups(accountId, options) {
198
+ return dedupePermissionGroups(await apiGetAll(`/accounts/${accountId}/tokens/permission_groups`, options));
199
+ }
200
+ async function listAccountOwnedAPITokens(accountId, options) {
201
+ return (await apiGetAll(`/accounts/${accountId}/tokens`, options)).map(mapAccountOwnedAPIToken);
202
+ }
203
+ async function deleteAccountOwnedAPIToken(accountId, tokenId, options) {
204
+ return apiDelete(`/accounts/${accountId}/tokens/${tokenId}`, options);
205
+ }
206
+ async function rollAccountOwnedAPITokenValue(accountId, tokenId, options) {
207
+ return apiPut(`/accounts/${accountId}/tokens/${tokenId}/value`, {}, options);
208
+ }
209
+ async function createAccountOwnedAPIToken(accountId, options, clientOptions) {
210
+ const permissionGroupIds = dedupePermissionGroupIds(options.permissionGroups?.map((permissionGroup) => permissionGroup.id) ?? options.permissionGroupIds ?? []);
211
+ if (permissionGroupIds.length === 0) throw new Error("Cannot create a Devflare token without any permission groups");
212
+ if (permissionGroupIds.length > MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS) throw new Error(`Cannot create a Devflare token with more than ${MAX_ACCOUNT_OWNED_TOKEN_PERMISSION_GROUPS} permission groups.`);
213
+ const policies = options.permissionGroups ? buildCreateTokenPoliciesFromPermissionGroups(accountId, options.permissionGroups) : buildCreateTokenPoliciesFromPermissionGroupIds(accountId, permissionGroupIds);
214
+ if (policies.length === 0) throw new Error("Cannot create a Devflare token without any account- or zone-scoped permission groups");
215
+ return mapAccountOwnedAPIToken(await apiPost(`/accounts/${accountId}/tokens`, {
216
+ name: options.name,
217
+ policies
218
+ }, clientOptions));
219
+ }
220
+ //#endregion
221
+ export { listAccountTokenPermissionGroups as a, selectAllReusablePermissionGroups as c, listAccountOwnedAPITokens as i, selectDevflarePermissionGroups as l, deleteAccountOwnedAPIToken as n, normalizeDevflareTokenName as o, filterDevflareManagedTokens as r, rollAccountOwnedAPITokenValue as s, createAccountOwnedAPIToken as t, stripDevflareTokenNamePrefix as u };