@dragonmastery/tamer 0.43.0 → 0.43.1
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/SecretsVault-DfizRmnN.mjs +3 -0
- package/dist/{apply-J081Hfqc.mjs → apply--ZUmkGmn.mjs} +15 -15
- package/dist/{apply-J081Hfqc.mjs.map → apply--ZUmkGmn.mjs.map} +1 -1
- package/dist/{applyTarget-CTsOrwco.mjs → applyTarget-wzX8VpIA.mjs} +3 -3
- package/dist/{applyTarget-CTsOrwco.mjs.map → applyTarget-wzX8VpIA.mjs.map} +1 -1
- package/dist/{bootstrap-D663FPHF.mjs → bootstrap-5Y32Z1bF.mjs} +4 -4
- package/dist/{bootstrap-D663FPHF.mjs.map → bootstrap-5Y32Z1bF.mjs.map} +1 -1
- package/dist/{cloudflareSnapshot-dKYupX1L.mjs → cloudflareSnapshot-4-UXu92B.mjs} +5 -5
- package/dist/{cloudflareSnapshot-dKYupX1L.mjs.map → cloudflareSnapshot-4-UXu92B.mjs.map} +1 -1
- package/dist/crypto-Dsq43xcZ.mjs +3 -0
- package/dist/{deploy-N8cVT5M9.mjs → deploy-Don2YRuA.mjs} +10 -10
- package/dist/{deploy-N8cVT5M9.mjs.map → deploy-Don2YRuA.mjs.map} +1 -1
- package/dist/{destroy-kkOR_ZBj.mjs → destroy-DgSIeg8b.mjs} +11 -11
- package/dist/{destroy-kkOR_ZBj.mjs.map → destroy-DgSIeg8b.mjs.map} +1 -1
- package/dist/{destroy-tenant-DdObj9pd.mjs → destroy-tenant-BKnB1Edp.mjs} +2 -2
- package/dist/{destroy-tenant-DdObj9pd.mjs.map → destroy-tenant-BKnB1Edp.mjs.map} +1 -1
- package/dist/{dev-zQRvUhdd.mjs → dev-BicIlxwR.mjs} +8 -8
- package/dist/{dev-zQRvUhdd.mjs.map → dev-BicIlxwR.mjs.map} +1 -1
- package/dist/{dns-records.resolve-CUQz6Ivz.mjs → dns-records.resolve-CKl_m1wD.mjs} +1 -1
- package/dist/{dns-records.resolve-CUQz6Ivz.mjs.map → dns-records.resolve-CKl_m1wD.mjs.map} +1 -1
- package/dist/{dns-records.resolve-Dge2kukJ.mjs → dns-records.resolve-N4VzbSlZ.mjs} +1 -1
- package/dist/{dns-records.sync-BnOga2LS.mjs → dns-records.sync-CgZrG_ok.mjs} +3 -3
- package/dist/{dns-records.sync-BnOga2LS.mjs.map → dns-records.sync-CgZrG_ok.mjs.map} +1 -1
- package/dist/{doctor-yTe9cUO5.mjs → doctor-ClV1tg9D.mjs} +2 -2
- package/dist/{doctor-yTe9cUO5.mjs.map → doctor-ClV1tg9D.mjs.map} +1 -1
- package/dist/{drift-B-oPsgPW.mjs → drift-BnJdi6-8.mjs} +7 -7
- package/dist/{drift-B-oPsgPW.mjs.map → drift-BnJdi6-8.mjs.map} +1 -1
- package/dist/drift-CjNvtmAK.mjs +8 -0
- package/dist/{emit-DDH99lzS.mjs → emit-C_sNJiL_.mjs} +3 -3
- package/dist/{emit-DDH99lzS.mjs.map → emit-C_sNJiL_.mjs.map} +1 -1
- package/dist/{env-gc-DrXu7DlG.mjs → env-gc-DcOtNJkG.mjs} +11 -11
- package/dist/{env-gc-DrXu7DlG.mjs.map → env-gc-DcOtNJkG.mjs.map} +1 -1
- package/dist/{env-list-D-wnLl8W.mjs → env-list-B1c0zuhI.mjs} +2 -2
- package/dist/{env-list-D-wnLl8W.mjs.map → env-list-B1c0zuhI.mjs.map} +1 -1
- package/dist/{events-C86vo1gV.mjs → events-tGFCV-57.mjs} +2 -2
- package/dist/{events-C86vo1gV.mjs.map → events-tGFCV-57.mjs.map} +1 -1
- package/dist/{generator-Cu5XUkjr.mjs → generator--De7tWLA.mjs} +2 -2
- package/dist/{generator-Cu5XUkjr.mjs.map → generator--De7tWLA.mjs.map} +1 -1
- package/dist/{import-QJc0fI1h.mjs → import-DbHvqNRp.mjs} +6 -6
- package/dist/{import-QJc0fI1h.mjs.map → import-DbHvqNRp.mjs.map} +1 -1
- package/dist/loader-O14iKXe5.mjs +3 -0
- package/dist/{logpush-job-DZG-3nkJ.mjs → logpush-job-CfBhpy6e.mjs} +2 -2
- package/dist/{logpush-job-DZG-3nkJ.mjs.map → logpush-job-CfBhpy6e.mjs.map} +1 -1
- package/dist/masterKey-DjpTmsn9.mjs +3 -0
- package/dist/{migrate-v1UQCzNi.mjs → migrate-y4tazUUK.mjs} +6 -6
- package/dist/{migrate-v1UQCzNi.mjs.map → migrate-y4tazUUK.mjs.map} +1 -1
- package/dist/{plan-Dp2aTzEU.mjs → plan-WLsyswyB.mjs} +12 -12
- package/dist/{plan-Dp2aTzEU.mjs.map → plan-WLsyswyB.mjs.map} +1 -1
- package/dist/{planFormat-C8mq3sbD.mjs → planFormat-DHjPdYzr.mjs} +1 -1
- package/dist/{planFormat-C8mq3sbD.mjs.map → planFormat-DHjPdYzr.mjs.map} +1 -1
- package/dist/{provision-tenant-DEscl-jo.mjs → provision-tenant-wGPK8MRJ.mjs} +18 -21
- package/dist/{provision-tenant-DEscl-jo.mjs.map → provision-tenant-wGPK8MRJ.mjs.map} +1 -1
- package/dist/{r2S3EmptyBucket-CDE2lTM8.mjs → r2S3EmptyBucket-OKIQdlms.mjs} +1 -1
- package/dist/{r2S3EmptyBucket-CDE2lTM8.mjs.map → r2S3EmptyBucket-OKIQdlms.mjs.map} +1 -1
- package/dist/{registry-CRgobiU4.mjs → registry-D3heJge_.mjs} +4 -4
- package/dist/{registry-CRgobiU4.mjs.map → registry-D3heJge_.mjs.map} +1 -1
- package/dist/{resolveTenantBindings-CXLwAG0F.mjs → resolveTenantBindings-C-3w6e22.mjs} +2 -2
- package/dist/{resolveTenantBindings-CXLwAG0F.mjs.map → resolveTenantBindings-C-3w6e22.mjs.map} +1 -1
- package/dist/secretsDb-B_xO1fwY.mjs +3 -0
- package/dist/{stackOutputs-BMPahRAl.mjs → stackOutputs-DAarU7Q-.mjs} +2 -2
- package/dist/{stackOutputs-BMPahRAl.mjs.map → stackOutputs-DAarU7Q-.mjs.map} +1 -1
- package/dist/{status-CQpgTTeG.mjs → status-h6i0BF9r.mjs} +7 -7
- package/dist/{status-CQpgTTeG.mjs.map → status-h6i0BF9r.mjs.map} +1 -1
- package/dist/{sync-DqMMQ7mQ.mjs → sync-DEflZagk.mjs} +6 -6
- package/dist/{sync-DqMMQ7mQ.mjs.map → sync-DEflZagk.mjs.map} +1 -1
- package/dist/sync-DWsBVffD.mjs +7 -0
- package/dist/tamer.mjs +26 -25
- package/dist/tamer.mjs.map +1 -1
- package/dist/{tamerArtifactsR2-BePICoT8.mjs → tamerArtifactsR2--lL7OBaD.mjs} +2 -2
- package/dist/{tamerArtifactsR2-BePICoT8.mjs.map → tamerArtifactsR2--lL7OBaD.mjs.map} +1 -1
- package/dist/{tenant-2XTWe9j0.mjs → tenant-BH_JoT9H.mjs} +2 -2
- package/dist/{tenant-2XTWe9j0.mjs.map → tenant-BH_JoT9H.mjs.map} +1 -1
- package/dist/{tenant-migrate-B-n4ppSk.mjs → tenant-migrate-C8OXJtYf.mjs} +5 -5
- package/dist/{tenant-migrate-B-n4ppSk.mjs.map → tenant-migrate-C8OXJtYf.mjs.map} +1 -1
- package/dist/{types-BCTgIotG.mjs → types-ChGaMTT3.mjs} +6 -6
- package/dist/{types-BCTgIotG.mjs.map → types-ChGaMTT3.mjs.map} +1 -1
- package/dist/{verifyPlanFile-DrFZjkVY.mjs → verifyPlanFile-BX1NO3yj.mjs} +2 -2
- package/dist/{verifyPlanFile-DrFZjkVY.mjs.map → verifyPlanFile-BX1NO3yj.mjs.map} +1 -1
- package/dist/{wfp-delete-BblKos51.mjs → wfp-delete-Bt00-azB.mjs} +2 -2
- package/dist/{wfp-delete-BblKos51.mjs.map → wfp-delete-Bt00-azB.mjs.map} +1 -1
- package/dist/{wfp-put-oYvLiM_c.mjs → wfp-put-ZLt3oVZo.mjs} +2 -2
- package/dist/{wfp-put-oYvLiM_c.mjs.map → wfp-put-ZLt3oVZo.mjs.map} +1 -1
- package/dist/{worker-route-BPDAwUL0.mjs → worker-route-u4qd5ddC.mjs} +3 -3
- package/dist/{worker-route-BPDAwUL0.mjs.map → worker-route-u4qd5ddC.mjs.map} +1 -1
- package/dist/{workers-D08-ri2Q.mjs → workers-CEPTZmdi.mjs} +2 -2
- package/dist/{workers-D08-ri2Q.mjs.map → workers-CEPTZmdi.mjs.map} +1 -1
- package/dist/wranglerOutFile-BwTiiBhi.mjs +3 -0
- package/dist/{wranglerSpawn-Dg-lr-rf.mjs → wranglerSpawn-DX7fppPf.mjs} +1 -1
- package/dist/{wranglerSpawn-Dg-lr-rf.mjs.map → wranglerSpawn-DX7fppPf.mjs.map} +1 -1
- package/dist/wranglerSpawn-PEDw4vkF.mjs +3 -0
- package/dist/{zoneResolver-Dfp2glm8.mjs → zoneResolver-BPrCHiEV.mjs} +1 -1
- package/dist/{zoneResolver-Dfp2glm8.mjs.map → zoneResolver-BPrCHiEV.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/SecretsVault-D_JTJm5s.mjs +0 -3
- package/dist/crypto-5HwDmS4B.mjs +0 -3
- package/dist/drift-RsT8UGQw.mjs +0 -8
- package/dist/fingerprint-D6E5FTkq.mjs +0 -3
- package/dist/loader-DY6STQU3.mjs +0 -3
- package/dist/masterKey-D9gq3eNP.mjs +0 -3
- package/dist/secretsDb-CMEcKvSi.mjs +0 -3
- package/dist/sync-Blz5emYO.mjs +0 -7
- package/dist/wranglerOutFile-eViugwTw.mjs +0 -3
- package/dist/wranglerSpawn-BUOsdo5R.mjs +0 -3
- /package/dist/{secrets-DVNZwGUS.mjs → secrets-CUBA2cK4.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as materializeTamerResolvable } from "./normalize-DVSTRZhO.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { F as resolveReferencesInString } from "./tamer.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/core/tenant/resolveTenantBindings.ts
|
|
5
5
|
/**
|
|
@@ -62,4 +62,4 @@ function resolveTenantBindings(config, shards, naming, state, env, accountId) {
|
|
|
62
62
|
|
|
63
63
|
//#endregion
|
|
64
64
|
export { resolveTenantBindings, resolveTenantD1Bindings };
|
|
65
|
-
//# sourceMappingURL=resolveTenantBindings-
|
|
65
|
+
//# sourceMappingURL=resolveTenantBindings-C-3w6e22.mjs.map
|
package/dist/{resolveTenantBindings-CXLwAG0F.mjs.map → resolveTenantBindings-C-3w6e22.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTenantBindings-
|
|
1
|
+
{"version":3,"file":"resolveTenantBindings-C-3w6e22.mjs","names":["bindings: Array<\n | { type: \"d1\"; name: string; id: string }\n | { type: \"plain_text\"; name: string; text: string }\n | { type: \"service\"; name: string; service: string; environment?: string }\n >","refCtx: ReferenceContext"],"sources":["../src/core/tenant/resolveTenantBindings.ts"],"sourcesContent":["/**\n * Resolve dispatch script bindings for a provisioned tenant.\n *\n * D1 bindings derive from `tenant.shardBindings` matched to the tenant's\n * shard roles. Vars and services come from `tenant.dispatchVars` /\n * `tenant.dispatchServices` (resolved against state for `${tamer:...}`\n * references).\n */\nimport type { CfiConfig, TenantD1ShardRef } from \"../../types.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type { DispatchScriptBindings } from \"../../core/wfp/buildDispatchUploadForm.js\";\nimport { materializeTamerResolvable } from \"../../dx/normalize.js\";\nimport {\n resolveReferencesInString,\n type ReferenceContext,\n} from \"../../core/references/references.js\";\n\n/**\n * Resolve D1 bindings for the tenant dispatch script.\n * Matches shard roles to `tenant.shardBindings` and produces\n * unified `bindings[]` entries: `{ type: \"d1\", name: binding, id: cfId }`.\n */\nexport function resolveTenantD1Bindings(\n config: CfiConfig,\n shards: TenantD1ShardRef[],\n naming: NamingEngine,\n): Array<{ type: \"d1\"; name: string; id: string }> {\n const shardBindings = config.tenant.shardBindings ?? {};\n return shards.map((shard) => {\n const info = shardBindings[shard.role];\n const binding = info?.binding ?? `DB_${shard.role.toUpperCase().replace(/-/g, \"_\")}`;\n return { type: \"d1\", name: binding, id: shard.cfId };\n });\n}\n\n/**\n * Resolve all dispatch script bindings (D1 + vars + services).\n * References in vars/services are resolved against state.\n * Uses the unified Cloudflare bindings format.\n */\nexport function resolveTenantBindings(\n config: CfiConfig,\n shards: TenantD1ShardRef[],\n naming: NamingEngine,\n state: StateManager,\n env: string,\n accountId: string,\n): DispatchScriptBindings {\n const bindings: Array<\n | { type: \"d1\"; name: string; id: string }\n | { type: \"plain_text\"; name: string; text: string }\n | { type: \"service\"; name: string; service: string; environment?: string }\n > = [];\n\n // D1 bindings from shard roles\n bindings.push(...resolveTenantD1Bindings(config, shards, naming));\n\n // Vars from config.tenant.dispatchVars\n if (config.tenant.dispatchVars) {\n const refCtx: ReferenceContext = {\n config,\n env,\n state,\n naming,\n accountId,\n };\n for (const [key, value] of Object.entries(config.tenant.dispatchVars)) {\n const text = resolveReferencesInString(\n materializeTamerResolvable(value),\n refCtx,\n `tenant.dispatchVars.${key}`,\n );\n bindings.push({ type: \"plain_text\", name: key, text });\n }\n }\n\n // Service bindings from config.tenant.dispatchServices\n if (config.tenant.dispatchServices?.length) {\n const refCtx: ReferenceContext = {\n config,\n env,\n state,\n naming,\n accountId,\n };\n for (const s of config.tenant.dispatchServices) {\n bindings.push({\n type: \"service\",\n name: s.name,\n service: resolveReferencesInString(\n materializeTamerResolvable(s.service),\n refCtx,\n `tenant.dispatchServices.${s.name}.service`,\n ),\n ...(s.environment ? { environment: s.environment } : {}),\n });\n }\n }\n\n return bindings.length > 0 ? { bindings } : {};\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,wBACd,QACA,QACA,QACiD;CACjD,MAAM,gBAAgB,OAAO,OAAO,iBAAiB,EAAE;AACvD,QAAO,OAAO,KAAK,UAAU;AAG3B,SAAO;GAAE,MAAM;GAAM,MAFR,cAAc,MAAM,OACX,WAAW,MAAM,MAAM,KAAK,aAAa,CAAC,QAAQ,MAAM,IAAI;GAC9C,IAAI,MAAM;GAAM;GACpD;;;;;;;AAQJ,SAAgB,sBACd,QACA,QACA,QACA,OACA,KACA,WACwB;CACxB,MAAMA,WAIF,EAAE;AAGN,UAAS,KAAK,GAAG,wBAAwB,QAAQ,QAAQ,OAAO,CAAC;AAGjE,KAAI,OAAO,OAAO,cAAc;EAC9B,MAAMC,SAA2B;GAC/B;GACA;GACA;GACA;GACA;GACD;AACD,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,OAAO,aAAa,EAAE;GACrE,MAAM,OAAO,0BACX,2BAA2B,MAAM,EACjC,QACA,uBAAuB,MACxB;AACD,YAAS,KAAK;IAAE,MAAM;IAAc,MAAM;IAAK;IAAM,CAAC;;;AAK1D,KAAI,OAAO,OAAO,kBAAkB,QAAQ;EAC1C,MAAMA,SAA2B;GAC/B;GACA;GACA;GACA;GACA;GACD;AACD,OAAK,MAAM,KAAK,OAAO,OAAO,iBAC5B,UAAS,KAAK;GACZ,MAAM;GACN,MAAM,EAAE;GACR,SAAS,0BACP,2BAA2B,EAAE,QAAQ,EACrC,QACA,2BAA2B,EAAE,KAAK,UACnC;GACD,GAAI,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,EAAE;GACxD,CAAC;;AAIN,QAAO,SAAS,SAAS,IAAI,EAAE,UAAU,GAAG,EAAE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as materializeTamerResolvable } from "./normalize-DVSTRZhO.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { F as resolveReferencesInString } from "./tamer.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/core/outputs/stackOutputs.ts
|
|
5
5
|
/**
|
|
@@ -66,4 +66,4 @@ function buildOutputsView(config, state) {
|
|
|
66
66
|
|
|
67
67
|
//#endregion
|
|
68
68
|
export { resolveStackOutputs as n, buildOutputsView as t };
|
|
69
|
-
//# sourceMappingURL=stackOutputs-
|
|
69
|
+
//# sourceMappingURL=stackOutputs-DAarU7Q-.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackOutputs-
|
|
1
|
+
{"version":3,"file":"stackOutputs-DAarU7Q-.mjs","names":["out: Record<string, CfiStackOutputValue>","rows: StackOutputRow[]","status: StackOutputRow[\"status\"]"],"sources":["../src/core/outputs/stackOutputs.ts"],"sourcesContent":["/**\n * Tamer's CloudFormation `Outputs` analogue.\n *\n * `tamer.config.ts > outputs` declares named exports as Tamer reference\n * strings (e.g. `\"${tamer:d1:users.id}\"`). After a successful `apply` the\n * engine resolves every entry against the just-completed state and persists\n * the literal under {@link CfiState.stackOutputs}. Sibling stacks consume\n * them via `${tamer:import:<stackName>.<outputName>}` (added separately).\n *\n * Resolution is **strict**: any unresolved/unknown reference fails the\n * apply (and rolls back when `--rollback-on-failure` is set). Read-only\n * commands like `status` use {@link buildOutputsView} which is tolerant\n * and shows the placeholder verbatim alongside the persisted value.\n */\nimport type {\n CfiConfig,\n CfiStackOutputValue,\n} from \"../../types.js\";\nimport { materializeTamerResolvable } from \"../../dx/normalize.js\";\nimport type { NamingEngine } from \"../naming/NamingEngine.js\";\nimport type { StateManager } from \"../state/StateManager.js\";\nimport {\n resolveReferencesInString,\n TamerReferenceError,\n} from \"../references/references.js\";\n\n/**\n * Resolve every `outputs:` entry against the current state. Throws\n * {@link TamerReferenceError} on the first unresolved reference so a failed\n * apply can roll back instead of silently persisting half-resolved values.\n *\n * Pass an explicit `now` only from tests — production code should let it\n * default to wall-clock so `resolvedAt` reflects the real persist time.\n */\nexport function resolveStackOutputs(\n config: CfiConfig,\n ctx: {\n env: string;\n state: StateManager;\n naming: NamingEngine;\n /**\n * Outputs from sibling stacks pre-fetched by `fetchStackImports`.\n * An output may chain through an import (e.g.\n * `outputs: { region: \"${tamer:import:net.region}\" }`) — strict\n * resolution requires the sibling row to be hydrated already.\n */\n imports?: Record<string, Record<string, string>>;\n /** Same as wrangler / apply `accountId` (for `${tamer:config:stack.account_id}` in outputs). */\n accountId?: string;\n },\n now: () => string = () => new Date().toISOString(),\n): Record<string, CfiStackOutputValue> {\n const outputs = config.outputs;\n if (!outputs || Object.keys(outputs).length === 0) return {};\n const refCtx = {\n config,\n env: ctx.env,\n state: ctx.state,\n naming: ctx.naming,\n tolerant: false,\n imports: ctx.imports,\n accountId: ctx.accountId,\n };\n const resolvedAt = now();\n const out: Record<string, CfiStackOutputValue> = {};\n for (const [name, source] of Object.entries(outputs)) {\n const sourceStr = materializeTamerResolvable(source);\n const value = resolveReferencesInString(\n sourceStr,\n refCtx,\n `outputs.${name}`,\n );\n out[name] = { value, source: sourceStr, resolvedAt };\n }\n return out;\n}\n\n/**\n * One row in the `tamer status` outputs panel. Combines the *declared*\n * source (from `tamer.config.ts`) with the *persisted* value (from state)\n * so operators can see drift between \"what the config says\" and \"what we\n * last resolved\". `value` is `null` when the output is declared but has\n * never been resolved (no `apply` yet), or when a stale persisted entry\n * exists for an output that has since been removed from config.\n */\nexport interface StackOutputRow {\n name: string;\n /** Live source from `tamer.config.ts > outputs[name]`, if still declared. */\n declaredSource: string | undefined;\n /** Persisted resolved literal, if `apply` has run for this output. */\n value: string | null;\n /** Source string at last persist (drifts vs. `declaredSource` after edits). */\n persistedSource: string | undefined;\n /** ISO timestamp of last persist (undefined when never resolved). */\n resolvedAt: string | undefined;\n /**\n * `\"resolved\"` when persisted matches declared source, `\"stale\"` when\n * source has drifted since persist (re-run apply), `\"orphan\"` when\n * persisted but no longer declared, `\"pending\"` when declared but never\n * resolved.\n */\n status: \"resolved\" | \"stale\" | \"orphan\" | \"pending\";\n}\n\n/**\n * Tolerant union of declared + persisted outputs for `tamer status` and the\n * machine-readable `--json` envelope. Never throws.\n */\nexport function buildOutputsView(\n config: CfiConfig,\n state: StateManager,\n): StackOutputRow[] {\n const declared = config.outputs ?? {};\n const persisted = state.getStackOutputs();\n const names = new Set<string>([\n ...Object.keys(declared),\n ...Object.keys(persisted),\n ]);\n const rows: StackOutputRow[] = [];\n for (const name of [...names].sort()) {\n const rawDeclared = declared[name];\n const declaredSource =\n rawDeclared !== undefined ? materializeTamerResolvable(rawDeclared) : undefined;\n const p = persisted[name];\n let status: StackOutputRow[\"status\"];\n if (declaredSource && !p) status = \"pending\";\n else if (!declaredSource && p) status = \"orphan\";\n else if (declaredSource && p && declaredSource !== p.source) status = \"stale\";\n else status = \"resolved\";\n rows.push({\n name,\n declaredSource,\n value: p?.value ?? null,\n persistedSource: p?.source,\n resolvedAt: p?.resolvedAt,\n status,\n });\n }\n return rows;\n}\n\nexport { TamerReferenceError };\n"],"mappings":";;;;;;;;;;;;AAkCA,SAAgB,oBACd,QACA,KAcA,6BAA0B,IAAI,MAAM,EAAC,aAAa,EACb;CACrC,MAAM,UAAU,OAAO;AACvB,KAAI,CAAC,WAAW,OAAO,KAAK,QAAQ,CAAC,WAAW,EAAG,QAAO,EAAE;CAC5D,MAAM,SAAS;EACb;EACA,KAAK,IAAI;EACT,OAAO,IAAI;EACX,QAAQ,IAAI;EACZ,UAAU;EACV,SAAS,IAAI;EACb,WAAW,IAAI;EAChB;CACD,MAAM,aAAa,KAAK;CACxB,MAAMA,MAA2C,EAAE;AACnD,MAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,QAAQ,EAAE;EACpD,MAAM,YAAY,2BAA2B,OAAO;AAMpD,MAAI,QAAQ;GAAE,OALA,0BACZ,WACA,QACA,WAAW,OACZ;GACoB,QAAQ;GAAW;GAAY;;AAEtD,QAAO;;;;;;AAkCT,SAAgB,iBACd,QACA,OACkB;CAClB,MAAM,WAAW,OAAO,WAAW,EAAE;CACrC,MAAM,YAAY,MAAM,iBAAiB;CACzC,MAAM,QAAQ,IAAI,IAAY,CAC5B,GAAG,OAAO,KAAK,SAAS,EACxB,GAAG,OAAO,KAAK,UAAU,CAC1B,CAAC;CACF,MAAMC,OAAyB,EAAE;AACjC,MAAK,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,cAAc,SAAS;EAC7B,MAAM,iBACJ,gBAAgB,SAAY,2BAA2B,YAAY,GAAG;EACxE,MAAM,IAAI,UAAU;EACpB,IAAIC;AACJ,MAAI,kBAAkB,CAAC,EAAG,UAAS;WAC1B,CAAC,kBAAkB,EAAG,UAAS;WAC/B,kBAAkB,KAAK,mBAAmB,EAAE,OAAQ,UAAS;MACjE,UAAS;AACd,OAAK,KAAK;GACR;GACA;GACA,OAAO,GAAG,SAAS;GACnB,iBAAiB,GAAG;GACpB,YAAY,GAAG;GACf;GACD,CAAC;;AAEJ,QAAO"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { f as getDispatchNamespaces, m as getLogpushJobs, p as getDnsRecords } from "./normalize-DVSTRZhO.mjs";
|
|
2
|
-
import { $ as
|
|
3
|
-
import { n as resourceModules } from "./registry-
|
|
4
|
-
import "./r2S3EmptyBucket-
|
|
5
|
-
import { r as dnsRecordStateKey, t as dnsRecordAppliesToEnv } from "./dns-records.resolve-
|
|
6
|
-
import { t as logpushJobStatus } from "./logpush-job-
|
|
7
|
-
import { t as buildOutputsView } from "./stackOutputs-
|
|
2
|
+
import { $ as cloudflareAccountIdFromEnv, A as mergeWorkerConfigForResourcePick, C as tenantStateKey, M as resolveDeployedWorkerName, O as stackNameForConfig, Q as CFApiClient, R as effectiveDispatchNamespaceName, g as fetchStackImports, m as namingFromConfig, nt as getWorkers, rt as loadConfig, tt as getConfigBaseDir, v as scanConfigForImports, y as StateManager } from "./tamer.mjs";
|
|
3
|
+
import { n as resourceModules } from "./registry-D3heJge_.mjs";
|
|
4
|
+
import "./r2S3EmptyBucket-OKIQdlms.mjs";
|
|
5
|
+
import { r as dnsRecordStateKey, t as dnsRecordAppliesToEnv } from "./dns-records.resolve-CKl_m1wD.mjs";
|
|
6
|
+
import { t as logpushJobStatus } from "./logpush-job-CfBhpy6e.mjs";
|
|
7
|
+
import { t as buildOutputsView } from "./stackOutputs-DAarU7Q-.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/features/dispatch-namespace/dispatch-namespace.status.ts
|
|
10
10
|
function dispatchNamespaceStatus(resources, env, state, _naming, config) {
|
|
@@ -203,4 +203,4 @@ async function runStatus(options) {
|
|
|
203
203
|
|
|
204
204
|
//#endregion
|
|
205
205
|
export { runStatus };
|
|
206
|
-
//# sourceMappingURL=status-
|
|
206
|
+
//# sourceMappingURL=status-h6i0BF9r.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-CQpgTTeG.mjs","names":["results: Array<{\n logicalName: string;\n namespace: string;\n status: ResourceStatus;\n }>","rows: DnsRecordStatusRow[]","meta: string[]","siblingImports: Record<string, Record<string, string>>","logpushLive:\n | Awaited<ReturnType<CFApiClient[\"logpushAccountJobsList\"]>>\n | undefined","hints: string[]"],"sources":["../src/features/dispatch-namespace/dispatch-namespace.status.ts","../src/features/dns-records/dns-records.status.ts","../src/cli/commands/status.ts"],"sourcesContent":["import type { DispatchNamespaceResourceConfig, CfiConfig } from \"../../types.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type { ResourceStatus } from \"../../types.js\";\nimport { effectiveDispatchNamespaceName } from \"./dispatch-namespace.resolve.js\";\n\nexport function dispatchNamespaceStatus(\n resources: DispatchNamespaceResourceConfig[],\n env: string,\n state: StateManager,\n _naming: NamingEngine,\n config: CfiConfig,\n): Array<{ logicalName: string; namespace: string; status: ResourceStatus }> {\n const results: Array<{\n logicalName: string;\n namespace: string;\n status: ResourceStatus;\n }> = [];\n\n for (const nsConfig of resources) {\n const resolvedName = effectiveDispatchNamespaceName(nsConfig, env, config.tenant);\n const key = `dispatch_ns:${resolvedName}`;\n const entry = state.get(key);\n results.push({\n logicalName: nsConfig.logicalName,\n namespace: resolvedName,\n status:\n entry?.type === \"dispatch_namespace\" ? \"ok\" : \"missing\",\n });\n }\n\n return results;\n}\n","import type { DnsRecordResourceConfig, ResourceStatus } from \"../../types.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport {\n dnsRecordAppliesToEnv,\n dnsRecordStateKey,\n} from \"./dns-records.resolve.js\";\n\nexport interface DnsRecordStatusRow {\n logicalName: string;\n type: string;\n name: string;\n recordId?: string;\n status: ResourceStatus;\n}\n\nexport function dnsRecordStatus(\n resources: DnsRecordResourceConfig[],\n env: string,\n state: StateManager,\n): DnsRecordStatusRow[] {\n const rows: DnsRecordStatusRow[] = [];\n for (const config of resources) {\n if (!dnsRecordAppliesToEnv(config, env)) {\n rows.push({\n logicalName: config.logicalName,\n type: config.type,\n name: config.name,\n status: \"ok\",\n });\n continue;\n }\n const entry = state.get(\n dnsRecordStateKey(config.zoneId, config.type, config.name),\n );\n if (entry?.type === \"dns_record\") {\n rows.push({\n logicalName: config.logicalName,\n type: entry.recordType,\n name: entry.name,\n recordId: entry.recordId,\n status: \"ok\",\n });\n } else {\n rows.push({\n logicalName: config.logicalName,\n type: config.type,\n name: config.name,\n status: \"missing\",\n });\n }\n }\n return rows;\n}\n","import { loadConfig, getWorkers, getConfigBaseDir } 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 { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { dispatchNamespaceStatus } from \"../../features/dispatch-namespace/index.js\";\nimport { dnsRecordStatus } from \"../../features/dns-records/index.js\";\nimport { getDispatchNamespaces, getDnsRecords, getLogpushJobs } from \"../../types.js\";\nimport { logpushJobStatus } from \"../../features/logpush-job/index.js\";\nimport { tenantStateKey } from \"../../core/tenant/tenantKeys.js\";\nimport { resourceModules } from \"../../core/registry/registry.js\";\nimport {\n resolveDeployedWorkerName,\n mergeWorkerConfigForResourcePick,\n} from \"../../core/config/resolver.js\";\nimport { buildOutputsView } from \"../../core/outputs/stackOutputs.js\";\nimport {\n fetchStackImports,\n scanConfigForImports,\n} from \"../../core/imports/fetchStackImports.js\";\n\nexport async function runStatus(options: {\n env?: string;\n configPath?: string;\n /** `product:workspace` — show only this workspace tenant from state. */\n tenant?: string;\n}): Promise<void> {\n const env = options.env ?? \"local\";\n const configPath = options.configPath;\n\n const config = await loadConfig(configPath, { env });\n const baseDir = getConfigBaseDir();\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 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\n const workers = await getWorkers(config, baseDir);\n console.log(\n `\\nStatus for ${config.tenant.name} (${config.tenant.slug}) — env: ${env}\\n`,\n );\n\n if (options.tenant?.trim()) {\n const raw = options.tenant.trim();\n const colon = raw.indexOf(\":\");\n if (colon < 1) {\n throw new Error(\n 'status --tenant expects \"product:workspace\" (e.g. todo:acme)',\n );\n }\n const product = raw.slice(0, colon);\n const workspace = raw.slice(colon + 1);\n const t = state.getTenant(product, workspace);\n console.log(`Workspace tenant ${tenantStateKey(product, workspace)}:`);\n if (!t) {\n console.log(\" (no record in tamer state)\\n\");\n return;\n }\n console.log(` status: ${t.provisioningStatus}`);\n console.log(` dispatch namespace: ${t.dispatchNamespaceName}`);\n console.log(` script: ${t.scriptName}`);\n if (t.d1Shards?.length) {\n console.log(\" D1 shards:\");\n for (const s of t.d1Shards) {\n console.log(` ${s.role}: ${s.derivedName} [${s.cfId}]`);\n }\n }\n console.log();\n return;\n }\n\n const outputRows = buildOutputsView(config, state);\n if (outputRows.length > 0) {\n console.log(\"Stack outputs:\");\n for (const r of outputRows) {\n const valueText =\n r.value === null\n ? \"(unresolved — run apply)\"\n : r.value;\n const meta: string[] = [r.status];\n if (r.status === \"stale\" && r.declaredSource) {\n meta.push(`source drifted → ${r.declaredSource}`);\n }\n console.log(` ${r.name}: ${valueText} [${meta.join(\", \")}]`);\n }\n console.log();\n }\n\n // Inbound imports — show every `${tamer:import:<stack>.<output>}`\n // referenced by config, grouped by source stack. We tolerate fetch\n // failures so `tamer status` still works in offline / partial-cred\n // environments; a missing sibling row just displays \"(unresolved)\".\n const importRefs = scanConfigForImports(config);\n let siblingImports: Record<string, Record<string, string>> = {};\n try {\n siblingImports = await fetchStackImports(api, config, env);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`(could not pre-fetch imported stacks: ${msg})`);\n }\n if (importRefs.length > 0) {\n console.log(\"Stack imports:\");\n const byStack = new Map<string, Set<string>>();\n for (const r of importRefs) {\n if (!byStack.has(r.stack)) byStack.set(r.stack, new Set());\n byStack.get(r.stack)!.add(r.output);\n }\n for (const [stack, outputs] of [...byStack].sort(([a], [b]) =>\n a.localeCompare(b),\n )) {\n console.log(` from stack \"${stack}\":`);\n const stackOutputs = siblingImports[stack] ?? {};\n for (const out of [...outputs].sort()) {\n const v = stackOutputs[out];\n const status = v === undefined ? \"unresolved\" : \"resolved\";\n const value = v ?? \"(missing — run `tamer apply` on that stack)\";\n console.log(` ${out}: ${value} [${status}]`);\n }\n }\n console.log();\n }\n\n const dns = dispatchNamespaceStatus(\n getDispatchNamespaces(config),\n env,\n state,\n naming,\n config,\n );\n if (dns.length > 0) {\n console.log(\"Dispatch namespaces:\");\n for (const r of dns) {\n console.log(` ${r.logicalName} (${r.namespace}) [${r.status}]`);\n }\n console.log();\n }\n\n const tenants = state.listTenants();\n if (tenants.length > 0) {\n console.log(`Tenants (${tenants.length}):`);\n for (const t of tenants.sort((a, b) =>\n `${a.product}:${a.workspace}`.localeCompare(`${b.product}:${b.workspace}`),\n )) {\n const shards = t.d1Shards?.length ?? 0;\n console.log(\n ` ${t.product}:${t.workspace} [${t.provisioningStatus}] ${t.scriptName} (${shards} shard(s))`,\n );\n }\n console.log();\n }\n\n const dnsRows = dnsRecordStatus(getDnsRecords(config), env, state);\n if (dnsRows.length > 0) {\n console.log(\"DNS records:\");\n for (const r of dnsRows) {\n const id = r.recordId ? ` [${r.recordId}]` : \"\";\n console.log(` ${r.logicalName}: ${r.type} ${r.name}${id} [${r.status}]`);\n }\n console.log();\n }\n\n let logpushLive:\n | Awaited<ReturnType<CFApiClient[\"logpushAccountJobsList\"]>>\n | undefined;\n if (env !== \"local\") {\n try {\n logpushLive = await api.logpushAccountJobsList();\n } catch {\n // Token may lack Logpush list; state-only rows still print.\n }\n }\n const logpushRows = logpushJobStatus(\n getLogpushJobs(config),\n config.tenant,\n env,\n state,\n logpushLive,\n );\n if (logpushRows.length > 0) {\n console.log(\"Logpush jobs:\");\n for (const r of logpushRows) {\n const id = r.cfJobId != null ? ` [id ${r.cfJobId}]` : \"\";\n const hints: string[] = [];\n if (r.cfEnabled === false) hints.push(\"disabled on Cloudflare\");\n if (r.cfError) hints.push(`CF error: ${r.cfError}`);\n const hint = hints.length > 0 ? ` — ${hints.join(\"; \")}` : \"\";\n console.log(` ${r.logicalName}: ${r.jobName}${id} [${r.status}]${hint}`);\n }\n console.log();\n }\n\n for (const [workerKey, workerConfig] of workers) {\n console.log(`Worker: ${workerKey}`);\n const deployedName = resolveDeployedWorkerName(\n config,\n workerKey,\n workerConfig,\n env,\n naming,\n );\n const mergedWorker = mergeWorkerConfigForResourcePick(\n config,\n workerKey,\n workerConfig,\n env,\n accountId,\n naming,\n state,\n { referencesMode: \"tolerant\", imports: siblingImports },\n );\n let printedAny = false;\n for (const mod of resourceModules) {\n const resources = mod.pickResources(mergedWorker);\n if (resources.length === 0) continue;\n const rows = mod.status({\n resources,\n env,\n state,\n naming,\n worker: { workerKey, deployedName },\n });\n if (rows.length === 0) continue;\n printedAny = true;\n console.log(` ${mod.label}:`);\n for (const r of rows) {\n console.log(` ${r.binding}: ${r.name} [${r.status}]`);\n }\n }\n if (!printedAny) console.log(\" (no resources)\");\n console.log();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"status-h6i0BF9r.mjs","names":["results: Array<{\n logicalName: string;\n namespace: string;\n status: ResourceStatus;\n }>","rows: DnsRecordStatusRow[]","meta: string[]","siblingImports: Record<string, Record<string, string>>","logpushLive:\n | Awaited<ReturnType<CFApiClient[\"logpushAccountJobsList\"]>>\n | undefined","hints: string[]"],"sources":["../src/features/dispatch-namespace/dispatch-namespace.status.ts","../src/features/dns-records/dns-records.status.ts","../src/cli/commands/status.ts"],"sourcesContent":["import type { DispatchNamespaceResourceConfig, CfiConfig } from \"../../types.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport type { NamingEngine } from \"../../core/naming/NamingEngine.js\";\nimport type { ResourceStatus } from \"../../types.js\";\nimport { effectiveDispatchNamespaceName } from \"./dispatch-namespace.resolve.js\";\n\nexport function dispatchNamespaceStatus(\n resources: DispatchNamespaceResourceConfig[],\n env: string,\n state: StateManager,\n _naming: NamingEngine,\n config: CfiConfig,\n): Array<{ logicalName: string; namespace: string; status: ResourceStatus }> {\n const results: Array<{\n logicalName: string;\n namespace: string;\n status: ResourceStatus;\n }> = [];\n\n for (const nsConfig of resources) {\n const resolvedName = effectiveDispatchNamespaceName(nsConfig, env, config.tenant);\n const key = `dispatch_ns:${resolvedName}`;\n const entry = state.get(key);\n results.push({\n logicalName: nsConfig.logicalName,\n namespace: resolvedName,\n status:\n entry?.type === \"dispatch_namespace\" ? \"ok\" : \"missing\",\n });\n }\n\n return results;\n}\n","import type { DnsRecordResourceConfig, ResourceStatus } from \"../../types.js\";\nimport type { StateManager } from \"../../core/state/StateManager.js\";\nimport {\n dnsRecordAppliesToEnv,\n dnsRecordStateKey,\n} from \"./dns-records.resolve.js\";\n\nexport interface DnsRecordStatusRow {\n logicalName: string;\n type: string;\n name: string;\n recordId?: string;\n status: ResourceStatus;\n}\n\nexport function dnsRecordStatus(\n resources: DnsRecordResourceConfig[],\n env: string,\n state: StateManager,\n): DnsRecordStatusRow[] {\n const rows: DnsRecordStatusRow[] = [];\n for (const config of resources) {\n if (!dnsRecordAppliesToEnv(config, env)) {\n rows.push({\n logicalName: config.logicalName,\n type: config.type,\n name: config.name,\n status: \"ok\",\n });\n continue;\n }\n const entry = state.get(\n dnsRecordStateKey(config.zoneId, config.type, config.name),\n );\n if (entry?.type === \"dns_record\") {\n rows.push({\n logicalName: config.logicalName,\n type: entry.recordType,\n name: entry.name,\n recordId: entry.recordId,\n status: \"ok\",\n });\n } else {\n rows.push({\n logicalName: config.logicalName,\n type: config.type,\n name: config.name,\n status: \"missing\",\n });\n }\n }\n return rows;\n}\n","import { loadConfig, getWorkers, getConfigBaseDir } 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 { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { dispatchNamespaceStatus } from \"../../features/dispatch-namespace/index.js\";\nimport { dnsRecordStatus } from \"../../features/dns-records/index.js\";\nimport { getDispatchNamespaces, getDnsRecords, getLogpushJobs } from \"../../types.js\";\nimport { logpushJobStatus } from \"../../features/logpush-job/index.js\";\nimport { tenantStateKey } from \"../../core/tenant/tenantKeys.js\";\nimport { resourceModules } from \"../../core/registry/registry.js\";\nimport {\n resolveDeployedWorkerName,\n mergeWorkerConfigForResourcePick,\n} from \"../../core/config/resolver.js\";\nimport { buildOutputsView } from \"../../core/outputs/stackOutputs.js\";\nimport {\n fetchStackImports,\n scanConfigForImports,\n} from \"../../core/imports/fetchStackImports.js\";\n\nexport async function runStatus(options: {\n env?: string;\n configPath?: string;\n /** `product:workspace` — show only this workspace tenant from state. */\n tenant?: string;\n}): Promise<void> {\n const env = options.env ?? \"local\";\n const configPath = options.configPath;\n\n const config = await loadConfig(configPath, { env });\n const baseDir = getConfigBaseDir();\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 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\n const workers = await getWorkers(config, baseDir);\n console.log(\n `\\nStatus for ${config.tenant.name} (${config.tenant.slug}) — env: ${env}\\n`,\n );\n\n if (options.tenant?.trim()) {\n const raw = options.tenant.trim();\n const colon = raw.indexOf(\":\");\n if (colon < 1) {\n throw new Error(\n 'status --tenant expects \"product:workspace\" (e.g. todo:acme)',\n );\n }\n const product = raw.slice(0, colon);\n const workspace = raw.slice(colon + 1);\n const t = state.getTenant(product, workspace);\n console.log(`Workspace tenant ${tenantStateKey(product, workspace)}:`);\n if (!t) {\n console.log(\" (no record in tamer state)\\n\");\n return;\n }\n console.log(` status: ${t.provisioningStatus}`);\n console.log(` dispatch namespace: ${t.dispatchNamespaceName}`);\n console.log(` script: ${t.scriptName}`);\n if (t.d1Shards?.length) {\n console.log(\" D1 shards:\");\n for (const s of t.d1Shards) {\n console.log(` ${s.role}: ${s.derivedName} [${s.cfId}]`);\n }\n }\n console.log();\n return;\n }\n\n const outputRows = buildOutputsView(config, state);\n if (outputRows.length > 0) {\n console.log(\"Stack outputs:\");\n for (const r of outputRows) {\n const valueText =\n r.value === null\n ? \"(unresolved — run apply)\"\n : r.value;\n const meta: string[] = [r.status];\n if (r.status === \"stale\" && r.declaredSource) {\n meta.push(`source drifted → ${r.declaredSource}`);\n }\n console.log(` ${r.name}: ${valueText} [${meta.join(\", \")}]`);\n }\n console.log();\n }\n\n // Inbound imports — show every `${tamer:import:<stack>.<output>}`\n // referenced by config, grouped by source stack. We tolerate fetch\n // failures so `tamer status` still works in offline / partial-cred\n // environments; a missing sibling row just displays \"(unresolved)\".\n const importRefs = scanConfigForImports(config);\n let siblingImports: Record<string, Record<string, string>> = {};\n try {\n siblingImports = await fetchStackImports(api, config, env);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`(could not pre-fetch imported stacks: ${msg})`);\n }\n if (importRefs.length > 0) {\n console.log(\"Stack imports:\");\n const byStack = new Map<string, Set<string>>();\n for (const r of importRefs) {\n if (!byStack.has(r.stack)) byStack.set(r.stack, new Set());\n byStack.get(r.stack)!.add(r.output);\n }\n for (const [stack, outputs] of [...byStack].sort(([a], [b]) =>\n a.localeCompare(b),\n )) {\n console.log(` from stack \"${stack}\":`);\n const stackOutputs = siblingImports[stack] ?? {};\n for (const out of [...outputs].sort()) {\n const v = stackOutputs[out];\n const status = v === undefined ? \"unresolved\" : \"resolved\";\n const value = v ?? \"(missing — run `tamer apply` on that stack)\";\n console.log(` ${out}: ${value} [${status}]`);\n }\n }\n console.log();\n }\n\n const dns = dispatchNamespaceStatus(\n getDispatchNamespaces(config),\n env,\n state,\n naming,\n config,\n );\n if (dns.length > 0) {\n console.log(\"Dispatch namespaces:\");\n for (const r of dns) {\n console.log(` ${r.logicalName} (${r.namespace}) [${r.status}]`);\n }\n console.log();\n }\n\n const tenants = state.listTenants();\n if (tenants.length > 0) {\n console.log(`Tenants (${tenants.length}):`);\n for (const t of tenants.sort((a, b) =>\n `${a.product}:${a.workspace}`.localeCompare(`${b.product}:${b.workspace}`),\n )) {\n const shards = t.d1Shards?.length ?? 0;\n console.log(\n ` ${t.product}:${t.workspace} [${t.provisioningStatus}] ${t.scriptName} (${shards} shard(s))`,\n );\n }\n console.log();\n }\n\n const dnsRows = dnsRecordStatus(getDnsRecords(config), env, state);\n if (dnsRows.length > 0) {\n console.log(\"DNS records:\");\n for (const r of dnsRows) {\n const id = r.recordId ? ` [${r.recordId}]` : \"\";\n console.log(` ${r.logicalName}: ${r.type} ${r.name}${id} [${r.status}]`);\n }\n console.log();\n }\n\n let logpushLive:\n | Awaited<ReturnType<CFApiClient[\"logpushAccountJobsList\"]>>\n | undefined;\n if (env !== \"local\") {\n try {\n logpushLive = await api.logpushAccountJobsList();\n } catch {\n // Token may lack Logpush list; state-only rows still print.\n }\n }\n const logpushRows = logpushJobStatus(\n getLogpushJobs(config),\n config.tenant,\n env,\n state,\n logpushLive,\n );\n if (logpushRows.length > 0) {\n console.log(\"Logpush jobs:\");\n for (const r of logpushRows) {\n const id = r.cfJobId != null ? ` [id ${r.cfJobId}]` : \"\";\n const hints: string[] = [];\n if (r.cfEnabled === false) hints.push(\"disabled on Cloudflare\");\n if (r.cfError) hints.push(`CF error: ${r.cfError}`);\n const hint = hints.length > 0 ? ` — ${hints.join(\"; \")}` : \"\";\n console.log(` ${r.logicalName}: ${r.jobName}${id} [${r.status}]${hint}`);\n }\n console.log();\n }\n\n for (const [workerKey, workerConfig] of workers) {\n console.log(`Worker: ${workerKey}`);\n const deployedName = resolveDeployedWorkerName(\n config,\n workerKey,\n workerConfig,\n env,\n naming,\n );\n const mergedWorker = mergeWorkerConfigForResourcePick(\n config,\n workerKey,\n workerConfig,\n env,\n accountId,\n naming,\n state,\n { referencesMode: \"tolerant\", imports: siblingImports },\n );\n let printedAny = false;\n for (const mod of resourceModules) {\n const resources = mod.pickResources(mergedWorker);\n if (resources.length === 0) continue;\n const rows = mod.status({\n resources,\n env,\n state,\n naming,\n worker: { workerKey, deployedName },\n });\n if (rows.length === 0) continue;\n printedAny = true;\n console.log(` ${mod.label}:`);\n for (const r of rows) {\n console.log(` ${r.binding}: ${r.name} [${r.status}]`);\n }\n }\n if (!printedAny) console.log(\" (no resources)\");\n console.log();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { f as getDispatchNamespaces, m as getLogpushJobs, p as getDnsRecords } from "./normalize-DVSTRZhO.mjs";
|
|
2
|
-
import { $ as
|
|
3
|
-
import { n as resourceModules } from "./registry-
|
|
4
|
-
import { n as dispatchNamespaceSync, t as dnsRecordSync } from "./dns-records.sync-
|
|
5
|
-
import { i as logpushJobSync } from "./logpush-job-
|
|
6
|
-
import { i as workerRouteSync } from "./worker-route-
|
|
2
|
+
import { $ as cloudflareAccountIdFromEnv, A as mergeWorkerConfigForResourcePick, O as stackNameForConfig, Q as CFApiClient, g as fetchStackImports, m as namingFromConfig, nt as getWorkers, rt as loadConfig, tt as getConfigBaseDir, y as StateManager } from "./tamer.mjs";
|
|
3
|
+
import { n as resourceModules } from "./registry-D3heJge_.mjs";
|
|
4
|
+
import { n as dispatchNamespaceSync, t as dnsRecordSync } from "./dns-records.sync-CgZrG_ok.mjs";
|
|
5
|
+
import { i as logpushJobSync } from "./logpush-job-CfBhpy6e.mjs";
|
|
6
|
+
import { i as workerRouteSync } from "./worker-route-u4qd5ddC.mjs";
|
|
7
7
|
|
|
8
8
|
//#region src/cli/commands/sync.ts
|
|
9
9
|
async function runSync(options) {
|
|
@@ -84,4 +84,4 @@ async function runSync(options) {
|
|
|
84
84
|
|
|
85
85
|
//#endregion
|
|
86
86
|
export { runSync as t };
|
|
87
|
-
//# sourceMappingURL=sync-
|
|
87
|
+
//# sourceMappingURL=sync-DEflZagk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-
|
|
1
|
+
{"version":3,"file":"sync-DEflZagk.mjs","names":[],"sources":["../src/cli/commands/sync.ts"],"sourcesContent":["import { loadConfig, getWorkers, getConfigBaseDir } 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 { CFApiClient } from \"../../core/api/CFApiClient.js\";\nimport { dispatchNamespaceSync } from \"../../features/dispatch-namespace/index.js\";\nimport { dnsRecordSync } from \"../../features/dns-records/index.js\";\nimport { getDispatchNamespaces, getDnsRecords, getLogpushJobs } from \"../../types.js\";\nimport { logpushJobSync } from \"../../features/logpush-job/index.js\";\nimport { workerRouteSync } from \"../../features/worker-route/index.js\";\nimport { resourceModules } from \"../../core/registry/registry.js\";\nimport { fetchStackImports } from \"../../core/imports/fetchStackImports.js\";\nimport { mergeWorkerConfigForResourcePick } from \"../../core/config/resolver.js\";\n\nexport async function runSync(options: {\n env?: string;\n configPath?: string;\n}): Promise<void> {\n const env = options.env ?? \"local\";\n const configPath = options.configPath;\n\n const config = await loadConfig(configPath, { env });\n const baseDir = getConfigBaseDir();\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 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 // Tolerant pre-fetch: sync runs against existing cloud state, so we\n // pass real import values into worker-route resolution to avoid\n // matching against `${tamer:import:…}` placeholders.\n const imports = await fetchStackImports(api, config, env).catch((err) => {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping cross-stack imports: ${msg}`);\n return {} as Record<string, Record<string, string>>;\n });\n\n async function safeList<T>(\n label: string,\n fn: () => Promise<T[]>,\n ): Promise<T[]> {\n try {\n return await fn();\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping ${label}: ${msg}`);\n return [];\n }\n }\n\n const lists = await Promise.all(\n resourceModules.map((m) =>\n safeList(`${m.label} list`, () => m.fetchAll(api)),\n ),\n );\n\n if (getDispatchNamespaces(config).length > 0) {\n try {\n await dispatchNamespaceSync(\n getDispatchNamespaces(config),\n config.tenant,\n env,\n api,\n state,\n );\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping dispatch namespaces: ${msg}`);\n }\n }\n\n if (getDnsRecords(config).length > 0) {\n try {\n await dnsRecordSync(\n getDnsRecords(config),\n config.tenant,\n env,\n api,\n state,\n );\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping dns records: ${msg}`);\n }\n }\n\n if (getLogpushJobs(config).length > 0 && env !== \"local\") {\n try {\n await logpushJobSync(\n getLogpushJobs(config),\n config.tenant,\n env,\n api,\n state,\n );\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping logpush jobs: ${msg}`);\n }\n }\n\n const workers = await getWorkers(config, baseDir);\n for (const [workerKey, workerConfig] of workers) {\n const mergedWorker = mergeWorkerConfigForResourcePick(\n config,\n workerKey,\n workerConfig,\n env,\n accountId,\n naming,\n state,\n { referencesMode: \"tolerant\", imports },\n );\n resourceModules.forEach((mod, i) => {\n const resources = mod.pickResources(mergedWorker);\n if (resources.length === 0) return;\n mod.sync({\n resources,\n all: lists[i],\n tenant: config.tenant,\n env,\n api,\n state,\n naming,\n config,\n baseDir,\n });\n });\n }\n\n try {\n await workerRouteSync(env, config, baseDir, accountId, naming, state, api, {\n imports,\n });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n console.warn(`[sync] skipping worker routes: ${msg}`);\n }\n\n await state.persist(api);\n console.log(`Synced state for env: ${env}`);\n}\n"],"mappings":";;;;;;;;AAeA,eAAsB,QAAQ,SAGZ;CAChB,MAAM,MAAM,QAAQ,OAAO;CAC3B,MAAM,aAAa,QAAQ;CAE3B,MAAM,SAAS,MAAM,WAAW,YAAY,EAAE,KAAK,CAAC;CACpD,MAAM,UAAU,kBAAkB;CAClC,MAAM,YACJ,OAAO,cAAc,4BAA4B;AACnD,KAAI,CAAC,UACH,OAAM,IAAI,MACR,iEACD;CAGH,MAAM,MAAM,IAAI,YAAY,UAAU;CACtC,MAAM,SAAS,iBAAiB,OAAO;CACvC,MAAM,QAAQ,IAAI,aAChB,OAAO,OAAO,IACd,KACA,mBAAmB,OAAO,CAC3B;AACD,OAAM,MAAM,QAAQ,IAAI;CAIxB,MAAM,UAAU,MAAM,kBAAkB,KAAK,QAAQ,IAAI,CAAC,OAAO,QAAQ;EACvE,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,UAAQ,KAAK,wCAAwC,MAAM;AAC3D,SAAO,EAAE;GACT;CAEF,eAAe,SACb,OACA,IACc;AACd,MAAI;AACF,UAAO,MAAM,IAAI;WACV,KAAK;GACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,WAAQ,KAAK,mBAAmB,MAAM,IAAI,MAAM;AAChD,UAAO,EAAE;;;CAIb,MAAM,QAAQ,MAAM,QAAQ,IAC1B,gBAAgB,KAAK,MACnB,SAAS,GAAG,EAAE,MAAM,cAAc,EAAE,SAAS,IAAI,CAAC,CACnD,CACF;AAED,KAAI,sBAAsB,OAAO,CAAC,SAAS,EACzC,KAAI;AACF,QAAM,sBACJ,sBAAsB,OAAO,EAC7B,OAAO,QACP,KACA,KACA,MACD;UACM,KAAK;EACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,UAAQ,KAAK,wCAAwC,MAAM;;AAI/D,KAAI,cAAc,OAAO,CAAC,SAAS,EACjC,KAAI;AACF,QAAM,cACJ,cAAc,OAAO,EACrB,OAAO,QACP,KACA,KACA,MACD;UACM,KAAK;EACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,UAAQ,KAAK,gCAAgC,MAAM;;AAIvD,KAAI,eAAe,OAAO,CAAC,SAAS,KAAK,QAAQ,QAC/C,KAAI;AACF,QAAM,eACJ,eAAe,OAAO,EACtB,OAAO,QACP,KACA,KACA,MACD;UACM,KAAK;EACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,UAAQ,KAAK,iCAAiC,MAAM;;CAIxD,MAAM,UAAU,MAAM,WAAW,QAAQ,QAAQ;AACjD,MAAK,MAAM,CAAC,WAAW,iBAAiB,SAAS;EAC/C,MAAM,eAAe,iCACnB,QACA,WACA,cACA,KACA,WACA,QACA,OACA;GAAE,gBAAgB;GAAY;GAAS,CACxC;AACD,kBAAgB,SAAS,KAAK,MAAM;GAClC,MAAM,YAAY,IAAI,cAAc,aAAa;AACjD,OAAI,UAAU,WAAW,EAAG;AAC5B,OAAI,KAAK;IACP;IACA,KAAK,MAAM;IACX,QAAQ,OAAO;IACf;IACA;IACA;IACA;IACA;IACA;IACD,CAAC;IACF;;AAGJ,KAAI;AACF,QAAM,gBAAgB,KAAK,QAAQ,SAAS,WAAW,QAAQ,OAAO,KAAK,EACzE,SACD,CAAC;UACK,KAAK;EACZ,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,UAAQ,KAAK,kCAAkC,MAAM;;AAGvD,OAAM,MAAM,QAAQ,IAAI;AACxB,SAAQ,IAAI,yBAAyB,MAAM"}
|
package/dist/tamer.mjs
CHANGED
|
@@ -7967,6 +7967,7 @@ function bytesToHex(bytes) {
|
|
|
7967
7967
|
*/
|
|
7968
7968
|
async function readSecretValueFromStdin() {
|
|
7969
7969
|
if (process.stdin.isTTY) throw new Error("secrets set: pipe the value on stdin (e.g. echo -n 'value' | tamer secrets set NAME --env dev); interactive entry is not supported yet");
|
|
7970
|
+
console.log("secrets set: reading value from stdin…");
|
|
7970
7971
|
const chunks = [];
|
|
7971
7972
|
for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
|
|
7972
7973
|
let value = Buffer.concat(chunks).toString("utf8");
|
|
@@ -8965,14 +8966,14 @@ async function main() {
|
|
|
8965
8966
|
try {
|
|
8966
8967
|
switch (command) {
|
|
8967
8968
|
case "bootstrap":
|
|
8968
|
-
await import("./bootstrap-
|
|
8969
|
+
await import("./bootstrap-5Y32Z1bF.mjs").then((m) => m.runBootstrap(parseBootstrapArgs(rest)));
|
|
8969
8970
|
break;
|
|
8970
8971
|
case "sync":
|
|
8971
|
-
await import("./sync-
|
|
8972
|
+
await import("./sync-DWsBVffD.mjs").then((m) => m.runSync(parseSyncArgs(rest)));
|
|
8972
8973
|
break;
|
|
8973
8974
|
case "apply": {
|
|
8974
8975
|
const a = parseApplyArgs(rest);
|
|
8975
|
-
await import("./apply
|
|
8976
|
+
await import("./apply--ZUmkGmn.mjs").then((m) => m.runApply({
|
|
8976
8977
|
env: a.env,
|
|
8977
8978
|
addShard: a.addShard,
|
|
8978
8979
|
configPath: a.configPath,
|
|
@@ -8984,11 +8985,11 @@ async function main() {
|
|
|
8984
8985
|
break;
|
|
8985
8986
|
}
|
|
8986
8987
|
case "dev":
|
|
8987
|
-
await import("./dev-
|
|
8988
|
+
await import("./dev-BicIlxwR.mjs").then((m) => m.runDev(parseDevArgs(rest)));
|
|
8988
8989
|
break;
|
|
8989
8990
|
case "deploy": {
|
|
8990
8991
|
const d = parseDeployArgs(rest);
|
|
8991
|
-
await import("./deploy-
|
|
8992
|
+
await import("./deploy-Don2YRuA.mjs").then((m) => m.runDeploy({
|
|
8992
8993
|
worker: d.worker,
|
|
8993
8994
|
env: d.env,
|
|
8994
8995
|
configPath: d.configPath,
|
|
@@ -8997,23 +8998,23 @@ async function main() {
|
|
|
8997
8998
|
break;
|
|
8998
8999
|
}
|
|
8999
9000
|
case "migrate":
|
|
9000
|
-
await import("./migrate-
|
|
9001
|
+
await import("./migrate-y4tazUUK.mjs").then((m) => m.runMigrate(parseMigrateArgs(rest)));
|
|
9001
9002
|
break;
|
|
9002
9003
|
case "types":
|
|
9003
|
-
await import("./types-
|
|
9004
|
+
await import("./types-ChGaMTT3.mjs").then((m) => m.runTypes(parseTypesArgs(rest)));
|
|
9004
9005
|
break;
|
|
9005
9006
|
case "status":
|
|
9006
|
-
await import("./status-
|
|
9007
|
+
await import("./status-h6i0BF9r.mjs").then((m) => m.runStatus(parseStatusArgs(rest)));
|
|
9007
9008
|
break;
|
|
9008
9009
|
case "events":
|
|
9009
|
-
await import("./events-
|
|
9010
|
+
await import("./events-tGFCV-57.mjs").then((m) => m.runEvents(parseEventsArgs(rest)));
|
|
9010
9011
|
break;
|
|
9011
9012
|
case "drift":
|
|
9012
|
-
exitStatus = await import("./drift-
|
|
9013
|
+
exitStatus = await import("./drift-CjNvtmAK.mjs").then((m) => m.runDrift(parseDriftArgs(rest)));
|
|
9013
9014
|
break;
|
|
9014
9015
|
case "plan": {
|
|
9015
9016
|
const p = parsePlanArgs(rest);
|
|
9016
|
-
exitStatus = await import("./plan-
|
|
9017
|
+
exitStatus = await import("./plan-WLsyswyB.mjs").then((m) => m.runPlan({
|
|
9017
9018
|
env: p.env,
|
|
9018
9019
|
configPath: p.configPath,
|
|
9019
9020
|
json: p.json,
|
|
@@ -9025,14 +9026,14 @@ async function main() {
|
|
|
9025
9026
|
break;
|
|
9026
9027
|
}
|
|
9027
9028
|
case "import":
|
|
9028
|
-
await import("./import-
|
|
9029
|
+
await import("./import-DbHvqNRp.mjs").then((m) => m.runImport(parseImportArgs(rest)));
|
|
9029
9030
|
break;
|
|
9030
9031
|
case "doctor":
|
|
9031
|
-
exitStatus = await import("./doctor-
|
|
9032
|
+
exitStatus = await import("./doctor-ClV1tg9D.mjs").then((m) => m.runDoctor(parseDoctorArgs(rest)));
|
|
9032
9033
|
break;
|
|
9033
9034
|
case "destroy": {
|
|
9034
9035
|
const d = parseDestroyArgs(rest);
|
|
9035
|
-
await import("./destroy-
|
|
9036
|
+
await import("./destroy-DgSIeg8b.mjs").then((m) => m.runDestroy({
|
|
9036
9037
|
env: d.env,
|
|
9037
9038
|
force: d.force,
|
|
9038
9039
|
skipWorkers: d.skipWorkers,
|
|
@@ -9047,12 +9048,12 @@ async function main() {
|
|
|
9047
9048
|
case "wfp": {
|
|
9048
9049
|
const [sub, ...wfpRest] = rest;
|
|
9049
9050
|
if (sub === "put") {
|
|
9050
|
-
const { parseWfpPutArgs, runWfpPut } = await import("./wfp-put-
|
|
9051
|
+
const { parseWfpPutArgs, runWfpPut } = await import("./wfp-put-ZLt3oVZo.mjs");
|
|
9051
9052
|
await runWfpPut(parseWfpPutArgs(wfpRest));
|
|
9052
9053
|
break;
|
|
9053
9054
|
}
|
|
9054
9055
|
if (sub === "delete") {
|
|
9055
|
-
const { parseWfpDeleteArgs, runWfpDelete } = await import("./wfp-delete-
|
|
9056
|
+
const { parseWfpDeleteArgs, runWfpDelete } = await import("./wfp-delete-Bt00-azB.mjs");
|
|
9056
9057
|
await runWfpDelete(parseWfpDeleteArgs(wfpRest));
|
|
9057
9058
|
break;
|
|
9058
9059
|
}
|
|
@@ -9060,7 +9061,7 @@ async function main() {
|
|
|
9060
9061
|
const tenantSub = wfpRest[0];
|
|
9061
9062
|
const tenantRest = wfpRest.slice(1);
|
|
9062
9063
|
if (tenantSub === "list") {
|
|
9063
|
-
await import("./tenant-
|
|
9064
|
+
await import("./tenant-BH_JoT9H.mjs").then((m) => m.runTenantList({
|
|
9064
9065
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9065
9066
|
configPath: parseStringFlag(wfpRest, "--config"),
|
|
9066
9067
|
json: wfpRest.includes("--json")
|
|
@@ -9068,7 +9069,7 @@ async function main() {
|
|
|
9068
9069
|
break;
|
|
9069
9070
|
}
|
|
9070
9071
|
if (tenantSub === "status") {
|
|
9071
|
-
await import("./tenant-
|
|
9072
|
+
await import("./tenant-BH_JoT9H.mjs").then((m) => m.runTenantStatus({
|
|
9072
9073
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9073
9074
|
product: parseStringFlag(wfpRest, "--product") ?? "",
|
|
9074
9075
|
workspace: parseStringFlag(wfpRest, "--workspace") ?? "",
|
|
@@ -9077,15 +9078,15 @@ async function main() {
|
|
|
9077
9078
|
break;
|
|
9078
9079
|
}
|
|
9079
9080
|
if (tenantSub === "provision") {
|
|
9080
|
-
await import("./provision-tenant-
|
|
9081
|
+
await import("./provision-tenant-wGPK8MRJ.mjs").then((m) => m.runProvisionTenant(parseProvisionTenantArgs(tenantRest)));
|
|
9081
9082
|
break;
|
|
9082
9083
|
}
|
|
9083
9084
|
if (tenantSub === "destroy") {
|
|
9084
|
-
await import("./destroy-tenant-
|
|
9085
|
+
await import("./destroy-tenant-BKnB1Edp.mjs").then((m) => m.runDestroyTenant(parseDestroyTenantArgs(tenantRest)));
|
|
9085
9086
|
break;
|
|
9086
9087
|
}
|
|
9087
9088
|
if (tenantSub === "migrate") {
|
|
9088
|
-
await import("./tenant-migrate-
|
|
9089
|
+
await import("./tenant-migrate-C8OXJtYf.mjs").then((m) => m.runTenantMigrate({
|
|
9089
9090
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9090
9091
|
product: parseStringFlag(wfpRest, "--product") ?? "",
|
|
9091
9092
|
workspace: parseStringFlag(wfpRest, "--workspace") ?? "",
|
|
@@ -9100,14 +9101,14 @@ async function main() {
|
|
|
9100
9101
|
process.exit(1);
|
|
9101
9102
|
}
|
|
9102
9103
|
case "secrets":
|
|
9103
|
-
exitStatus = await import("./secrets-
|
|
9104
|
+
exitStatus = await import("./secrets-CUBA2cK4.mjs").then((m) => m.runSecrets(rest));
|
|
9104
9105
|
break;
|
|
9105
9106
|
case "env":
|
|
9106
|
-
if (rest[0] === "list") await import("./env-list-
|
|
9107
|
+
if (rest[0] === "list") await import("./env-list-B1c0zuhI.mjs").then((m) => m.runEnvList({
|
|
9107
9108
|
configPath: parseStringFlag(rest, "--config"),
|
|
9108
9109
|
json: rest.includes("--json")
|
|
9109
9110
|
}));
|
|
9110
|
-
else if (rest[0] === "gc") await import("./env-gc-
|
|
9111
|
+
else if (rest[0] === "gc") await import("./env-gc-DcOtNJkG.mjs").then((m) => m.runEnvGc({
|
|
9111
9112
|
maxAge: parseStringFlag(rest, "--max-age") ?? "72h",
|
|
9112
9113
|
force: rest.includes("--force"),
|
|
9113
9114
|
dryRun: rest.includes("--dry-run"),
|
|
@@ -9210,5 +9211,5 @@ Environment variables (same as Wrangler):
|
|
|
9210
9211
|
main();
|
|
9211
9212
|
|
|
9212
9213
|
//#endregion
|
|
9213
|
-
export {
|
|
9214
|
+
export { cloudflareAccountIdFromEnv as $, mergeWorkerConfigForResourcePick as A, MASTER_KEY_BYTE_LENGTH as B, tenantStateKey as C, listEnvRows as D, ensureTamerStateDatabase as E, resolveReferencesInString as F, SECRET_HISTORY_CAP as G, masterKeyEnvVarName as H, assertSafeWranglerOutFile as I, ensureTamerSecretsDatabase as J, copyEnvSecretRows as K, wranglerConfigCliArgs as L, resolveDeployedWorkerName as M, resolveWorkerConfig as N, stackNameForConfig as O, rewriteIntraStackServiceTargets as P, CFApiClient as Q, effectiveDispatchNamespaceName as R, tenantShardDatabaseName as S, deleteEnvStateRows as T, parseMasterKey as U, generateMasterKey as V, readMasterKeyFromEnv as W, secretRowKey as X, findTamerSecretsDatabaseUuid as Y, tamerSecretsDatabaseName as Z, importedStackNames as _, reconcileSecrets as a, parseTenantShardRoles as b, vaultReaderFromMap as c, encryptSecretValue as d, cloudflareApiTokenFromEnv as et, createDeploySecretsResources as f, fetchStackImports as g, requiredSecretsForWorker as h, pushSecretsForDeploy as i, mergedWorkerConfigForEnv as j, buildIntraStackScriptNameMap as k, SecretsCryptoError as l, namingFromConfig as m, parseSecretsArgs as n, getWorkers as nt, secretsDrift as o, SecretsVault as p, deleteEnvSecretRows as q, runSecrets as r, loadConfig as rt, secretsPlanItems as s, SECRETS_USAGE as t, getConfigBaseDir as tt, decryptSecretValue as u, scanConfigForImports as v, createEmptyCfiState as w, tenantDispatchScriptName as x, StateManager as y, isEphemeralEnv as z };
|
|
9214
9215
|
//# sourceMappingURL=tamer.mjs.map
|