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
@@ -1,342 +0,0 @@
1
- import {
2
- createAccountOwnedAPIToken,
3
- deleteAccountOwnedAPIToken,
4
- listAccountOwnedAPITokens,
5
- listAccountTokenPermissionGroups,
6
- normalizeDevflareTokenName
7
- } from "./index-atwc3csp.js";
8
- import {
9
- DEVFLARE_PREVIEW_REGISTRY_DATABASE,
10
- cleanupPreviewRegistry,
11
- ensurePreviewRegistry,
12
- getPreviewRegistryContext,
13
- listTrackedDeploymentRecords,
14
- listTrackedPreviewRecords,
15
- listTrackedPreviewScopeRecords,
16
- listTrackedRegistryState,
17
- reconcilePreviewRegistry,
18
- retirePreviewRegistry
19
- } from "./index-hvtd936d.js";
20
- import {
21
- DEVFLARE_KV_NAMESPACE_TITLE,
22
- clearGlobalDefaultAccountId,
23
- createD1Database,
24
- deleteWorker,
25
- getAccountById,
26
- getAccountSummary,
27
- getAccounts,
28
- getAllServiceStatus,
29
- getEffectiveAccountId,
30
- getGlobalDefaultAccountId,
31
- getOrCreateNamedKVNamespace,
32
- getPrimaryAccount,
33
- getServiceStatus,
34
- getWorkerVersionDetail,
35
- getWorkersSubdomain,
36
- getWorkspaceAccountId,
37
- hasService,
38
- listAIModels,
39
- listD1Databases,
40
- listKVNamespaces,
41
- listR2Buckets,
42
- listVectorizeIndexes,
43
- listWorkerDeployments,
44
- listWorkerVersions,
45
- listWorkers,
46
- queryD1Database,
47
- rawD1DatabaseQuery,
48
- renameWorker,
49
- setGlobalDefaultAccountId,
50
- setWorkspaceAccountId
51
- } from "./index-h7r11y4a.js";
52
- import {
53
- getApiToken,
54
- getWranglerAuth,
55
- hasWranglerConfig,
56
- isAuthenticated,
57
- kvGet,
58
- kvPut
59
- } from "./index-04wh9bxx.js";
60
-
61
- // src/cloudflare/usage.ts
62
- var USAGE_KEY_PREFIX = "usage:";
63
- var LIMITS_KEY = "limits";
64
- var DEFAULT_LIMITS = {
65
- aiTokensPerDay: 1e4,
66
- aiRequestsPerDay: 100,
67
- vectorizeOpsPerDay: 1000,
68
- enabled: true
69
- };
70
- async function getOrCreateUsageNamespace(accountId) {
71
- return getOrCreateNamedKVNamespace(accountId, DEVFLARE_KV_NAMESPACE_TITLE);
72
- }
73
- function getTodayDate() {
74
- return new Date().toISOString().split("T")[0];
75
- }
76
- function buildUsageKey(service, date) {
77
- return `${USAGE_KEY_PREFIX}${service}:${date}`;
78
- }
79
- async function getUsage(accountId, service, date) {
80
- const targetDate = date ?? getTodayDate();
81
- const namespaceId = await getOrCreateUsageNamespace(accountId);
82
- const key = buildUsageKey(service, targetDate);
83
- const value = await kvGet(accountId, namespaceId, key);
84
- if (value === null) {
85
- return null;
86
- }
87
- try {
88
- return JSON.parse(value);
89
- } catch {
90
- return null;
91
- }
92
- }
93
- var MAX_RECORD_USAGE_ATTEMPTS = 5;
94
- async function recordUsage(accountId, service, count = 1, deps = {}) {
95
- const kvGetFn = deps.kvGet ?? kvGet;
96
- const kvPutFn = deps.kvPut ?? kvPut;
97
- const getNamespaceId = deps.getNamespaceId ?? getOrCreateUsageNamespace;
98
- const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
99
- const now = deps.now ?? (() => new Date);
100
- const maxAttempts = deps.maxAttempts ?? MAX_RECORD_USAGE_ATTEMPTS;
101
- const warn = deps.warn ?? ((message) => console.warn(message));
102
- const today = now().toISOString().split("T")[0];
103
- const namespaceId = await getNamespaceId(accountId);
104
- const key = buildUsageKey(service, today);
105
- let lastWritten = null;
106
- let lastObserved = null;
107
- for (let attempt = 0;attempt < maxAttempts; attempt++) {
108
- const existingRaw = await kvGetFn(accountId, namespaceId, key);
109
- let existing = null;
110
- if (existingRaw !== null) {
111
- try {
112
- existing = JSON.parse(existingRaw);
113
- } catch {
114
- existing = null;
115
- }
116
- }
117
- lastObserved = existing;
118
- const record = {
119
- service,
120
- date: today,
121
- count: (existing?.count ?? 0) + count,
122
- updatedAt: now().toISOString()
123
- };
124
- await kvPutFn(accountId, namespaceId, key, JSON.stringify(record));
125
- lastWritten = record;
126
- const verifyRaw = await kvGetFn(accountId, namespaceId, key);
127
- if (verifyRaw !== null) {
128
- try {
129
- const verify = JSON.parse(verifyRaw);
130
- if (verify.updatedAt === record.updatedAt && verify.count === record.count) {
131
- return record;
132
- }
133
- } catch {}
134
- }
135
- if (attempt < maxAttempts - 1) {
136
- const backoffMs = Math.min(25 * 2 ** attempt, 400);
137
- await sleep(backoffMs);
138
- }
139
- }
140
- warn(`[devflare] recordUsage: could not confirm usage write for ${service} after ${maxAttempts} attempts ` + "due to concurrent writes; usage counts are best-effort under concurrency.");
141
- return lastWritten ?? {
142
- service,
143
- date: today,
144
- count: (lastObserved?.count ?? 0) + count,
145
- updatedAt: now().toISOString()
146
- };
147
- }
148
- async function resetUsage(accountId, service) {
149
- const today = getTodayDate();
150
- const namespaceId = await getOrCreateUsageNamespace(accountId);
151
- const key = buildUsageKey(service, today);
152
- const record = {
153
- service,
154
- date: today,
155
- count: 0,
156
- updatedAt: new Date().toISOString()
157
- };
158
- await kvPut(accountId, namespaceId, key, JSON.stringify(record));
159
- }
160
- async function getLimits(accountId) {
161
- const namespaceId = await getOrCreateUsageNamespace(accountId);
162
- const value = await kvGet(accountId, namespaceId, LIMITS_KEY);
163
- if (value === null) {
164
- return DEFAULT_LIMITS;
165
- }
166
- try {
167
- return { ...DEFAULT_LIMITS, ...JSON.parse(value) };
168
- } catch {
169
- return DEFAULT_LIMITS;
170
- }
171
- }
172
- async function setLimits(accountId, limits) {
173
- const namespaceId = await getOrCreateUsageNamespace(accountId);
174
- const current = await getLimits(accountId);
175
- const updated = {
176
- ...current,
177
- ...limits
178
- };
179
- await kvPut(accountId, namespaceId, LIMITS_KEY, JSON.stringify(updated));
180
- return updated;
181
- }
182
- async function setLimitsEnabled(accountId, enabled) {
183
- return setLimits(accountId, { enabled });
184
- }
185
- async function isWithinLimits(accountId, service) {
186
- const limits = await getLimits(accountId);
187
- if (!limits.enabled) {
188
- return true;
189
- }
190
- const usage = await getUsage(accountId, service);
191
- const currentCount = usage?.count ?? 0;
192
- switch (service) {
193
- case "ai":
194
- if (limits.aiRequestsPerDay && currentCount >= limits.aiRequestsPerDay) {
195
- return false;
196
- }
197
- return true;
198
- case "vectorize":
199
- if (limits.vectorizeOpsPerDay && currentCount >= limits.vectorizeOpsPerDay) {
200
- return false;
201
- }
202
- return true;
203
- default:
204
- return true;
205
- }
206
- }
207
- async function getUsageSummary(accountId, service) {
208
- const limits = await getLimits(accountId);
209
- const usage = await getUsage(accountId, service);
210
- const currentCount = usage?.count ?? 0;
211
- let limit;
212
- switch (service) {
213
- case "ai":
214
- limit = limits.aiRequestsPerDay;
215
- break;
216
- case "vectorize":
217
- limit = limits.vectorizeOpsPerDay;
218
- break;
219
- }
220
- const withinLimit = limit === undefined || currentCount < limit;
221
- const percentUsed = limit ? currentCount / limit * 100 : undefined;
222
- return {
223
- service,
224
- today: currentCount,
225
- limit,
226
- withinLimit,
227
- percentUsed
228
- };
229
- }
230
- async function getAllUsageSummaries(accountId) {
231
- const trackedServices = ["ai", "vectorize"];
232
- return Promise.all(trackedServices.map((s) => getUsageSummary(accountId, s)));
233
- }
234
- async function canProceedWithTest(accountId, service) {
235
- const limits = await getLimits(accountId);
236
- if (!limits.enabled) {
237
- return { allowed: true };
238
- }
239
- const withinLimits = await isWithinLimits(accountId, service);
240
- if (!withinLimits) {
241
- const summary = await getUsageSummary(accountId, service);
242
- return {
243
- allowed: false,
244
- reason: `Daily limit exceeded for ${service}: ${summary.today}/${summary.limit} (${summary.percentUsed?.toFixed(1)}%)`
245
- };
246
- }
247
- return { allowed: true };
248
- }
249
- async function recordTestUsage(accountId, service, count = 1) {
250
- await recordUsage(accountId, service, count);
251
- }
252
- async function shouldSkip(service) {
253
- try {
254
- const isAuth = await isAuthenticated();
255
- if (!isAuth) {
256
- console.log(`⏭️ ${service.toUpperCase()} tests skipped: Not authenticated. Run: bunx wrangler login`);
257
- return true;
258
- }
259
- const primary = await getPrimaryAccount();
260
- if (!primary) {
261
- console.log(`⏭️ ${service.toUpperCase()} tests skipped: No Cloudflare account found`);
262
- return true;
263
- }
264
- const { accountId } = await getEffectiveAccountId(primary.id);
265
- try {
266
- const { allowed, reason } = await canProceedWithTest(accountId, service);
267
- if (!allowed) {
268
- console.log(`⏭️ ${service.toUpperCase()} tests skipped: ${reason}`);
269
- return true;
270
- }
271
- } catch {}
272
- return false;
273
- } catch (error) {
274
- const message = error instanceof Error ? error.message : "Unknown error";
275
- console.log(`⏭️ ${service.toUpperCase()} tests skipped: ${message}`);
276
- return true;
277
- }
278
- }
279
-
280
- // src/cloudflare/index.ts
281
- var account = {
282
- isAuthenticated,
283
- hasWranglerConfig,
284
- getApiToken,
285
- getWranglerAuth,
286
- getAccounts,
287
- getPrimaryAccount,
288
- getAccountById,
289
- getAccountSummary,
290
- workers: listWorkers,
291
- renameWorker,
292
- deleteWorker,
293
- workerVersions: listWorkerVersions,
294
- workerVersion: getWorkerVersionDetail,
295
- workerDeployments: listWorkerDeployments,
296
- workersSubdomain: getWorkersSubdomain,
297
- kv: listKVNamespaces,
298
- d1: listD1Databases,
299
- createD1Database,
300
- queryD1Database,
301
- rawD1DatabaseQuery,
302
- r2: listR2Buckets,
303
- vectorize: listVectorizeIndexes,
304
- ai: listAIModels,
305
- getServiceStatus,
306
- getAllServiceStatus,
307
- hasService,
308
- getUsage,
309
- recordUsage,
310
- resetUsage,
311
- getAllUsageSummaries,
312
- getUsageSummary,
313
- getLimits,
314
- setLimits,
315
- setLimitsEnabled,
316
- isWithinLimits,
317
- canProceedWithTest,
318
- recordTestUsage,
319
- shouldSkip,
320
- getGlobalDefaultAccountId,
321
- setGlobalDefaultAccountId,
322
- getWorkspaceAccountId,
323
- setWorkspaceAccountId,
324
- getEffectiveAccountId,
325
- clearGlobalDefaultAccountId,
326
- listAccountTokenPermissionGroups,
327
- listAccountOwnedAPITokens,
328
- createAccountOwnedAPIToken,
329
- deleteAccountOwnedAPIToken,
330
- normalizeDevflareTokenName,
331
- previewRegistryDatabase: DEVFLARE_PREVIEW_REGISTRY_DATABASE,
332
- ensurePreviewRegistry,
333
- getPreviewRegistryContext,
334
- listTrackedPreviewRecords,
335
- listTrackedRegistryState,
336
- listTrackedPreviewScopeRecords,
337
- listTrackedDeploymentRecords,
338
- reconcilePreviewRegistry,
339
- cleanupPreviewRegistry,
340
- retirePreviewRegistry
341
- };
342
- export { account };