@dragonmastery/tamer 0.29.0 → 0.30.0

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 (68) hide show
  1. package/dist/{StateManager-DTqtLLVX.mjs → StateManager-JLBtz9V-.mjs} +2 -2
  2. package/dist/{StateManager-DTqtLLVX.mjs.map → StateManager-JLBtz9V-.mjs.map} +1 -1
  3. package/dist/{apply-BOABC3UB.mjs → apply-CWU3HY0P.mjs} +11 -11
  4. package/dist/{apply-BOABC3UB.mjs.map → apply-CWU3HY0P.mjs.map} +1 -1
  5. package/dist/{applyTarget-GWDEOXeY.mjs → applyTarget-D15T_q7G.mjs} +2 -2
  6. package/dist/{applyTarget-GWDEOXeY.mjs.map → applyTarget-D15T_q7G.mjs.map} +1 -1
  7. package/dist/{bootstrap-BxwxC_2Z.mjs → bootstrap-BicPW44a.mjs} +3 -3
  8. package/dist/{bootstrap-BxwxC_2Z.mjs.map → bootstrap-BicPW44a.mjs.map} +1 -1
  9. package/dist/{cloudflareSnapshot-DzPuCRTh.mjs → cloudflareSnapshot-GBUHeg2m.mjs} +5 -5
  10. package/dist/{cloudflareSnapshot-DzPuCRTh.mjs.map → cloudflareSnapshot-GBUHeg2m.mjs.map} +1 -1
  11. package/dist/{deploy-C0edCpn9.mjs → deploy-DAEjDjOm.mjs} +7 -7
  12. package/dist/{deploy-C0edCpn9.mjs.map → deploy-DAEjDjOm.mjs.map} +1 -1
  13. package/dist/{destroy-DzgA4lCA.mjs → destroy-DtgPD_bD.mjs} +9 -9
  14. package/dist/{destroy-DzgA4lCA.mjs.map → destroy-DtgPD_bD.mjs.map} +1 -1
  15. package/dist/{destroy-tenant-U0t7BeJ0.mjs → destroy-tenant-B-VLKfc6.mjs} +3 -3
  16. package/dist/{destroy-tenant-U0t7BeJ0.mjs.map → destroy-tenant-B-VLKfc6.mjs.map} +1 -1
  17. package/dist/{dev-CZbKfdFw.mjs → dev-BYItpt9U.mjs} +7 -7
  18. package/dist/{dev-CZbKfdFw.mjs.map → dev-BYItpt9U.mjs.map} +1 -1
  19. package/dist/{dns-records.sync-Bpzz9H0s.mjs → dns-records.sync-CfI1mqXv.mjs} +2 -2
  20. package/dist/{dns-records.sync-Bpzz9H0s.mjs.map → dns-records.sync-CfI1mqXv.mjs.map} +1 -1
  21. package/dist/drift-DRnwTyZD.mjs +10 -0
  22. package/dist/{drift-B5bpkI0i.mjs → drift-DncpkI2R.mjs} +6 -6
  23. package/dist/{drift-B5bpkI0i.mjs.map → drift-DncpkI2R.mjs.map} +1 -1
  24. package/dist/{events-BIznt8Sj.mjs → events-B6oCdvSt.mjs} +3 -3
  25. package/dist/{events-BIznt8Sj.mjs.map → events-B6oCdvSt.mjs.map} +1 -1
  26. package/dist/{fetchStackImports-C-1THPYL.mjs → fetchStackImports-ClUYZy_U.mjs} +281 -97
  27. package/dist/fetchStackImports-ClUYZy_U.mjs.map +1 -0
  28. package/dist/{generator-Ba-vqyBG.mjs → generator-h_VG0Q5f.mjs} +6 -5
  29. package/dist/generator-h_VG0Q5f.mjs.map +1 -0
  30. package/dist/{import-B0dlwKoQ.mjs → import-D8zaVvwK.mjs} +6 -4
  31. package/dist/import-D8zaVvwK.mjs.map +1 -0
  32. package/dist/index.d.mts +51 -13
  33. package/dist/index.d.mts.map +1 -1
  34. package/dist/{loader-DAvCKLTT.mjs → loader-DnT9iqz9.mjs} +16 -3
  35. package/dist/loader-DnT9iqz9.mjs.map +1 -0
  36. package/dist/{migrate-BpW6JkIg.mjs → migrate-Bwl0w6XN.mjs} +5 -5
  37. package/dist/{migrate-BpW6JkIg.mjs.map → migrate-Bwl0w6XN.mjs.map} +1 -1
  38. package/dist/normalize-DVSTRZhO.mjs.map +1 -1
  39. package/dist/{plan-Do5rE-c5.mjs → plan-BNIAD--f.mjs} +9 -9
  40. package/dist/{plan-Do5rE-c5.mjs.map → plan-BNIAD--f.mjs.map} +1 -1
  41. package/dist/{provision-tenant-Wfck-2Oa.mjs → provision-tenant-BcZocyyn.mjs} +3 -3
  42. package/dist/{provision-tenant-Wfck-2Oa.mjs.map → provision-tenant-BcZocyyn.mjs.map} +1 -1
  43. package/dist/{stackOutputs-CQQHtdPA.mjs → stackOutputs-D33EmyfT.mjs} +2 -2
  44. package/dist/{stackOutputs-CQQHtdPA.mjs.map → stackOutputs-D33EmyfT.mjs.map} +1 -1
  45. package/dist/{status-D5GLpWyn.mjs → status-BAPpi2Zt.mjs} +5 -5
  46. package/dist/{status-D5GLpWyn.mjs.map → status-BAPpi2Zt.mjs.map} +1 -1
  47. package/dist/{sync-B_pyPi7Z.mjs → sync-BdJ43vO7.mjs} +6 -6
  48. package/dist/{sync-B_pyPi7Z.mjs.map → sync-BdJ43vO7.mjs.map} +1 -1
  49. package/dist/tamer.mjs +32 -18
  50. package/dist/tamer.mjs.map +1 -1
  51. package/dist/{types-JrdlG7Dy.mjs → types-CN1BOr0U.mjs} +5 -5
  52. package/dist/{types-JrdlG7Dy.mjs.map → types-CN1BOr0U.mjs.map} +1 -1
  53. package/dist/{verifyPlanFile-ah_4tvTu.mjs → verifyPlanFile-BQ7GCDC2.mjs} +2 -2
  54. package/dist/{verifyPlanFile-ah_4tvTu.mjs.map → verifyPlanFile-BQ7GCDC2.mjs.map} +1 -1
  55. package/dist/{wfp-delete-BhuUrBUA.mjs → wfp-delete-BG9WBd7F.mjs} +2 -2
  56. package/dist/{wfp-delete-BhuUrBUA.mjs.map → wfp-delete-BG9WBd7F.mjs.map} +1 -1
  57. package/dist/{wfp-put-DL0mJNNz.mjs → wfp-put-DjErqxFa.mjs} +2 -2
  58. package/dist/{wfp-put-DL0mJNNz.mjs.map → wfp-put-DjErqxFa.mjs.map} +1 -1
  59. package/dist/{worker-route-CMbtozNa.mjs → worker-route-DY1onr-h.mjs} +3 -3
  60. package/dist/{worker-route-CMbtozNa.mjs.map → worker-route-DY1onr-h.mjs.map} +1 -1
  61. package/dist/{workers-C-oeZhdD.mjs → workers-DNKsZOq4.mjs} +3 -3
  62. package/dist/{workers-C-oeZhdD.mjs.map → workers-DNKsZOq4.mjs.map} +1 -1
  63. package/package.json +1 -1
  64. package/dist/drift-BNa92AK5.mjs +0 -10
  65. package/dist/fetchStackImports-C-1THPYL.mjs.map +0 -1
  66. package/dist/generator-Ba-vqyBG.mjs.map +0 -1
  67. package/dist/import-B0dlwKoQ.mjs.map +0 -1
  68. package/dist/loader-DAvCKLTT.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { a as resourceModules } from "./fetchStackImports-C-1THPYL.mjs";
1
+ import { a as resourceModules, o as secretsStoreDeriveName } from "./fetchStackImports-ClUYZy_U.mjs";
2
2
  import { join } from "path";
3
3
  import { writeFileSync } from "fs";
4
4
 
@@ -10,10 +10,11 @@ import { writeFileSync } from "fs";
10
10
  * message if a referenced store has never been applied — the binding
11
11
  * would otherwise be deployed against a non-existent store.
12
12
  */
