devflare 1.0.0-next.39 → 1.0.0-next.40

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 (277) hide show
  1. package/dist/_chunks/account-BtWcv3X9.js +462 -0
  2. package/dist/_chunks/account-resources-CsmVowJp.js +159 -0
  3. package/dist/_chunks/ai-CBEuLdoP.js +322 -0
  4. package/dist/_chunks/api-TzdliH-6.js +568 -0
  5. package/dist/_chunks/build-3T6O4uIg.js +24 -0
  6. package/dist/_chunks/build-artifacts-8TqBSQkG.js +483 -0
  7. package/dist/_chunks/cli-BTF1X4SG.js +1128 -0
  8. package/dist/_chunks/cloudflare-BaloqI3H.js +157 -0
  9. package/dist/_chunks/colors-DiK6wPJ5.js +13 -0
  10. package/dist/_chunks/command-utils-BsfkmTqh.js +45 -0
  11. package/dist/_chunks/compiler-uoyAQ8zW.js +424 -0
  12. package/dist/_chunks/config-D5u-bEkn.js +78 -0
  13. package/dist/_chunks/config-path-DCPto4XB.js +42 -0
  14. package/dist/_chunks/context-CX50Y2Kb.js +2250 -0
  15. package/dist/_chunks/decorators-QmV57ixr.js +19 -0
  16. package/dist/_chunks/dependencies-C2oxFjU_.js +57 -0
  17. package/dist/_chunks/deploy-DMTr6JeR.js +915 -0
  18. package/dist/_chunks/dev-CvRHmRFZ.js +3456 -0
  19. package/dist/_chunks/doctor-DIG8DoFU.js +219 -0
  20. package/dist/_chunks/durable-object-DMtH0XYX.js +234 -0
  21. package/dist/_chunks/env-S0_nMVz1.js +125 -0
  22. package/dist/_chunks/family-DXC5SdFK.js +143 -0
  23. package/dist/_chunks/generated-artifacts-dMJY4KAt.js +32 -0
  24. package/dist/_chunks/glob-CmQOvunB.js +56 -0
  25. package/dist/_chunks/init-3moXTgpb.js +165 -0
  26. package/dist/_chunks/loader-DLXO60RO.js +1153 -0
  27. package/dist/_chunks/local-dev-vars-CTSa-wvF.js +81 -0
  28. package/dist/_chunks/local-hyperdrive-CJ90j46O.js +119 -0
  29. package/dist/_chunks/local-media-bindings-DsAW4AMF.js +335 -0
  30. package/dist/_chunks/local-secrets-DMmEOygL.js +123 -0
  31. package/dist/_chunks/local-workflow-entrypoints-Wip3o1u8.js +90 -0
  32. package/dist/_chunks/login-BmnDzDlH.js +51 -0
  33. package/dist/_chunks/package-metadata-DAuCkyvK.js +39 -0
  34. package/dist/_chunks/preferences-BKp_7XJx.js +241 -0
  35. package/dist/_chunks/preview-BhqDmq8I.js +456 -0
  36. package/dist/_chunks/preview-registry-ClAbLTHH.js +1186 -0
  37. package/dist/_chunks/preview-resources-DdXj8LMM.js +358 -0
  38. package/dist/_chunks/previews-Dlr13x5M.js +1134 -0
  39. package/dist/_chunks/productions-D3AnOHac.js +411 -0
  40. package/dist/_chunks/ref-CYJNAAe_.js +178 -0
  41. package/dist/_chunks/remote-CZnP-HLJ.js +79 -0
  42. package/dist/_chunks/remote-config-D39BY9ji.js +132 -0
  43. package/dist/_chunks/resolve-package-Y84HB3Nt.js +133 -0
  44. package/dist/_chunks/rolldown-runtime-CvQ6eiug.js +14 -0
  45. package/dist/_chunks/routes-C3FqES2W.js +796 -0
  46. package/dist/_chunks/runtime-FvXvfuZ2.js +550 -0
  47. package/dist/_chunks/schema-normalization-DWVleVxo.js +477 -0
  48. package/dist/_chunks/secrets-70eN0Q6C.js +95 -0
  49. package/dist/_chunks/token-kguIDmej.js +333 -0
  50. package/dist/_chunks/tokens-iVcgNXi-.js +221 -0
  51. package/dist/_chunks/types-OrLbzv4I.js +476 -0
  52. package/dist/_chunks/ui-BUoZApvE.js +103 -0
  53. package/dist/_chunks/usage-BBTGzjon.js +272 -0
  54. package/dist/_chunks/vite-CsI0E-uV.js +1235 -0
  55. package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
  56. package/dist/_chunks/worker-CS1jgNFE.js +410 -0
  57. package/dist/_chunks/worker-bundler-dTTnYU3n.js +458 -0
  58. package/dist/_chunks/worker-entrypoint-CQW77lG8.js +247 -0
  59. package/dist/_chunks/workerName-CFJsLZA-.js +23 -0
  60. package/dist/bridge/index.d.ts +6 -6
  61. package/dist/bridge/miniflare.d.ts +2 -2
  62. package/dist/bridge/proxy.d.ts +1 -1
  63. package/dist/bridge/v2/body-streams.d.ts +1 -1
  64. package/dist/bridge/v2/codec.d.ts +4 -4
  65. package/dist/bridge/v2/index.d.ts +10 -10
  66. package/dist/bridge/v2/serialization.d.ts +1 -1
  67. package/dist/bridge/v2/value-codec.d.ts +1 -1
  68. package/dist/bridge/v2/value-serialization.d.ts.map +1 -1
  69. package/dist/bridge/v2/ws-relay.d.ts +3 -3
  70. package/dist/browser-shim/index.d.ts +2 -2
  71. package/dist/browser.d.ts +70 -70
  72. package/dist/browser.js +74 -2462
  73. package/dist/bundler/do-bundler.d.ts +1 -1
  74. package/dist/bundler/index.d.ts +3 -3
  75. package/dist/bundler/rolldown-shared.d.ts +1 -1
  76. package/dist/bundler/worker-bundler.d.ts +1 -1
  77. package/dist/cli/build-manifest.d.ts +1 -1
  78. package/dist/cli/command-utils.d.ts +1 -1
  79. package/dist/cli/commands/account.d.ts +1 -1
  80. package/dist/cli/commands/ai.d.ts +1 -1
  81. package/dist/cli/commands/build-artifacts.d.ts +5 -5
  82. package/dist/cli/commands/build.d.ts +1 -1
  83. package/dist/cli/commands/config.d.ts +1 -1
  84. package/dist/cli/commands/deploy/prepare.d.ts +2 -2
  85. package/dist/cli/commands/deploy/runtime.d.ts +1 -1
  86. package/dist/cli/commands/deploy/verification.d.ts +1 -1
  87. package/dist/cli/commands/deploy.d.ts +1 -1
  88. package/dist/cli/commands/dev.d.ts +1 -1
  89. package/dist/cli/commands/doctor.d.ts +1 -1
  90. package/dist/cli/commands/init.d.ts +1 -1
  91. package/dist/cli/commands/login.d.ts +1 -1
  92. package/dist/cli/commands/previews-support/cleanup.d.ts +1 -1
  93. package/dist/cli/commands/previews-support/family.d.ts +3 -3
  94. package/dist/cli/commands/previews-support/render.d.ts +3 -3
  95. package/dist/cli/commands/previews-support/theme.d.ts +2 -2
  96. package/dist/cli/commands/previews-support/types.d.ts +2 -2
  97. package/dist/cli/commands/previews.d.ts +1 -1
  98. package/dist/cli/commands/productions.d.ts +1 -1
  99. package/dist/cli/commands/remote.d.ts +1 -1
  100. package/dist/cli/commands/secrets.d.ts +1 -1
  101. package/dist/cli/commands/token.d.ts +1 -1
  102. package/dist/cli/commands/type-generation/discovery.d.ts +2 -2
  103. package/dist/cli/commands/type-generation/generator.d.ts +3 -3
  104. package/dist/cli/commands/type-generation/models.d.ts +1 -1
  105. package/dist/cli/commands/types.d.ts +1 -1
  106. package/dist/cli/commands/worker.d.ts +1 -1
  107. package/dist/cli/deploy-strategy.d.ts +1 -1
  108. package/dist/cli/deploy-target.d.ts +1 -1
  109. package/dist/cli/help-pages/pages/account.d.ts +1 -1
  110. package/dist/cli/help-pages/pages/core.d.ts +1 -1
  111. package/dist/cli/help-pages/pages/index.d.ts +1 -1
  112. package/dist/cli/help-pages/pages/misc.d.ts +1 -1
  113. package/dist/cli/help-pages/pages/previews.d.ts +1 -1
  114. package/dist/cli/help-pages/pages/productions.d.ts +1 -1
  115. package/dist/cli/help-pages/render.d.ts +2 -2
  116. package/dist/cli/help-pages/shared.d.ts +1 -1
  117. package/dist/cli/help.d.ts +2 -2
  118. package/dist/cli/index.js +2 -1383
  119. package/dist/cli/preview-bindings.d.ts +3 -3
  120. package/dist/cli/preview.d.ts +1 -1
  121. package/dist/cli/wrangler-auth.d.ts +1 -1
  122. package/dist/cloudflare/account-core.d.ts +2 -2
  123. package/dist/cloudflare/account-resources.d.ts +2 -2
  124. package/dist/cloudflare/account-status.d.ts +1 -1
  125. package/dist/cloudflare/account-workers.d.ts +2 -2
  126. package/dist/cloudflare/account.d.ts +7 -7
  127. package/dist/cloudflare/auth.d.ts +1 -1
  128. package/dist/cloudflare/index.d.ts +13 -13
  129. package/dist/cloudflare/index.js +4 -59
  130. package/dist/cloudflare/kv-namespace.d.ts +1 -1
  131. package/dist/cloudflare/preview-registry-cache.d.ts +1 -1
  132. package/dist/cloudflare/preview-registry-inference.d.ts +2 -2
  133. package/dist/cloudflare/preview-registry-records.d.ts +3 -3
  134. package/dist/cloudflare/preview-registry-shape.d.ts +2 -2
  135. package/dist/cloudflare/preview-registry-store.d.ts +3 -3
  136. package/dist/cloudflare/preview-registry-transport.d.ts +2 -2
  137. package/dist/cloudflare/preview-registry-types.d.ts +2 -2
  138. package/dist/cloudflare/preview-registry.d.ts +5 -5
  139. package/dist/cloudflare/tokens.d.ts +2 -2
  140. package/dist/cloudflare/usage.d.ts +2 -2
  141. package/dist/config/binding-resolution-helpers.d.ts +1 -1
  142. package/dist/config/compiler/bindings.d.ts +2 -2
  143. package/dist/config/compiler/core-helpers.d.ts +2 -2
  144. package/dist/config/compiler/do-workers.d.ts +2 -2
  145. package/dist/config/compiler/paths.d.ts +1 -1
  146. package/dist/config/compiler.d.ts +6 -6
  147. package/dist/config/define.d.ts +2 -2
  148. package/dist/config/deploy-resources.d.ts +5 -5
  149. package/dist/config/env-vars.d.ts +1 -1
  150. package/dist/config/framework-providers.d.ts +1 -1
  151. package/dist/config/index.d.ts +12 -12
  152. package/dist/config/loader.d.ts +2 -2
  153. package/dist/config/local-dev-vars.d.ts +1 -1
  154. package/dist/config/preview-resources.d.ts +4 -4
  155. package/dist/config/preview.d.ts +1 -1
  156. package/dist/config/ref.d.ts +2 -2
  157. package/dist/config/resolve-phased.d.ts +4 -4
  158. package/dist/config/resolve.d.ts +1 -1
  159. package/dist/config/resource-resolution.d.ts +6 -6
  160. package/dist/config/schema-env.d.ts +20 -20
  161. package/dist/config/schema-normalization.d.ts +1 -1
  162. package/dist/config/schema-types-bindings.d.ts +4 -4
  163. package/dist/config/schema-types-build.d.ts +1 -1
  164. package/dist/config/schema-types.d.ts +7 -7
  165. package/dist/config/schema.d.ts +46 -46
  166. package/dist/config/service-bindings-validation.d.ts +1 -1
  167. package/dist/config-entry.d.ts +6 -6
  168. package/dist/config-entry.js +3 -8
  169. package/dist/decorators/index.d.ts +2 -2
  170. package/dist/decorators/index.js +2 -9
  171. package/dist/dev-server/d1-migrations.d.ts +1 -1
  172. package/dist/dev-server/dev-server-state.d.ts +6 -6
  173. package/dist/dev-server/gateway-script.d.ts +1 -1
  174. package/dist/dev-server/index.d.ts +1 -1
  175. package/dist/dev-server/miniflare-bindings.d.ts +1 -1
  176. package/dist/dev-server/miniflare-dev-config.d.ts +5 -5
  177. package/dist/dev-server/miniflare-worker-config.d.ts +3 -3
  178. package/dist/dev-server/server-startup-helpers.d.ts +6 -6
  179. package/dist/dev-server/worker-surface-paths.d.ts +2 -2
  180. package/dist/index.d.ts +8 -8
  181. package/dist/index.js +9 -22
  182. package/dist/runtime/context-events.d.ts +1 -1
  183. package/dist/runtime/context.d.ts +3 -3
  184. package/dist/runtime/exports.d.ts +2 -2
  185. package/dist/runtime/index.d.ts +10 -10
  186. package/dist/runtime/index.js +5 -57
  187. package/dist/runtime/middleware.d.ts +1 -1
  188. package/dist/runtime/router/index.d.ts +3 -3
  189. package/dist/runtime/validation.d.ts +1 -1
  190. package/dist/secrets/local-secrets.d.ts +1 -1
  191. package/dist/shims/local-media-bindings.d.ts +1 -1
  192. package/dist/sveltekit/index.d.ts +1 -1
  193. package/dist/sveltekit/index.js +327 -9
  194. package/dist/sveltekit/local-bindings.d.ts +1 -1
  195. package/dist/sveltekit/platform.d.ts +1 -1
  196. package/dist/test/binding-hints.d.ts +2 -2
  197. package/dist/test/cf.d.ts +19 -19
  198. package/dist/test/index.d.ts +18 -18
  199. package/dist/test/index.js +4495 -46
  200. package/dist/test/offline-bindings.d.ts +3 -3
  201. package/dist/test/resolve-service-bindings.d.ts +1 -1
  202. package/dist/test/simple-context-bindings.d.ts +1 -1
  203. package/dist/test/simple-context-durable-objects.d.ts +1 -1
  204. package/dist/test/simple-context-env.d.ts +2 -2
  205. package/dist/test/simple-context-handlers.d.ts +2 -2
  206. package/dist/test/simple-context-lifecycle.d.ts +2 -2
  207. package/dist/test/simple-context-mfconfig.d.ts +1 -1
  208. package/dist/test/simple-context-multi-worker.d.ts +2 -2
  209. package/dist/test/simple-context-runtime.d.ts +1 -1
  210. package/dist/test/simple-context-startup.d.ts +1 -1
  211. package/dist/test/simple-context.d.ts +1 -1
  212. package/dist/test/utilities/env.d.ts +3 -3
  213. package/dist/test/utilities.d.ts +10 -10
  214. package/dist/test/worker.d.ts +1 -1
  215. package/dist/transform/index.d.ts +2 -2
  216. package/dist/utils/send-email.js +163 -19
  217. package/dist/vite/config-file.d.ts +2 -2
  218. package/dist/vite/index.d.ts +3 -3
  219. package/dist/vite/index.js +2 -31
  220. package/dist/vite/plugin-config-hook.d.ts +1 -1
  221. package/dist/vite/plugin-context.d.ts +3 -3
  222. package/dist/vite/plugin-durable-objects.d.ts +2 -2
  223. package/dist/vite/plugin-programmatic.d.ts +1 -1
  224. package/dist/vite/plugin-service-bindings.d.ts +2 -2
  225. package/dist/vite/plugin.d.ts +3 -3
  226. package/dist/worker-entry/composed-worker.d.ts +1 -1
  227. package/dist/worker-entry/routes.d.ts +2 -2
  228. package/dist/worker-entry/surface-paths.d.ts +1 -1
  229. package/dist/workflows/local-workflow-entrypoints.d.ts +1 -1
  230. package/package.json +5 -3
  231. package/dist/account-4tgh03a8.js +0 -484
  232. package/dist/ai-r3zqmxan.js +0 -261
  233. package/dist/api-6z01z734.js +0 -33
  234. package/dist/build-kw625v84.js +0 -51
  235. package/dist/config-ghk2bxj3.js +0 -102
  236. package/dist/deploy-9kee65n9.js +0 -1062
  237. package/dist/dev-x8zr249a.js +0 -3569
  238. package/dist/doctor-0ng5qrr1.js +0 -258
  239. package/dist/durable-object-0ybmg08a.js +0 -13
  240. package/dist/index-04wh9bxx.js +0 -514
  241. package/dist/index-0cc05hzv.js +0 -74
  242. package/dist/index-2yv7w548.js +0 -185
  243. package/dist/index-37x76zdn.js +0 -4
  244. package/dist/index-3cpzsr47.js +0 -125
  245. package/dist/index-3t6rypgc.js +0 -13
  246. package/dist/index-4mmpccrb.js +0 -309
  247. package/dist/index-5dkjffqz.js +0 -25
  248. package/dist/index-5hy7jmv3.js +0 -890
  249. package/dist/index-627srx16.js +0 -45
  250. package/dist/index-7m557715.js +0 -283
  251. package/dist/index-a8pnvg3r.js +0 -52
  252. package/dist/index-aabgympv.js +0 -39
  253. package/dist/index-atwc3csp.js +0 -256
  254. package/dist/index-cv4cvrxe.js +0 -2046
  255. package/dist/index-h7r11y4a.js +0 -539
  256. package/dist/index-hvtd936d.js +0 -1229
  257. package/dist/index-kcp7y951.js +0 -136
  258. package/dist/index-maw0jjnn.js +0 -147
  259. package/dist/index-mek9msfv.js +0 -705
  260. package/dist/index-n4xkaymm.js +0 -236
  261. package/dist/index-nkk59p3y.js +0 -579
  262. package/dist/index-phcrvs6d.js +0 -342
  263. package/dist/index-se4kw8tm.js +0 -460
  264. package/dist/index-x8s9rwfh.js +0 -2020
  265. package/dist/index-y7w3x9p1.js +0 -18
  266. package/dist/index-z9gy8w6b.js +0 -57
  267. package/dist/index-zdd0d9qa.js +0 -199
  268. package/dist/init-tb8jqgvr.js +0 -180
  269. package/dist/login-4h1sfsed.js +0 -75
  270. package/dist/previews-qr7c5j8h.js +0 -1336
  271. package/dist/productions-xpmd6bw8.js +0 -505
  272. package/dist/remote-kqcvhnfx.js +0 -192
  273. package/dist/secrets-6wbdsdek.js +0 -89
  274. package/dist/token-yp1qa70y.js +0 -419
  275. package/dist/types-15yv4cj3.js +0 -701
  276. package/dist/worker-1yg72jxg.js +0 -510
  277. package/dist/worker-entrypoint-y8s9kdcx.js +0 -15
