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.
- package/dist/_chunks/account-BtWcv3X9.js +462 -0
- package/dist/_chunks/account-resources-CsmVowJp.js +159 -0
- package/dist/_chunks/ai-CBEuLdoP.js +322 -0
- package/dist/_chunks/api-TzdliH-6.js +568 -0
- package/dist/_chunks/build-3T6O4uIg.js +24 -0
- package/dist/_chunks/build-artifacts-8TqBSQkG.js +483 -0
- package/dist/_chunks/cli-BTF1X4SG.js +1128 -0
- package/dist/_chunks/cloudflare-BaloqI3H.js +157 -0
- package/dist/_chunks/colors-DiK6wPJ5.js +13 -0
- package/dist/_chunks/command-utils-BsfkmTqh.js +45 -0
- package/dist/_chunks/compiler-uoyAQ8zW.js +424 -0
- package/dist/_chunks/config-D5u-bEkn.js +78 -0
- package/dist/_chunks/config-path-DCPto4XB.js +42 -0
- package/dist/_chunks/context-CX50Y2Kb.js +2250 -0
- package/dist/_chunks/decorators-QmV57ixr.js +19 -0
- package/dist/_chunks/dependencies-C2oxFjU_.js +57 -0
- package/dist/_chunks/deploy-DMTr6JeR.js +915 -0
- package/dist/_chunks/dev-CvRHmRFZ.js +3456 -0
- package/dist/_chunks/doctor-DIG8DoFU.js +219 -0
- package/dist/_chunks/durable-object-DMtH0XYX.js +234 -0
- package/dist/_chunks/env-S0_nMVz1.js +125 -0
- package/dist/_chunks/family-DXC5SdFK.js +143 -0
- package/dist/_chunks/generated-artifacts-dMJY4KAt.js +32 -0
- package/dist/_chunks/glob-CmQOvunB.js +56 -0
- package/dist/_chunks/init-3moXTgpb.js +165 -0
- package/dist/_chunks/loader-DLXO60RO.js +1153 -0
- package/dist/_chunks/local-dev-vars-CTSa-wvF.js +81 -0
- package/dist/_chunks/local-hyperdrive-CJ90j46O.js +119 -0
- package/dist/_chunks/local-media-bindings-DsAW4AMF.js +335 -0
- package/dist/_chunks/local-secrets-DMmEOygL.js +123 -0
- package/dist/_chunks/local-workflow-entrypoints-Wip3o1u8.js +90 -0
- package/dist/_chunks/login-BmnDzDlH.js +51 -0
- package/dist/_chunks/package-metadata-DAuCkyvK.js +39 -0
- package/dist/_chunks/preferences-BKp_7XJx.js +241 -0
- package/dist/_chunks/preview-BhqDmq8I.js +456 -0
- package/dist/_chunks/preview-registry-ClAbLTHH.js +1186 -0
- package/dist/_chunks/preview-resources-DdXj8LMM.js +358 -0
- package/dist/_chunks/previews-Dlr13x5M.js +1134 -0
- package/dist/_chunks/productions-D3AnOHac.js +411 -0
- package/dist/_chunks/ref-CYJNAAe_.js +178 -0
- package/dist/_chunks/remote-CZnP-HLJ.js +79 -0
- package/dist/_chunks/remote-config-D39BY9ji.js +132 -0
- package/dist/_chunks/resolve-package-Y84HB3Nt.js +133 -0
- package/dist/_chunks/rolldown-runtime-CvQ6eiug.js +14 -0
- package/dist/_chunks/routes-C3FqES2W.js +796 -0
- package/dist/_chunks/runtime-FvXvfuZ2.js +550 -0
- package/dist/_chunks/schema-normalization-DWVleVxo.js +477 -0
- package/dist/_chunks/secrets-70eN0Q6C.js +95 -0
- package/dist/_chunks/token-kguIDmej.js +333 -0
- package/dist/_chunks/tokens-iVcgNXi-.js +221 -0
- package/dist/_chunks/types-OrLbzv4I.js +476 -0
- package/dist/_chunks/ui-BUoZApvE.js +103 -0
- package/dist/_chunks/usage-BBTGzjon.js +272 -0
- package/dist/_chunks/vite-CsI0E-uV.js +1235 -0
- package/dist/_chunks/vite-utils-OVLMV605.js +183 -0
- package/dist/_chunks/worker-CS1jgNFE.js +410 -0
- package/dist/_chunks/worker-bundler-dTTnYU3n.js +458 -0
- package/dist/_chunks/worker-entrypoint-CQW77lG8.js +247 -0
- package/dist/_chunks/workerName-CFJsLZA-.js +23 -0
- package/dist/bridge/index.d.ts +6 -6
- package/dist/bridge/miniflare.d.ts +2 -2
- package/dist/bridge/proxy.d.ts +1 -1
- package/dist/bridge/v2/body-streams.d.ts +1 -1
- package/dist/bridge/v2/codec.d.ts +4 -4
- package/dist/bridge/v2/index.d.ts +10 -10
- package/dist/bridge/v2/serialization.d.ts +1 -1
- package/dist/bridge/v2/value-codec.d.ts +1 -1
- package/dist/bridge/v2/value-serialization.d.ts.map +1 -1
- package/dist/bridge/v2/ws-relay.d.ts +3 -3
- package/dist/browser-shim/index.d.ts +2 -2
- package/dist/browser.d.ts +70 -70
- package/dist/browser.js +74 -2462
- package/dist/bundler/do-bundler.d.ts +1 -1
- package/dist/bundler/index.d.ts +3 -3
- package/dist/bundler/rolldown-shared.d.ts +1 -1
- package/dist/bundler/worker-bundler.d.ts +1 -1
- package/dist/cli/build-manifest.d.ts +1 -1
- package/dist/cli/command-utils.d.ts +1 -1
- package/dist/cli/commands/account.d.ts +1 -1
- package/dist/cli/commands/ai.d.ts +1 -1
- package/dist/cli/commands/build-artifacts.d.ts +5 -5
- package/dist/cli/commands/build.d.ts +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/deploy/prepare.d.ts +2 -2
- package/dist/cli/commands/deploy/runtime.d.ts +1 -1
- package/dist/cli/commands/deploy/verification.d.ts +1 -1
- package/dist/cli/commands/deploy.d.ts +1 -1
- package/dist/cli/commands/dev.d.ts +1 -1
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/login.d.ts +1 -1
- package/dist/cli/commands/previews-support/cleanup.d.ts +1 -1
- package/dist/cli/commands/previews-support/family.d.ts +3 -3
- package/dist/cli/commands/previews-support/render.d.ts +3 -3
- package/dist/cli/commands/previews-support/theme.d.ts +2 -2
- package/dist/cli/commands/previews-support/types.d.ts +2 -2
- package/dist/cli/commands/previews.d.ts +1 -1
- package/dist/cli/commands/productions.d.ts +1 -1
- package/dist/cli/commands/remote.d.ts +1 -1
- package/dist/cli/commands/secrets.d.ts +1 -1
- package/dist/cli/commands/token.d.ts +1 -1
- package/dist/cli/commands/type-generation/discovery.d.ts +2 -2
- package/dist/cli/commands/type-generation/generator.d.ts +3 -3
- package/dist/cli/commands/type-generation/models.d.ts +1 -1
- package/dist/cli/commands/types.d.ts +1 -1
- package/dist/cli/commands/worker.d.ts +1 -1
- package/dist/cli/deploy-strategy.d.ts +1 -1
- package/dist/cli/deploy-target.d.ts +1 -1
- package/dist/cli/help-pages/pages/account.d.ts +1 -1
- package/dist/cli/help-pages/pages/core.d.ts +1 -1
- package/dist/cli/help-pages/pages/index.d.ts +1 -1
- package/dist/cli/help-pages/pages/misc.d.ts +1 -1
- package/dist/cli/help-pages/pages/previews.d.ts +1 -1
- package/dist/cli/help-pages/pages/productions.d.ts +1 -1
- package/dist/cli/help-pages/render.d.ts +2 -2
- package/dist/cli/help-pages/shared.d.ts +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/index.js +2 -1383
- package/dist/cli/preview-bindings.d.ts +3 -3
- package/dist/cli/preview.d.ts +1 -1
- package/dist/cli/wrangler-auth.d.ts +1 -1
- package/dist/cloudflare/account-core.d.ts +2 -2
- package/dist/cloudflare/account-resources.d.ts +2 -2
- package/dist/cloudflare/account-status.d.ts +1 -1
- package/dist/cloudflare/account-workers.d.ts +2 -2
- package/dist/cloudflare/account.d.ts +7 -7
- package/dist/cloudflare/auth.d.ts +1 -1
- package/dist/cloudflare/index.d.ts +13 -13
- package/dist/cloudflare/index.js +4 -59
- package/dist/cloudflare/kv-namespace.d.ts +1 -1
- package/dist/cloudflare/preview-registry-cache.d.ts +1 -1
- package/dist/cloudflare/preview-registry-inference.d.ts +2 -2
- package/dist/cloudflare/preview-registry-records.d.ts +3 -3
- package/dist/cloudflare/preview-registry-shape.d.ts +2 -2
- package/dist/cloudflare/preview-registry-store.d.ts +3 -3
- package/dist/cloudflare/preview-registry-transport.d.ts +2 -2
- package/dist/cloudflare/preview-registry-types.d.ts +2 -2
- package/dist/cloudflare/preview-registry.d.ts +5 -5
- package/dist/cloudflare/tokens.d.ts +2 -2
- package/dist/cloudflare/usage.d.ts +2 -2
- package/dist/config/binding-resolution-helpers.d.ts +1 -1
- package/dist/config/compiler/bindings.d.ts +2 -2
- package/dist/config/compiler/core-helpers.d.ts +2 -2
- package/dist/config/compiler/do-workers.d.ts +2 -2
- package/dist/config/compiler/paths.d.ts +1 -1
- package/dist/config/compiler.d.ts +6 -6
- package/dist/config/define.d.ts +2 -2
- package/dist/config/deploy-resources.d.ts +5 -5
- package/dist/config/env-vars.d.ts +1 -1
- package/dist/config/framework-providers.d.ts +1 -1
- package/dist/config/index.d.ts +12 -12
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/local-dev-vars.d.ts +1 -1
- package/dist/config/preview-resources.d.ts +4 -4
- package/dist/config/preview.d.ts +1 -1
- package/dist/config/ref.d.ts +2 -2
- package/dist/config/resolve-phased.d.ts +4 -4
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resource-resolution.d.ts +6 -6
- package/dist/config/schema-env.d.ts +20 -20
- package/dist/config/schema-normalization.d.ts +1 -1
- package/dist/config/schema-types-bindings.d.ts +4 -4
- package/dist/config/schema-types-build.d.ts +1 -1
- package/dist/config/schema-types.d.ts +7 -7
- package/dist/config/schema.d.ts +46 -46
- package/dist/config/service-bindings-validation.d.ts +1 -1
- package/dist/config-entry.d.ts +6 -6
- package/dist/config-entry.js +3 -8
- package/dist/decorators/index.d.ts +2 -2
- package/dist/decorators/index.js +2 -9
- package/dist/dev-server/d1-migrations.d.ts +1 -1
- package/dist/dev-server/dev-server-state.d.ts +6 -6
- package/dist/dev-server/gateway-script.d.ts +1 -1
- package/dist/dev-server/index.d.ts +1 -1
- package/dist/dev-server/miniflare-bindings.d.ts +1 -1
- package/dist/dev-server/miniflare-dev-config.d.ts +5 -5
- package/dist/dev-server/miniflare-worker-config.d.ts +3 -3
- package/dist/dev-server/server-startup-helpers.d.ts +6 -6
- package/dist/dev-server/worker-surface-paths.d.ts +2 -2
- package/dist/index.d.ts +8 -8
- package/dist/index.js +9 -22
- package/dist/runtime/context-events.d.ts +1 -1
- package/dist/runtime/context.d.ts +3 -3
- package/dist/runtime/exports.d.ts +2 -2
- package/dist/runtime/index.d.ts +10 -10
- package/dist/runtime/index.js +5 -57
- package/dist/runtime/middleware.d.ts +1 -1
- package/dist/runtime/router/index.d.ts +3 -3
- package/dist/runtime/validation.d.ts +1 -1
- package/dist/secrets/local-secrets.d.ts +1 -1
- package/dist/shims/local-media-bindings.d.ts +1 -1
- package/dist/sveltekit/index.d.ts +1 -1
- package/dist/sveltekit/index.js +327 -9
- package/dist/sveltekit/local-bindings.d.ts +1 -1
- package/dist/sveltekit/platform.d.ts +1 -1
- package/dist/test/binding-hints.d.ts +2 -2
- package/dist/test/cf.d.ts +19 -19
- package/dist/test/index.d.ts +18 -18
- package/dist/test/index.js +4495 -46
- package/dist/test/offline-bindings.d.ts +3 -3
- package/dist/test/resolve-service-bindings.d.ts +1 -1
- package/dist/test/simple-context-bindings.d.ts +1 -1
- package/dist/test/simple-context-durable-objects.d.ts +1 -1
- package/dist/test/simple-context-env.d.ts +2 -2
- package/dist/test/simple-context-handlers.d.ts +2 -2
- package/dist/test/simple-context-lifecycle.d.ts +2 -2
- package/dist/test/simple-context-mfconfig.d.ts +1 -1
- package/dist/test/simple-context-multi-worker.d.ts +2 -2
- package/dist/test/simple-context-runtime.d.ts +1 -1
- package/dist/test/simple-context-startup.d.ts +1 -1
- package/dist/test/simple-context.d.ts +1 -1
- package/dist/test/utilities/env.d.ts +3 -3
- package/dist/test/utilities.d.ts +10 -10
- package/dist/test/worker.d.ts +1 -1
- package/dist/transform/index.d.ts +2 -2
- package/dist/utils/send-email.js +163 -19
- package/dist/vite/config-file.d.ts +2 -2
- package/dist/vite/index.d.ts +3 -3
- package/dist/vite/index.js +2 -31
- package/dist/vite/plugin-config-hook.d.ts +1 -1
- package/dist/vite/plugin-context.d.ts +3 -3
- package/dist/vite/plugin-durable-objects.d.ts +2 -2
- package/dist/vite/plugin-programmatic.d.ts +1 -1
- package/dist/vite/plugin-service-bindings.d.ts +2 -2
- package/dist/vite/plugin.d.ts +3 -3
- package/dist/worker-entry/composed-worker.d.ts +1 -1
- package/dist/worker-entry/routes.d.ts +2 -2
- package/dist/worker-entry/surface-paths.d.ts +1 -1
- package/dist/workflows/local-workflow-entrypoints.d.ts +1 -1
- package/package.json +5 -3
- package/dist/account-4tgh03a8.js +0 -484
- package/dist/ai-r3zqmxan.js +0 -261
- package/dist/api-6z01z734.js +0 -33
- package/dist/build-kw625v84.js +0 -51
- package/dist/config-ghk2bxj3.js +0 -102
- package/dist/deploy-9kee65n9.js +0 -1062
- package/dist/dev-x8zr249a.js +0 -3569
- package/dist/doctor-0ng5qrr1.js +0 -258
- package/dist/durable-object-0ybmg08a.js +0 -13
- package/dist/index-04wh9bxx.js +0 -514
- package/dist/index-0cc05hzv.js +0 -74
- package/dist/index-2yv7w548.js +0 -185
- package/dist/index-37x76zdn.js +0 -4
- package/dist/index-3cpzsr47.js +0 -125
- package/dist/index-3t6rypgc.js +0 -13
- package/dist/index-4mmpccrb.js +0 -309
- package/dist/index-5dkjffqz.js +0 -25
- package/dist/index-5hy7jmv3.js +0 -890
- package/dist/index-627srx16.js +0 -45
- package/dist/index-7m557715.js +0 -283
- package/dist/index-a8pnvg3r.js +0 -52
- package/dist/index-aabgympv.js +0 -39
- package/dist/index-atwc3csp.js +0 -256
- package/dist/index-cv4cvrxe.js +0 -2046
- package/dist/index-h7r11y4a.js +0 -539
- package/dist/index-hvtd936d.js +0 -1229
- package/dist/index-kcp7y951.js +0 -136
- package/dist/index-maw0jjnn.js +0 -147
- package/dist/index-mek9msfv.js +0 -705
- package/dist/index-n4xkaymm.js +0 -236
- package/dist/index-nkk59p3y.js +0 -579
- package/dist/index-phcrvs6d.js +0 -342
- package/dist/index-se4kw8tm.js +0 -460
- package/dist/index-x8s9rwfh.js +0 -2020
- package/dist/index-y7w3x9p1.js +0 -18
- package/dist/index-z9gy8w6b.js +0 -57
- package/dist/index-zdd0d9qa.js +0 -199
- package/dist/init-tb8jqgvr.js +0 -180
- package/dist/login-4h1sfsed.js +0 -75
- package/dist/previews-qr7c5j8h.js +0 -1336
- package/dist/productions-xpmd6bw8.js +0 -505
- package/dist/remote-kqcvhnfx.js +0 -192
- package/dist/secrets-6wbdsdek.js +0 -89
- package/dist/token-yp1qa70y.js +0 -419
- package/dist/types-15yv4cj3.js +0 -701
- package/dist/worker-1yg72jxg.js +0 -510
- package/dist/worker-entrypoint-y8s9kdcx.js +0 -15
package/dist/index-phcrvs6d.js
DELETED
|
@@ -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 };
|