13
- function secretsStoreSecretsGenerate(bindings, env, state, naming) {
13
+ function secretsStoreSecretsGenerate(bindings, env, state, naming, secretsStores) {
14
14
  const out = [];
15
15
  for (const b of bindings) {
16
- const derivedName = naming.secretsStoreName(b.store, env);
16
+ const storeConfig = secretsStores?.find((s) => s.logicalName === b.store);
17
+ const derivedName = storeConfig ? secretsStoreDeriveName(storeConfig, env, naming) : naming.secretsStoreName(b.store, env);
17
18
  const entry = state.get(`secrets_store:${derivedName}`);
18
19
  if (!entry || entry.type !== "secrets_store") throw new Error(`Secrets Store binding "${b.binding}" references store "${b.store}" — not in state. Declare it under \`resources.secretsStores\` and run 'tamer apply --env ${env}' first.`);
19
20
  out.push({
@@ -60,7 +61,7 @@ function generateWranglerConfig(resolved, state, naming) {
60
61
  const secretBindings = resolved.resources?.secretsStoreSecrets ?? [];
61
62
  if (secretBindings.length > 0) {
62
63
  const passthroughSecrets = resolved.wranglerConfig.secrets_store_secrets ?? [];
63
- const generated = secretsStoreSecretsGenerate(secretBindings, resolved.env, state, naming);
64
+ const generated = secretsStoreSecretsGenerate(secretBindings, resolved.env, state, naming, resolved.resources?.secretsStores);
64
65
  config = {
65
66
  ...config,
66
67
  secrets_store_secrets: [...passthroughSecrets, ...generated]
@@ -74,4 +75,4 @@ function writeWranglerJson(workerDir, config, outFile = "wrangler.json") {
74
75
 
75
76
  //#endregion
76
77
  export { writeWranglerJson as n, generateWranglerConfig as t };
77
- //# sourceMappingURL=generator-Ba-vqyBG.mjs.map
78
+ //# sourceMappingURL=generator-h_VG0Q5f.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-h_VG0Q5f.mjs","names":["out: GeneratedSecretsStoreSecretBinding[]","config: WranglerConfig"],"sources":["../src/features/secrets-store/secrets-store.generate.ts","../src/core/wrangler/generator.ts"],"sourcesContent":["import type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type {\n StateEntry,\n SecretsStoreResourceConfig,\n SecretsStoreSecretBinding,\n SecretsStoreStateEntry,\n} from \"../../types.js\";\nimport { secretsStoreDeriveName } from \"./secrets-store.naming.js\";\n\nexport interface SecretsStoreStateLike {\n get(key: string): StateEntry | undefined;\n getAll(): Record<string, StateEntry>;\n}\n\n/**\n * One row of wrangler's `secrets_store_secrets[]` array. Resolved from a\n * worker's declared `secretsStoreSecrets[]` by looking up the\n * Tamer-managed store's `store_id` in state. The named secret itself must\n * already exist inside the store (created out-of-band via wrangler\n * `secrets-store secret create`); Tamer never reads or writes secret\n * values.\n */\nexport interface GeneratedSecretsStoreSecretBinding {\n binding: string;\n store_id: string;\n secret_name: string;\n}\n\n/**\n * Resolve `secretsStoreSecrets[]` worker bindings into wrangler-shape\n * `secrets_store_secrets[]` entries by looking up the referenced\n * Tamer-managed store's `store_id` in state. Throws with an actionable\n * message if a referenced store has never been applied — the binding\n * would otherwise be deployed against a non-existent store.\n */\nexport function secretsStoreSecretsGenerate(\n bindings: SecretsStoreSecretBinding[],\n env: string,\n state: SecretsStoreStateLike,\n naming: NamingEngine,\n secretsStores?: SecretsStoreResourceConfig[],\n): GeneratedSecretsStoreSecretBinding[] {\n const out: GeneratedSecretsStoreSecretBinding[] = [];\n for (const b of bindings) {\n const storeConfig = secretsStores?.find((s) => s.logicalName === b.store);\n const derivedName = storeConfig\n ? secretsStoreDeriveName(storeConfig, env, naming)\n : naming.secretsStoreName(b.store, env);\n const entry = state.get(`secrets_store:${derivedName}`) as\n | SecretsStoreStateEntry\n | undefined;\n if (!entry || entry.type !== \"secrets_store\") {\n throw new Error(\n `Secrets Store binding \"${b.binding}\" references store \"${b.store}\" — ` +\n `not in state. Declare it under \\`resources.secretsStores\\` and run ` +\n `'tamer apply --env ${env}' first.`,\n );\n }\n out.push({\n binding: b.binding,\n store_id: entry.cfId,\n secret_name: b.secretName,\n });\n }\n return out;\n}\n","import { writeFileSync } from \"fs\";\nimport { join } from \"path\";\nimport type { WranglerConfig } from \"../../generated/wrangler-types.js\";\nimport type { ResolvedWorkerConfig } from \"../config/resolver.js\";\nimport type { StateManager } from \"../state/StateManager.js\";\nimport type { NamingEngine } from \"../naming/NamingEngine.js\";\nimport { resourceModules } from \"../registry/registry.js\";\nimport { secretsStoreSecretsGenerate } from \"../../features/secrets-store/secrets-store.generate.js\";\n\nexport class CfiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CfiError\";\n }\n}\n\n/**\n * Build the worker's `wrangler.json` by asking every registered resource\n * module for its bindings fragment, then merging on top of the\n * passthrough config (`resolved.wranglerConfig`). Adding a new resource\n * kind requires zero edits here — register the module, done.\n */\nexport function generateWranglerConfig(\n resolved: ResolvedWorkerConfig,\n state: StateManager,\n naming: NamingEngine,\n): WranglerConfig {\n let config: WranglerConfig = {\n ...resolved.wranglerConfig,\n $schema: \"node_modules/wrangler/config-schema.json\",\n };\n\n const worker = {\n workerKey: resolved.workerKey,\n deployedName: resolved.workerName,\n };\n for (const mod of resourceModules) {\n const resources = mod.pickResources(resolved.resources);\n const fragment = mod.generate({\n resources,\n env: resolved.env,\n state,\n naming,\n passthrough: resolved.wranglerConfig,\n worker,\n });\n config = { ...config, ...fragment };\n }\n\n const secretBindings = resolved.resources?.secretsStoreSecrets ?? [];\n if (secretBindings.length > 0) {\n const passthroughSecrets =\n resolved.wranglerConfig.secrets_store_secrets ?? [];\n const generated = secretsStoreSecretsGenerate(\n secretBindings,\n resolved.env,\n state,\n naming,\n resolved.resources?.secretsStores,\n );\n config = {\n ...config,\n secrets_store_secrets: [...passthroughSecrets, ...generated],\n };\n }\n\n return config;\n}\n\nexport function writeWranglerJson(\n workerDir: string,\n config: WranglerConfig,\n outFile: string = \"wrangler.json\",\n): void {\n const path = join(workerDir, outFile);\n writeFileSync(path, JSON.stringify(config, null, 2), \"utf-8\");\n}\n"],"mappings":";;;;;;;;;;;;AAmCA,SAAgB,4BACd,UACA,KACA,OACA,QACA,eACsC;CACtC,MAAMA,MAA4C,EAAE;AACpD,MAAK,MAAM,KAAK,UAAU;EACxB,MAAM,cAAc,eAAe,MAAM,MAAM,EAAE,gBAAgB,EAAE,MAAM;EACzE,MAAM,cAAc,cAChB,uBAAuB,aAAa,KAAK,OAAO,GAChD,OAAO,iBAAiB,EAAE,OAAO,IAAI;EACzC,MAAM,QAAQ,MAAM,IAAI,iBAAiB,cAAc;AAGvD,MAAI,CAAC,SAAS,MAAM,SAAS,gBAC3B,OAAM,IAAI,MACR,0BAA0B,EAAE,QAAQ,sBAAsB,EAAE,MAAM,4FAE1C,IAAI,UAC7B;AAEH,MAAI,KAAK;GACP,SAAS,EAAE;GACX,UAAU,MAAM;GAChB,aAAa,EAAE;GAChB,CAAC;;AAEJ,QAAO;;;;;;;;;;;AC1CT,SAAgB,uBACd,UACA,OACA,QACgB;CAChB,IAAIC,SAAyB;EAC3B,GAAG,SAAS;EACZ,SAAS;EACV;CAED,MAAM,SAAS;EACb,WAAW,SAAS;EACpB,cAAc,SAAS;EACxB;AACD,MAAK,MAAM,OAAO,iBAAiB;EACjC,MAAM,YAAY,IAAI,cAAc,SAAS,UAAU;EACvD,MAAM,WAAW,IAAI,SAAS;GAC5B;GACA,KAAK,SAAS;GACd;GACA;GACA,aAAa,SAAS;GACtB;GACD,CAAC;AACF,WAAS;GAAE,GAAG;GAAQ,GAAG;GAAU;;CAGrC,MAAM,iBAAiB,SAAS,WAAW,uBAAuB,EAAE;AACpE,KAAI,eAAe,SAAS,GAAG;EAC7B,MAAM,qBACJ,SAAS,eAAe,yBAAyB,EAAE;EACrD,MAAM,YAAY,4BAChB,gBACA,SAAS,KACT,OACA,QACA,SAAS,WAAW,cACrB;AACD,WAAS;GACP,GAAG;GACH,uBAAuB,CAAC,GAAG,oBAAoB,GAAG,UAAU;GAC7D;;AAGH,QAAO;;AAGT,SAAgB,kBACd,WACA,QACA,UAAkB,iBACZ;AAEN,eADa,KAAK,WAAW,QAAQ,EACjB,KAAK,UAAU,QAAQ,MAAM,EAAE,EAAE,QAAQ"}
@@ -1,7 +1,7 @@
1
- import { n as loadConfig, t as getWorkers } from "./loader-DAvCKLTT.mjs";
1
+ import { n as loadConfig, t as getWorkers } from "./loader-DnT9iqz9.mjs";
2
2
  import { n as cloudflareAccountIdFromEnv, t as CFApiClient } from "./CFApiClient-DhbyyV71.mjs";
3
- import { _ as namingFromConfig, a as resourceModules, i as getResourceModule, p as resolveWorkerConfig, t as fetchStackImports } from "./fetchStackImports-C-1THPYL.mjs";
4
- import { f as stackNameForConfig, t as StateManager } from "./StateManager-DTqtLLVX.mjs";
3
+ import { a as resourceModules, i as getResourceModule, m as resolveWorkerConfig, t as fetchStackImports, v as namingFromConfig } from "./fetchStackImports-ClUYZy_U.mjs";
4
+ import { f as stackNameForConfig, t as StateManager } from "./StateManager-JLBtz9V-.mjs";
5
5
  import "./r2S3EmptyBucket-DD81ZWQ7.mjs";
6
6
  import { n as workerRouteStateKey, t as findZoneIdByName } from "./zoneResolver-VoxLHM4N.mjs";
7
7
 
@@ -46,6 +46,8 @@ async function runImport(options) {
46
46
  api,
47
47
  state,
48
48
  naming,
49
+ config,
50
+ baseDir,
49
51
  ts
50
52
  });
51
53
  } else if (options.kind === "dispatch_namespace") await importDispatchNamespace({
@@ -161,4 +163,4 @@ async function importWorkerRoute(ctx) {
161
163
 
162
164
  //#endregion
163
165
  export { runImport };
164
- //# sourceMappingURL=import-B0dlwKoQ.mjs.map
166
+ //# sourceMappingURL=import-D8zaVvwK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-D8zaVvwK.mjs","names":[],"sources":["../src/cli/commands/import.ts"],"sourcesContent":["import { loadConfig, getWorkers } from \"../../core/config/loader.js\";\nimport { cloudflareAccountIdFromEnv } from \"../../core/cloudflareEnv.js\";\nimport { namingFromConfig } from \"../../core/config/namingFromConfig.js\";\nimport { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { StateManager } from \"../../core/state/StateManager.js\";\nimport { stackNameForConfig } from \"../../core/state/stackName.js\";\nimport { resolveWorkerConfig } from \"../../core/config/resolver.js\";\nimport { fetchStackImports } from \"../../core/imports/fetchStackImports.js\";\nimport { workerRouteStateKey } from \"../../features/worker-route/worker-route.stateKey.js\";\nimport { findZoneIdByName } from \"../../core/routes/zoneResolver.js\";\nimport {\n getResourceModule,\n resourceModules,\n type ResourceKind,\n} from \"../../core/registry/registry.js\";\n\n/** All registered resource kinds plus the non-registry imports. */\nexport type ImportKind =\n | ResourceKind\n | \"dispatch_namespace\"\n | \"dns_record\"\n | \"worker_route\";\n\nexport interface ImportOptions {\n env: string;\n kind: ImportKind;\n /** Logical name from `tamer.config.ts` (or worker key, for `worker_route`). */\n logical: string;\n /** Cloudflare resource id (D1 uuid, KV id, R2 bucket name, or namespace name). */\n cfId?: string;\n /** Required for sharded D1 imports (YYYY-MM-DD). */\n shardDate?: string;\n /** R2 buckets only: creation date (YYYY-MM-DD) used in the binding key. */\n createdDate?: string;\n /** worker_route only: the route id from `/zones/{id}/workers/routes`. */\n routeId?: string;\n /** worker_route only: zone name from `tamerRoutes`. */\n zoneName?: string;\n configPath?: string;\n}\n\nconst REGISTRY_KINDS = new Set<string>(resourceModules.map((m) => m.kind));\n\n/**\n * `tamer import` — register an existing Cloudflare resource into Tamer state\n * by logical name (CloudFormation `import_resources` analogue). For all\n * resource-registry kinds the work is delegated to the module's\n * `importOne` hook; `dispatch_namespace` and `worker_route` remain inline\n * because they aren't registry resources today.\n */\nexport async function runImport(options: ImportOptions): Promise<void> {\n const env = options.env;\n if (env === \"local\") {\n throw new Error(\"import: --env local is not supported (no persisted state)\");\n }\n const baseDir = process.cwd();\n const config = await loadConfig(options.configPath, { env });\n const accountId = config.account_id ?? cloudflareAccountIdFromEnv();\n if (!accountId) {\n throw new Error(\n \"account_id required in config or CLOUDFLARE_ACCOUNT_ID env var\",\n );\n }\n const api = new CFApiClient(accountId);\n const naming = namingFromConfig(config);\n const state = new StateManager(\n config.tenant.id,\n env,\n stackNameForConfig(config),\n );\n await state.hydrate(api);\n state.beginOperation(\"import\", `${options.kind}:${options.logical}`);\n\n const ts = new Date().toISOString();\n\n try {\n if (REGISTRY_KINDS.has(options.kind)) {\n const mod = getResourceModule(options.kind as ResourceKind);\n if (!mod) throw new Error(`unknown import kind \"${options.kind}\"`);\n await mod.importOne({\n options: {\n env,\n kind: options.kind,\n logical: options.logical,\n cfId: options.cfId,\n shardDate: options.shardDate,\n createdDate: options.createdDate,\n routeId: options.routeId,\n zoneName: options.zoneName,\n },\n env,\n api,\n state,\n naming,\n config,\n baseDir,\n ts,\n });\n } else if (options.kind === \"dispatch_namespace\") {\n await importDispatchNamespace({ options, env, api, state, ts });\n } else if (options.kind === \"dns_record\") {\n await importDnsRecord({ options, env, api, state, config, ts });\n } else if (options.kind === \"worker_route\") {\n await importWorkerRoute({\n options,\n env,\n baseDir,\n accountId,\n api,\n naming,\n state,\n config,\n ts,\n });\n } else {\n throw new Error(`unknown import kind \"${options.kind}\"`);\n }\n\n state.finishOperation(\"imported\");\n await state.persist(api);\n console.log(`Imported ${options.kind} \"${options.logical}\" into ${env} state.`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n state.failOperation(msg);\n try {\n await state.persist(api);\n } catch {\n /* swallow secondary persist failure */\n }\n throw err;\n }\n}\n\nasync function importDispatchNamespace(ctx: {\n options: ImportOptions;\n env: string;\n api: CFApiClient;\n state: StateManager;\n ts: string;\n}): Promise<void> {\n const { options, api, state, ts } = ctx;\n const namespaces = await api.dispatchNamespaceListAll();\n const hit = namespaces.find((n) => n.namespace_name === options.cfId);\n if (!hit) {\n throw new Error(\n `import dispatch_namespace: namespace \"${options.cfId}\" not found`,\n );\n }\n const derivedName = hit.namespace_name;\n const key = `dispatch_ns:${derivedName}`;\n const existing = state.get(key);\n state.set(key, {\n type: \"dispatch_namespace\",\n logicalName: options.logical,\n derivedName,\n createdAt:\n existing?.type === \"dispatch_namespace\" ? existing.createdAt : ts,\n updatedAt: ts,\n });\n}\n\nasync function importDnsRecord(ctx: {\n options: ImportOptions;\n env: string;\n api: CFApiClient;\n state: StateManager;\n config: Awaited<ReturnType<typeof loadConfig>>;\n ts: string;\n}): Promise<void> {\n const { options, api, state, config, ts } = ctx;\n if (!options.cfId) {\n throw new Error(\n \"import dns_record: --cf-id <recordId> is required (the record id from `tamer drift` or the Cloudflare dashboard URL)\",\n );\n }\n const declared = (config.dnsRecords ?? []).find(\n (r) => r.logicalName === options.logical,\n );\n if (!declared) {\n throw new Error(\n `import dns_record: no dnsRecords entry with logicalName \"${options.logical}\" in the Tamer project config`,\n );\n }\n const list = await api.zoneDnsRecordListAll(declared.zoneId);\n const hit = list.find((r) => r.id === options.cfId);\n if (!hit) {\n throw new Error(\n `import dns_record: record id \"${options.cfId}\" not found in zone \"${declared.zoneId}\"`,\n );\n }\n if (hit.type !== declared.type) {\n throw new Error(\n `import dns_record: cf record type \"${hit.type}\" does not match declared type \"${declared.type}\"`,\n );\n }\n const { dnsRecordStateKey } = await import(\n \"../../features/dns-records/dns-records.resolve.js\"\n );\n const key = dnsRecordStateKey(declared.zoneId, declared.type, declared.name);\n const existing = state.get(key);\n state.set(key, {\n type: \"dns_record\",\n logicalName: options.logical,\n zoneId: declared.zoneId,\n recordType: declared.type,\n name: hit.name,\n content: hit.content,\n ttl: hit.ttl ?? 1,\n proxied: hit.proxied ?? false,\n priority: hit.priority,\n comment: hit.comment ?? \"\",\n recordId: hit.id,\n createdAt: existing?.type === \"dns_record\" ? existing.createdAt : ts,\n updatedAt: ts,\n });\n}\n\nasync function importWorkerRoute(ctx: {\n options: ImportOptions;\n env: string;\n baseDir: string;\n accountId: string;\n api: CFApiClient;\n naming: ReturnType<typeof namingFromConfig>;\n state: StateManager;\n config: Awaited<ReturnType<typeof loadConfig>>;\n ts: string;\n}): Promise<void> {\n const { options, env, baseDir, accountId, api, naming, state, config, ts } =\n ctx;\n if (!options.routeId) {\n throw new Error(\"import worker_route: --route-id <id> is required\");\n }\n const workers = await getWorkers(config, baseDir);\n const wc = workers.find(([k]) => k === options.logical)?.[1];\n if (!wc) {\n throw new Error(\n `import worker_route: no worker key \"${options.logical}\" in the Tamer project config`,\n );\n }\n const imports = await fetchStackImports(api, config, env);\n const resolved = await resolveWorkerConfig(\n config,\n options.logical,\n wc,\n env,\n baseDir,\n accountId,\n naming,\n state,\n { imports },\n );\n if (resolved.apiManagedRoutes.length === 0) {\n throw new Error(\n `import worker_route: worker \"${options.logical}\" declares no api-managed tamerRoutes for env ${env}`,\n );\n }\n\n const route = options.zoneName\n ? resolved.apiManagedRoutes.find((r) => r.zone_name === options.zoneName)\n : resolved.apiManagedRoutes[0];\n if (!route) {\n throw new Error(\n `import worker_route: no route for zone \"${options.zoneName}\" in resolved config`,\n );\n }\n const zoneId = await findZoneIdByName(api, route.zone_name);\n if (!zoneId) {\n throw new Error(`import worker_route: zone \"${route.zone_name}\" not found`);\n }\n const list = await api.zoneWorkerRoutesList(zoneId);\n const hit = list.find((r) => r.id === options.routeId);\n if (!hit) {\n throw new Error(\n `import worker_route: route id \"${options.routeId}\" not found in zone \"${route.zone_name}\"`,\n );\n }\n if (hit.pattern !== route.pattern) {\n throw new Error(\n `import worker_route: cf pattern \"${hit.pattern}\" does not match resolved \"${route.pattern}\"`,\n );\n }\n const key = workerRouteStateKey(zoneId, options.routeId);\n const existing = state.get(key);\n state.set(key, {\n type: \"worker_route\",\n workerKey: options.logical,\n workerName: resolved.workerName,\n zoneId,\n zoneName: route.zone_name,\n routeId: options.routeId,\n pattern: route.pattern,\n createdAt: existing?.type === \"worker_route\" ? existing.createdAt : ts,\n updatedAt: ts,\n });\n}\n"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -5440,6 +5440,18 @@ declare function isCfBinding(x: unknown): x is CfBinding;
5440
5440
  * before validation.
5441
5441
  */
5442
5442
  type TamerResolvableString = string | CfBinding;
5443
+ /** Context for per-resource Cloudflare name resolution (e.g. sharded D1 shard date). */
5444
+ interface CloudflareNameContext {
5445
+ /** ISO `YYYY-MM-DD` shard stamp for sharded D1. */
5446
+ shardDate?: string;
5447
+ }
5448
+ /**
5449
+ * Per-resource Cloudflare name for the current env.
5450
+ * No UUIDs — name only. Used for sync, plan, apply, drift, import, and generate.
5451
+ *
5452
+ * Resolution order when unset: stack {@link NamingConventions} hook → {@link NamingEngine} default.
5453
+ */
5454
+ type CloudflareNameFn = (tenantId: string, env: string, ctx?: CloudflareNameContext) => string;
5443
5455
  /** Wrangler R2 binding with optional {@link TamerResolvableString} `bucket_name`. */
5444
5456
  type WranglerR2BucketResolvable = Omit<WranglerR2Bucket, "bucket_name"> & {
5445
5457
  bucket_name?: TamerResolvableString;
@@ -5502,13 +5514,19 @@ interface TenantMeta {
5502
5514
  }
5503
5515
  /**
5504
5516
  * D1 database declared on a worker's `resources.d1[]`.
5505
- * Cloudflare **name** comes from {@link NamingConventions.d1Single} or
5506
- * {@link NamingConventions.d1Shard}; **id** is stored in state after `sync` / `apply`.
5517
+ * Cloudflare **name** for managed databases follows
5518
+ * {@link D1ResourceConfig.cloudflareName} {@link NamingConventions.d1Single} /
5519
+ * {@link NamingConventions.d1Shard} → defaults; **id** is stored in state after `sync` / `apply`.
5507
5520
  */
5508
5521
  interface D1ResourceConfig {
5509
5522
  logicalName: string;
5510
5523
  /** `"single"`: one DB per logical name. `"sharded"`: date-stamped shards (see `d1Shard` naming hook). */
5511
5524
  type: "single" | "sharded";
5525
+ /**
5526
+ * Optional per-resource Cloudflare database name. For sharded D1, receives
5527
+ * {@link CloudflareNameContext.shardDate}. External D1 uses {@link databaseName} instead.
5528
+ */
5529
+ cloudflareName?: CloudflareNameFn;
5512
5530
  /**
5513
5531
  * `managed` (default): Tamer creates the database; the Cloudflare name follows
5514
5532
  * `naming.d1Single` / shard rules.
@@ -5538,14 +5556,18 @@ interface D1ResourceConfig {
5538
5556
  */
5539
5557
  preserveOnDestroy?: boolean;
5540
5558
  }
5541
- /** R2 bucket on `resources.r2[]`. Name from {@link NamingConventions.r2Bucket} or default. */
5559
+ /** R2 bucket on `resources.r2[]`. Name from {@link cloudflareName} → {@link NamingConventions.r2Bucket} default. */
5542
5560
  interface R2ResourceConfig {
5543
5561
  logicalName: string;
5562
+ /** Optional per-resource Cloudflare bucket name override. */
5563
+ cloudflareName?: CloudflareNameFn;
5544
5564
  /** When set, used as the Wrangler R2 `binding` instead of the generated stable name. */
5545
5565
  binding?: string;
5546
5566
  }
5547
5567
  interface KVResourceConfig {
5548
5568
  logicalName: string;
5569
+ /** Optional per-resource Cloudflare KV namespace name override. */
5570
+ cloudflareName?: CloudflareNameFn;
5549
5571
  /** When set, used as the Wrangler KV `binding` instead of the generated name. */
5550
5572
  binding?: string;
5551
5573
  }
@@ -5558,6 +5580,8 @@ interface KVResourceConfig {
5558
5580
  */
5559
5581
  interface QueueResourceConfig {
5560
5582
  logicalName: string;
5583
+ /** Optional per-resource Cloudflare queue name override. */
5584
+ cloudflareName?: CloudflareNameFn;
5561
5585
  /** When set, used as the Wrangler queue `binding` instead of the generated name. */
5562
5586
  binding?: string;
5563
5587
  /**
@@ -5575,6 +5599,8 @@ interface QueueResourceConfig {
5575
5599
  */
5576
5600
  interface HyperdriveResourceConfig {
5577
5601
  logicalName: string;
5602
+ /** Optional per-resource Cloudflare Hyperdrive config name override. */
5603
+ cloudflareName?: CloudflareNameFn;
5578
5604
  /** When set, used as the Wrangler hyperdrive `binding` instead of the generated name. */
5579
5605
  binding?: string;
5580
5606
  /** Origin database connection. Sent to Cloudflare on create; not stored in Tamer state. */
@@ -5604,6 +5630,8 @@ interface HyperdriveResourceConfig {
5604
5630
  */
5605
5631
  interface VectorizeResourceConfig {
5606
5632
  logicalName: string;
5633
+ /** Optional per-resource Cloudflare Vectorize index name override. */
5634
+ cloudflareName?: CloudflareNameFn;
5607
5635
  /** When set, used as the Wrangler vectorize `binding` instead of the generated name. */
5608
5636
  binding?: string;
5609
5637
  /** Vector dimensionality (e.g. 768 for `@cf/baai/bge-base-en-v1.5`). Immutable. */
@@ -5625,6 +5653,8 @@ interface VectorizeResourceConfig {
5625
5653
  */
5626
5654
  interface AIGatewayResourceConfig {
5627
5655
  logicalName: string;
5656
+ /** Optional per-resource Cloudflare AI Gateway slug override. */
5657
+ cloudflareName?: CloudflareNameFn;
5628
5658
  /** Cache TTL in seconds. Default 0 (caching disabled). */
5629
5659
  cacheTtl?: number;
5630
5660
  /** Invalidate cached entries when upstream model output changes. Default false. */
@@ -5657,6 +5687,8 @@ interface AIGatewayResourceConfig {
5657
5687
  */
5658
5688
  interface PipelineResourceConfig {
5659
5689
  logicalName: string;
5690
+ /** Optional per-resource Cloudflare Pipeline name override. */
5691
+ cloudflareName?: CloudflareNameFn;
5660
5692
  /**
5661
5693
  * Arroyo SQL describing the processing flow, e.g.
5662
5694
  * `insert into my_sink select * from my_stream;`. Stream and sink names
@@ -5705,6 +5737,8 @@ interface HyperdriveOriginSpec {
5705
5737
  */
5706
5738
  interface WorkflowResourceConfig {
5707
5739
  logicalName: string;
5740
+ /** Optional per-resource Cloudflare workflow registration name override. */
5741
+ cloudflareName?: CloudflareNameFn;
5708
5742
  /**
5709
5743
  * Class name exported by the worker that implements this workflow
5710
5744
  * (`export class BillingWorkflow extends WorkflowEntrypoint {...}` →
@@ -6015,6 +6049,8 @@ interface WorkerResources {
6015
6049
  */
6016
6050
  interface SecretsStoreResourceConfig {
6017
6051
  logicalName: string;
6052
+ /** Optional per-resource Cloudflare Secrets Store name override. */
6053
+ cloudflareName?: CloudflareNameFn;
6018
6054
  }
6019
6055
  /**
6020
6056
  * One row in the worker's wrangler `secrets_store_secrets[]` array. Pure
@@ -6623,20 +6659,22 @@ interface TenantStatus {
6623
6659
  }
6624
6660
  /**
6625
6661
  * Optional functions that derive **Cloudflare resource names** from config
6626
- * (`logicalName`, `tenant.id`, `env`, etc.). Used by `apply`, `sync`, `plan`,
6627
- * `drift`, and `import` through one shared naming derivation path.
6662
+ * (`logicalName`, `tenant.id`, `env`, etc.). Used when a resource has no
6663
+ * {@link CloudflareNameFn} override on its config.
6628
6664
  *
6629
- * **Greenfield:** omit this block — Tamer uses built-in defaults below.
6665
+ * **Resolution order (managed resources):**
6666
+ * 1. `resource.cloudflareName?(tenantId, env, ctx?)`
6667
+ * 2. stack `naming.{kindHook}?(...)` (this interface)
6668
+ * 3. {@link NamingEngine} built-in default
6630
6669
  *
6631
- * **Brownfield:** reproduce legacy names here (functions, not UUIDs). Config
6632
- * holds logical names and hooks; **state** holds `cfId` after `tamer sync`.
6633
- * Run bootstrap → sync → plan before expecting adoption to succeed.
6670
+ * **Greenfield:** omit both per-resource overrides and this block.
6634
6671
  *
6635
- * KV, queues, hyperdrive, vectorize, pipelines, AI gateway, secrets store,
6636
- * dispatch namespaces, and DNS use fixed derived names today (no hooks).
6672
+ * **Brownfield:** use per-resource `cloudflareName` when names differ per
6673
+ * logical resource; use stack hooks for shared formulas. Config holds logical
6674
+ * names and hooks; **state** holds `cfId` after `tamer sync`.
6637
6675
  *
6638
6676
  * @see docs/brownfield-adoption.md
6639
- * @see docs/consumer-quickstart.md
6677
+ * @see docs/per-resource-cloudflare-naming.md
6640
6678
  */
6641
6679
  interface NamingConventions {
6642
6680
  /**
@@ -6724,5 +6762,5 @@ declare function materializeCloudflareBindings(value: unknown): unknown;
6724
6762
  */
6725
6763
  declare function defineCloudflareConfig(config: unknown): CfiConfig;
6726
6764
  //#endregion
6727
- export { AIGatewayResourceConfig, AIGatewayStateEntry, CfBinding, type CfBindingSpec, type CfLogpushPipelinesField, type CfResourceField, type CfResourceKind, CfiConfig, CfiConfigMulti, CfiConfigSingle, CfiOperationName, CfiOperationRecord, CfiOperationStatus, CfiStackConfig, CfiStackMeta, CfiStackOutputValue, CfiState, D1ResourceConfig, D1StateEntry, DispatchNamespaceResourceConfig, DispatchNamespaceStateEntry, DnsRecordResourceConfig, DnsRecordStateEntry, EnvOverride, HyperdriveOriginSpec, HyperdriveResourceConfig, HyperdriveStateEntry, KVResourceConfig, KVStateEntry, LogpushJobPipelinesAutoDestination, LogpushJobPipelinesIngestDestination, LogpushJobR2Destination, LogpushJobResourceConfig, LogpushJobStateEntry, LogpushPipelinesStateEntry, LogpushWorkersTraceDataset, NamingConventions, PipelineResourceConfig, PipelineStateEntry, ProvisioningStatus, QueueResourceConfig, QueueStateEntry, R2ResourceConfig, R2StateEntry, type RawConfig, type RawEnvironment, ResourceStatus, RouteResourceConfig, SecretsStoreResourceConfig, SecretsStoreSecretBinding, SecretsStoreStateEntry, StateEntry, TAMER_OVERLAY_ENV_KEY, TamerResolvableString, TenantD1ShardRef, TenantMeta, TenantStateEntry, TenantStatus, VectorizeResourceConfig, VectorizeStateEntry, WorkerConfig, WorkerResources, WorkerRouteStateEntry, WorkerStatus, WorkflowResourceConfig, WorkflowStateEntry, type WranglerConfig, type WranglerD1Database, type WranglerEnvironment, type WranglerKVNamespace, type WranglerR2Bucket, WranglerR2BucketResolvable, cf, cfBindingSpecToTamerRef, defineCloudflareConfig, defineConfig, defineProjectOverlay, defineWorker, getDispatchNamespaces, getDnsRecords, getLogpushJobs, isCfBinding, materializeCloudflareBindings, materializeTamerResolvable, materializeVars };
6765
+ export { AIGatewayResourceConfig, AIGatewayStateEntry, CfBinding, type CfBindingSpec, type CfLogpushPipelinesField, type CfResourceField, type CfResourceKind, CfiConfig, CfiConfigMulti, CfiConfigSingle, CfiOperationName, CfiOperationRecord, CfiOperationStatus, CfiStackConfig, CfiStackMeta, CfiStackOutputValue, CfiState, CloudflareNameContext, CloudflareNameFn, D1ResourceConfig, D1StateEntry, DispatchNamespaceResourceConfig, DispatchNamespaceStateEntry, DnsRecordResourceConfig, DnsRecordStateEntry, EnvOverride, HyperdriveOriginSpec, HyperdriveResourceConfig, HyperdriveStateEntry, KVResourceConfig, KVStateEntry, LogpushJobPipelinesAutoDestination, LogpushJobPipelinesIngestDestination, LogpushJobR2Destination, LogpushJobResourceConfig, LogpushJobStateEntry, LogpushPipelinesStateEntry, LogpushWorkersTraceDataset, NamingConventions, PipelineResourceConfig, PipelineStateEntry, ProvisioningStatus, QueueResourceConfig, QueueStateEntry, R2ResourceConfig, R2StateEntry, type RawConfig, type RawEnvironment, ResourceStatus, RouteResourceConfig, SecretsStoreResourceConfig, SecretsStoreSecretBinding, SecretsStoreStateEntry, StateEntry, TAMER_OVERLAY_ENV_KEY, TamerResolvableString, TenantD1ShardRef, TenantMeta, TenantStateEntry, TenantStatus, VectorizeResourceConfig, VectorizeStateEntry, WorkerConfig, WorkerResources, WorkerRouteStateEntry, WorkerStatus, WorkflowResourceConfig, WorkflowStateEntry, type WranglerConfig, type WranglerD1Database, type WranglerEnvironment, type WranglerKVNamespace, type WranglerR2Bucket, WranglerR2BucketResolvable, cf, cfBindingSpecToTamerRef, defineCloudflareConfig, defineConfig, defineProjectOverlay, defineWorker, getDispatchNamespaces, getDnsRecords, getLogpushJobs, isCfBinding, materializeCloudflareBindings, materializeTamerResolvable, materializeVars };
6728
6766
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/generated/wrangler-types.generated.ts","../src/generated/wrangler-types.ts","../src/dx/cloudflare-bindings.ts","../src/types.ts","../src/dx/normalize.ts","../src/dx/index.ts"],"sourcesContent":[],"mappings":";;AASA;;;;;AAOA;AAYA;AAaY,KAhCA,KAAA,GAgCA,MAAA,GAhCiB,WAgCI,GAhCU,aAgCV,GAhC0B,iBAgC1B;AAihEjC;;;;;;AAiHU,KA3pEE,oBAAA,GA2pEF,UAAA,GAAA,UAAA,GAAA,cAAA,GAAA,MAAA,GAAA,MAAA,GAAA,cAAA,GAAA,mBAAA;;;;;AAiOkB,KAh3EhB,IAAA,GAg3EgB,MAAA,GAAA,MAAA,GAAA,OAAA,GAAA,IAAA,GA32ExB,IA22EwB,EAAA,GAAA;EA2BZ,CAAA,CAAA,EAAA,MAAA,CAAA,EAp4EG,IAo4EH;CAOA;;;;;AAqwBF,KA1oGF,qBAAA,GA0oGE;EAOA;;;EA0fe,IAAA,EAAA,MAAA;EAAqB;AAoOlD;AASA;EASiB,UAAA,EAAA,MAAA;EAYA;AA+BjB;AAWA;EAsDW,WAAA,CAAA,EAAA,MAAA;EAMQ;;;EAoBL,WAAA,CAAA,EAAA,MAAA;CAiCL,EAAA;;;;;;;;;UAvhEQ,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAsDN;;;;;;mBAMQ,cAAc,gBAAgB;;;;;;;;;;;;;;;;;;;;eAoBlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiCL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6MI;oBACM;aACP;YACD;;;;;;;;;;;;;;;;;4BAiBgB;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA2BZ;;;;;;;gBAOA;;;;;;;;;;;;;;;;;;;iBAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAieI;;;;;;+BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgPL;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2BZ;;;;;;;cAOA;;;;;;;;;;;;;;;;;;;eAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAieI;;;;;;6BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAieI;;;;;;+BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgPL;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2BZ;;;;;;;cAOA;;;;;;;;;;;;;;;;;;;eAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAieI;;;;;;6BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/generated/wrangler-types.generated.ts","../src/generated/wrangler-types.ts","../src/dx/cloudflare-bindings.ts","../src/types.ts","../src/dx/normalize.ts","../src/dx/index.ts"],"sourcesContent":[],"mappings":";;AASA;;;;;AAOA;AAYA;AAaY,KAhCA,KAAA,GAgCA,MAAA,GAhCiB,WAgCI,GAhCU,aAgCV,GAhC0B,iBAgC1B;AAihEjC;;;;;;AAiHU,KA3pEE,oBAAA,GA2pEF,UAAA,GAAA,UAAA,GAAA,cAAA,GAAA,MAAA,GAAA,MAAA,GAAA,cAAA,GAAA,mBAAA;;;;;AAiOkB,KAh3EhB,IAAA,GAg3EgB,MAAA,GAAA,MAAA,GAAA,OAAA,GAAA,IAAA,GA32ExB,IA22EwB,EAAA,GAAA;EA2BZ,CAAA,CAAA,EAAA,MAAA,CAAA,EAp4EG,IAo4EH;CAOA;;;;;AAqwBF,KA1oGF,qBAAA,GA0oGE;EAOA;;;EA0fe,IAAA,EAAA,MAAA;EAAqB;AAoOlD;AASA;EASiB,UAAA,EAAA,MAAA;EAYA;AA+BjB;AAWA;EAsDW,WAAA,CAAA,EAAA,MAAA;EAMQ;;;EAoBL,WAAA,CAAA,EAAA,MAAA;CAiCL,EAAA;;;;;;;;;UAvhEQ,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAsDN;;;;;;mBAMQ,cAAc,gBAAgB;;;;;;;;;;;;;;;;;;;;eAoBlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiCL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6MI;oBACM;aACP;YACD;;;;;;;;;;;;;;;;;4BAiBgB;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA2BZ;;;;;;;gBAOA;;;;;;;;;;;;;;;;;;;iBAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAieI;;;;;;+BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgPL;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2BZ;;;;;;;cAOA;;;;;;;;;;;;;;;;;;;eAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAieI;;;;;;6BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAieI;;;;;;+BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgPL;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2BZ;;;;;;;cAOA;;;;;;;;;;;;;;;;;;;eAmBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAieI;;;;;;6BAMU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -1,5 +1,5 @@
1
1
  import { c as TAMER_OVERLAY_ENV_KEY, t as materializeCloudflareBindings } from "./normalize-DVSTRZhO.mjs";
2
- import { a as boolean, c as number, d as string, f as union, i as array, l as object, n as _enum, r as any, s as literal, u as record } from "./tamer.mjs";
2
+ import { a as boolean, c as literal, d as record, f as string, i as array, l as number, n as _enum, o as custom, p as union, r as any, u as object } from "./tamer.mjs";
3
3
  import { basename, dirname, resolve } from "path";
4
4
  import { existsSync } from "fs";
5
5
 
@@ -234,9 +234,11 @@ const TenantMetaSchema = object({
234
234
  }
235
235
  }, "tenant.ephemeralEnvPattern must be a valid JavaScript RegExp source string")
236
236
  });
237
+ const CloudflareNameFnSchema = custom((v) => v === void 0 || typeof v === "function").optional();
237
238
  const D1ResourceConfigSchema = object({
238
239
  logicalName: string().min(1),
239
240
  type: _enum(["single", "sharded"]),
241
+ cloudflareName: CloudflareNameFnSchema,
240
242
  ownership: _enum(["managed", "external"]).optional(),
241
243
  databaseName: string().optional(),
242
244
  binding: string().optional(),
@@ -246,14 +248,17 @@ const D1ResourceConfigSchema = object({
246
248
  }).refine((d) => d.ownership !== "external" || typeof d.databaseName === "string" && d.databaseName.length > 0, { error: "resources.d1: ownership 'external' requires non-empty databaseName" }).refine((d) => d.ownership !== "external" || d.type === "single", { error: "resources.d1: ownership 'external' only supports type 'single'" });
247
249
  const R2ResourceConfigSchema = object({
248
250
  logicalName: string().min(1),
251
+ cloudflareName: CloudflareNameFnSchema,
249
252
  binding: string().optional()
250
253
  });
251
254
  const KVResourceConfigSchema = object({
252
255
  logicalName: string().min(1),
256
+ cloudflareName: CloudflareNameFnSchema,
253
257
  binding: string().optional()
254
258
  });
255
259
  const QueueResourceConfigSchema = object({
256
260
  logicalName: string().min(1),
261
+ cloudflareName: CloudflareNameFnSchema,
257
262
  binding: string().optional(),
258
263
  consumerOnly: boolean().optional()
259
264
  });
@@ -274,6 +279,7 @@ const HyperdriveOriginSchema = object({
274
279
  });
275
280
  const HyperdriveResourceConfigSchema = object({
276
281
  logicalName: string().min(1),
282
+ cloudflareName: CloudflareNameFnSchema,
277
283
  binding: string().optional(),
278
284
  origin: HyperdriveOriginSchema,
279
285
  caching: object({
@@ -289,6 +295,7 @@ const HyperdriveResourceConfigSchema = object({
289
295
  });
290
296
  const VectorizeResourceConfigSchema = object({
291
297
  logicalName: string().min(1),
298
+ cloudflareName: CloudflareNameFnSchema,
292
299
  binding: string().optional(),
293
300
  dimensions: number().int().positive(),
294
301
  metric: _enum([
@@ -300,6 +307,7 @@ const VectorizeResourceConfigSchema = object({
300
307
  });
301
308
  const AIGatewayResourceConfigSchema = object({
302
309
  logicalName: string().min(1),
310
+ cloudflareName: CloudflareNameFnSchema,
303
311
  cacheTtl: number().int().nonnegative().optional(),
304
312
  cacheInvalidateOnUpdate: boolean().optional(),
305
313
  collectLogs: boolean().optional(),
@@ -379,17 +387,22 @@ const DnsRecordResourceConfigSchema = object({
379
387
  });
380
388
  const PipelineResourceConfigSchema = object({
381
389
  logicalName: string().min(1),
390
+ cloudflareName: CloudflareNameFnSchema,
382
391
  sql: string().min(1),
383
392
  binding: string().min(1).optional()
384
393
  });
385
394
  const WorkflowResourceConfigSchema = object({
386
395
  logicalName: string().min(1),
396
+ cloudflareName: CloudflareNameFnSchema,
387
397
  className: string().min(1),
388
398
  scriptName: string().min(1).optional(),
389
399
  binding: string().min(1).optional(),
390
400
  limits: object({ steps: number().int().positive().optional() }).optional()
391
401
  });
392
- const SecretsStoreResourceConfigSchema = object({ logicalName: string().min(1) });
402
+ const SecretsStoreResourceConfigSchema = object({
403
+ logicalName: string().min(1),
404
+ cloudflareName: CloudflareNameFnSchema
405
+ });
393
406
  const SecretsStoreSecretBindingSchema = object({
394
407
  binding: string().min(1),
395
408
  store: string().min(1),
@@ -515,4 +528,4 @@ async function resolveWorkerConfigRef(wc, baseDir) {
515
528
 
516
529
  //#endregion
517
530
  export { loadConfig as n, getWorkers as t };
518
- //# sourceMappingURL=loader-DAvCKLTT.mjs.map
531
+ //# sourceMappingURL=loader-DnT9iqz9.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-DnT9iqz9.mjs","names":["out: Record<string, unknown>","overlay: string | null","z.object","z.string","z\n .array","z\n .string","z.array","z\n .string","z\n .custom","z\n .object","z.enum","z.boolean","z.union","z.number","z\n .object","z.literal","z\n .enum","z.record","z\n .union","z.any","z\n .object","z\n .string","z\n .record","raw: unknown","entries: [string, WorkerConfig][]"],"sources":["../src/core/config/merge-project-overlay.ts","../src/core/config/resolve-config-sources.ts","../src/core/config/loader.ts"],"sourcesContent":["/**\n * Deep-merge `tamer/env/<env>.config.ts` onto `tamer/project.config.ts`.\n * See docs/design-tamer-project-config.md.\n */\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return (\n v !== null &&\n typeof v === \"object\" &&\n !Array.isArray(v) &&\n !(v instanceof Date)\n );\n}\n\nfunction validateOverlayWorkers(\n projectWorkers: Record<string, unknown>,\n overlayWorkers: Record<string, unknown>,\n): void {\n for (const k of Object.keys(overlayWorkers)) {\n if (!(k in projectWorkers)) {\n throw new Error(\n `Tamer env overlay: unknown worker key \"${k}\". ` +\n `Declare \"${k}\" in tamer/project.config.ts first — overlays may only patch existing workers.`,\n );\n }\n }\n}\n\nfunction mergeWorkerResources(\n base: Record<string, unknown>,\n patch: Record<string, unknown>,\n): Record<string, unknown> {\n const out = { ...base };\n for (const k of Object.keys(patch)) {\n const pk = patch[k];\n if (pk !== undefined) {\n out[k] = pk;\n }\n }\n return out;\n}\n\nfunction mergeEnvMap(\n base: Record<string, unknown>,\n patch: Record<string, unknown>,\n): Record<string, unknown> {\n const out = { ...base };\n for (const k of Object.keys(patch)) {\n const b = base[k];\n const p = patch[k];\n if (isPlainObject(b) && isPlainObject(p)) {\n out[k] = mergeWorkerConfig(b, p);\n } else {\n out[k] = p;\n }\n }\n return out;\n}\n\nfunction mergeWorkerConfig(\n base: Record<string, unknown>,\n patch: Record<string, unknown>,\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...base };\n for (const key of Object.keys(patch)) {\n const pv = patch[key];\n if (pv === undefined) continue;\n\n if (key === \"vars\") {\n const bv = isPlainObject(base.vars) ? base.vars : {};\n const ov = isPlainObject(patch.vars) ? patch.vars : {};\n out.vars = { ...bv, ...ov };\n continue;\n }\n if (key === \"tamerRoutes\") {\n out.tamerRoutes = pv;\n continue;\n }\n if (key === \"tamerStaleRouteSweepZones\") {\n out.tamerStaleRouteSweepZones = pv;\n continue;\n }\n if (key === \"resources\") {\n if (isPlainObject(base.resources) && isPlainObject(pv)) {\n out.resources = mergeWorkerResources(base.resources, pv);\n } else {\n out.resources = pv;\n }\n continue;\n }\n if (key === \"env\") {\n if (isPlainObject(base.env) && isPlainObject(pv)) {\n out.env = mergeEnvMap(base.env, pv);\n } else {\n out.env = pv;\n }\n continue;\n }\n if (key === \"local\") {\n if (isPlainObject(base.local) && isPlainObject(pv)) {\n out.local = mergeWorkerConfig(\n base.local as Record<string, unknown>,\n pv as Record<string, unknown>,\n );\n } else {\n out.local = pv;\n }\n continue;\n }\n out[key] = pv;\n }\n return out;\n}\n\nfunction mergeWorkersRecord(\n base: Record<string, unknown>,\n patch: Record<string, unknown>,\n): Record<string, unknown> {\n const out = { ...base };\n for (const k of Object.keys(patch)) {\n const b = base[k];\n const p = patch[k];\n if (isPlainObject(b) && isPlainObject(p)) {\n out[k] = mergeWorkerConfig(b, p);\n } else {\n out[k] = p;\n }\n }\n return out;\n}\n\n/**\n * Merge env overlay onto project config (both plain objects from `default` exports).\n * Does not run {@link materializeCloudflareBindings} — caller does that on the result.\n */\nexport function mergeProjectOverlay(\n project: Record<string, unknown>,\n overlay: Record<string, unknown>,\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...project };\n for (const key of Object.keys(overlay)) {\n const ov = overlay[key];\n if (ov === undefined) continue;\n const pv = project[key];\n\n switch (key) {\n case \"tenant\":\n if (isPlainObject(pv) && isPlainObject(ov)) {\n out[key] = { ...pv, ...ov };\n } else {\n out[key] = ov;\n }\n break;\n case \"naming\":\n out[key] = ov;\n break;\n case \"workers\":\n if (!isPlainObject(pv) || !isPlainObject(ov)) {\n out[key] = ov;\n break;\n }\n validateOverlayWorkers(pv, ov);\n out[key] = mergeWorkersRecord(pv, ov);\n break;\n case \"worker\":\n if (isPlainObject(pv) && isPlainObject(ov)) {\n out[key] = mergeWorkerConfig(pv, ov);\n } else {\n out[key] = ov;\n }\n break;\n case \"outputs\":\n if (isPlainObject(pv) && isPlainObject(ov)) {\n out[key] = { ...pv, ...ov };\n } else {\n out[key] = ov;\n }\n break;\n case \"logpushJobs\":\n case \"dispatchNamespaces\":\n case \"dnsRecords\":\n out[key] = ov;\n break;\n default:\n out[key] = ov;\n }\n }\n return out;\n}\n","import { existsSync } from \"fs\";\nimport { basename, dirname, join, resolve } from \"path\";\n\nexport type ResolvedConfigSources =\n | { mode: \"single\"; path: string }\n | { mode: \"merged\"; projectPath: string; overlayPath: string | null };\n\nfunction isProjectFileName(file: string): boolean {\n return file === \"project.config.ts\" || file === \"tamer.project.config.ts\";\n}\n\nfunction projectDirForMergedEntry(absProject: string): string {\n const dir = dirname(absProject);\n const file = basename(absProject);\n if (file === \"project.config.ts\") {\n return dir;\n }\n return dir;\n}\n\nfunction overlayPathForNestedLayout(projectDir: string, env: string): string {\n return resolve(projectDir, \"env\", `${env}.config.ts`);\n}\n\nfunction overlayPathForFlatLayout(projectRoot: string, env: string): string {\n return resolve(projectRoot, `tamer.env.${env}.ts`);\n}\n\nfunction rejectLegacyTamerConfigFile(context: string): never {\n throw new Error(\n `${context}: tamer.config.ts is not supported. ` +\n `Move the default export to tamer/project.config.ts and optional per-env overlays to tamer/env/<env>.config.ts ` +\n `(or use tamer.project.config.ts at the repo root with optional tamer.env.<env>.ts).`,\n );\n}\n\n/**\n * Resolve which config file(s) to load. See docs/design-tamer-project-config.md.\n *\n * - **Merged:** `tamer/project.config.ts` or `tamer.project.config.ts`, plus optional env overlay.\n * - **Single:** explicit `--config` path to any `.ts` file **except** `tamer.config.ts` (e.g. alternate snapshots in tests).\n */\nexport function resolveConfigSources(\n cwd: string,\n explicitConfigPath: string | undefined,\n env: string | undefined,\n): ResolvedConfigSources {\n if (explicitConfigPath) {\n const abs = resolve(cwd, explicitConfigPath);\n const file = basename(abs);\n if (file === \"tamer.config.ts\") {\n rejectLegacyTamerConfigFile(\"--config\");\n }\n if (isProjectFileName(file)) {\n const projectDir = projectDirForMergedEntry(abs);\n let overlay: string | null = null;\n if (env) {\n if (file === \"project.config.ts\") {\n const candidate = overlayPathForNestedLayout(projectDir, env);\n if (existsSync(candidate)) overlay = candidate;\n } else {\n const candidate = overlayPathForFlatLayout(dirname(abs), env);\n if (existsSync(candidate)) overlay = candidate;\n }\n }\n return { mode: \"merged\", projectPath: abs, overlayPath: overlay };\n }\n return { mode: \"single\", path: abs };\n }\n\n const nestedProject = resolve(cwd, \"tamer\", \"project.config.ts\");\n if (existsSync(nestedProject)) {\n let overlay: string | null = null;\n if (env) {\n const candidate = overlayPathForNestedLayout(\n dirname(nestedProject),\n env,\n );\n if (existsSync(candidate)) overlay = candidate;\n }\n return {\n mode: \"merged\",\n projectPath: nestedProject,\n overlayPath: overlay,\n };\n }\n\n const flatProject = resolve(cwd, \"tamer.project.config.ts\");\n if (existsSync(flatProject)) {\n let overlay: string | null = null;\n if (env) {\n const candidate = overlayPathForFlatLayout(cwd, env);\n if (existsSync(candidate)) overlay = candidate;\n }\n return {\n mode: \"merged\",\n projectPath: flatProject,\n overlayPath: overlay,\n };\n }\n\n if (existsSync(resolve(cwd, \"tamer.config.ts\"))) {\n rejectLegacyTamerConfigFile(\"Config discovery\");\n }\n\n throw new Error(\n `No Tamer project config under ${cwd}. ` +\n `Create tamer/project.config.ts (or tamer.project.config.ts at the repo root).`,\n );\n}\n","import { resolve } from \"path\";\nimport { z } from \"zod\";\nimport { materializeCloudflareBindings } from \"../../dx/normalize.js\";\nimport type { CfiConfig, WorkerConfig } from \"../../types.js\";\nimport { TAMER_OVERLAY_ENV_KEY } from \"../../types.js\";\nimport { mergeProjectOverlay } from \"./merge-project-overlay.js\";\nimport { resolveConfigSources } from \"./resolve-config-sources.js\";\n\nconst TENANT_SHARD_ROLE_RE = /^[a-z][a-z0-9_-]*$/;\n\nconst TenantMetaSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n slug: z.string().min(1),\n d1Shards: z\n .array(\n z\n .string()\n .min(1)\n .refine((s) => TENANT_SHARD_ROLE_RE.test(s), {\n // Roles flow into D1 database names (`db_{role}_…`); D1 names\n // accept `[A-Za-z0-9_-]` and Cloudflare lowercases on read,\n // so we lock roles to the same lowercase subset to avoid the\n // \"config says `System` but Cloudflare returns `system`\"\n // adoption drift.\n error:\n \"tenant.d1Shards entries must be lowercase ASCII (letters, digits, `_`, `-`) and start with a letter\",\n }),\n )\n .optional()\n .refine(\n (arr) => !arr || new Set(arr).size === arr.length,\n \"tenant.d1Shards must not contain duplicate roles\",\n ),\n protectedEnvs: z.array(z.string().min(1)).optional(),\n ephemeralEnvPattern: z\n .string()\n .min(1)\n .optional()\n .refine(\n (s) => {\n if (s == null) return true;\n try {\n new RegExp(s);\n return true;\n } catch {\n return false;\n }\n },\n // Compile-fail at config-load time so a typo in\n // `ephemeralEnvPattern` surfaces here instead of later when\n // `apply` / `provision-tenant` tries to resolve a namespace.\n \"tenant.ephemeralEnvPattern must be a valid JavaScript RegExp source string\",\n ),\n});\n\nconst CloudflareNameFnSchema = z\n .custom<(tenantId: string, env: string, ctx?: { shardDate?: string }) => string>(\n (v) => v === undefined || typeof v === \"function\",\n )\n .optional();\n\nconst D1ResourceConfigSchema = z\n .object({\n logicalName: z.string().min(1),\n type: z.enum([\"single\", \"sharded\"]),\n cloudflareName: CloudflareNameFnSchema,\n ownership: z.enum([\"managed\", \"external\"]).optional(),\n databaseName: z.string().optional(),\n binding: z.string().optional(),\n migrationsDir: z.string().optional(),\n migrationsTable: z.string().optional(),\n preserveOnDestroy: z.boolean().optional(),\n })\n .refine(\n (d) =>\n d.ownership !== \"external\" ||\n (typeof d.databaseName === \"string\" && d.databaseName.length > 0),\n { error: \"resources.d1: ownership 'external' requires non-empty databaseName\" },\n )\n .refine(\n (d) => d.ownership !== \"external\" || d.type === \"single\",\n { error: \"resources.d1: ownership 'external' only supports type 'single'\" },\n );\n\nconst R2ResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n binding: z.string().optional(),\n});\n\nconst KVResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n binding: z.string().optional(),\n});\n\nconst QueueResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n binding: z.string().optional(),\n consumerOnly: z.boolean().optional(),\n});\n\nconst HyperdriveSecretSchema = z.union([\n z.string(),\n z.object({ fromEnv: z.string().min(1) }),\n]);\n\nconst HyperdriveOriginSchema = z.object({\n scheme: z.enum([\"postgres\", \"postgresql\", \"mysql\"]),\n host: z.string().min(1),\n port: z.number().optional(),\n database: z.string().min(1),\n user: z.string().min(1),\n password: HyperdriveSecretSchema,\n access_client_id: z.string().optional(),\n access_client_secret: HyperdriveSecretSchema.optional(),\n});\n\nconst HyperdriveResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n binding: z.string().optional(),\n origin: HyperdriveOriginSchema,\n caching: z\n .object({\n disabled: z.boolean().optional(),\n max_age: z.number().optional(),\n stale_while_revalidate: z.number().optional(),\n })\n .optional(),\n mtls: z\n .object({\n ca_certificate_id: z.string().optional(),\n mtls_certificate_id: z.string().optional(),\n })\n .optional(),\n localConnectionString: z.string().optional(),\n});\n\nconst VectorizeResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n binding: z.string().optional(),\n dimensions: z.number().int().positive(),\n metric: z.enum([\"cosine\", \"euclidean\", \"dot-product\"]),\n description: z.string().optional(),\n});\n\nconst AIGatewayResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n cacheTtl: z.number().int().nonnegative().optional(),\n cacheInvalidateOnUpdate: z.boolean().optional(),\n collectLogs: z.boolean().optional(),\n authentication: z.boolean().optional(),\n rateLimitingInterval: z.number().int().nonnegative().optional(),\n rateLimitingLimit: z.number().int().nonnegative().optional(),\n rateLimitingTechnique: z.enum([\"fixed\", \"sliding\"]).optional(),\n});\n\nconst DispatchNamespaceResourceSchema = z.object({\n logicalName: z.string().min(1),\n namespace: z.string().min(1),\n envSuffix: z.boolean().optional(),\n});\n\nconst LogpushJobR2DestinationSchema = z.object({\n bucketLogicalName: z.string().min(1),\n pathPrefix: z.string().optional(),\n accessKeyIdEnv: z.string().min(1),\n secretAccessKeyEnv: z.string().min(1),\n});\n\nconst LogpushJobPipelinesIngestSchema = z.object({\n streamId: z.string().min(1),\n pipelineId: z.string().min(1),\n bearerTokenEnv: z.string().min(1),\n});\n\nconst LogpushJobPipelinesAutoSchema = z.object({\n catalogBucketLogicalName: z.string().min(1),\n tableName: z.string().min(1),\n namespace: z.string().min(1).optional(),\n /** When not `false`, new sinks get `${tableName}_${Date.now()}` (default). */\n tableNameAppendTimestamp: z.boolean().optional(),\n sinkRowGroupBytes: z.number().int().positive().optional(),\n sinkRollingFileSizeBytes: z.number().int().positive().optional(),\n sinkRollingIntervalSeconds: z.number().int().positive().optional(),\n});\n\nconst LogpushJobResourceConfigSchema = z\n .object({\n logicalName: z.string().min(1),\n dataset: z.literal(\"workers_trace_events\"),\n jobName: z.string().optional(),\n r2: LogpushJobR2DestinationSchema.optional(),\n pipelinesIngest: LogpushJobPipelinesIngestSchema.optional(),\n pipelinesAuto: LogpushJobPipelinesAutoSchema.optional(),\n destinationConfEnv: z.string().min(1).optional(),\n destinationConfFromJobId: z.number().int().positive().optional(),\n destinationConfFromJobIdEnv: z.string().min(1).optional(),\n filter: z.string().min(1).optional(),\n fieldNames: z.array(z.string()).optional(),\n enabled: z.boolean().optional(),\n })\n .refine(\n (d) => {\n const hasR2 = Boolean(d.r2);\n const n =\n (d.destinationConfEnv ? 1 : 0) +\n (d.destinationConfFromJobId != null ? 1 : 0) +\n (d.destinationConfFromJobIdEnv ? 1 : 0) +\n (d.pipelinesIngest ? 1 : 0) +\n (d.pipelinesAuto ? 1 : 0);\n if (hasR2) return n === 0;\n return n === 1;\n },\n {\n error:\n \"logpushJobs: set exactly one of r2 | pipelinesIngest | pipelinesAuto | destinationConfEnv | destinationConfFromJobId | destinationConfFromJobIdEnv\",\n },\n )\n .refine(\n (d) =>\n !(\n d.destinationConfFromJobId != null && d.destinationConfFromJobIdEnv\n ),\n {\n error:\n \"logpushJobs: use only one of destinationConfFromJobId or destinationConfFromJobIdEnv\",\n },\n )\n .refine((d) => !(d.pipelinesIngest && d.pipelinesAuto), {\n error: \"logpushJobs: use only one of pipelinesIngest or pipelinesAuto\",\n });\n\nconst DnsRecordResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n zoneId: z.string().min(1),\n type: z.enum([\n \"A\",\n \"AAAA\",\n \"CNAME\",\n \"TXT\",\n \"MX\",\n \"NS\",\n \"CAA\",\n \"SRV\",\n \"PTR\",\n \"HTTPS\",\n \"SVCB\",\n ]),\n name: z.string().min(1),\n content: z.string().min(1),\n ttl: z.number().int().positive().optional(),\n proxied: z.boolean().optional(),\n priority: z.number().int().nonnegative().optional(),\n comment: z.string().optional(),\n skipEnvs: z.array(z.string()).optional(),\n preserveOnDestroy: z.boolean().optional(),\n});\n\nconst PipelineResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n sql: z.string().min(1),\n binding: z.string().min(1).optional(),\n});\n\nconst WorkflowResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n className: z.string().min(1),\n scriptName: z.string().min(1).optional(),\n binding: z.string().min(1).optional(),\n limits: z\n .object({ steps: z.number().int().positive().optional() })\n .optional(),\n});\n\nconst SecretsStoreResourceConfigSchema = z.object({\n logicalName: z.string().min(1),\n cloudflareName: CloudflareNameFnSchema,\n});\n\nconst SecretsStoreSecretBindingSchema = z.object({\n binding: z.string().min(1),\n store: z.string().min(1),\n secretName: z.string().min(1),\n});\n\nconst WorkerResourcesSchema = z.object({\n d1: z.array(D1ResourceConfigSchema).optional(),\n r2: z.array(R2ResourceConfigSchema).optional(),\n kv: z.array(KVResourceConfigSchema).optional(),\n queues: z.array(QueueResourceConfigSchema).optional(),\n hyperdrive: z.array(HyperdriveResourceConfigSchema).optional(),\n vectorize: z.array(VectorizeResourceConfigSchema).optional(),\n aiGateway: z.array(AIGatewayResourceConfigSchema).optional(),\n pipelines: z.array(PipelineResourceConfigSchema).optional(),\n workflows: z.array(WorkflowResourceConfigSchema).optional(),\n secretsStores: z.array(SecretsStoreResourceConfigSchema).optional(),\n secretsStoreSecrets: z.array(SecretsStoreSecretBindingSchema).optional(),\n});\n\nconst WranglerRouteSchema = z.object({\n pattern: z.string(),\n custom_domain: z.boolean().optional(),\n zone_name: z.string().optional(),\n zone_id: z.string().optional(),\n});\n\nconst WranglerAssetsSchema = z.object({\n directory: z.string(),\n binding: z.string().optional(),\n not_found_handling: z\n .enum([\"single-page-application\", \"return-404\"])\n .optional(),\n});\n\nconst EnvOverrideSchema = z\n .object({\n vars: z.record(z.string(), z.string()).optional(),\n scriptName: z.string().optional(),\n wranglerOutFile: z.string().optional(),\n route: z\n .union([WranglerRouteSchema, z.array(WranglerRouteSchema)])\n .optional(),\n routes: z.array(WranglerRouteSchema).optional(),\n })\n .passthrough();\n\nconst WorkerConfigSchema = z\n .object({\n path: z.string().optional(),\n config: z.string().optional(),\n scriptName: z.string().optional(),\n wranglerOutFile: z.string().optional(),\n dispatchNamespace: z.string().optional(),\n main: z.string().optional(),\n compatibility_date: z.string().optional(),\n compatibility_flags: z.array(z.string()).optional(),\n limits: z.record(z.string(), z.union([z.number(), z.string()])).optional(),\n workers_dev: z.boolean().optional(),\n preview_urls: z.boolean().optional(),\n resources: WorkerResourcesSchema.optional(),\n alias: z.record(z.string(), z.string()).optional(),\n vars: z.record(z.string(), z.string()).optional(),\n local: EnvOverrideSchema.optional(),\n env: z.record(z.string(), EnvOverrideSchema).optional(),\n assets: WranglerAssetsSchema.optional(),\n route: z\n .union([WranglerRouteSchema, z.array(WranglerRouteSchema)])\n .optional(),\n routes: z.array(WranglerRouteSchema).optional(),\n })\n .passthrough();\n\nconst CfiConfigSchema = z\n .object({\n tenant: TenantMetaSchema,\n account_id: z.string().optional(),\n compatibility_date: z.string().optional(),\n naming: z.any().optional(),\n dispatchNamespaces: z.array(DispatchNamespaceResourceSchema).optional(),\n dnsRecords: z.array(DnsRecordResourceConfigSchema).optional(),\n logpushJobs: z.array(LogpushJobResourceConfigSchema).optional(),\n stack: z\n .object({\n // Stack name flows into the D1 row key (`cfi_state:{name}`) and the\n // `${tamer:import:<name>.<output>}` parser, so the same identifier\n // shape as output names keeps both surfaces consistent.\n name: z\n .string()\n .regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, {\n error:\n \"stack.name must match /^[a-zA-Z][a-zA-Z0-9_-]*$/ (CloudFormation-style identifier)\",\n })\n .optional(),\n description: z.string().min(1).optional(),\n })\n .optional(),\n outputs: z\n .record(\n // CloudFormation-ish output names: must start with a letter, then\n // letters/digits/`_`/`-`. Keeps them safe for filenames, env-var\n // exports, and `${tamer:import:stack.<name>}` parsing.\n z.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, {\n error:\n \"outputs key must match /^[a-zA-Z][a-zA-Z0-9_-]*$/ (CloudFormation-style identifier)\",\n }),\n z.string().min(1),\n )\n .optional(),\n worker: WorkerConfigSchema.optional(),\n workers: z.record(z.string(), WorkerConfigSchema).optional(),\n })\n .refine(\n (data: { worker?: unknown; workers?: unknown }) =>\n (data.worker ?? data.workers) && !(data.worker && data.workers),\n { error: \"Must have either worker or workers, not both\" },\n );\n\nexport interface LoadConfigOptions {\n /** Selects `tamer/env/<env>.config.ts` when present (merged project layout). */\n env?: string;\n cwd?: string;\n}\n\nexport async function loadConfig(\n configPath?: string,\n options: LoadConfigOptions = {},\n): Promise<CfiConfig> {\n const cwd = options.cwd ?? process.cwd();\n const sources = resolveConfigSources(cwd, configPath, options.env);\n\n let raw: unknown;\n\n if (sources.mode === \"single\") {\n const mod = await import(sources.path);\n raw = mod.default;\n if (!raw) {\n throw new Error(`No default export in ${sources.path}`);\n }\n } else {\n const pMod = await import(sources.projectPath);\n const projectRaw = pMod.default;\n if (!projectRaw || typeof projectRaw !== \"object\") {\n throw new Error(`No default export in ${sources.projectPath}`);\n }\n let merged = projectRaw as Record<string, unknown>;\n if (sources.overlayPath) {\n const oMod = await import(sources.overlayPath);\n const overlayRaw = oMod.default;\n if (!overlayRaw || typeof overlayRaw !== \"object\") {\n throw new Error(\n `Env overlay must default-export an object: ${sources.overlayPath}`,\n );\n }\n const overlayObj = overlayRaw as Record<string, unknown>;\n const declaredEnv = overlayObj[TAMER_OVERLAY_ENV_KEY];\n if (declaredEnv !== undefined) {\n if (typeof declaredEnv !== \"string\") {\n throw new Error(\n `Env overlay ${sources.overlayPath}: ${TAMER_OVERLAY_ENV_KEY} must be a string`,\n );\n }\n if (options.env !== declaredEnv) {\n throw new Error(\n `Env overlay ${sources.overlayPath} sets ${TAMER_OVERLAY_ENV_KEY} \"${declaredEnv}\" but this load uses --env \"${options.env ?? \"(none)\"}\".`,\n );\n }\n }\n const { [TAMER_OVERLAY_ENV_KEY]: _strip, ...overlayRest } = overlayObj;\n merged = mergeProjectOverlay(merged, overlayRest);\n }\n raw = merged;\n }\n\n const parsed = CfiConfigSchema.safeParse(materializeCloudflareBindings(raw));\n if (!parsed.success) {\n throw new Error(`Invalid Tamer project config: ${parsed.error.message}`);\n }\n return parsed.data as CfiConfig;\n}\n\nexport async function getWorkers(\n config: CfiConfig,\n baseDir?: string,\n): Promise<[string, WorkerConfig][]> {\n const cwd = baseDir ?? process.cwd();\n\n if (\"worker\" in config && config.worker) {\n const w = await resolveWorkerConfigRef(config.worker, cwd);\n return [[\"default\", w]];\n }\n if (\"workers\" in config && config.workers) {\n const entries: [string, WorkerConfig][] = [];\n for (const [key, wc] of Object.entries(config.workers)) {\n entries.push([key, await resolveWorkerConfigRef(wc, cwd)]);\n }\n return entries;\n }\n return [];\n}\n\nasync function resolveWorkerConfigRef(\n wc: WorkerConfig,\n baseDir: string,\n): Promise<WorkerConfig> {\n if (!wc.config) return wc;\n const configPath = resolve(baseDir, wc.config);\n const mod = await import(configPath);\n const loaded = mod.default;\n if (!loaded) {\n throw new Error(`No default export in ${configPath}`);\n }\n return {\n ...loaded,\n path: wc.path,\n config: wc.config,\n } as WorkerConfig;\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { n as loadConfig, t as getWorkers } from "./loader-DAvCKLTT.mjs";
1
+ import { n as loadConfig, t as getWorkers } from "./loader-DnT9iqz9.mjs";
2
2
  import { n as cloudflareAccountIdFromEnv, t as CFApiClient } from "./CFApiClient-DhbyyV71.mjs";
3
- import { _ as namingFromConfig, c as d1SkipsProvisionAndMigrate, g as wranglerConfigCliArgs, p as resolveWorkerConfig, s as d1CloudflareDatabaseName, t as fetchStackImports } from "./fetchStackImports-C-1THPYL.mjs";
4
- import { f as stackNameForConfig, t as StateManager } from "./StateManager-DTqtLLVX.mjs";
3
+ import { _ as wranglerConfigCliArgs, c as d1CloudflareDatabaseName, l as d1SkipsProvisionAndMigrate, m as resolveWorkerConfig, t as fetchStackImports, v as namingFromConfig } from "./fetchStackImports-ClUYZy_U.mjs";
4
+ import { f as stackNameForConfig, t as StateManager } from "./StateManager-JLBtz9V-.mjs";
5
5
  import "./r2S3EmptyBucket-DD81ZWQ7.mjs";
6
- import { n as writeWranglerJson, t as generateWranglerConfig } from "./generator-Ba-vqyBG.mjs";
6
+ import { n as writeWranglerJson, t as generateWranglerConfig } from "./generator-h_VG0Q5f.mjs";
7
7
  import { t as spawnWranglerSync } from "./wranglerSpawn-DmEz0ldT.mjs";
8
8
 
9
9
  //#region src/features/d1/d1.migrate.ts
@@ -84,4 +84,4 @@ async function runMigrate(options) {
84
84
 
85
85
  //#endregion
86
86
  export { runMigrate };
87
- //# sourceMappingURL=migrate-BpW6JkIg.mjs.map
87
+ //# sourceMappingURL=migrate-Bwl0w6XN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-BpW6JkIg.mjs","names":["databases: string[]"],"sources":["../src/features/d1/d1.migrate.ts","../src/cli/commands/migrate.ts"],"sourcesContent":["import type { D1ResourceConfig, D1StateEntry } from \"./d1.types.js\";\nimport { wranglerConfigCliArgs } from \"../../core/wrangler/wranglerOutFile.js\";\nimport { spawnWranglerSync } from \"../../core/wrangler/wranglerSpawn.js\";\nimport type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport {\n d1CloudflareDatabaseName,\n d1SkipsProvisionAndMigrate,\n} from \"./d1.ownership.js\";\n\n/**\n * Apply Cloudflare D1 migrations for every D1 in `resources`.\n *\n * Wrangler requires `d1 migrations apply <DATABASE>` (positional). Tamer\n * resolves the derived database name per env (single) or per shard, and\n * invokes wrangler once per database.\n *\n * Adds `--remote` for non-`local` envs so migrations target the live D1, not\n * the local SQLite cache. Skips D1s owned externally or flagged\n * `preserveOnDestroy` (cross-stack).\n */\nexport async function d1Migrate(\n resources: D1ResourceConfig[],\n workerDir: string,\n env: string,\n wranglerOutFile: string = \"wrangler.json\",\n naming: NamingEngine,\n state: StateManager,\n): Promise<void> {\n const d1Configs = resources.filter(\n (r) => r.migrationsDir && !d1SkipsProvisionAndMigrate(r),\n );\n if (d1Configs.length === 0) return;\n\n const databases: string[] = [];\n for (const config of d1Configs) {\n if (config.type === \"single\") {\n databases.push(d1CloudflareDatabaseName(config, env, naming));\n continue;\n }\n const all = state.getAll();\n const shards = Object.values(all).filter(\n (e): e is D1StateEntry =>\n e.type === \"d1_database\" && e.logicalName === config.logicalName,\n );\n for (const s of shards) databases.push(s.derivedName);\n }\n\n for (const dbName of databases) {\n const args = [\n \"wrangler\",\n ...wranglerConfigCliArgs(wranglerOutFile),\n \"d1\",\n \"migrations\",\n \"apply\",\n dbName,\n ];\n if (env !== \"local\") args.push(\"--remote\");\n\n // Wrangler prompts for confirmation when stdin is a TTY. Tamer is an\n // automation path (CI / scripts): skip prompts like `d1 migrations apply`\n // does when `CI` is set or stdin is not a TTY (see wrangler help text).\n const result = spawnWranglerSync(args, {\n cwd: workerDir,\n stdio: [\"ignore\", \"inherit\", \"inherit\"],\n env: { CI: \"1\" },\n });\n\n if (result.status !== 0) {\n throw new Error(\n `wrangler d1 migrations apply failed for ${dbName} (exit ${result.status})`,\n );\n }\n }\n}\n","import { loadConfig, getWorkers } from \"../../core/config/loader.js\";\nimport { cloudflareAccountIdFromEnv } from \"../../core/cloudflareEnv.js\";\nimport { namingFromConfig } from \"../../core/config/namingFromConfig.js\";\nimport { StateManager } from \"../../core/state/StateManager.js\";\nimport { stackNameForConfig } from \"../../core/state/stackName.js\";\nimport { fetchStackImports } from \"../../core/imports/fetchStackImports.js\";\nimport { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { resolveWorkerConfig } from \"../../core/config/resolver.js\";\nimport {\n generateWranglerConfig,\n writeWranglerJson,\n} from \"../../core/wrangler/generator.js\";\nimport { d1Migrate } from \"../../features/d1/index.js\";\n\nexport async function runMigrate(options: {\n worker?: string;\n env?: string;\n configPath?: string;\n}): Promise<void> {\n const workerFilter = options.worker;\n const env = options.env ?? \"local\";\n const configPath = options.configPath;\n const baseDir = process.cwd();\n\n const config = await loadConfig(configPath, { env });\n const accountId =\n config.account_id ?? cloudflareAccountIdFromEnv();\n if (!accountId) {\n throw new Error(\n \"account_id required in config or CLOUDFLARE_ACCOUNT_ID env var\",\n );\n }\n\n const naming = namingFromConfig(config);\n const api = new CFApiClient(accountId);\n const state = new StateManager(\n config.tenant.id,\n env,\n stackNameForConfig(config),\n );\n await state.hydrate(api);\n const imports = await fetchStackImports(api, config, env);\n\n const workers = await getWorkers(config, baseDir);\n const toRun = workerFilter\n ? workers.filter(([k]) => k === workerFilter)\n : workers;\n\n if (toRun.length === 0) {\n throw new Error(\n workerFilter\n ? `Worker \"${workerFilter}\" not found`\n : \"No workers configured\",\n );\n }\n\n for (const [workerKey, workerConfig] of toRun) {\n const resolved = await resolveWorkerConfig(\n config,\n workerKey,\n workerConfig,\n env,\n baseDir,\n accountId,\n naming,\n state,\n { imports },\n );\n const wranglerConfig = generateWranglerConfig(resolved, state, naming);\n writeWranglerJson(resolved.workerDir, wranglerConfig, resolved.wranglerOutFile);\n\n const resources = resolved.resources ?? {};\n await d1Migrate(\n resources.d1 ?? [],\n resolved.workerDir,\n env,\n resolved.wranglerOutFile,\n naming,\n state,\n );\n console.log(`Migrations applied for ${workerKey}`);\n }\n\n console.log(`Migrate complete for env: ${env}`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,eAAsB,UACpB,WACA,WACA,KACA,kBAA0B,iBAC1B,QACA,OACe;CACf,MAAM,YAAY,UAAU,QACzB,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,CACzD;AACD,KAAI,UAAU,WAAW,EAAG;CAE5B,MAAMA,YAAsB,EAAE;AAC9B,MAAK,MAAM,UAAU,WAAW;AAC9B,MAAI,OAAO,SAAS,UAAU;AAC5B,aAAU,KAAK,yBAAyB,QAAQ,KAAK,OAAO,CAAC;AAC7D;;EAEF,MAAM,MAAM,MAAM,QAAQ;EAC1B,MAAM,SAAS,OAAO,OAAO,IAAI,CAAC,QAC/B,MACC,EAAE,SAAS,iBAAiB,EAAE,gBAAgB,OAAO,YACxD;AACD,OAAK,MAAM,KAAK,OAAQ,WAAU,KAAK,EAAE,YAAY;;AAGvD,MAAK,MAAM,UAAU,WAAW;EAC9B,MAAM,OAAO;GACX;GACA,GAAG,sBAAsB,gBAAgB;GACzC;GACA;GACA;GACA;GACD;AACD,MAAI,QAAQ,QAAS,MAAK,KAAK,WAAW;EAK1C,MAAM,SAAS,kBAAkB,MAAM;GACrC,KAAK;GACL,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,KAAK,EAAE,IAAI,KAAK;GACjB,CAAC;AAEF,MAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MACR,2CAA2C,OAAO,SAAS,OAAO,OAAO,GAC1E;;;;;;ACzDP,eAAsB,WAAW,SAIf;CAChB,MAAM,eAAe,QAAQ;CAC7B,MAAM,MAAM,QAAQ,OAAO;CAC3B,MAAM,aAAa,QAAQ;CAC3B,MAAM,UAAU,QAAQ,KAAK;CAE7B,MAAM,SAAS,MAAM,WAAW,YAAY,EAAE,KAAK,CAAC;CACpD,MAAM,YACJ,OAAO,cAAc,4BAA4B;AACnD,KAAI,CAAC,UACH,OAAM,IAAI,MACR,iEACD;CAGH,MAAM,SAAS,iBAAiB,OAAO;CACvC,MAAM,MAAM,IAAI,YAAY,UAAU;CACtC,MAAM,QAAQ,IAAI,aAChB,OAAO,OAAO,IACd,KACA,mBAAmB,OAAO,CAC3B;AACD,OAAM,MAAM,QAAQ,IAAI;CACxB,MAAM,UAAU,MAAM,kBAAkB,KAAK,QAAQ,IAAI;CAEzD,MAAM,UAAU,MAAM,WAAW,QAAQ,QAAQ;CACjD,MAAM,QAAQ,eACV,QAAQ,QAAQ,CAAC,OAAO,MAAM,aAAa,GAC3C;AAEJ,KAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MACR,eACI,WAAW,aAAa,eACxB,wBACL;AAGH,MAAK,MAAM,CAAC,WAAW,iBAAiB,OAAO;EAC7C,MAAM,WAAW,MAAM,oBACrB,QACA,WACA,cACA,KACA,SACA,WACA,QACA,OACA,EAAE,SAAS,CACZ;EACD,MAAM,iBAAiB,uBAAuB,UAAU,OAAO,OAAO;AACtE,oBAAkB,SAAS,WAAW,gBAAgB,SAAS,gBAAgB;AAG/E,QAAM,WADY,SAAS,aAAa,EAAE,EAE9B,MAAM,EAAE,EAClB,SAAS,WACT,KACA,SAAS,iBACT,QACA,MACD;AACD,UAAQ,IAAI,0BAA0B,YAAY;;AAGpD,SAAQ,IAAI,6BAA6B,MAAM"}
1
+ {"version":3,"file":"migrate-Bwl0w6XN.mjs","names":["databases: string[]"],"sources":["../src/features/d1/d1.migrate.ts","../src/cli/commands/migrate.ts"],"sourcesContent":["import type { D1ResourceConfig, D1StateEntry } from \"./d1.types.js\";\nimport { wranglerConfigCliArgs } from \"../../core/wrangler/wranglerOutFile.js\";\nimport { spawnWranglerSync } from \"../../core/wrangler/wranglerSpawn.js\";\nimport type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport {\n d1CloudflareDatabaseName,\n d1SkipsProvisionAndMigrate,\n} from \"./d1.ownership.js\";\n\n/**\n * Apply Cloudflare D1 migrations for every D1 in `resources`.\n *\n * Wrangler requires `d1 migrations apply <DATABASE>` (positional). Tamer\n * resolves the derived database name per env (single) or per shard, and\n * invokes wrangler once per database.\n *\n * Adds `--remote` for non-`local` envs so migrations target the live D1, not\n * the local SQLite cache. Skips D1s owned externally or flagged\n * `preserveOnDestroy` (cross-stack).\n */\nexport async function d1Migrate(\n resources: D1ResourceConfig[],\n workerDir: string,\n env: string,\n wranglerOutFile: string = \"wrangler.json\",\n naming: NamingEngine,\n state: StateManager,\n): Promise<void> {\n const d1Configs = resources.filter(\n (r) => r.migrationsDir && !d1SkipsProvisionAndMigrate(r),\n );\n if (d1Configs.length === 0) return;\n\n const databases: string[] = [];\n for (const config of d1Configs) {\n if (config.type === \"single\") {\n databases.push(d1CloudflareDatabaseName(config, env, naming));\n continue;\n }\n const all = state.getAll();\n const shards = Object.values(all).filter(\n (e): e is D1StateEntry =>\n e.type === \"d1_database\" && e.logicalName === config.logicalName,\n );\n for (const s of shards) databases.push(s.derivedName);\n }\n\n for (const dbName of databases) {\n const args = [\n \"wrangler\",\n ...wranglerConfigCliArgs(wranglerOutFile),\n \"d1\",\n \"migrations\",\n \"apply\",\n dbName,\n ];\n if (env !== \"local\") args.push(\"--remote\");\n\n // Wrangler prompts for confirmation when stdin is a TTY. Tamer is an\n // automation path (CI / scripts): skip prompts like `d1 migrations apply`\n // does when `CI` is set or stdin is not a TTY (see wrangler help text).\n const result = spawnWranglerSync(args, {\n cwd: workerDir,\n stdio: [\"ignore\", \"inherit\", \"inherit\"],\n env: { CI: \"1\" },\n });\n\n if (result.status !== 0) {\n throw new Error(\n `wrangler d1 migrations apply failed for ${dbName} (exit ${result.status})`,\n );\n }\n }\n}\n","import { loadConfig, getWorkers } from \"../../core/config/loader.js\";\nimport { cloudflareAccountIdFromEnv } from \"../../core/cloudflareEnv.js\";\nimport { namingFromConfig } from \"../../core/config/namingFromConfig.js\";\nimport { StateManager } from \"../../core/state/StateManager.js\";\nimport { stackNameForConfig } from \"../../core/state/stackName.js\";\nimport { fetchStackImports } from \"../../core/imports/fetchStackImports.js\";\nimport { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { resolveWorkerConfig } from \"../../core/config/resolver.js\";\nimport {\n generateWranglerConfig,\n writeWranglerJson,\n} from \"../../core/wrangler/generator.js\";\nimport { d1Migrate } from \"../../features/d1/index.js\";\n\nexport async function runMigrate(options: {\n worker?: string;\n env?: string;\n configPath?: string;\n}): Promise<void> {\n const workerFilter = options.worker;\n const env = options.env ?? \"local\";\n const configPath = options.configPath;\n const baseDir = process.cwd();\n\n const config = await loadConfig(configPath, { env });\n const accountId =\n config.account_id ?? cloudflareAccountIdFromEnv();\n if (!accountId) {\n throw new Error(\n \"account_id required in config or CLOUDFLARE_ACCOUNT_ID env var\",\n );\n }\n\n const naming = namingFromConfig(config);\n const api = new CFApiClient(accountId);\n const state = new StateManager(\n config.tenant.id,\n env,\n stackNameForConfig(config),\n );\n await state.hydrate(api);\n const imports = await fetchStackImports(api, config, env);\n\n const workers = await getWorkers(config, baseDir);\n const toRun = workerFilter\n ? workers.filter(([k]) => k === workerFilter)\n : workers;\n\n if (toRun.length === 0) {\n throw new Error(\n workerFilter\n ? `Worker \"${workerFilter}\" not found`\n : \"No workers configured\",\n );\n }\n\n for (const [workerKey, workerConfig] of toRun) {\n const resolved = await resolveWorkerConfig(\n config,\n workerKey,\n workerConfig,\n env,\n baseDir,\n accountId,\n naming,\n state,\n { imports },\n );\n const wranglerConfig = generateWranglerConfig(resolved, state, naming);\n writeWranglerJson(resolved.workerDir, wranglerConfig, resolved.wranglerOutFile);\n\n const resources = resolved.resources ?? {};\n await d1Migrate(\n resources.d1 ?? [],\n resolved.workerDir,\n env,\n resolved.wranglerOutFile,\n naming,\n state,\n );\n console.log(`Migrations applied for ${workerKey}`);\n }\n\n console.log(`Migrate complete for env: ${env}`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,eAAsB,UACpB,WACA,WACA,KACA,kBAA0B,iBAC1B,QACA,OACe;CACf,MAAM,YAAY,UAAU,QACzB,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,CACzD;AACD,KAAI,UAAU,WAAW,EAAG;CAE5B,MAAMA,YAAsB,EAAE;AAC9B,MAAK,MAAM,UAAU,WAAW;AAC9B,MAAI,OAAO,SAAS,UAAU;AAC5B,aAAU,KAAK,yBAAyB,QAAQ,KAAK,OAAO,CAAC;AAC7D;;EAEF,MAAM,MAAM,MAAM,QAAQ;EAC1B,MAAM,SAAS,OAAO,OAAO,IAAI,CAAC,QAC/B,MACC,EAAE,SAAS,iBAAiB,EAAE,gBAAgB,OAAO,YACxD;AACD,OAAK,MAAM,KAAK,OAAQ,WAAU,KAAK,EAAE,YAAY;;AAGvD,MAAK,MAAM,UAAU,WAAW;EAC9B,MAAM,OAAO;GACX;GACA,GAAG,sBAAsB,gBAAgB;GACzC;GACA;GACA;GACA;GACD;AACD,MAAI,QAAQ,QAAS,MAAK,KAAK,WAAW;EAK1C,MAAM,SAAS,kBAAkB,MAAM;GACrC,KAAK;GACL,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,KAAK,EAAE,IAAI,KAAK;GACjB,CAAC;AAEF,MAAI,OAAO,WAAW,EACpB,OAAM,IAAI,MACR,2CAA2C,OAAO,SAAS,OAAO,OAAO,GAC1E;;;;;;ACzDP,eAAsB,WAAW,SAIf;CAChB,MAAM,eAAe,QAAQ;CAC7B,MAAM,MAAM,QAAQ,OAAO;CAC3B,MAAM,aAAa,QAAQ;CAC3B,MAAM,UAAU,QAAQ,KAAK;CAE7B,MAAM,SAAS,MAAM,WAAW,YAAY,EAAE,KAAK,CAAC;CACpD,MAAM,YACJ,OAAO,cAAc,4BAA4B;AACnD,KAAI,CAAC,UACH,OAAM,IAAI,MACR,iEACD;CAGH,MAAM,SAAS,iBAAiB,OAAO;CACvC,MAAM,MAAM,IAAI,YAAY,UAAU;CACtC,MAAM,QAAQ,IAAI,aAChB,OAAO,OAAO,IACd,KACA,mBAAmB,OAAO,CAC3B;AACD,OAAM,MAAM,QAAQ,IAAI;CACxB,MAAM,UAAU,MAAM,kBAAkB,KAAK,QAAQ,IAAI;CAEzD,MAAM,UAAU,MAAM,WAAW,QAAQ,QAAQ;CACjD,MAAM,QAAQ,eACV,QAAQ,QAAQ,CAAC,OAAO,MAAM,aAAa,GAC3C;AAEJ,KAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MACR,eACI,WAAW,aAAa,eACxB,wBACL;AAGH,MAAK,MAAM,CAAC,WAAW,iBAAiB,OAAO;EAC7C,MAAM,WAAW,MAAM,oBACrB,QACA,WACA,cACA,KACA,SACA,WACA,QACA,OACA,EAAE,SAAS,CACZ;EACD,MAAM,iBAAiB,uBAAuB,UAAU,OAAO,OAAO;AACtE,oBAAkB,SAAS,WAAW,gBAAgB,SAAS,gBAAgB;AAG/E,QAAM,WADY,SAAS,aAAa,EAAE,EAE9B,MAAM,EAAE,EAClB,SAAS,WACT,KACA,SAAS,iBACT,QACA,MACD;AACD,UAAQ,IAAI,0BAA0B,YAAY;;AAGpD,SAAQ,IAAI,6BAA6B,MAAM"}