@dragonmastery/tamer 0.43.0 → 0.43.2
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 +28 -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");
|
|
@@ -7985,8 +7986,10 @@ async function runSecretsSet(options) {
|
|
|
7985
7986
|
configPath: options.configPath
|
|
7986
7987
|
});
|
|
7987
7988
|
const plaintext = options.readValue ? await options.readValue() : await readSecretValueFromStdin();
|
|
7989
|
+
console.log(`secrets set: encrypting ${name}…`);
|
|
7988
7990
|
const encrypted = await encryptSecretValue(plaintext, ctx.masterKey);
|
|
7989
7991
|
const valueHash = await secretValueFingerprint(plaintext);
|
|
7992
|
+
console.log(`secrets set: storing ${name} (${valueHash}) in ${ctx.env} vault…`);
|
|
7990
7993
|
await ctx.vault.upsert(name, encrypted, valueHash, { updatedBy: cliUpdatedBy() });
|
|
7991
7994
|
console.log(`secrets: stored ${name} (${valueHash}) in ${ctx.env} vault`);
|
|
7992
7995
|
}
|
|
@@ -8965,14 +8968,14 @@ async function main() {
|
|
|
8965
8968
|
try {
|
|
8966
8969
|
switch (command) {
|
|
8967
8970
|
case "bootstrap":
|
|
8968
|
-
await import("./bootstrap-
|
|
8971
|
+
await import("./bootstrap-5Y32Z1bF.mjs").then((m) => m.runBootstrap(parseBootstrapArgs(rest)));
|
|
8969
8972
|
break;
|
|
8970
8973
|
case "sync":
|
|
8971
|
-
await import("./sync-
|
|
8974
|
+
await import("./sync-DWsBVffD.mjs").then((m) => m.runSync(parseSyncArgs(rest)));
|
|
8972
8975
|
break;
|
|
8973
8976
|
case "apply": {
|
|
8974
8977
|
const a = parseApplyArgs(rest);
|
|
8975
|
-
await import("./apply
|
|
8978
|
+
await import("./apply--ZUmkGmn.mjs").then((m) => m.runApply({
|
|
8976
8979
|
env: a.env,
|
|
8977
8980
|
addShard: a.addShard,
|
|
8978
8981
|
configPath: a.configPath,
|
|
@@ -8984,11 +8987,11 @@ async function main() {
|
|
|
8984
8987
|
break;
|
|
8985
8988
|
}
|
|
8986
8989
|
case "dev":
|
|
8987
|
-
await import("./dev-
|
|
8990
|
+
await import("./dev-BicIlxwR.mjs").then((m) => m.runDev(parseDevArgs(rest)));
|
|
8988
8991
|
break;
|
|
8989
8992
|
case "deploy": {
|
|
8990
8993
|
const d = parseDeployArgs(rest);
|
|
8991
|
-
await import("./deploy-
|
|
8994
|
+
await import("./deploy-Don2YRuA.mjs").then((m) => m.runDeploy({
|
|
8992
8995
|
worker: d.worker,
|
|
8993
8996
|
env: d.env,
|
|
8994
8997
|
configPath: d.configPath,
|
|
@@ -8997,23 +9000,23 @@ async function main() {
|
|
|
8997
9000
|
break;
|
|
8998
9001
|
}
|
|
8999
9002
|
case "migrate":
|
|
9000
|
-
await import("./migrate-
|
|
9003
|
+
await import("./migrate-y4tazUUK.mjs").then((m) => m.runMigrate(parseMigrateArgs(rest)));
|
|
9001
9004
|
break;
|
|
9002
9005
|
case "types":
|
|
9003
|
-
await import("./types-
|
|
9006
|
+
await import("./types-ChGaMTT3.mjs").then((m) => m.runTypes(parseTypesArgs(rest)));
|
|
9004
9007
|
break;
|
|
9005
9008
|
case "status":
|
|
9006
|
-
await import("./status-
|
|
9009
|
+
await import("./status-h6i0BF9r.mjs").then((m) => m.runStatus(parseStatusArgs(rest)));
|
|
9007
9010
|
break;
|
|
9008
9011
|
case "events":
|
|
9009
|
-
await import("./events-
|
|
9012
|
+
await import("./events-tGFCV-57.mjs").then((m) => m.runEvents(parseEventsArgs(rest)));
|
|
9010
9013
|
break;
|
|
9011
9014
|
case "drift":
|
|
9012
|
-
exitStatus = await import("./drift-
|
|
9015
|
+
exitStatus = await import("./drift-CjNvtmAK.mjs").then((m) => m.runDrift(parseDriftArgs(rest)));
|
|
9013
9016
|
break;
|
|
9014
9017
|
case "plan": {
|
|
9015
9018
|
const p = parsePlanArgs(rest);
|
|
9016
|
-
exitStatus = await import("./plan-
|
|
9019
|
+
exitStatus = await import("./plan-WLsyswyB.mjs").then((m) => m.runPlan({
|
|
9017
9020
|
env: p.env,
|
|
9018
9021
|
configPath: p.configPath,
|
|
9019
9022
|
json: p.json,
|
|
@@ -9025,14 +9028,14 @@ async function main() {
|
|
|
9025
9028
|
break;
|
|
9026
9029
|
}
|
|
9027
9030
|
case "import":
|
|
9028
|
-
await import("./import-
|
|
9031
|
+
await import("./import-DbHvqNRp.mjs").then((m) => m.runImport(parseImportArgs(rest)));
|
|
9029
9032
|
break;
|
|
9030
9033
|
case "doctor":
|
|
9031
|
-
exitStatus = await import("./doctor-
|
|
9034
|
+
exitStatus = await import("./doctor-ClV1tg9D.mjs").then((m) => m.runDoctor(parseDoctorArgs(rest)));
|
|
9032
9035
|
break;
|
|
9033
9036
|
case "destroy": {
|
|
9034
9037
|
const d = parseDestroyArgs(rest);
|
|
9035
|
-
await import("./destroy-
|
|
9038
|
+
await import("./destroy-DgSIeg8b.mjs").then((m) => m.runDestroy({
|
|
9036
9039
|
env: d.env,
|
|
9037
9040
|
force: d.force,
|
|
9038
9041
|
skipWorkers: d.skipWorkers,
|
|
@@ -9047,12 +9050,12 @@ async function main() {
|
|
|
9047
9050
|
case "wfp": {
|
|
9048
9051
|
const [sub, ...wfpRest] = rest;
|
|
9049
9052
|
if (sub === "put") {
|
|
9050
|
-
const { parseWfpPutArgs, runWfpPut } = await import("./wfp-put-
|
|
9053
|
+
const { parseWfpPutArgs, runWfpPut } = await import("./wfp-put-ZLt3oVZo.mjs");
|
|
9051
9054
|
await runWfpPut(parseWfpPutArgs(wfpRest));
|
|
9052
9055
|
break;
|
|
9053
9056
|
}
|
|
9054
9057
|
if (sub === "delete") {
|
|
9055
|
-
const { parseWfpDeleteArgs, runWfpDelete } = await import("./wfp-delete-
|
|
9058
|
+
const { parseWfpDeleteArgs, runWfpDelete } = await import("./wfp-delete-Bt00-azB.mjs");
|
|
9056
9059
|
await runWfpDelete(parseWfpDeleteArgs(wfpRest));
|
|
9057
9060
|
break;
|
|
9058
9061
|
}
|
|
@@ -9060,7 +9063,7 @@ async function main() {
|
|
|
9060
9063
|
const tenantSub = wfpRest[0];
|
|
9061
9064
|
const tenantRest = wfpRest.slice(1);
|
|
9062
9065
|
if (tenantSub === "list") {
|
|
9063
|
-
await import("./tenant-
|
|
9066
|
+
await import("./tenant-BH_JoT9H.mjs").then((m) => m.runTenantList({
|
|
9064
9067
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9065
9068
|
configPath: parseStringFlag(wfpRest, "--config"),
|
|
9066
9069
|
json: wfpRest.includes("--json")
|
|
@@ -9068,7 +9071,7 @@ async function main() {
|
|
|
9068
9071
|
break;
|
|
9069
9072
|
}
|
|
9070
9073
|
if (tenantSub === "status") {
|
|
9071
|
-
await import("./tenant-
|
|
9074
|
+
await import("./tenant-BH_JoT9H.mjs").then((m) => m.runTenantStatus({
|
|
9072
9075
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9073
9076
|
product: parseStringFlag(wfpRest, "--product") ?? "",
|
|
9074
9077
|
workspace: parseStringFlag(wfpRest, "--workspace") ?? "",
|
|
@@ -9077,15 +9080,15 @@ async function main() {
|
|
|
9077
9080
|
break;
|
|
9078
9081
|
}
|
|
9079
9082
|
if (tenantSub === "provision") {
|
|
9080
|
-
await import("./provision-tenant-
|
|
9083
|
+
await import("./provision-tenant-wGPK8MRJ.mjs").then((m) => m.runProvisionTenant(parseProvisionTenantArgs(tenantRest)));
|
|
9081
9084
|
break;
|
|
9082
9085
|
}
|
|
9083
9086
|
if (tenantSub === "destroy") {
|
|
9084
|
-
await import("./destroy-tenant-
|
|
9087
|
+
await import("./destroy-tenant-BKnB1Edp.mjs").then((m) => m.runDestroyTenant(parseDestroyTenantArgs(tenantRest)));
|
|
9085
9088
|
break;
|
|
9086
9089
|
}
|
|
9087
9090
|
if (tenantSub === "migrate") {
|
|
9088
|
-
await import("./tenant-migrate-
|
|
9091
|
+
await import("./tenant-migrate-C8OXJtYf.mjs").then((m) => m.runTenantMigrate({
|
|
9089
9092
|
env: parseStringFlag(wfpRest, "--env"),
|
|
9090
9093
|
product: parseStringFlag(wfpRest, "--product") ?? "",
|
|
9091
9094
|
workspace: parseStringFlag(wfpRest, "--workspace") ?? "",
|
|
@@ -9100,14 +9103,14 @@ async function main() {
|
|
|
9100
9103
|
process.exit(1);
|
|
9101
9104
|
}
|
|
9102
9105
|
case "secrets":
|
|
9103
|
-
exitStatus = await import("./secrets-
|
|
9106
|
+
exitStatus = await import("./secrets-CUBA2cK4.mjs").then((m) => m.runSecrets(rest));
|
|
9104
9107
|
break;
|
|
9105
9108
|
case "env":
|
|
9106
|
-
if (rest[0] === "list") await import("./env-list-
|
|
9109
|
+
if (rest[0] === "list") await import("./env-list-B1c0zuhI.mjs").then((m) => m.runEnvList({
|
|
9107
9110
|
configPath: parseStringFlag(rest, "--config"),
|
|
9108
9111
|
json: rest.includes("--json")
|
|
9109
9112
|
}));
|
|
9110
|
-
else if (rest[0] === "gc") await import("./env-gc-
|
|
9113
|
+
else if (rest[0] === "gc") await import("./env-gc-DcOtNJkG.mjs").then((m) => m.runEnvGc({
|
|
9111
9114
|
maxAge: parseStringFlag(rest, "--max-age") ?? "72h",
|
|
9112
9115
|
force: rest.includes("--force"),
|
|
9113
9116
|
dryRun: rest.includes("--dry-run"),
|
|
@@ -9210,5 +9213,5 @@ Environment variables (same as Wrangler):
|
|
|
9210
9213
|
main();
|
|
9211
9214
|
|
|
9212
9215
|
//#endregion
|
|
9213
|
-
export {
|
|
9216
|
+
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
9217
|
//# sourceMappingURL=tamer.mjs.map
|