@@ -0,0 +1,157 @@
1
+ import { g as isAuthenticated, h as hasWranglerConfig, m as getWranglerAuth, p as getApiToken } from "./api-TzdliH-6.js";
2
+ import { a as setGlobalDefaultAccountId, d as getPrimaryAccount, i as getWorkspaceAccountId, l as getAccountById, n as getEffectiveAccountId, o as setWorkspaceAccountId, r as getGlobalDefaultAccountId, t as clearGlobalDefaultAccountId, u as getAccounts } from "./preferences-BKp_7XJx.js";
3
+ import { C as deleteWorker, D as listWorkerVersions, E as listWorkerDeployments, O as listWorkers, S as DEVFLARE_PREVIEW_REGISTRY_DATABASE, T as getWorkersSubdomain, a as listTrackedPreviewRecords, c as reconcilePreviewRegistry, i as listTrackedDeploymentRecords, k as renameWorker, l as retirePreviewRegistry, n as ensurePreviewRegistry, o as listTrackedPreviewScopeRecords, r as getPreviewRegistryContext, s as listTrackedRegistryState, t as cleanupPreviewRegistry, w as getWorkerVersionDetail } from "./preview-registry-ClAbLTHH.js";
4
+ import { _ as listR2Buckets, b as rawD1DatabaseQuery, f as listAIModels, h as listKVNamespaces, m as listHyperdrives, p as listD1Databases, t as createD1Database, v as listVectorizeIndexes, y as queryD1Database } from "./account-resources-CsmVowJp.js";
5
+ import { a as getUsageSummary, c as recordUsage, d as setLimitsEnabled, f as shouldSkip, i as getUsage, l as resetUsage, n as getAllUsageSummaries, o as isWithinLimits, r as getLimits, s as recordTestUsage, t as canProceedWithTest, u as setLimits } from "./usage-BBTGzjon.js";
6
+ import { a as listAccountTokenPermissionGroups, i as listAccountOwnedAPITokens, n as deleteAccountOwnedAPIToken, o as normalizeDevflareTokenName, t as createAccountOwnedAPIToken } from "./tokens-iVcgNXi-.js";
7
+ //#region src/cloudflare/account-status.ts
8
+ const SERVICE_STATUS_TIMEOUT_MS = 1e4;
9
+ const serviceInventoryFetchers = {
10
+ workers: listWorkers,
11
+ kv: listKVNamespaces,
12
+ d1: listD1Databases,
13
+ hyperdrive: listHyperdrives,
14
+ r2: listR2Buckets,
15
+ vectorize: listVectorizeIndexes,
16
+ ai: listAIModels
17
+ };
18
+ async function withServiceTimeout(operation) {
19
+ let timeoutId = null;
20
+ const timeoutPromise = new Promise((_, reject) => {
21
+ timeoutId = setTimeout(() => reject(/* @__PURE__ */ new Error("timeout")), SERVICE_STATUS_TIMEOUT_MS);
22
+ });
23
+ try {
24
+ return await Promise.race([operation, timeoutPromise]);
25
+ } finally {
26
+ if (timeoutId) clearTimeout(timeoutId);
27
+ }
28
+ }
29
+ function createAvailableServiceStatus(service, count) {
30
+ return {
31
+ service,
32
+ available: service === "ai" ? count > 0 : true,
33
+ count
34
+ };
35
+ }
36
+ async function getServiceStatus(accountId, service) {
37
+ const fetchInventory = serviceInventoryFetchers[service];
38
+ if (!fetchInventory) return {
39
+ service,
40
+ available: false
41
+ };
42
+ try {
43
+ return createAvailableServiceStatus(service, (await withServiceTimeout(fetchInventory(accountId))).length);
44
+ } catch {
45
+ return {
46
+ service,
47
+ available: false
48
+ };
49
+ }
50
+ }
51
+ async function getAllServiceStatus(accountId) {
52
+ return Promise.all([
53
+ "workers",
54
+ "kv",
55
+ "d1",
56
+ "hyperdrive",
57
+ "r2",
58
+ "vectorize",
59
+ "ai"
60
+ ].map((service) => getServiceStatus(accountId, service)));
61
+ }
62
+ async function hasService(accountId, service) {
63
+ return (await getServiceStatus(accountId, service)).available;
64
+ }
65
+ async function getAccountSummary(accountId) {
66
+ const account = await getAccountById(accountId);
67
+ if (!account) return null;
68
+ return {
69
+ account,
70
+ services: await getAllServiceStatus(accountId)
71
+ };
72
+ }
73
+ //#endregion
74
+ //#region src/cloudflare/index.ts
75
+ /**
76
+ * Main account API object
77
+ *
78
+ * Usage:
79
+ * ```ts
80
+ * import { account } from 'devflare/cloudflare'
81
+ *
82
+ * // Check authentication
83
+ * const isLoggedIn = await account.isAuthenticated()
84
+ *
85
+ * // Get primary account
86
+ * const primary = await account.getPrimaryAccount()
87
+ *
88
+ * // List resources (requires accountId)
89
+ * const workers = await account.workers(accountId)
90
+ *
91
+ * // Check usage limits before testing
92
+ * const { allowed } = await account.canProceedWithTest(accountId, 'ai')
93
+ * ```
94
+ */
95
+ const account = {
96
+ isAuthenticated,
97
+ hasWranglerConfig,
98
+ getApiToken,
99
+ getWranglerAuth,
100
+ getAccounts,
101
+ getPrimaryAccount,
102
+ getAccountById,
103
+ getAccountSummary,
104
+ workers: listWorkers,
105
+ renameWorker,
106
+ deleteWorker,
107
+ workerVersions: listWorkerVersions,
108
+ workerVersion: getWorkerVersionDetail,
109
+ workerDeployments: listWorkerDeployments,
110
+ workersSubdomain: getWorkersSubdomain,
111
+ kv: listKVNamespaces,
112
+ d1: listD1Databases,
113
+ createD1Database,
114
+ queryD1Database,
115
+ rawD1DatabaseQuery,
116
+ r2: listR2Buckets,
117
+ vectorize: listVectorizeIndexes,
118
+ ai: listAIModels,
119
+ getServiceStatus,
120
+ getAllServiceStatus,
121
+ hasService,
122
+ getUsage,
123
+ recordUsage,
124
+ resetUsage,
125
+ getAllUsageSummaries,
126
+ getUsageSummary,
127
+ getLimits,
128
+ setLimits,
129
+ setLimitsEnabled,
130
+ isWithinLimits,
131
+ canProceedWithTest,
132
+ recordTestUsage,
133
+ shouldSkip,
134
+ getGlobalDefaultAccountId,
135
+ setGlobalDefaultAccountId,
136
+ getWorkspaceAccountId,
137
+ setWorkspaceAccountId,
138
+ getEffectiveAccountId,
139
+ clearGlobalDefaultAccountId,
140
+ listAccountTokenPermissionGroups,
141
+ listAccountOwnedAPITokens,
142
+ createAccountOwnedAPIToken,
143
+ deleteAccountOwnedAPIToken,
144
+ normalizeDevflareTokenName,
145
+ previewRegistryDatabase: DEVFLARE_PREVIEW_REGISTRY_DATABASE,
146
+ ensurePreviewRegistry,
147
+ getPreviewRegistryContext,
148
+ listTrackedPreviewRecords,
149
+ listTrackedRegistryState,
150
+ listTrackedPreviewScopeRecords,
151
+ listTrackedDeploymentRecords,
152
+ reconcilePreviewRegistry,
153
+ cleanupPreviewRegistry,
154
+ retirePreviewRegistry
155
+ };
156
+ //#endregion
157
+ export { account as t };
@@ -0,0 +1,13 @@
1
+ //#region src/cli/colors.ts
2
+ const BOLD = "\x1B[1m";
3
+ const DIM = "\x1B[2m";
4
+ const RESET = "\x1B[0m";
5
+ const CYAN = "\x1B[36m";
6
+ const CYAN_BOLD = "\x1B[1;36m";
7
+ const WHITE = "\x1B[97m";
8
+ const GREEN = "\x1B[32m";
9
+ const RED = "\x1B[31m";
10
+ const YELLOW = "\x1B[33m";
11
+ const BG_BLUE = "\x1B[44m";
12
+ //#endregion
13
+ export { DIM as a, RESET as c, CYAN_BOLD as i, WHITE as l, BOLD as n, GREEN as o, CYAN as r, RED as s, BG_BLUE as t, YELLOW as u };
@@ -0,0 +1,45 @@
1
+ import { i as resolveConfigPath, r as loadConfig } from "./loader-DLXO60RO.js";
2
+ import { d as getPrimaryAccount, i as getWorkspaceAccountId, n as getEffectiveAccountId } from "./preferences-BKp_7XJx.js";
3
+ //#region src/cli/command-utils.ts
4
+ function asOptionalString(value) {
5
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
6
+ }
7
+ function resolveNamedSelection(options) {
8
+ if (options.explicitValue) return {
9
+ value: options.explicitValue,
10
+ source: "option"
11
+ };
12
+ if (options.fallbackValue) return {
13
+ value: options.fallbackValue,
14
+ source: "arg"
15
+ };
16
+ if (options.configuredValue) return {
17
+ value: options.configuredValue,
18
+ source: "config"
19
+ };
20
+ return {
21
+ value: void 0,
22
+ source: "none"
23
+ };
24
+ }
25
+ async function getConfiguredAccountId(cwd) {
26
+ const workspaceAccountId = getWorkspaceAccountId();
27
+ if (workspaceAccountId) return workspaceAccountId;
28
+ const envAccountId = process.env.CLOUDFLARE_ACCOUNT_ID?.trim();
29
+ if (envAccountId) return envAccountId;
30
+ if (!await resolveConfigPath(cwd)) return;
31
+ try {
32
+ return (await loadConfig({ cwd })).accountId;
33
+ } catch {
34
+ return;
35
+ }
36
+ }
37
+ async function resolveCloudflareAccountId(options) {
38
+ if (options.explicitAccountId) return options.explicitAccountId;
39
+ if (options.configuredAccountId) return options.configuredAccountId;
40
+ const primaryAccount = await getPrimaryAccount(options.apiOptions);
41
+ if (!primaryAccount) return;
42
+ return (await getEffectiveAccountId(primaryAccount.id)).accountId;
43
+ }
44
+ //#endregion
45
+ export { resolveNamedSelection as i, getConfiguredAccountId as n, resolveCloudflareAccountId as r, asOptionalString as t };
@@ -0,0 +1,424 @@
1
+ import { f as normalizeCompatibilityFlags, u as resolveConfigForEnvironment } from "./loader-DLXO60RO.js";
2
+ import { _ as browserBindingSchema, a as normalizeD1Binding, c as normalizeHyperdriveBinding, d as normalizeMediaBinding, f as normalizeMtlsCertificateBinding, h as normalizeWorkflowBinding, i as normalizeArtifactsBinding, l as normalizeImagesBinding, m as normalizeSecretsStoreBinding, o as normalizeDOBinding, p as normalizePipelineBinding, r as getSingleBrowserBindingName, s as normalizeDispatchNamespaceBinding, u as normalizeKVBinding } from "./schema-normalization-DWVleVxo.js";
3
+ import { n as toWranglerSecretsConfig } from "./local-dev-vars-CTSa-wvF.js";
4
+ import { basename, isAbsolute, relative, resolve } from "pathe";
5
+ //#region src/config/compiler/bindings.ts
6
+ function getWranglerD1DatabaseBinding(bindingName, bindingConfig, options = {}) {
7
+ const normalized = normalizeD1Binding(bindingConfig);
8
+ if (normalized.databaseId) return {
9
+ binding: bindingName,
10
+ database_id: normalized.databaseId
11
+ };
12
+ if (options.preserveNamedBindings && normalized.name) return {
13
+ binding: bindingName,
14
+ database_name: normalized.name
15
+ };
16
+ throw new Error(`D1 binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
17
+ }
18
+ function getWranglerKVNamespaceBinding(bindingName, bindingConfig, options = {}) {
19
+ const normalized = normalizeKVBinding(bindingConfig);
20
+ if (normalized.namespaceId) return {
21
+ binding: bindingName,
22
+ id: normalized.namespaceId
23
+ };
24
+ if (options.preserveNamedBindings && normalized.name) return {
25
+ binding: bindingName,
26
+ name: normalized.name
27
+ };
28
+ throw new Error(`KV binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
29
+ }
30
+ function getWranglerHyperdriveBinding(bindingName, bindingConfig, options = {}) {
31
+ const normalized = normalizeHyperdriveBinding(bindingConfig);
32
+ if (normalized.configurationId) return {
33
+ binding: bindingName,
34
+ id: normalized.configurationId,
35
+ ...normalized.localConnectionString && { localConnectionString: normalized.localConnectionString }
36
+ };
37
+ if (options.preserveNamedBindings && normalized.name) return {
38
+ binding: bindingName,
39
+ name: normalized.name,
40
+ ...normalized.localConnectionString && { localConnectionString: normalized.localConnectionString }
41
+ };
42
+ throw new Error(`Hyperdrive binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
43
+ }
44
+ function getWranglerBrowserBinding(browserBindings) {
45
+ if (!browserBindings) return;
46
+ const parsed = browserBindingSchema.parse(browserBindings);
47
+ const bindingName = getSingleBrowserBindingName(parsed);
48
+ if (!bindingName) return;
49
+ const bindingConfig = parsed[bindingName];
50
+ return {
51
+ binding: bindingName,
52
+ ...typeof bindingConfig === "object" && bindingConfig.remote !== void 0 && { remote: bindingConfig.remote }
53
+ };
54
+ }
55
+ /**
56
+ * Compile bindings from devflare format to wrangler format
57
+ */
58
+ function compileBindings(bindings, result, options = {}, defaultSecretsStoreId) {
59
+ if (bindings.kv) result.kv_namespaces = Object.entries(bindings.kv).map(([binding, namespace]) => {
60
+ return getWranglerKVNamespaceBinding(binding, namespace, options);
61
+ });
62
+ if (bindings.d1) result.d1_databases = Object.entries(bindings.d1).map(([binding, database_id]) => {
63
+ return getWranglerD1DatabaseBinding(binding, database_id, options);
64
+ });
65
+ if (bindings.r2) result.r2_buckets = Object.entries(bindings.r2).map(([binding, bucket_name]) => ({
66
+ binding,
67
+ bucket_name
68
+ }));
69
+ if (bindings.durableObjects) result.durable_objects = { bindings: Object.entries(bindings.durableObjects).map(([name, config]) => {
70
+ const normalized = normalizeDOBinding(config);
71
+ const binding = {
72
+ name,
73
+ class_name: normalized.className
74
+ };
75
+ if (normalized.kind === "cross-worker" && normalized.scriptName) binding.script_name = normalized.scriptName;
76
+ return binding;
77
+ }) };
78
+ if (bindings.queues) {
79
+ result.queues = {};
80
+ if (bindings.queues.producers) result.queues.producers = Object.entries(bindings.queues.producers).map(([binding, queue]) => ({
81
+ binding,
82
+ queue
83
+ }));
84
+ if (bindings.queues.consumers) result.queues.consumers = bindings.queues.consumers.map((consumer) => ({
85
+ queue: consumer.queue,
86
+ ...consumer.maxBatchSize && { max_batch_size: consumer.maxBatchSize },
87
+ ...consumer.maxBatchTimeout && { max_batch_timeout: consumer.maxBatchTimeout },
88
+ ...consumer.maxRetries && { max_retries: consumer.maxRetries },
89
+ ...consumer.deadLetterQueue && { dead_letter_queue: consumer.deadLetterQueue },
90
+ ...consumer.maxConcurrency && { max_concurrency: consumer.maxConcurrency },
91
+ ...consumer.retryDelay && { retry_delay: consumer.retryDelay }
92
+ }));
93
+ }
94
+ if (bindings.rateLimits) result.ratelimits = Object.entries(bindings.rateLimits).map(([name, config]) => ({
95
+ name,
96
+ namespace_id: config.namespaceId,
97
+ simple: {
98
+ limit: config.simple.limit,
99
+ period: config.simple.period
100
+ }
101
+ }));
102
+ if (bindings.versionMetadata) result.version_metadata = { binding: bindings.versionMetadata.binding };
103
+ if (bindings.workerLoaders) result.worker_loaders = Object.keys(bindings.workerLoaders).map((binding) => ({ binding }));
104
+ if (bindings.mtlsCertificates) result.mtls_certificates = Object.entries(bindings.mtlsCertificates).map(([binding, config]) => {
105
+ const normalized = normalizeMtlsCertificateBinding(config);
106
+ return {
107
+ binding,
108
+ certificate_id: normalized.certificateId,
109
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
110
+ };
111
+ });
112
+ if (bindings.dispatchNamespaces) result.dispatch_namespaces = Object.entries(bindings.dispatchNamespaces).map(([binding, config]) => {
113
+ const normalized = normalizeDispatchNamespaceBinding(config);
114
+ return {
115
+ binding,
116
+ namespace: normalized.namespace,
117
+ ...normalized.outbound && { outbound: normalized.outbound },
118
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
119
+ };
120
+ });
121
+ if (bindings.workflows) result.workflows = Object.entries(bindings.workflows).map(([binding, config]) => {
122
+ const normalized = normalizeWorkflowBinding(config);
123
+ return {
124
+ binding,
125
+ name: normalized.name,
126
+ class_name: normalized.className,
127
+ ...normalized.scriptName && { script_name: normalized.scriptName },
128
+ ...normalized.remote !== void 0 && { remote: normalized.remote },
129
+ ...normalized.limits && { limits: normalized.limits }
130
+ };
131
+ });
132
+ if (bindings.pipelines) result.pipelines = Object.entries(bindings.pipelines).map(([binding, config]) => {
133
+ const normalized = normalizePipelineBinding(config);
134
+ return {
135
+ binding,
136
+ pipeline: normalized.pipeline,
137
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
138
+ };
139
+ });
140
+ if (bindings.images) {
141
+ const [entry] = Object.entries(bindings.images);
142
+ if (entry) {
143
+ const [binding, config] = entry;
144
+ const normalized = normalizeImagesBinding(binding, config);
145
+ result.images = {
146
+ binding: normalized.binding,
147
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
148
+ };
149
+ }
150
+ }
151
+ if (bindings.media) {
152
+ const [entry] = Object.entries(bindings.media);
153
+ if (entry) {
154
+ const [binding, config] = entry;
155
+ const normalized = normalizeMediaBinding(binding, config);
156
+ result.media = {
157
+ binding: normalized.binding,
158
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
159
+ };
160
+ }
161
+ }
162
+ if (bindings.artifacts) result.artifacts = Object.entries(bindings.artifacts).map(([binding, config]) => {
163
+ const normalized = normalizeArtifactsBinding(config);
164
+ return {
165
+ binding,
166
+ namespace: normalized.namespace,
167
+ ...normalized.remote !== void 0 && { remote: normalized.remote }
168
+ };
169
+ });
170
+ if (bindings.secretsStore) result.secrets_store_secrets = Object.entries(bindings.secretsStore).map(([binding, config]) => {
171
+ const normalized = normalizeSecretsStoreBinding(config, defaultSecretsStoreId, binding);
172
+ return {
173
+ binding,
174
+ store_id: normalized.storeId,
175
+ secret_name: normalized.secretName
176
+ };
177
+ });
178
+ if (bindings.services) result.services = Object.entries(bindings.services).map(([binding, config]) => ({
179
+ binding,
180
+ service: config.service,
181
+ ...config.entrypoint && { entrypoint: config.entrypoint },
182
+ ...config.environment && { environment: config.environment }
183
+ }));
184
+ if (bindings.ai?.binding) result.ai = {
185
+ binding: bindings.ai.binding,
186
+ ...bindings.ai.remote !== void 0 && { remote: bindings.ai.remote },
187
+ ...bindings.ai.staging !== void 0 && { staging: bindings.ai.staging }
188
+ };
189
+ if (bindings.aiSearchNamespaces) result.ai_search_namespaces = Object.entries(bindings.aiSearchNamespaces).map(([binding, config]) => ({
190
+ binding,
191
+ namespace: config.namespace,
192
+ ...config.remote !== void 0 && { remote: config.remote }
193
+ }));
194
+ if (bindings.aiSearch) result.ai_search = Object.entries(bindings.aiSearch).map(([binding, config]) => ({
195
+ binding,
196
+ instance_name: config.instanceName,
197
+ ...config.remote !== void 0 && { remote: config.remote }
198
+ }));
199
+ if (bindings.vectorize) result.vectorize = Object.entries(bindings.vectorize).map(([binding, config]) => ({
200
+ binding,
201
+ index_name: config.indexName,
202
+ ...config.remote !== void 0 && { remote: config.remote }
203
+ }));
204
+ if (bindings.hyperdrive) result.hyperdrive = Object.entries(bindings.hyperdrive).map(([binding, config]) => {
205
+ return getWranglerHyperdriveBinding(binding, config, options);
206
+ });
207
+ const browserBinding = getWranglerBrowserBinding(bindings.browser);
208
+ if (browserBinding) result.browser = browserBinding;
209
+ if (bindings.analyticsEngine) result.analytics_engine_datasets = Object.entries(bindings.analyticsEngine).map(([binding, config]) => ({
210
+ binding,
211
+ dataset: config.dataset
212
+ }));
213
+ if (bindings.sendEmail) result.send_email = Object.entries(bindings.sendEmail).map(([name, config]) => ({
214
+ name,
215
+ ...config.destinationAddress && { destination_address: config.destinationAddress },
216
+ ...config.allowedDestinationAddresses && { allowed_destination_addresses: config.allowedDestinationAddresses },
217
+ ...config.allowedSenderAddresses && { allowed_sender_addresses: config.allowedSenderAddresses }
218
+ }));
219
+ }
220
+ //#endregion
221
+ //#region src/config/compiler/core-helpers.ts
222
+ function compileWranglerMigrations(migrations) {
223
+ return migrations.map((migration) => ({
224
+ tag: migration.tag,
225
+ ...migration.new_classes && { new_classes: migration.new_classes },
226
+ ...migration.renamed_classes && { renamed_classes: migration.renamed_classes.map((renamedClass) => ({
227
+ from: renamedClass.from,
228
+ to: renamedClass.to
229
+ })) },
230
+ ...migration.deleted_classes && { deleted_classes: migration.deleted_classes },
231
+ ...migration.new_sqlite_classes && { new_sqlite_classes: migration.new_sqlite_classes }
232
+ }));
233
+ }
234
+ function compileModuleOptions(config, result) {
235
+ if (config.rules && config.rules.length > 0) result.rules = config.rules;
236
+ if (config.findAdditionalModules !== void 0) result.find_additional_modules = config.findAdditionalModules;
237
+ if (config.baseDir) result.base_dir = config.baseDir;
238
+ if (config.preserveFileNames !== void 0) result.preserve_file_names = config.preserveFileNames;
239
+ if (config.logpush !== void 0) result.logpush = config.logpush;
240
+ if (config.uploadSourceMaps !== void 0) result.upload_source_maps = config.uploadSourceMaps;
241
+ if (config.keepVars !== void 0) result.keep_vars = config.keepVars;
242
+ }
243
+ function compileContainers(config, result) {
244
+ if (!config.containers || config.containers.length === 0) return;
245
+ result.containers = config.containers.map((container) => ({
246
+ class_name: container.className,
247
+ image: container.image,
248
+ ...container.maxInstances !== void 0 && { max_instances: container.maxInstances },
249
+ ...container.instanceType && { instance_type: container.instanceType },
250
+ ...container.name && { name: container.name },
251
+ ...container.imageBuildContext && { image_build_context: container.imageBuildContext },
252
+ ...container.imageVars && { image_vars: container.imageVars },
253
+ ...container.rolloutActiveGracePeriod !== void 0 && { rollout_active_grace_period: container.rolloutActiveGracePeriod },
254
+ ...container.rolloutStepPercentage !== void 0 && { rollout_step_percentage: container.rolloutStepPercentage }
255
+ }));
256
+ }
257
+ //#endregion
258
+ //#region src/config/compiler/paths.ts
259
+ /**
260
+ * Convert WranglerConfig to JSONC string with comments
261
+ */
262
+ function stringifyConfig(config) {
263
+ return `// Generated by devflare — Do not edit directly
264
+ // Edit devflare.config.ts instead
265
+
266
+ ` + JSON.stringify(config, null, " ");
267
+ }
268
+ function rebasePathForConfigDir(projectRoot, configDir, pathValue) {
269
+ return relative(configDir, isAbsolute(pathValue) ? pathValue : resolve(projectRoot, pathValue)).replace(/\\/g, "/");
270
+ }
271
+ function isLocalContainerPath(pathValue) {
272
+ return pathValue === "Dockerfile" || pathValue.startsWith(".") || pathValue.startsWith("/") || pathValue.startsWith("\\") || isAbsolute(pathValue) || pathValue.endsWith("/Dockerfile") || pathValue.endsWith("\\Dockerfile");
273
+ }
274
+ function pathIsInsideDirectory(directoryPath, candidatePath) {
275
+ const normalizedDirectoryPath = directoryPath.replace(/\\/g, "/");
276
+ const normalizedCandidatePath = candidatePath.replace(/\\/g, "/");
277
+ return normalizedCandidatePath === normalizedDirectoryPath || normalizedCandidatePath.startsWith(`${normalizedDirectoryPath}/`);
278
+ }
279
+ function isolateViteBuildOutputPaths(projectRoot, config) {
280
+ const assetsDirectory = config.assets?.directory;
281
+ if (!assetsDirectory) return config;
282
+ const isolatedAssetsDirectoryPath = resolve(projectRoot, ".devflare", "vite-build-output", basename(assetsDirectory));
283
+ const isolatedAssetsDirectory = relative(projectRoot, isolatedAssetsDirectoryPath).replace(/\\/g, "/");
284
+ const isolatedConfig = {
285
+ ...config,
286
+ assets: config.assets ? {
287
+ ...config.assets,
288
+ directory: isolatedAssetsDirectory
289
+ } : config.assets
290
+ };
291
+ if (!config.main) return isolatedConfig;
292
+ const originalAssetsDirectoryPath = resolve(projectRoot, assetsDirectory);
293
+ const originalMainEntryPath = resolve(projectRoot, config.main);
294
+ if (!pathIsInsideDirectory(originalAssetsDirectoryPath, originalMainEntryPath)) return isolatedConfig;
295
+ const isolatedMainEntryPath = resolve(isolatedAssetsDirectoryPath, relative(originalAssetsDirectoryPath, originalMainEntryPath));
296
+ return {
297
+ ...isolatedConfig,
298
+ main: relative(projectRoot, isolatedMainEntryPath).replace(/\\/g, "/")
299
+ };
300
+ }
301
+ function rebaseWranglerConfigPaths(projectRoot, configDir, config) {
302
+ return {
303
+ ...config,
304
+ ...config.main ? { main: rebasePathForConfigDir(projectRoot, configDir, config.main) } : {},
305
+ ...config.assets?.directory ? { assets: {
306
+ ...config.assets,
307
+ directory: rebasePathForConfigDir(projectRoot, configDir, config.assets.directory)
308
+ } } : {},
309
+ ...config.containers ? { containers: config.containers.map((container) => ({
310
+ ...container,
311
+ image: isLocalContainerPath(container.image) ? rebasePathForConfigDir(projectRoot, configDir, container.image) : container.image,
312
+ ...container.image_build_context && { image_build_context: rebasePathForConfigDir(projectRoot, configDir, container.image_build_context) }
313
+ })) } : {}
314
+ };
315
+ }
316
+ /**
317
+ * Write wrangler.jsonc file to the specified directory
318
+ *
319
+ * @param cwd - Working directory to write to
320
+ * @param config - Wrangler configuration to write
321
+ * @param filename - Optional filename (default: 'wrangler.jsonc')
322
+ * @returns Path to the written file
323
+ */
324
+ async function writeWranglerConfig(cwd, config, filename = "wrangler.jsonc") {
325
+ const { resolve } = await import("pathe");
326
+ const fs = await import("node:fs/promises");
327
+ try {
328
+ await fs.mkdir(cwd, { recursive: true });
329
+ } catch {}
330
+ const content = stringifyConfig(config);
331
+ const wranglerPath = resolve(cwd, filename);
332
+ await fs.writeFile(wranglerPath, content, "utf-8");
333
+ return wranglerPath;
334
+ }
335
+ async function readWranglerConfig(filePath) {
336
+ const fs = await import("node:fs/promises");
337
+ const { parse } = await import("jsonc-parser");
338
+ const parsedConfig = parse(await fs.readFile(filePath, "utf-8"));
339
+ if (!parsedConfig || typeof parsedConfig !== "object") throw new Error(`Could not parse Wrangler config at ${filePath}.`);
340
+ return parsedConfig;
341
+ }
342
+ //#endregion
343
+ //#region src/config/compiler.ts
344
+ /**
345
+ * Compile a phase-resolved DevflareConfig to WranglerConfig.
346
+ *
347
+ * R1 step 3: input is type-narrowed to `ResolvedConfig` (`LocalConfig | DeployConfig`)
348
+ * so callers cannot accidentally pass a raw `DevflareConfig` whose KV/D1/Hyperdrive
349
+ * bindings might still be name-only. The runtime throw remains as a defense-in-depth
350
+ * guard for callers that bypass the type system.
351
+ *
352
+ * @param config - A phase-resolved devflare configuration (`LocalConfig` or `DeployConfig`)
353
+ * @param environment - Optional environment name for env-specific overrides
354
+ * @returns Wrangler-compatible configuration object
355
+ */
356
+ function compileConfig(config, environment) {
357
+ return compileConfigInternal(config, environment);
358
+ }
359
+ function compileBuildConfig(config, environment, options = {}) {
360
+ return compileConfigInternal(config, environment, {
361
+ preserveNamedBindings: true,
362
+ alreadyResolved: options.alreadyResolved
363
+ });
364
+ }
365
+ function compileConfigInternal(config, environment, options = {}) {
366
+ const resolvedConfig = options.alreadyResolved ? config : resolveConfigForEnvironment(config, environment);
367
+ const mergedConfig = {
368
+ ...resolvedConfig,
369
+ compatibilityFlags: normalizeCompatibilityFlags(resolvedConfig.compatibilityFlags)
370
+ };
371
+ const result = {
372
+ name: mergedConfig.name,
373
+ compatibility_date: mergedConfig.compatibilityDate,
374
+ preview_urls: true,
375
+ workers_dev: true
376
+ };
377
+ if (mergedConfig.accountId) result.account_id = mergedConfig.accountId;
378
+ const mainEntry = mergedConfig.files?.fetch;
379
+ if (typeof mainEntry === "string") result.main = mainEntry;
380
+ compileModuleOptions(mergedConfig, result);
381
+ if (mergedConfig.compatibilityFlags && mergedConfig.compatibilityFlags.length > 0) result.compatibility_flags = mergedConfig.compatibilityFlags;
382
+ if (mergedConfig.bindings) compileBindings(mergedConfig.bindings, result, options, mergedConfig.secretsStoreId);
383
+ if (mergedConfig.triggers?.crons && mergedConfig.triggers.crons.length > 0) result.triggers = { crons: mergedConfig.triggers.crons };
384
+ if (mergedConfig.tailConsumers && mergedConfig.tailConsumers.length > 0) result.tail_consumers = mergedConfig.tailConsumers.map((consumer) => typeof consumer === "string" ? { service: consumer } : {
385
+ service: consumer.service,
386
+ ...consumer.environment && { environment: consumer.environment }
387
+ });
388
+ if (mergedConfig.vars && Object.keys(mergedConfig.vars).length > 0) result.vars = mergedConfig.vars;
389
+ const secrets = toWranglerSecretsConfig(mergedConfig.secrets);
390
+ if (secrets) result.secrets = secrets;
391
+ if (mergedConfig.routes && mergedConfig.routes.length > 0) result.routes = mergedConfig.routes.map((route) => ({
392
+ pattern: route.pattern,
393
+ ...route.zone_name && { zone_name: route.zone_name },
394
+ ...route.zone_id && { zone_id: route.zone_id },
395
+ ...route.custom_domain !== void 0 && { custom_domain: route.custom_domain }
396
+ }));
397
+ if (mergedConfig.assets?.directory) result.assets = {
398
+ directory: mergedConfig.assets.directory,
399
+ ...mergedConfig.assets.binding && { binding: mergedConfig.assets.binding },
400
+ ...mergedConfig.assets.html_handling && { html_handling: mergedConfig.assets.html_handling },
401
+ ...mergedConfig.assets.not_found_handling && { not_found_handling: mergedConfig.assets.not_found_handling },
402
+ ...mergedConfig.assets.run_worker_first !== void 0 && { run_worker_first: mergedConfig.assets.run_worker_first }
403
+ };
404
+ if (mergedConfig.placement) result.placement = mergedConfig.placement;
405
+ if (mergedConfig.observability) result.observability = mergedConfig.observability;
406
+ if (mergedConfig.limits) result.limits = mergedConfig.limits;
407
+ compileContainers(mergedConfig, result);
408
+ if (mergedConfig.migrations && mergedConfig.migrations.length > 0) result.migrations = compileWranglerMigrations(mergedConfig.migrations);
409
+ if (mergedConfig.wrangler?.passthrough) Object.assign(result, mergedConfig.wrangler.passthrough);
410
+ return result;
411
+ }
412
+ /**
413
+ * Compile DevflareConfig to programmatic config for @cloudflare/vite-plugin.
414
+ * This is used instead of wrangler.jsonc in dev mode.
415
+ *
416
+ * @param config - The devflare configuration
417
+ * @param environment - Optional environment name for env-specific overrides
418
+ * @returns Config object compatible with cloudflare({ config: ... })
419
+ */
420
+ function compileToProgrammaticConfig(config, environment, options = {}) {
421
+ return options.preserveNamedBindings ? compileBuildConfig(config, environment) : compileConfig(config, environment);
422
+ }
423
+ //#endregion
424
+ export { readWranglerConfig as a, writeWranglerConfig as c, isolateViteBuildOutputPaths as i, compileConfig as n, rebaseWranglerConfigPaths as o, compileToProgrammaticConfig as r, stringifyConfig as s, compileBuildConfig as t };