@go-to-k/cdkd 0.299.0 → 0.299.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.
Files changed (25) hide show
  1. package/dist/{asg-provider-CGN1a3d3.js → asg-provider-C6USPLiS.js} +2 -2
  2. package/dist/{asg-provider-CGN1a3d3.js.map → asg-provider-C6USPLiS.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-4K_B3N08.js → deploy-engine-DlLwYRJk.js} +431 -209
  5. package/dist/deploy-engine-DlLwYRJk.js.map +1 -0
  6. package/dist/iam-policy-targets-Pn2m0R67.js.map +1 -1
  7. package/dist/{iam-role-provider-BKnf387o.js → iam-role-provider-D5B5lEmu.js} +2 -2
  8. package/dist/{iam-role-provider-BKnf387o.js.map → iam-role-provider-D5B5lEmu.js.map} +1 -1
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -2
  12. package/dist/{neptune-provider-CR19ID_J.js → neptune-provider-Ba5va85p.js} +2 -2
  13. package/dist/{neptune-provider-CR19ID_J.js.map → neptune-provider-Ba5va85p.js.map} +1 -1
  14. package/dist/{program-BgsCaZFy.js → program-TA6lNkLr.js} +88 -25
  15. package/dist/program-TA6lNkLr.js.map +1 -0
  16. package/dist/{provider-classes-DxHQcC1K.js → provider-classes-WJRB6zvO.js} +31 -16
  17. package/dist/provider-classes-WJRB6zvO.js.map +1 -0
  18. package/dist/{rds-provider-BO3U39K0.js → rds-provider-DcUEh3d2.js} +2 -2
  19. package/dist/{rds-provider-BO3U39K0.js.map → rds-provider-DcUEh3d2.js.map} +1 -1
  20. package/dist/{version-DUCWZskc.js → version-Dz0rTkus.js} +2 -2
  21. package/dist/{version-DUCWZskc.js.map → version-Dz0rTkus.js.map} +1 -1
  22. package/package.json +1 -1
  23. package/dist/deploy-engine-4K_B3N08.js.map +0 -1
  24. package/dist/program-BgsCaZFy.js.map +0 -1
  25. package/dist/provider-classes-DxHQcC1K.js.map +0 -1
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-Bj7qH5Ph.js"
2
2
  import { A as UNRENDERABLE, C as looksLikeCdkdGeneratedName, E as withoutGeneratedFallbackName, F as displayStackName, H as truncateCodePoints, I as isPasteableIdent, M as displayAwsMessage, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, S as getCurrentStackName, T as withStackName, V as terminalSafe, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, k as STACK_REF_MAX_CODE_POINTS, o as isStdoutReservedForPayload, r as safeStringify$1, t as describeAwsFailure, u as currentLogLineMasker, v as explicitNamePropertyFor, w as withSkipPrefix, x as getCurrentSkipPrefix, y as generateResourceName, z as safeMsg } from "./aws-failure-text-DtvlUugx.js";
3
3
  import { $ as protectedReplacementAdvice, $n as isAmbiguousOutcomeError, $t as credentialFingerprint, A as isQuotableImportValue, An as UNSHOWABLE_VALUE, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bn as withheldTargetClause, Bt as recoveryCommandFlags, Ct as RETRY_AUXILIARY_OWNER, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as physicalIdShownBesideCommand, G as runDeleteAttempt, Gn as isNameCollisionErrorFrom, H as observeThenDisableProtection, Ht as CUSTOM_RESOURCE_RESPONSE_PREFIX, In as plainOrDescribed, J as DELETION_PROTECTION_DOC_POINTER, Jn as isReplayedNameCollisionFrom, Kn as isNameCooldownError, L as ProtectionFlipRegistry, Ln as quotedOrDescribed, Lt as formatLockExpiry, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as isInertUnquoted, Nt as UNREPRODUCIBLE_LOCK_CLAUSE, On as SHELL_ACTIVE, Ot as hasCreatedBeforeFailure, Pn as pasteableCommand, Pt as buildForceUnlockCommand, Q as pasteableAwsCommand, Qn as isAmbiguousCcHandlerErrorCode, Qt as clientDefaultsFor, R as compensateProtectionFlip, Rn as shellBoundedDisplay, Rt as formatLockOperation, Sn as SynthesisError, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tn as normalizeAwsError, U as protectionFlipKey, Un as isUpdateUnsupportedError, Ut as DEFAULT_STATE_PREFIX, Vt as sanitizeRecoveryValue, Wn as hasReplayMayCollide, Wt as injectiveKey, Xn as markReplayMayCollide, Xt as ambientClientDefaults, Yt as withPasteableAwsProfile, Zn as formatRetryClassificationSignals, Zt as ambientCredentialConfig, _n as ResourceTimeoutError, _t as createMaskedLogSinks, an as DependencyError, ar as isMarkedNonRetryable, at as startInterruptWatch, bt as maskDeep, cn as IntrinsicResolutionRefusalError, cr as markRedactedCause, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dn as LockError, en as AccountIdUnavailableError, er as isIamPropagationError, f as removalWarning, fn as MacroExpansionError, ft as logicalIdShown, gn as ProvisioningError, gt as stateOrphanRecordRemedy, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CrossAccountSecretRefusalError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as commandHole, jt as markAuxiliaryFailure, kn as SHELL_ACTIVE_WHY, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, lr as wrapMaskedAwsError, m as withoutInjectedRemovals, mt as resourceTypeShown, nn as CdkdError, nr as isTransientServerError, or as isThrottlingError, ot as ElapsedBudgetRegistry, pn as MalformedProducerRecordRefusalError, qn as isRecreateRetryableError, qt as producerRecordKey, rr as retryClassificationText, sn as DynamicReferenceRegionAmbiguousError, sr as markNonRetryable, st as monotonicNowMs, tn as AssetError, tr as isRetryableTransientError, ut as compositeIdSeparatorRefusal, vn as ResourceUpdateNotSupportedError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wt as carryCreatedBeforeFailure, xn as StateError, xt as maskerOrIdentity, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as shellQuote, zt as formatLockOwner } from "./iam-policy-targets-Pn2m0R67.js";
4
4
  import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-DBXBcg0J.js";
5
- import { t as getCdkdVersion } from "./version-DUCWZskc.js";
5
+ import { t as getCdkdVersion } from "./version-Dz0rTkus.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -19463,6 +19463,14 @@ function classifyReplaySecretRegion(expression, consumerRegion, importedProducer
19463
19463
  foreignProducerRegions
19464
19464
  };
19465
19465
  }
19466
+ function classifyRecordedSecretRegion(expression, consumerRegion, importedProducerRegions, recordedRegions) {
19467
+ const recorded = recordedRegions?.get(expression);
19468
+ if (recorded === void 0 || regionLessSecretName(expression) === void 0) return classifyReplaySecretRegion(expression, consumerRegion, importedProducerRegions);
19469
+ return canonicalizeRegion(recorded) === canonicalizeRegion(consumerRegion) ? { kind: "local" } : {
19470
+ kind: "recorded-region",
19471
+ region: recorded
19472
+ };
19473
+ }
19466
19474
 
19467
19475
  //#endregion
19468
19476
  //#region src/utils/s3-endpoints.ts
@@ -19651,6 +19659,335 @@ async function constructAttributeForCoreTypes(resource, attributeName, context,
19651
19659
  return NOT_CONSTRUCTED;
19652
19660
  }
19653
19661
 
19662
+ //#endregion
19663
+ //#region src/deployment/reference-provenance-record.ts
19664
+ const SSM_VERSION = /^[0-9]{1,10}$/;
19665
+ const SECRETS_MANAGER_VERSION = /^[A-Za-z0-9_+=.@/-]{32,64}$/;
19666
+ function referenceTokensIn(value, into = /* @__PURE__ */ new Set()) {
19667
+ const walk = (v) => {
19668
+ if (typeof v === "string") {
19669
+ if (!v.includes("{{resolve:")) return;
19670
+ for (const token of dynamicReferenceTokens(v)) into.add(token);
19671
+ return;
19672
+ }
19673
+ if (Array.isArray(v)) {
19674
+ for (const item of v) walk(item);
19675
+ return;
19676
+ }
19677
+ if (v !== null && typeof v === "object") for (const item of Object.values(v)) walk(item);
19678
+ };
19679
+ walk(value);
19680
+ return into;
19681
+ }
19682
+ function recordReferenceTokens(record) {
19683
+ const tokens = referenceTokensIn(record.properties);
19684
+ referenceTokensIn(record.attributes, tokens);
19685
+ referenceTokensIn(record.observedProperties, tokens);
19686
+ return tokens;
19687
+ }
19688
+ function versionShapeOf(token) {
19689
+ if (token.startsWith("{{resolve:secretsmanager:")) return SECRETS_MANAGER_VERSION;
19690
+ if (token.startsWith("{{resolve:ssm:") || token.startsWith("{{resolve:ssm-secure:")) return SSM_VERSION;
19691
+ }
19692
+ function isValidReferenceVersion(token, version) {
19693
+ const shape = versionShapeOf(token);
19694
+ return shape !== void 0 && typeof version === "string" && shape.test(version);
19695
+ }
19696
+ function validReferenceRegion(region) {
19697
+ if (typeof region !== "string") return void 0;
19698
+ return canonicalizeRegion(region) === region && isClientSafeRegion(region) ? region : void 0;
19699
+ }
19700
+ function isPlainObject$2(value) {
19701
+ return value !== null && typeof value === "object" && !Array.isArray(value);
19702
+ }
19703
+ function validateReferenceProvenance(token, raw) {
19704
+ if (!isSingleDynamicReferenceToken(token) || !isPlainObject$2(raw)) return void 0;
19705
+ const versionsRaw = Object.hasOwn(raw, "versions") ? raw["versions"] : void 0;
19706
+ const readRaw = Object.hasOwn(raw, "readVersions") ? raw["readVersions"] : void 0;
19707
+ if (readRaw !== void 0) {
19708
+ if (!Array.isArray(readRaw)) return void 0;
19709
+ const all = Array.isArray(versionsRaw) ? versionsRaw : [];
19710
+ if (!readRaw.every((v) => all.includes(v))) return void 0;
19711
+ }
19712
+ const out = {};
19713
+ const region = validReferenceRegion(Object.hasOwn(raw, "region") ? raw["region"] : void 0);
19714
+ if (region !== void 0) out.region = region;
19715
+ if (Array.isArray(versionsRaw) && versionsRaw.length > 0 && versionsRaw.length <= 8 && versionsRaw.every((v) => isValidReferenceVersion(token, v)) && (readRaw === void 0 || readRaw.every((v) => typeof v === "string"))) {
19716
+ out.versions = [...new Set(versionsRaw)].sort();
19717
+ if (readRaw !== void 0 && readRaw.length > 0) out.readVersions = [...new Set(readRaw)].sort();
19718
+ }
19719
+ return out;
19720
+ }
19721
+ function referenceProvenanceOf(record) {
19722
+ if (!isPlainObject$2(record) || !Object.hasOwn(record, "referenceProvenance")) return void 0;
19723
+ return validatedBag(record["referenceProvenance"]);
19724
+ }
19725
+ function validatedBag(field) {
19726
+ if (!isPlainObject$2(field)) return void 0;
19727
+ const out = Object.create(null);
19728
+ for (const [token, raw] of Object.entries(field)) {
19729
+ const entry = validateReferenceProvenance(token, raw);
19730
+ if (entry !== void 0) out[token] = entry;
19731
+ }
19732
+ return { ...out };
19733
+ }
19734
+ function recordedProvenanceOf(record, token) {
19735
+ if (!isPlainObject$2(record) || !Object.hasOwn(record, "referenceProvenance")) return void 0;
19736
+ const field = record["referenceProvenance"];
19737
+ if (!isPlainObject$2(field) || !Object.hasOwn(field, token)) return void 0;
19738
+ return validateReferenceProvenance(token, field[token]);
19739
+ }
19740
+ function recordedReferenceRegions(record) {
19741
+ const field = referenceProvenanceOf(record);
19742
+ return field === void 0 ? void 0 : regionsOf(field);
19743
+ }
19744
+ function recordedOutputReferenceRegions(state, outputKey) {
19745
+ const field = outputReferenceProvenanceOf(state, outputKey);
19746
+ return field === void 0 ? void 0 : regionsOf(field);
19747
+ }
19748
+ function regionsOf(field) {
19749
+ let out;
19750
+ for (const [token, entry] of Object.entries(field)) {
19751
+ if (entry.region === void 0) continue;
19752
+ (out ??= /* @__PURE__ */ new Map()).set(token, entry.region);
19753
+ }
19754
+ return out;
19755
+ }
19756
+ function keepHeldTokenProvenance(record) {
19757
+ if (!hasReferenceProvenanceField(record)) return record;
19758
+ const field = record.referenceProvenance;
19759
+ if (!isPlainObject$2(field)) return record;
19760
+ const held = recordReferenceTokens(record);
19761
+ const keys = Object.keys(field);
19762
+ if (keys.every((token) => held.has(token))) return record;
19763
+ const kept = {};
19764
+ for (const token of keys) if (held.has(token)) kept[token] = field[token];
19765
+ return {
19766
+ ...record,
19767
+ referenceProvenance: kept
19768
+ };
19769
+ }
19770
+ function hasReferenceProvenanceField(record) {
19771
+ return isPlainObject$2(record) && Object.hasOwn(record, "referenceProvenance") && record["referenceProvenance"] !== void 0;
19772
+ }
19773
+ function outputReferenceProvenanceOf(state, outputKey) {
19774
+ if (!isPlainObject$2(state) || !Object.hasOwn(state, "outputReferenceProvenance")) return;
19775
+ const field = state["outputReferenceProvenance"];
19776
+ if (!isPlainObject$2(field) || !Object.hasOwn(field, outputKey)) return void 0;
19777
+ return validatedBag(field[outputKey]);
19778
+ }
19779
+ function persistable(token, entry) {
19780
+ return (entry === void 0 ? void 0 : validateReferenceProvenance(token, entry)) ?? {};
19781
+ }
19782
+ function tokensUnderPaths(properties, paths) {
19783
+ const out = /* @__PURE__ */ new Set();
19784
+ const descend = (value, path, at) => {
19785
+ if (at === path.length) {
19786
+ referenceTokensIn(value, out);
19787
+ return;
19788
+ }
19789
+ if (Array.isArray(value)) {
19790
+ const next = path[at] === "*" ? at + 1 : at;
19791
+ for (const item of value) descend(item, path, next);
19792
+ return;
19793
+ }
19794
+ if (isPlainObject$2(value) && Object.hasOwn(value, path[at])) descend(value[path[at]], path, at + 1);
19795
+ };
19796
+ for (const path of paths) descend(properties, path, 0);
19797
+ return out;
19798
+ }
19799
+ function provenanceForWrittenRecord(args) {
19800
+ const { record, secrets, previous, inPlace } = args;
19801
+ const previousField = inPlace === void 0 ? void 0 : referenceProvenanceOf(previous);
19802
+ if (!hasPassProvenance(secrets) && previousField === void 0 && args.walkWithoutPassProvenance !== true) return;
19803
+ const tokens = recordReferenceTokens(record);
19804
+ if (tokens.size === 0) return void 0;
19805
+ let kept;
19806
+ if (inPlace !== void 0) {
19807
+ kept = inPlace.createOnly === "all" ? tokens : tokensUnderPaths(record.properties, inPlace.createOnly);
19808
+ if (inPlace.attributesCarried) referenceTokensIn(record.attributes, kept);
19809
+ }
19810
+ const out = {};
19811
+ for (const token of [...tokens].sort()) {
19812
+ const pass = passProvenanceFor(secrets, token);
19813
+ if (kept === void 0 || !kept.has(token)) {
19814
+ out[token] = persistable(token, pass);
19815
+ continue;
19816
+ }
19817
+ const before = previousField !== void 0 && Object.hasOwn(previousField, token) ? previousField[token] : void 0;
19818
+ if (pass === void 0) {
19819
+ out[token] = before === void 0 ? {} : { ...before };
19820
+ continue;
19821
+ }
19822
+ out[token] = persistable(token, unionWithPrevious(pass, before));
19823
+ }
19824
+ return out;
19825
+ }
19826
+ function unionWithPrevious(pass, before) {
19827
+ const out = {};
19828
+ if (pass.region !== void 0 && (before?.region === void 0 || before.region === pass.region)) out.region = pass.region;
19829
+ if (pass.versions !== void 0 && before?.versions !== void 0) {
19830
+ out.versions = [.../* @__PURE__ */ new Set([...before.versions, ...pass.versions])].sort();
19831
+ if (pass.readVersions !== void 0) out.readVersions = [...pass.readVersions];
19832
+ }
19833
+ return out;
19834
+ }
19835
+ function outputProvenanceForPersist(args) {
19836
+ const { outputs, resolvedThisRun, carriedFrom, sinkOf } = args;
19837
+ if (!resolvedThisRun) return carriedFrom !== void 0 && isPlainObject$2(carriedFrom.outputReferenceProvenance) ? carriedFrom.outputReferenceProvenance : void 0;
19838
+ let out;
19839
+ for (const [outputKey, value] of Object.entries(outputs)) {
19840
+ const sink = sinkOf(outputKey);
19841
+ if (!hasPassProvenance(sink)) continue;
19842
+ const tokens = referenceTokensIn(value);
19843
+ if (tokens.size === 0) continue;
19844
+ const entries = {};
19845
+ for (const token of [...tokens].sort()) entries[token] = persistable(token, passProvenanceFor(sink, token));
19846
+ out ??= Object.create(null);
19847
+ out[outputKey] = entries;
19848
+ }
19849
+ return out === void 0 ? void 0 : { ...out };
19850
+ }
19851
+ const KEEP_REFERENCE_PROVENANCE = Symbol("keep reference provenance");
19852
+ function withReferenceProvenance(record, field) {
19853
+ if (field === KEEP_REFERENCE_PROVENANCE) return record;
19854
+ if (field === void 0 && !Object.hasOwn(record, "referenceProvenance")) return record;
19855
+ const { referenceProvenance: _previous, ...rest } = record;
19856
+ return field === void 0 ? rest : {
19857
+ ...rest,
19858
+ referenceProvenance: field
19859
+ };
19860
+ }
19861
+
19862
+ //#endregion
19863
+ //#region src/deployment/intrinsic-resolver/recorded-reference-routes.ts
19864
+ function tokensOf(value) {
19865
+ const out = /* @__PURE__ */ new Set();
19866
+ for (const leaf of wholeStringLeavesOf(value)) for (const token of dynamicReferenceTokens(leaf)) out.add(token);
19867
+ return [...out];
19868
+ }
19869
+ function recordedTokenRoutes(value, record) {
19870
+ if (!hasReferenceProvenanceField(record)) return void 0;
19871
+ const routes = /* @__PURE__ */ new Map();
19872
+ let recorded = false;
19873
+ for (const token of tokensOf(value)) {
19874
+ const entry = recordedProvenanceOf(record, token);
19875
+ const region = entry?.region;
19876
+ const pin = entry?.versions?.length === 1 ? entry.versions[0] : void 0;
19877
+ if (region !== void 0 || pin !== void 0) recorded = true;
19878
+ routes.set(token, {
19879
+ region,
19880
+ pin
19881
+ });
19882
+ }
19883
+ return recorded ? routes : void 0;
19884
+ }
19885
+ async function reresolveByRecordedRoutes(resolver, value, logicalId, context, origin, sourceKey, routes, defaults) {
19886
+ const tokens = [...routes.keys()];
19887
+ const regionOf = (token) => routes.get(token)?.region ?? defaults.region;
19888
+ const unrouted = tokens.filter((token) => routes.get(token)?.region === void 0);
19889
+ if (defaults.proofs !== void 0 && unrouted.length > 0) {
19890
+ if (!defaults.proofs.regionProven(unrouted)) {
19891
+ defaults.proofs.onRegionUnproven();
19892
+ return value;
19893
+ }
19894
+ }
19895
+ const routeOf = (token) => {
19896
+ const region = regionOf(token);
19897
+ return region ? {
19898
+ resolver: resolver.resolverForProducerRegion(region, context),
19899
+ context: withoutProducerRegions(context)
19900
+ } : {
19901
+ resolver,
19902
+ context
19903
+ };
19904
+ };
19905
+ const pins = /* @__PURE__ */ new Map();
19906
+ for (const token of tokens) {
19907
+ const pin = routes.get(token)?.pin;
19908
+ if (pin === void 0) continue;
19909
+ const read = await readsPinnedVersion(token, pin, routeOf(token));
19910
+ if (read === "read") pins.set(token, pin);
19911
+ else if (read === "failed" && context.provenanceCapture !== true) resolver.logger.warn(safeMsg`Could not read the secret version ${resolver.displayMasked(logicalId, context)} was deployed with for ${resolver.displayMasked(origin, context)} (it may have been deprecated or deleted); ${defaults.proofs === void 0 ? "serving its current value instead" : "checking its current value against the physical id instead"}.`);
19912
+ if (read === "short" && defaults.proofs === void 0 && context.provenanceCapture !== true) resolver.logger.warn(safeMsg`Not serving ${resolver.displayMasked(origin, context)} at the secret version ${resolver.displayMasked(logicalId, context)} was deployed with: that value is shorter than four characters, so cdkd could not keep it out of state; serving its current value instead.`);
19913
+ }
19914
+ if (defaults.proofs !== void 0) {
19915
+ const unpinned = tokens.filter((token) => !pins.has(token));
19916
+ if (unpinned.length > 0 && !await defaults.proofs.generationProven(unpinned, routeOf)) {
19917
+ defaults.proofs.onGenerationUnproven();
19918
+ return value;
19919
+ }
19920
+ }
19921
+ const walkContext = pins.size > 0 ? {
19922
+ ...context,
19923
+ referencePins: pins
19924
+ } : context;
19925
+ const regions = new Set(tokens.map((token) => regionOf(token) ?? ""));
19926
+ if (regions.size <= 1) {
19927
+ const [only] = regions;
19928
+ return await resolver.reresolveCrossStackValue(value, only || void 0, walkContext, origin, sourceKey);
19929
+ }
19930
+ return await rebuildByToken(value, async (token) => String(await resolver.reresolveCrossStackValue(token, regionOf(token), walkContext, origin, void 0)));
19931
+ }
19932
+ const failedPins = /* @__PURE__ */ new WeakMap();
19933
+ async function readsPinnedVersion(token, pin, { resolver, context }) {
19934
+ const key = injectiveKey(token, pin);
19935
+ let failed = failedPins.get(resolver);
19936
+ if (failed?.has(key) === true) return "known";
19937
+ const { abandonedResolutions: _collected, ...throwing } = context;
19938
+ const quiet = {
19939
+ ...throwing,
19940
+ provenanceSuppressed: true
19941
+ };
19942
+ try {
19943
+ await resolver.resolveDynamicReferences(token, quiet);
19944
+ } catch (err) {
19945
+ if (isDeliberateResolutionRefusal(err)) throw err;
19946
+ }
19947
+ try {
19948
+ const served = await resolver.resolveDynamicReferences(token, {
19949
+ ...quiet,
19950
+ referencePins: /* @__PURE__ */ new Map([[token, pin]])
19951
+ });
19952
+ return !served.includes("{{resolve:") && served.length < 4 ? "short" : "read";
19953
+ } catch (err) {
19954
+ if (isDeliberateResolutionRefusal(err)) throw err;
19955
+ resolver.logger.debug(safeMsg`Pinned read of ${resolver.displayMasked(token, context)} failed: ${resolver.displayMasked(err instanceof Error ? err.message : String(err), context)}`);
19956
+ if (!isThrottlingError(err)) {
19957
+ if (failed === void 0) {
19958
+ failed = /* @__PURE__ */ new Set();
19959
+ failedPins.set(resolver, failed);
19960
+ }
19961
+ failed.add(key);
19962
+ }
19963
+ return "failed";
19964
+ }
19965
+ }
19966
+ async function rebuildByToken(value, resolveToken) {
19967
+ if (typeof value === "string") {
19968
+ let out = "";
19969
+ let cursor = 0;
19970
+ for (const token of dynamicReferenceTokens(value)) {
19971
+ const at = value.indexOf(token, cursor);
19972
+ if (at < 0) throw new Error("Internal invariant: a scanned dynamic reference was not found in the value it was scanned from");
19973
+ out += value.slice(cursor, at) + await resolveToken(token);
19974
+ cursor = at + token.length;
19975
+ }
19976
+ return out + value.slice(cursor);
19977
+ }
19978
+ if (Array.isArray(value)) {
19979
+ const out = new Array(value.length);
19980
+ for (let i = 0; i < value.length; i++) out[i] = await rebuildByToken(value[i], resolveToken);
19981
+ return out;
19982
+ }
19983
+ if (value !== null && typeof value === "object") {
19984
+ const out = Object.create(null);
19985
+ for (const [k, v] of Object.entries(value)) out[k] = await rebuildByToken(v, resolveToken);
19986
+ return out;
19987
+ }
19988
+ return value;
19989
+ }
19990
+
19654
19991
  //#endregion
19655
19992
  //#region src/deployment/intrinsic-resolver/getatt-construct-app.ts
19656
19993
  async function constructAttributeForAppTypes(resource, attributeName, context, logicalId, resourceType, physicalId, accountId, partition, region) {
@@ -20055,7 +20392,14 @@ async function resolveGetAtt(getAtt, context) {
20055
20392
  structured: isStructured(flatValue),
20056
20393
  redacted: isSensitiveAttributeName(attributeName)
20057
20394
  })}`);
20058
- if (reresolvesNestedReference) return await this.reresolveCrossStackValue(flatValue, nestedStackChildRegionFromLocalArn(resource.physicalId), context, `nested stack ${logicalId} ${this.displayLeaf(attributeName, context)}`, crossStackSourceKey({ "Fn::GetAtt": getAtt }));
20395
+ if (reresolvesNestedReference) {
20396
+ const childRegion = nestedStackChildRegionFromLocalArn(resource.physicalId);
20397
+ const nestedOrigin = `nested stack ${logicalId} ${this.displayLeaf(attributeName, context)}`;
20398
+ const nestedSourceKey = crossStackSourceKey({ "Fn::GetAtt": getAtt });
20399
+ const routes = context.recordedSecretValues === void 0 || carriesSecretMask(flatValue) ? void 0 : recordedTokenRoutes(flatValue, resource);
20400
+ if (routes !== void 0) return await reresolveByRecordedRoutes(this, flatValue, logicalId, context, nestedOrigin, nestedSourceKey, routes, { region: childRegion });
20401
+ return await this.reresolveCrossStackValue(flatValue, childRegion, context, nestedOrigin, nestedSourceKey);
20402
+ }
20059
20403
  return await this.reresolveRecordedReferences(notedFlatValue, logicalId, context, `${logicalId}.${this.displayLeaf(attributeName, context)}`, crossStackSourceKey({ "Fn::GetAtt": getAtt }));
20060
20404
  }
20061
20405
  if (attributeName.includes(".")) {
@@ -20177,22 +20521,38 @@ function recordSecretNamedRead(logicalId, value, context) {
20177
20521
  async function reresolveRecordedReferences(value, logicalId, context, origin, sourceKey) {
20178
20522
  if (!carriesDynamicReference(value) || carriesSecretMask(value)) return value;
20179
20523
  if (context.recordedSecretValues === void 0) return value;
20524
+ const notReresolvingLine = () => this.logger.debug(safeMsg`Not re-resolving the reference(s) in ${this.displayMasked(origin, context)}: the template of ${this.displayMasked(logicalId, context)} does not spell them, and this stack may read a stack in another region, so the region that resolved them is unknown`);
20525
+ const servingAsRecordedLine = () => this.logger.warn(safeMsg`Serving ${this.displayMasked(origin, context)} as recorded, with its {{resolve:...}} reference(s) unresolved: cdkd cannot confirm the secret still holds the value ${this.displayMasked(logicalId, context)} was deployed with, because its physical id does not contain it. Either the secret changed since then (update ${this.displayMasked(logicalId, context)} so cdkd deploys it with the new value), or the value is not part of its name (a custom resource's Data, a name shorter than four characters), and cdkd sends the recorded reference as before.`);
20526
+ const record = Object.hasOwn(context.resources, logicalId) ? context.resources[logicalId] : void 0;
20527
+ const routes = recordedTokenRoutes(value, record);
20528
+ if (routes !== void 0) return await reresolveByRecordedRoutes(this, value, logicalId, context, origin, sourceKey, routes, {
20529
+ region: void 0,
20530
+ proofs: {
20531
+ regionProven: (tokens) => referencesProvenLocal(tokens, logicalId, context) || referencesRegionProven(tokens, context, this.resolverRegion),
20532
+ onRegionUnproven: notReresolvingLine,
20533
+ generationProven: (tokens, routeOf) => this.referencesMatchPhysicalId(tokens, logicalId, context, routeOf),
20534
+ onGenerationUnproven: () => {
20535
+ if (context.provenanceCapture !== true) servingAsRecordedLine();
20536
+ }
20537
+ }
20538
+ });
20180
20539
  if (!referencesProvenLocal(value, logicalId, context) && !referencesRegionProven(value, context, this.resolverRegion)) {
20181
- this.logger.debug(safeMsg`Not re-resolving the reference(s) in ${this.displayMasked(origin, context)}: the template of ${this.displayMasked(logicalId, context)} does not spell them, and this stack may read a stack in another region, so the region that resolved them is unknown`);
20540
+ notReresolvingLine();
20182
20541
  return value;
20183
20542
  }
20184
20543
  if (!await this.referencesMatchPhysicalId(value, logicalId, context)) {
20185
20544
  if (context.provenanceCapture) return value;
20186
- this.logger.warn(safeMsg`Serving ${this.displayMasked(origin, context)} as recorded, with its {{resolve:...}} reference(s) unresolved: cdkd cannot confirm the secret still holds the value ${this.displayMasked(logicalId, context)} was deployed with, because its physical id does not contain it. Either the secret changed since then (update ${this.displayMasked(logicalId, context)} so cdkd deploys it with the new value), or the value is not part of its name (a custom resource's Data, a name shorter than four characters), and cdkd sends the recorded reference as before.`);
20545
+ servingAsRecordedLine();
20187
20546
  return value;
20188
20547
  }
20189
20548
  return await this.reresolveCrossStackValue(value, void 0, context, origin, sourceKey);
20190
20549
  }
20191
- async function referencesMatchPhysicalId(value, logicalId, context) {
20550
+ async function referencesMatchPhysicalId(value, logicalId, context, routeOf) {
20192
20551
  const record = Object.hasOwn(context.resources, logicalId) ? context.resources[logicalId] : void 0;
20193
20552
  const physicalId = typeof record?.physicalId === "string" ? record.physicalId.toLowerCase() : "";
20194
20553
  for (const leaf of wholeStringLeavesOf(value)) for (const token of dynamicReferenceTokens(leaf)) {
20195
- const plaintext = await this.resolveDynamicReferences(token, context);
20554
+ const route = routeOf?.(token);
20555
+ const plaintext = route === void 0 ? await this.resolveDynamicReferences(token, context) : await route.resolver.resolveDynamicReferences(token, route.context);
20196
20556
  if (plaintext.includes("{{resolve:")) continue;
20197
20557
  if (plaintext.length < 4) return false;
20198
20558
  if (!physicalId.includes(plaintext.toLowerCase())) return false;
@@ -21276,7 +21636,7 @@ function secretVerdictScope(resolver) {
21276
21636
  return injectiveKey(credentialFingerprint(ambientCredentialConfig()), canonicalizeRegion(resolver.explicitRegion) ?? "");
21277
21637
  }
21278
21638
  function recordProvenanceOfResolution(resolver, context, token, version) {
21279
- if (context === void 0) return;
21639
+ if (context === void 0 || context.provenanceSuppressed === true) return;
21280
21640
  const resolution = {
21281
21641
  region: canonicalizeRegion(resolver.explicitRegion),
21282
21642
  version,
@@ -21343,14 +21703,21 @@ async function resolveDynamicReferencesWithLogTwin(value, logTwin, context, inhe
21343
21703
  if (!foreign.complete || foreign.substitutions.length !== 1) complete = false;
21344
21704
  continue;
21345
21705
  }
21346
- const dynamicReferenceCacheKey = injectiveKey(credentialFingerprint(ambientCredentialConfig()), fullMatch);
21347
- const cached = this.cachedDynamicReferences.get(dynamicReferenceCacheKey);
21706
+ const pin = context?.referencePins?.get(fullMatch);
21707
+ const credentialKey = credentialFingerprint(ambientCredentialConfig());
21708
+ let dynamicReferenceCacheKey = injectiveKey(credentialKey, fullMatch);
21709
+ let cached = this.cachedDynamicReferences.get(dynamicReferenceCacheKey);
21710
+ const pinnedGeneration = pin !== void 0 && cached?.version !== pin;
21711
+ if (pinnedGeneration) {
21712
+ dynamicReferenceCacheKey = injectiveKey(credentialKey, fullMatch, pin);
21713
+ cached = this.cachedDynamicReferences.get(dynamicReferenceCacheKey);
21714
+ }
21348
21715
  if (cached) {
21349
21716
  if (cached.secret && cached.value && !persistedText) this.refuseSecretAssembledReference(fullMatch, tokenLogText, context);
21350
21717
  const recorded = context?.recordedSecretValues;
21351
21718
  if (cached.secret && cached.value && recorded) {
21352
21719
  recorded.set(cached.value, fullMatch);
21353
- recordResolvedPair(recorded, fullMatch, cached.value);
21720
+ if (!pinnedGeneration) recordResolvedPair(recorded, fullMatch, cached.value);
21354
21721
  }
21355
21722
  if (cached.secret && cached.value) recordProvenanceOfResolution(this, context, fullMatch, cached.version);
21356
21723
  if (service === "ssm" && !cached.secret && recorded && !this.producerRegionGuest) recordProvenPublicExpression(recorded, fullMatch, cached.value);
@@ -21371,18 +21738,19 @@ async function resolveDynamicReferencesWithLogTwin(value, logTwin, context, inhe
21371
21738
  let resolvedVersion;
21372
21739
  if (service === "secretsmanager") {
21373
21740
  const versionOut = {};
21374
- resolved = await this.resolveSecretsManagerReference(inner, context, nameLogText, versionOut);
21741
+ resolved = await this.resolveSecretsManagerReference(inner, context, nameLogText, versionOut, pinnedGeneration ? pin : void 0);
21375
21742
  resolvedVersion = versionOut.version;
21376
21743
  } else if (service === "ssm") {
21377
21744
  const decrypt = context?.skipDynamicReferences !== true;
21378
- const param = await this.resolveSSMReference(parts, decrypt, "ssm", context, nameLogText);
21745
+ const param = await this.resolveSSMReference(parts, decrypt, "ssm", context, nameLogText, pinnedGeneration ? pin : void 0);
21379
21746
  const proofBag = context?.recordedSecretValues;
21747
+ const writesVerdict = !pinnedGeneration;
21380
21748
  if (param.type === "SecureString") {
21381
21749
  if (proofBag) contradictProvenPublicExpression(proofBag, fullMatch);
21382
- if (decrypt) pinSecureVerdict = true;
21383
- else if (persistedText || !this.tokenAssembledForRecording(fullMatch, tokenLogText, context)) this.pinSecretVerdict(fullMatch, true, verdictScope);
21750
+ if (decrypt) pinSecureVerdict = writesVerdict;
21751
+ else if (writesVerdict && (persistedText || !this.tokenAssembledForRecording(fullMatch, tokenLogText, context))) this.pinSecretVerdict(fullMatch, true, verdictScope);
21384
21752
  } else if (!param.secure) {
21385
- this.pinSecretVerdict(fullMatch, false, verdictScope);
21753
+ if (writesVerdict) this.pinSecretVerdict(fullMatch, false, verdictScope);
21386
21754
  if (proofBag && !this.producerRegionGuest) recordProvenPublicExpression(proofBag, fullMatch, param.value);
21387
21755
  } else {
21388
21756
  if (proofBag) contradictProvenPublicExpression(proofBag, fullMatch);
@@ -21398,7 +21766,7 @@ async function resolveDynamicReferencesWithLogTwin(value, logTwin, context, inhe
21398
21766
  resolved = param.value;
21399
21767
  resolvedVersion = param.version;
21400
21768
  } else if (service === "ssm-secure") {
21401
- const param = await this.resolveSSMReference(parts, true, "ssm-secure", context, nameLogText);
21769
+ const param = await this.resolveSSMReference(parts, true, "ssm-secure", context, nameLogText, pinnedGeneration ? pin : void 0);
21402
21770
  if (!param.secure) throw markNonRetryable(new IntrinsicResolutionRefusalError(`Refusing to resolve ${this.displayMasked(tokenLogText, context)}: the parameter is a ${param.type} parameter, and the ssm-secure spelling is defined for SecureString parameters only. Reference it as {{resolve:ssm:...}} if it is public configuration.`));
21403
21771
  isSecret = true;
21404
21772
  resolved = param.value;
@@ -21420,7 +21788,7 @@ async function resolveDynamicReferencesWithLogTwin(value, logTwin, context, inhe
21420
21788
  const recorded = context?.recordedSecretValues;
21421
21789
  if (recorded) {
21422
21790
  recorded.set(resolved, fullMatch);
21423
- recordResolvedPair(recorded, fullMatch, resolved);
21791
+ if (!pinnedGeneration) recordResolvedPair(recorded, fullMatch, resolved);
21424
21792
  }
21425
21793
  recordProvenanceOfResolution(this, context, fullMatch, resolvedVersion);
21426
21794
  if (service === "secretsmanager" || service === "ssm-secure") this.pinSecretVerdict(fullMatch, true, verdictScope);
@@ -21459,7 +21827,7 @@ async function resolveDynamicReferencesWithLogTwin(value, logTwin, context, inhe
21459
21827
 
21460
21828
  //#endregion
21461
21829
  //#region src/deployment/intrinsic-resolver/dynamic-ref-lookups.ts
21462
- async function resolveSecretsManagerReference(inner, context, nameLogText, versionOut) {
21830
+ async function resolveSecretsManagerReference(inner, context, nameLogText, versionOut, pinVersion) {
21463
21831
  const afterService = inner.substring(15);
21464
21832
  let secretId;
21465
21833
  let jsonKey = "";
@@ -21486,7 +21854,10 @@ async function resolveSecretsManagerReference(inner, context, nameLogText, versi
21486
21854
  versionStage = remainingParts[1] || "";
21487
21855
  versionId = remainingParts[2] || "";
21488
21856
  } else secretId = afterService;
21489
- if (!versionStage) versionStage = "AWSCURRENT";
21857
+ if (pinVersion !== void 0) {
21858
+ versionStage = "";
21859
+ versionId = pinVersion;
21860
+ } else if (!versionStage) versionStage = "AWSCURRENT";
21490
21861
  if (!secretId) throw markNonRetryable(/* @__PURE__ */ new Error("Dynamic reference: secretsmanager SECRET_ID is required"));
21491
21862
  const loggedSecretId = this.displayMasked(nameLogText(secretId), context);
21492
21863
  const loggedJsonKey = this.displayMasked(nameLogText(jsonKey), context);
@@ -21528,11 +21899,12 @@ async function sendWithThrottleRetry(operation, label, masks) {
21528
21899
  throw masks.error(error);
21529
21900
  }
21530
21901
  }
21531
- async function resolveSSMReference(parts, decrypt, service, context, nameLogText) {
21532
- const parameterName = parts.slice(1).join(":");
21902
+ async function resolveSSMReference(parts, decrypt, service, context, nameLogText, pinVersion) {
21903
+ const namedParameter = parts.slice(1).join(":");
21904
+ const parameterName = pinVersion === void 0 ? namedParameter : `${withoutSsmSelector(namedParameter)}:${pinVersion}`;
21533
21905
  if (!parameterName) throw markNonRetryable(/* @__PURE__ */ new Error(`Dynamic reference: ${service} PARAMETER_NAME is required`));
21534
- const loggedParameterName = this.displayMasked(nameLogText(parameterName), context);
21535
- this.logger.debug(`Resolving dynamic reference: ${service}:${loggedParameterName}`);
21906
+ const loggedParameterName = this.displayMasked(nameLogText(namedParameter), context);
21907
+ this.logger.debug(`Resolving dynamic reference: ${service}:${loggedParameterName}${pinVersion === void 0 ? "" : ` (version ${pinVersion})`}`);
21536
21908
  const client = this.clientsForRegion(this.explicitRegion).ssm;
21537
21909
  const command = new GetParameterCommand({
21538
21910
  Name: parameterName,
@@ -21543,8 +21915,8 @@ async function resolveSSMReference(parts, decrypt, service, context, nameLogText
21543
21915
  if (paramValue === void 0 || paramValue === null) throw markNonRetryable(/* @__PURE__ */ new Error(`Dynamic reference: SSM parameter ${quotedRender(loggedParameterName, "'")} not found or has no value`));
21544
21916
  const paramType = response.Parameter?.Type;
21545
21917
  const secure = paramType !== "String" && paramType !== "StringList";
21546
- if (secure && paramType !== "SecureString" && !this.warnedUnrecognizedSsmTypes.has(injectiveKey(parameterName, String(paramType)))) {
21547
- this.warnedUnrecognizedSsmTypes.add(injectiveKey(parameterName, String(paramType)));
21918
+ if (secure && paramType !== "SecureString" && !this.warnedUnrecognizedSsmTypes.has(injectiveKey(namedParameter, String(paramType)))) {
21919
+ this.warnedUnrecognizedSsmTypes.add(injectiveKey(namedParameter, String(paramType)));
21548
21920
  const reported = paramType === void 0 ? "(absent)" : quotedRender(this.displayMasked(String(paramType), context), "'");
21549
21921
  this.logger.warn(`SSM parameter ${quotedRender(loggedParameterName, "'")} reported an unrecognized Type ${reported} — treating its value as a secret, so cdkd will persist the {{resolve:${service}:...}} expression rather than the resolved value. Declare the parameter as String / StringList if it is public config.`);
21550
21922
  }
@@ -21556,6 +21928,12 @@ async function resolveSSMReference(parts, decrypt, service, context, nameLogText
21556
21928
  ...typeof paramVersion === "number" && Number.isSafeInteger(paramVersion) && { version: String(paramVersion) }
21557
21929
  };
21558
21930
  }
21931
+ function withoutSsmSelector(parameterName) {
21932
+ const arnName = parameterName.startsWith("arn:") ? parameterName.indexOf(":parameter/") : -1;
21933
+ const nameStart = arnName < 0 ? 0 : arnName + 11;
21934
+ const selector = parameterName.indexOf(":", nameStart);
21935
+ return selector < 0 ? parameterName : parameterName.slice(0, selector);
21936
+ }
21559
21937
 
21560
21938
  //#endregion
21561
21939
  //#region src/deployment/intrinsic-resolver/string-functions.ts
@@ -22904,6 +23282,9 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
22904
23282
  }
22905
23283
  return resolved;
22906
23284
  }
23285
+ resolverForRecordedRegion(region) {
23286
+ return this.resolverForProducerRegion(region);
23287
+ }
22907
23288
  resolverForProducerRegion(producerRegion, context, producerRegionLogText) {
22908
23289
  if (!producerRegion) return this;
22909
23290
  const target = canonicalizeRegion(producerRegion);
@@ -24428,8 +24809,8 @@ function compare(desired, previous, mask) {
24428
24809
  if (!Array.isArray(desired) || desired.length !== previous.length) return "differs";
24429
24810
  return combine(previous.map((item, i) => compare(desired[i], item, mask)));
24430
24811
  }
24431
- if (isPlainObject$2(previous)) {
24432
- if (!isPlainObject$2(desired)) return "differs";
24812
+ if (isPlainObject$1(previous)) {
24813
+ if (!isPlainObject$1(desired)) return "differs";
24433
24814
  if (!Object.keys(desired).every((k) => Object.prototype.hasOwnProperty.call(previous, k))) return "differs";
24434
24815
  return combine(Object.keys(previous).map((k) => compare(desired[k], previous[k], mask)));
24435
24816
  }
@@ -24455,7 +24836,7 @@ function resolvesReference(desired, previous, mask) {
24455
24836
  const pattern = literals.map(escapeRegExp$1).join("[\\s\\S]*");
24456
24837
  return new RegExp(`^${pattern}$`).test(desired);
24457
24838
  }
24458
- function isPlainObject$2(value) {
24839
+ function isPlainObject$1(value) {
24459
24840
  return typeof value === "object" && value !== null && !Array.isArray(value);
24460
24841
  }
24461
24842
  function escapeRegExp$1(text) {
@@ -25246,7 +25627,7 @@ var CloudControlProvider = class {
25246
25627
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
25247
25628
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
25248
25629
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
25249
- const { ASGProvider } = await import("./asg-provider-CGN1a3d3.js");
25630
+ const { ASGProvider } = await import("./asg-provider-C6USPLiS.js");
25250
25631
  const delegateRegion = ambientRegion();
25251
25632
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
25252
25633
  if (asgProvider === void 0) {
@@ -25352,7 +25733,7 @@ var CloudControlProvider = class {
25352
25733
  const family = SDK_DELETE_FAMILIES.get(resourceType);
25353
25734
  const cached = this.sdkDeleteDelegates.get(family);
25354
25735
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
25355
- const provider = family === "rds" ? new (await (import("./rds-provider-BO3U39K0.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CR19ID_J.js"))).NeptuneProvider({ region: ccRegion });
25736
+ const provider = family === "rds" ? new (await (import("./rds-provider-DcUEh3d2.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-Ba5va85p.js"))).NeptuneProvider({ region: ccRegion });
25356
25737
  this.sdkDeleteDelegates.set(family, {
25357
25738
  region: ccRegion,
25358
25739
  provider
@@ -30214,170 +30595,6 @@ function deepEqualValue(a, b) {
30214
30595
  return true;
30215
30596
  }
30216
30597
 
30217
- //#endregion
30218
- //#region src/deployment/reference-provenance-record.ts
30219
- const SSM_VERSION = /^[0-9]{1,10}$/;
30220
- const SECRETS_MANAGER_VERSION = /^[A-Za-z0-9_+=.@/-]{32,64}$/;
30221
- function referenceTokensIn(value, into = /* @__PURE__ */ new Set()) {
30222
- const walk = (v) => {
30223
- if (typeof v === "string") {
30224
- if (!v.includes("{{resolve:")) return;
30225
- for (const token of dynamicReferenceTokens(v)) into.add(token);
30226
- return;
30227
- }
30228
- if (Array.isArray(v)) {
30229
- for (const item of v) walk(item);
30230
- return;
30231
- }
30232
- if (v !== null && typeof v === "object") for (const item of Object.values(v)) walk(item);
30233
- };
30234
- walk(value);
30235
- return into;
30236
- }
30237
- function recordReferenceTokens(record) {
30238
- const tokens = referenceTokensIn(record.properties);
30239
- referenceTokensIn(record.attributes, tokens);
30240
- referenceTokensIn(record.observedProperties, tokens);
30241
- return tokens;
30242
- }
30243
- function versionShapeOf(token) {
30244
- if (token.startsWith("{{resolve:secretsmanager:")) return SECRETS_MANAGER_VERSION;
30245
- if (token.startsWith("{{resolve:ssm:") || token.startsWith("{{resolve:ssm-secure:")) return SSM_VERSION;
30246
- }
30247
- function isValidReferenceVersion(token, version) {
30248
- const shape = versionShapeOf(token);
30249
- return shape !== void 0 && typeof version === "string" && shape.test(version);
30250
- }
30251
- function validReferenceRegion(region) {
30252
- if (typeof region !== "string") return void 0;
30253
- return canonicalizeRegion(region) === region && isClientSafeRegion(region) ? region : void 0;
30254
- }
30255
- function isPlainObject$1(value) {
30256
- return value !== null && typeof value === "object" && !Array.isArray(value);
30257
- }
30258
- function validateReferenceProvenance(token, raw) {
30259
- if (!isSingleDynamicReferenceToken(token) || !isPlainObject$1(raw)) return void 0;
30260
- const versionsRaw = Object.hasOwn(raw, "versions") ? raw["versions"] : void 0;
30261
- const readRaw = Object.hasOwn(raw, "readVersions") ? raw["readVersions"] : void 0;
30262
- if (readRaw !== void 0) {
30263
- if (!Array.isArray(readRaw)) return void 0;
30264
- const all = Array.isArray(versionsRaw) ? versionsRaw : [];
30265
- if (!readRaw.every((v) => all.includes(v))) return void 0;
30266
- }
30267
- const out = {};
30268
- const region = validReferenceRegion(Object.hasOwn(raw, "region") ? raw["region"] : void 0);
30269
- if (region !== void 0) out.region = region;
30270
- if (Array.isArray(versionsRaw) && versionsRaw.length > 0 && versionsRaw.length <= 8 && versionsRaw.every((v) => isValidReferenceVersion(token, v)) && (readRaw === void 0 || readRaw.every((v) => typeof v === "string"))) {
30271
- out.versions = [...new Set(versionsRaw)].sort();
30272
- if (readRaw !== void 0 && readRaw.length > 0) out.readVersions = [...new Set(readRaw)].sort();
30273
- }
30274
- return out;
30275
- }
30276
- function referenceProvenanceOf(record) {
30277
- if (!isPlainObject$1(record) || !Object.hasOwn(record, "referenceProvenance")) return void 0;
30278
- return validatedBag(record["referenceProvenance"]);
30279
- }
30280
- function validatedBag(field) {
30281
- if (!isPlainObject$1(field)) return void 0;
30282
- const out = Object.create(null);
30283
- for (const [token, raw] of Object.entries(field)) {
30284
- const entry = validateReferenceProvenance(token, raw);
30285
- if (entry !== void 0) out[token] = entry;
30286
- }
30287
- return { ...out };
30288
- }
30289
- function hasReferenceProvenanceField(record) {
30290
- return isPlainObject$1(record) && Object.hasOwn(record, "referenceProvenance") && record["referenceProvenance"] !== void 0;
30291
- }
30292
- function outputReferenceProvenanceOf(state, outputKey) {
30293
- if (!isPlainObject$1(state) || !Object.hasOwn(state, "outputReferenceProvenance")) return;
30294
- const field = state["outputReferenceProvenance"];
30295
- if (!isPlainObject$1(field) || !Object.hasOwn(field, outputKey)) return void 0;
30296
- return validatedBag(field[outputKey]);
30297
- }
30298
- function persistable(token, entry) {
30299
- return (entry === void 0 ? void 0 : validateReferenceProvenance(token, entry)) ?? {};
30300
- }
30301
- function tokensUnderPaths(properties, paths) {
30302
- const out = /* @__PURE__ */ new Set();
30303
- const descend = (value, path, at) => {
30304
- if (at === path.length) {
30305
- referenceTokensIn(value, out);
30306
- return;
30307
- }
30308
- if (Array.isArray(value)) {
30309
- const next = path[at] === "*" ? at + 1 : at;
30310
- for (const item of value) descend(item, path, next);
30311
- return;
30312
- }
30313
- if (isPlainObject$1(value) && Object.hasOwn(value, path[at])) descend(value[path[at]], path, at + 1);
30314
- };
30315
- for (const path of paths) descend(properties, path, 0);
30316
- return out;
30317
- }
30318
- function provenanceForWrittenRecord(args) {
30319
- const { record, secrets, previous, inPlace } = args;
30320
- const previousField = inPlace === void 0 ? void 0 : referenceProvenanceOf(previous);
30321
- if (!hasPassProvenance(secrets) && previousField === void 0 && args.walkWithoutPassProvenance !== true) return;
30322
- const tokens = recordReferenceTokens(record);
30323
- if (tokens.size === 0) return void 0;
30324
- let kept;
30325
- if (inPlace !== void 0) {
30326
- kept = inPlace.createOnly === "all" ? tokens : tokensUnderPaths(record.properties, inPlace.createOnly);
30327
- if (inPlace.attributesCarried) referenceTokensIn(record.attributes, kept);
30328
- }
30329
- const out = {};
30330
- for (const token of [...tokens].sort()) {
30331
- const pass = passProvenanceFor(secrets, token);
30332
- if (kept === void 0 || !kept.has(token)) {
30333
- out[token] = persistable(token, pass);
30334
- continue;
30335
- }
30336
- const before = previousField !== void 0 && Object.hasOwn(previousField, token) ? previousField[token] : void 0;
30337
- if (pass === void 0) {
30338
- out[token] = before === void 0 ? {} : { ...before };
30339
- continue;
30340
- }
30341
- out[token] = persistable(token, unionWithPrevious(pass, before));
30342
- }
30343
- return out;
30344
- }
30345
- function unionWithPrevious(pass, before) {
30346
- const out = {};
30347
- if (pass.region !== void 0 && (before?.region === void 0 || before.region === pass.region)) out.region = pass.region;
30348
- if (pass.versions !== void 0 && before?.versions !== void 0) {
30349
- out.versions = [.../* @__PURE__ */ new Set([...before.versions, ...pass.versions])].sort();
30350
- if (pass.readVersions !== void 0) out.readVersions = [...pass.readVersions];
30351
- }
30352
- return out;
30353
- }
30354
- function outputProvenanceForPersist(args) {
30355
- const { outputs, resolvedThisRun, carriedFrom, sinkOf } = args;
30356
- if (!resolvedThisRun) return carriedFrom !== void 0 && isPlainObject$1(carriedFrom.outputReferenceProvenance) ? carriedFrom.outputReferenceProvenance : void 0;
30357
- let out;
30358
- for (const [outputKey, value] of Object.entries(outputs)) {
30359
- const sink = sinkOf(outputKey);
30360
- if (!hasPassProvenance(sink)) continue;
30361
- const tokens = referenceTokensIn(value);
30362
- if (tokens.size === 0) continue;
30363
- const entries = {};
30364
- for (const token of [...tokens].sort()) entries[token] = persistable(token, passProvenanceFor(sink, token));
30365
- out ??= Object.create(null);
30366
- out[outputKey] = entries;
30367
- }
30368
- return out === void 0 ? void 0 : { ...out };
30369
- }
30370
- const KEEP_REFERENCE_PROVENANCE = Symbol("keep reference provenance");
30371
- function withReferenceProvenance(record, field) {
30372
- if (field === KEEP_REFERENCE_PROVENANCE) return record;
30373
- if (field === void 0 && !Object.hasOwn(record, "referenceProvenance")) return record;
30374
- const { referenceProvenance: _previous, ...rest } = record;
30375
- return field === void 0 ? rest : {
30376
- ...rest,
30377
- referenceProvenance: field
30378
- };
30379
- }
30380
-
30381
30598
  //#endregion
30382
30599
  //#region src/deployment/deploy-engine/provenance-capture.ts
30383
30600
  function kickOffProvenanceCapture(args) {
@@ -32565,15 +32782,19 @@ var ReplayResolvers = class {
32565
32782
  this.pinned.set(target, scoped);
32566
32783
  return scoped;
32567
32784
  }
32785
+ forRecordedRegion(region) {
32786
+ return this.primary.resolverForRecordedRegion(region);
32787
+ }
32568
32788
  };
32569
32789
  function regionAmbiguousReplaySecretError(logicalId, propertyPath, secretName, foreignProducerRegions, consumerRegion, execCtx) {
32570
32790
  const where = propertyPath === "" ? "" : ` property ${quotedPlainOr(propertyPath, "property path")}`;
32571
32791
  const error = new CdkdError(`Rollback of ${shownLogicalId(logicalId)}${where} cannot re-resolve the secret reference ${quotedPlainOr(secretName, "secret name")}: the reference carries no region of its own, and this stack read across a region boundary (producer region(s) on record: ${foreignProducerRegions.map((r) => plainOrDescribed(r, "region")).join(", ")}), so it may have been resolved in one of those rather than in ${quotedOrDescribed(consumerRegion, "region")}. A secret of the same name in two regions is two independent values, so replaying this would write the WRONG secret to a live resource. Refusing instead. Resolve the reference in its own region and set the property directly (or spell it as a full ARN, which names its region and is resolved there), then re-run ${rerunRollbackPhrase(execCtx, "'cdkd rollback'")}.`, "ROLLBACK_SECRET_REGION_AMBIGUOUS");
32572
32792
  return markNonRetryable(error);
32573
32793
  }
32574
- function refuseUnprovenReplaySecret(leaf, propertyPath, logicalId, execCtx) {
32794
+ function refuseUnprovenReplaySecret(leaf, propertyPath, logicalId, execCtx, recordedRegions) {
32575
32795
  if (execCtx.producerRegionsIncomplete !== true) return;
32576
32796
  for (const token of dynamicReferenceTokens(leaf)) {
32797
+ if (recordedRegions?.has(token) === true) continue;
32577
32798
  const name = classifyReplaySecretRegion(token, execCtx.region, execCtx.importedProducerRegions).kind === "local" ? regionLessSecretName(token) : void 0;
32578
32799
  if (name !== void 0) throw regionUnknownReplaySecretError(logicalId, propertyPath, name, execCtx.region, execCtx);
32579
32800
  }
@@ -32582,17 +32803,17 @@ function regionUnknownReplaySecretError(logicalId, propertyPath, secretName, con
32582
32803
  const where = propertyPath === "" ? "" : ` property ${quotedPlainOr(propertyPath, "property path")}`;
32583
32804
  return new CdkdError(`Rollback of ${shownLogicalId(logicalId)}${where} cannot re-resolve the secret reference ${quotedPlainOr(secretName, "secret name")}: the reference carries no region of its own, and this is a nested stack, and the cross-region reads its parent made are not known to this replay, so the parent may have resolved it in another region than ${quotedOrDescribed(consumerRegion, "region")}. A secret of the same name in two regions is two independent values, so replaying this could write the WRONG secret to a live resource. Refusing instead. Where the journal of the top-level stack still holds this run, roll back the top-level stack instead, which supplies its regions. Otherwise resolve the reference in its own region and set the property directly (or spell it as a full ARN, which names its region and is resolved there), then re-run ${rerunRollbackPhrase(execCtx, "'cdkd rollback'")}.`, "ROLLBACK_SECRET_REGION_AMBIGUOUS");
32584
32805
  }
32585
- async function resolveLeafByRegion(leaf, propertyPath, logicalId, execCtx, resolvers, resolverContext) {
32586
- const verdicts = dynamicReferenceTokens(leaf).map((token) => [token, classifyReplaySecretRegion(token, execCtx.region, execCtx.importedProducerRegions)]);
32806
+ async function resolveLeafByRegion(leaf, propertyPath, logicalId, execCtx, resolvers, resolverContext, recordedRegions) {
32807
+ const verdicts = dynamicReferenceTokens(leaf).map((token) => [token, classifyRecordedSecretRegion(token, execCtx.region, execCtx.importedProducerRegions, recordedRegions)]);
32587
32808
  for (const [, verdict] of verdicts) if (verdict.kind === "ambiguous") throw regionAmbiguousReplaySecretError(logicalId, propertyPath, verdict.secretName, verdict.foreignProducerRegions, execCtx.region, execCtx);
32588
- if (!verdicts.some(([, verdict]) => verdict.kind === "named-region")) return await resolvers.primary.resolveDynamicReferences(leaf, resolverContext);
32809
+ if (!verdicts.some(([, verdict]) => verdict.kind === "named-region" || verdict.kind === "recorded-region")) return await resolvers.primary.resolveDynamicReferences(leaf, resolverContext);
32589
32810
  let out = "";
32590
32811
  let cursor = 0;
32591
32812
  for (const [token, verdict] of verdicts) {
32592
32813
  const at = leaf.indexOf(token, cursor);
32593
32814
  if (at < 0) throw new CdkdError(`Rollback of ${logicalId}${propertyPath === "" ? "" : ` property '${propertyPath}'`} could not locate a scanned dynamic reference in the value it was scanned from. Refusing rather than resolving it in '${execCtx.region}', which would be the wrong region for a reference that names another one. This is an internal invariant failure — please report it with the resource type and property path.`, "ROLLBACK_SECRET_TOKEN_SCAN_MISMATCH");
32594
32815
  out += leaf.slice(cursor, at);
32595
- const resolver = verdict.kind === "named-region" ? resolvers.forRegion(verdict.region) : resolvers.primary;
32816
+ const resolver = verdict.kind === "named-region" ? resolvers.forRegion(verdict.region) : verdict.kind === "recorded-region" ? resolvers.forRecordedRegion(verdict.region) : resolvers.primary;
32596
32817
  out += await resolver.resolveDynamicReferences(token, resolverContext);
32597
32818
  cursor = at + token.length;
32598
32819
  }
@@ -33327,8 +33548,9 @@ function maskRestoredNoEchoRecord(record, baseline, substituted = []) {
33327
33548
 
33328
33549
  //#endregion
33329
33550
  //#region src/deployment/rollback-executor/replay-props.ts
33330
- async function resolveReplayProps(props, resolvers, secrets, execCtx, logicalId) {
33551
+ async function resolveReplayProps(props, resolvers, secrets, execCtx, logicalId, record) {
33331
33552
  if (props === void 0) return void 0;
33553
+ const recordedRegions = recordedReferenceRegions(record);
33332
33554
  const resolverContext = {
33333
33555
  template: { Resources: {} },
33334
33556
  resources: {},
@@ -33337,8 +33559,8 @@ async function resolveReplayProps(props, resolvers, secrets, execCtx, logicalId)
33337
33559
  const walk = async (v, path) => {
33338
33560
  if (typeof v === "string") {
33339
33561
  if (!v.includes("{{resolve:")) return v;
33340
- refuseUnprovenReplaySecret(v, path, logicalId, execCtx);
33341
- return await resolveLeafByRegion(v, path, logicalId, execCtx, resolvers, resolverContext);
33562
+ refuseUnprovenReplaySecret(v, path, logicalId, execCtx, recordedRegions);
33563
+ return await resolveLeafByRegion(v, path, logicalId, execCtx, resolvers, resolverContext, recordedRegions);
33342
33564
  }
33343
33565
  if (Array.isArray(v)) {
33344
33566
  const out = new Array(v.length);
@@ -33651,7 +33873,7 @@ async function replayRevert(s) {
33651
33873
  provisionedBy: op.provisionedBy
33652
33874
  });
33653
33875
  const noEcho = await substituteMarkedNoEchoLeaves({
33654
- desired: await resolveReplayProps(previousState.properties, resolver, secrets, ctx, op.logicalId),
33876
+ desired: await resolveReplayProps(previousState.properties, resolver, secrets, ctx, op.logicalId, previousState),
33655
33877
  baseline: previousState,
33656
33878
  live: current,
33657
33879
  logicalId: op.logicalId,
@@ -33663,7 +33885,7 @@ async function replayRevert(s) {
33663
33885
  const desiredProps = noEcho.desired;
33664
33886
  refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
33665
33887
  logger.info(` Rollback: Restoring ${safe(op.logicalId)} (${safe(op.resourceType)}) to previous state`);
33666
- const currentProps = noEcho.onPreviousSide(await resolveReplayProps(current.properties, resolver, secrets, ctx, op.logicalId));
33888
+ const currentProps = noEcho.onPreviousSide(await resolveReplayProps(current.properties, resolver, secrets, ctx, op.logicalId, current));
33667
33889
  recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, previousState.properties, STATE_DERIVED_RULES);
33668
33890
  opMasker.addNamed({
33669
33891
  resourceType: op.resourceType,
@@ -33739,7 +33961,7 @@ async function replayReverseReplacement(s) {
33739
33961
  skipUnaddressableReplay(s, logger, op, "reverse the replacement of");
33740
33962
  return;
33741
33963
  }
33742
- const resolvedPrevProps = await resolveReplayProps(prev.properties, resolver, secrets, ctx, op.logicalId) ?? {};
33964
+ const resolvedPrevProps = await resolveReplayProps(prev.properties, resolver, secrets, ctx, op.logicalId, prev) ?? {};
33743
33965
  refuseMarkedNoEchoRecreate(resolvedPrevProps, noEchoLeavesOf(prev), op.logicalId);
33744
33966
  refuseMaskedReplayBaseline(resolvedPrevProps, op.logicalId);
33745
33967
  opMasker.addNamed({
@@ -34421,7 +34643,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
34421
34643
  provisionedBy: op.provisionedBy ?? current.provisionedBy
34422
34644
  });
34423
34645
  const noEcho = await substituteMarkedNoEchoLeaves({
34424
- desired: await resolveReplayProps(prev.properties, resolver, secrets, ctx, op.logicalId),
34646
+ desired: await resolveReplayProps(prev.properties, resolver, secrets, ctx, op.logicalId, prev),
34425
34647
  baseline: prev,
34426
34648
  live: current,
34427
34649
  logicalId: op.logicalId,
@@ -34432,7 +34654,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
34432
34654
  });
34433
34655
  const desiredProps = noEcho.desired;
34434
34656
  refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
34435
- const attemptedProps = noEcho.onPreviousSide(await resolveReplayProps(op.attemptedProperties ?? current.properties, resolver, secrets, ctx, op.logicalId));
34657
+ const attemptedProps = noEcho.onPreviousSide(await resolveReplayProps(op.attemptedProperties ?? current.properties, resolver, secrets, ctx, op.logicalId, op.attemptedProperties === void 0 ? current : void 0));
34436
34658
  recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties, STATE_DERIVED_RULES);
34437
34659
  opMasker.addNamed({
34438
34660
  resourceType: op.resourceType,
@@ -46158,5 +46380,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
46158
46380
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
46159
46381
 
46160
46382
  //#endregion
46161
- export { isTruthyCfnBoolean as $, MULTI_REGION_RECREATE_BLOCKED_TYPES as $a, resolveStateBucketWithDefault as $c, malformedOrphanRowsKeptWarning as $i, earliestDefined as $n, maskSecretsInText as $o, isIamRoleArn as $r, orphansAfterRollback as $s, seedsDeleteFirstGuard as $t, noEchoComparisonForTemplate as A, refuseMalformedResourcePropertiesForOrphan as Aa, isDockerClientEnvKey as Ac, passedParameterClassesOf as Ai, injectedAwsRegionValue as Al, journaledOrphanPrintingBag as An, maskReadbackAtCoordinates as Ao, UNSPECIFIED_SKIP_REASON as Ar, TEMPLATE_SOURCED_RULES as As, dropFailedHint as At, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as B, repairMalformedResourcesForReadOnly as Ba, stripControlChars as Bc, hasReadableOrphans as Bi, PRE_DELETE_SNAPSHOT_TYPES as Bn, liveMatchesUnresolvedTokenFrame as Bo, observeThenDisableInstanceApiTermination as Br, crossPrefixDeniedWarning as Bs, getStackRecords as Bt, recordRetainedForReadoption as C, refuseMalformedResourceEntriesForDestroy as Ca, describeDockerCapturedOutput as Cc, AWS_NO_VALUE as Ci, ownValue as Cl, collectDeclaredOutputNames as Cn, lambdaFunctionNameForMask as Co, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Cr, recordNoEchoAttributeValues as Cs, revertNestedChildFromJournal as Ct, withResourceDeadline as D, refuseMalformedResourcePropertiesForDestroy as Da, finchSecretArgvRefusal as Dc, parseWebACLArn as Di, renderAssemblyPathEscape as Dl, DEFAULT_RESOURCE_TIMEOUT_MS as Dn, canonicalCoordinates as Do, slowCcOperationTimeoutMs as Dr, STATE_SOURCED_BASELINE_RULES as Ds, getCurrentNestedStackContext as Dt, serviceTokenBlockingReason as E, refuseMalformedResourceEntriesForOrphan as Ea, dockerSpawnEnvWithSensitive as Ec, refStateLookupFromResource as Ei, displayAssemblyPath as El, bindingSkippedOutputs as En, TemplateParser as Eo, CloudControlProvider as Er, wholeStringLeavesOf as Es, collectNestedChildUnaddressed as Et, PROTECTION_PROPERTY_BY_TYPE as F, repairMalformedOrphanRecordsForReadOnly as Fa, redactedDockerCause as Fc, UNREADABLE_ORPHANS_CONTAINER_ROW as Fi, secretNamedRecordNeedles as Fn, noEchoOutputsComparison as Fo, isWaitAbandonedError as Fr, S3StateBackend as Fs, sameJournaledOrphans as Ft, resolveDynamoDbDeleteBudgetMs as G, findActionableSilentDrops as Ga, synthesisStatusMessage as Gc, malformedDriftResourcePropertiesWarning as Gi, isFinalSnapshotError as Gn, logOnlyValueCount as Go, IntrinsicFunctionResolver as Gr, describeRegionValueKind as Gs, isJournaledOrphan as Gt, compensateRemovedDeletionProtection as H, unreadableOrphanRecords as Ha, AssetManifestLoader as Hc, hasReadableResources as Hi, ccRoutedFinalSnapshotError as Hn, createUnionSecretMasker as Ho, reEnableInstanceApiTermination as Hr, isNotImplemented as Hs, removeProtectionTypeList as Ht, isProtectionValueActive as I, repairMalformedOrphansForReadOnly as Ia, runDockerForeground as Ic, UNREADABLE_RESOURCES_MAP_ROW as Ii, stateSecretNameNeedles as In, passedNoEchoParametersOf as Io, markWaitAbandoned as Ir, rebuildClientForBucketRegion as Is, replayFailedOperations as It, deleteTableWithIndexBusyRetry as J, withoutSilentDropProperties as Ja, loadCdkJson as Jc, malformedLocalOutputsWarning as Ji, maskingRetryLogger as Jn, recordLogOnlyValue as Jo, refuseUnreadableCdkCrossAccountRefs as Jr, hasReasonlessBaselineRefusal as Js, planRollback as Jt, DELETE_INDEX_WAIT_PROCEED_NOTE as K, findSilentDropProperties as Ka, getDefaultStateBucketName as Kc, malformedExportNamesWarning as Ki, refusesFinalSnapshot as Kn, printingCorpusOf as Ko, poisonRenderedSpellingsCollidingIn as Kr, exportNamesCarriedFrom as Ks, isReplacementOrphan as Kt, perType as L, repairMalformedOutputsForReadOnly as La, runDockerStreaming as Lc, accountArgs as Li, storedSecretNameNeedles as Ln, readbackPathFor as Lo, disableInstanceApiTermination as Lr, CrossPrefixReadError as Ls, replayRollback as Lt, noEchoParameterNamesOf as M, refuseMalformedResourcesForDestroy as Ma, partitionSensitiveEnv as Mc, JSON_LISTING_HOLE_VALUE as Mi, resolveBucketRegion as Ml, orphanRecordsPrintingBag as Mn, maskedLeafCoordinatesOf as Mo, deleteLeftInPlace as Mr, isSingleDynamicReferenceToken as Ms, journaledOrphanLines as Mt, recordedProtectionEvidence as N, refuseMalformedResourcesForExport as Na, redactDockerArgvValues as Nc, STATE_REGION_DIVERGED as Ni, secretNamePrintingBag as Nn, noEchoCoordinatesOf as No, deleteSkipReason as Nr, LockManager as Ns, loadJournaledOrphans as Nt, diffSecurity as O, refuseMalformedResourcePropertiesForDrift as Oa, formatDockerLoginError as Oc, withSharedDrainBudget as Oi, resolveAssemblyPath as Ol, DEFAULT_RESOURCE_WARN_AFTER_MS as On, isMarkedCoordinate as Oo, unchangedBehindSecretReference as Or, STATE_SOURCED_CROSS_GENERATION_RULES as Os, withNestedStackContext as Ot, recordedProtectionNote as P, refuseMalformedState as Pa, redactedCause as Pc, STATE_RESOURCES_MALFORMED as Pi, secretNamePrintingBags as Pn, noEchoLeavesOf as Po, withIndeterminateGuard as Pr, isLockInfoExpired as Ps, makeForeignHolderScan as Pt, hasCdkAutoDeleteTag as Q, shownType as Qa, resolveSkipPrefix as Qc, malformedOrphanRecordsWarning as Qi, outputReferenceProvenanceOf as Qn, maskSecretsInError as Qo, explicitRoleArnOrThrow as Qr, isReadableBag as Qs, resolveReplacementOldType as Qt, readProtection as R, repairMalformedResourceEntriesForReadOnly as Ra, warnFinchArgvExposure as Rc, deployRefusesOrphanRowsReason as Ri, extractDeploymentEventError as Rn, readsNoEchoSource as Ro, ec2InstanceProtectionSite as Rr, CrossPrefixScanCache as Rs, awaitInFlightSibling as Rt, keptForReadoption as S, refuseMalformedResourceEntriesForDeploy as Sa, resolveDockerContextDirectory as Sc, keepsSecretReferenceToken as Si, nullPrototypeRecord as Sl, noEchoParameterValueSeed as Sn, canonicalLambdaFunctionName as So, withPrintingSecrets as Sr, recordMaskOnlyValuesIn as Ss, recordDisplacedSkips as St, findServiceTokenRefusals as T, refuseMalformedResourceEntriesForImportSave as Ta, describeDockerFailure as Tc, isStalePlaceholderArnAttribute as Ti, describeFileReadFailure as Tl, isExportAliasCollision as Tn, DagBuilder as To, customResourceResponseExpirationWarning as Tr, recordProvenPublicExpression as Ts, withNestedRevertRun as Tt, deleteBudgetKey as U, unreadableResourceEntries as Ua, getDockerImageBySourceHash as Uc, isReadableOrphanRecord as Ui, createPreDeleteFinalSnapshot as Un, hasMaskableValues as Uo, DiffCalculator as Ur, splitImportedOps as Us, recordAfterRollbackUpdate as Ut, beginDeleteWait as V, unpreviewableOrphanRecords as Va, stripForDisplay as Vc, hasReadableOutputs as Vi, buildFinalSnapshotIdentifier as Vn, carryLogOnlyValues as Vo, reDisableInstanceApiTermination as Vr, isAccessDenied$1 as Vs, withStackRecords as Vt, resolveDynamoDbDeleteBudgetClock as W, withheldAccountClause as Wa, Synthesizer as Wc, isReadableResourceEntry as Wi, effectiveDeletionPolicy as Wn, literalSplitDelimitersOf as Wo, INTRINSIC_KEYS as Wr, acceptedCreateOnlyDropsOf as Ws, demoteSupersededOrphans as Wt, ECR_AUTO_DELETE_IMAGES_TAG as X, hasNoCloudControlHandlers as Xa, resolveAutoAssetStorage as Xc, malformedLocalResourcesWarning as Xi, findDestructiveChanges as Xn, createSecretMasker as Xo, assertFlagRoleArn as Xr, importableOutputKeys as Xs, recordUnderIdIsNotOwn as Xt, waitForIndexesSettled as Y, NO_CC_HANDLERS_REASON as Ya, resolveApp as Yc, malformedLocalResourceEntriesWarning as Yi, constructPathOf as Yn, shareLogOnlyValues as Yo, applyRoleArnIfSet as Yr, hasUnverifiableParameterRefusal as Ys, recheckFailedPlan as Yt, S3_AUTO_DELETE_OBJECTS_TAG as Z, findReplacedReadersOfRecreateTargets as Za, resolveCaptureObservedState as Zc, malformedOrphanRecordsRefusalMessage as Zi, formatDestructiveChange as Zn, errorCauseChain as Zo, assertSendableRoleArn as Zr, importableOutputs as Zs, replacementNeverSwapped as Zt, makeCanonicalizePropertiesFn as _, refuseMalformedOrphansForOrphan as _a, readBootstrapMarkerBody as _c, getAccountInfo as _i, StageLoadError as _l, secretSafeKeyDisplay as _n, requireConfigString as _o, wouldReturnToSdkProvider as _r, recordPhysicalNameCopy as _s, displacedOpClause as _t, findNestedTemplateTreeDefect as a, malformedResourceEntriesWarning as aa, WorkGraph as ac, isSettledInstanceState as ai, CFN_TEMPLATE_BODY_LIMIT as al, isRedactedRecordedValue as an, isWarmThroughputDecrease as ao, DBPROXY_TAG_OPTIONS as ar, withPhysicalNameCopies as as, cyan as at, lookupEachName as b, refuseMalformedResourceAttributesForOrphan as ba, buildDenyExternalAccessPolicy as bc, carriesFetchableDynamicReference as bi, hasOwnKey as bl, exportNameSecretExposure as bn, describeTypeWithThrottleRetry as bo, isCustomResourceType as br, provenPublicValue as bs, getNestedRevertRun as bt, renderNestedTemplateTreeDefect as c, malformedScrubResourceEntriesRefusalMessage as ca, loadPublishableAssetManifest as cc, s3BucketDualStackDomainName as ci, findLargeInlineResources as cl, updatePartialMessage as cn, coerceCfnBoolean as co, refuseMalformedDesiredTags as cr, dynamicReferenceTokens as cs, red as ct, conditionInputsFrom as d, refuseDivergentRecordRegionForDestroy as da, BOOTSTRAP_MARKER_PREFIX as dc, classifyReplaySecretRegion as di, decodeListingKey as dl, DeploymentEventsStore as dn, configIntegerRefusal as do, definedAttributes as dr, identityKeyFor as ds, namesAnyDeclaredParameter as dt, malformedOrphansRefusalMessage as ea, orphansCarriedFrom as ec, sendableAssumeRoleCommand as ei, resolveStateBucketWithDefaultAndSource as el, orphanDeleteNeedsIdentity as en, isStatefulRecreateTargetForReplace as eo, ledgerForStack as er, markSameGenerationBag as es, getPriorAttempts as et, parentSuppliedValues as f, refuseMalformedNestedChildOutputs as fa, assertAssetBucketRegion as fc, producerRegionsFromState as fi, expectedOwnerParam as fl, WITHHELD_NAME_DISPLAY as fn, configStringRefusal as fo, stringifyIfAssigned as fr, inheritNestedStackParameterAssociations as fs, reachableDivergentParameters as ft, mergeNoChangeOutputs as g, refuseMalformedOrphansForDestroy as ga, parseBootstrapMarker as gc, parameterTypeMayLoseSecretIdentity as gi, AssemblyReader as gl, secretBearingStateKeyWarning as gn, requireConfigObject as go, isCustomResource as gr, recordAttributeIdCopy as gs, NESTED_PENDING_PARENT_REASON as gt, keptWholeReasonText as h, refuseMalformedOrphans as ha, isCrossRegionRedirect as hc, isUnboundTemplateParameter as hi, derivePartitionAndUrlSuffix as hl, secretBearing as hn, requireConfigArray as ho, ccBrokenReason as hr, physicalNameCopiesOf as hs, planOrphanAdoption as ht, childTemplateLoader as i, malformedRenderedContainersWarning as ia, stringifyValue as ic, envCredentialsAreAssumedRole as ii, ssmResolvedValueType as il, REDACTED_DELETE_ADDRESS_SKIP_REASON as in, coerceWarmThroughput as io, DBPROXY_TAGS_WHAT as ir, scrubResourceRecord as is, bold as it, noEchoExactEchoLeavesOf as j, refuseMalformedResourcesForDeploy as ja, isMalformedEnvKey as jc, declaresNoEcho as ji, clearBucketRegionCache as jl, maskEventTextWithBoundBags as jn, maskWholeValue as jo, deleteIndeterminateGuards as jr, WHOLE_DYNAMIC_REFERENCE_PATTERN as js, isHandledOrphan as jt, noEchoAttributeNamesOf as k, refuseMalformedResourcePropertiesForExport as ka, getDockerCmd as kc, parameterInputsFor as ki, injectAwsRegion as kl, completedReplayEntries as kn, maskAtCoordinates as ko, RollbackInlinePolicyWriters as kr, STATE_SOURCED_READBACK_RULES as ks, deleteJournaledOrphans as kt, templateIdentity as l, malformedStateRefusalMessage as la, rewriteTemplateAssetReferences as lc, s3BucketRegionalDomainName as li, uploadCfnTemplate as ll, updatePartialReason as ln, coerceCfnInteger as lo, tagMapAsList as lr, isUncertifiedBaselineMaskPosition as ls, yellow as lt, isSecretBearingReferenceString as m, refuseMalformedOrphanRecordsForDestroy as ma, getBootstrapMarkerKey as mc, coerceParameterTypedValue as mi, canonicalizeRegion as ml, exportAliasCollisionScrubWarning as mn, replayWarn as mo, ProviderRegistry as mr, recoverMaskedOutput as ms, makeSiblingClaimReader as mt, IMPLICIT_DELETE_DEPENDENCIES as n, malformedOutputsRefusalMessage as na, AssetPublisher as nc, applyCallerIdentityCredentials as ni, stateBucketExistenceConfirmed as nl, getCurrentProducerRegions as nn, renderStatefulReason as no, withCreateTokenLedger as nr, snapshotPassProvenance as ns, formatResourceLine as nt, isAbsoluteAssetPath as o, malformedResourcePropertiesWarning as oa, buildAssetRedirectMap as oc, s3BucketArn as oi, CFN_TEMPLATE_URL_LIMIT as ol, redactedDeleteAddressFields as on, toCfnInteger as oo, planTagDiff as or, withoutPhysicalNameCopies as os, gray as ot, readRecordedConditionVerdicts as p, refuseMalformedOrphanRecords as pa, ensureAssetStorage as pc, regionLessSecretName as pi, PARTITION_TABLE as pl, displayTextOrWithheld as pn, readConfigString as po, CC_BROKEN_REASON as pr, recordNestedStackParameterExpressions as ps, resourcesNamingDeclaredParameter as pt, INDEX_SETTLE_POLL_INTERVAL_MS as q, unwrittenCreateOnlyReplacement as qa, getLegacyStateBucketName as qc, malformedExportSourceWarning as qi, unsupportedFinalSnapshotError as qn, recordLogOnlyParameterValue as qo, producerLookupOver as qr, hasReadableExportSet as qs, planFailedOps as qt, computeImplicitDeleteEdges as r, malformedOutputsWarning as ra, isSensitiveAttributeName as rc, callerEnvCredentials as ri, warnDeprecatedNoPrefixCliFlag as rl, inheritProducerRegions as rn, WARM_THROUGHPUT_MEMBERS as ro, acquireIdempotencyToken as rr, redactSecretsForState as rs, createReadOnlyAttributeHealerFactory as rt, listNestedTemplateRows as s, malformedResourcesWarning as sa, createAssetRedirectResolver as sc, s3BucketDomainName as si, MIGRATE_TMP_PREFIX as sl, redactedDeleteAddressSkip as sn, toFiniteNumber as so, readTagList as sr, DYNAMIC_REFERENCE_TOKEN_SCAN as ss, green as st, DeployEngine as t, malformedOrphansWarning as ta, shouldRetainResource as tc, AWS_CREDENTIAL_ENV_KEYS as ti, resolveUseCdkBootstrapAssets as tl, findNestedStackTypeChanges as tn, isStatefulRecreateTargetSync as to, reserveStackCreateToken as tr, recordReferenceProvenanceEntry as ts, markRefusedBeforeApplying as tt, conditionFingerprint as u, previewableOrphanRecords as ua, AssetModeResolver as uc, s3BucketWebsiteUrl as ui, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ul, DeploymentEventsReader as un, configBooleanRefusal as uo, tagPlanWarning as ur, pathCrossesDottedKey as us, computeParameterTaint as ut, chunks as v, refuseMalformedOutputs as va, validateAssetBucketName as vc, isImpossibleEmptyStoredAttribute as vi, processStackMessages as vl, carriedExportAliasExposure as vn, prefetchCreateOnlyPropertyPaths as vo, TemplateNoEchoReresolver as vr, splitGetAttStringForm as vs, displacedPhysicalIdShown as vt, deferredServiceTokenWarning as w, refuseMalformedResourceEntriesForImport as wa, describeDockerExecFailure as wc, cfnRefValueFromPhysicalId as wi, absoluteAssemblyPathEscape as wl, collectPublishedOutputNames as wn, sameLambdaFunctionAddress as wo, applyCustomResourceResponseExpiration as wr, recordNoEchoParameterFreshValue as ws, revertedNestedRowIds as wt, withApiLimit as x, refuseMalformedResourceEntries as xa, buildDockerImage as xc, isNamelessDynamicReferenceError as xi, hasPlainPrototype$1 as xl, isWholeDynamicReferenceValue as xn, withRetry as xo, getCurrentResourceSecrets as xr, recordMaskOnlyValue as xs, nestedChildStackName as xt, isAccessDeniedError as y, refuseMalformedOutputsForDestroy as ya, validateContainerRepoName as yc, carriesDynamicReference as yi, defineOwnKey as yl, exportNameNoEchoParameters as yn, templateResourceTypes as yo, readsNoEchoDeleteValues as yr, carriesSecretMask as ys, dropSettledNestedJournals as yt, DynamoDBGlobalTableProvider as z, repairMalformedResourcePropertiesForReadOnly as za, escapeRegExp$3 as zc, displayLogicalId as zi, ATOMIC_FINAL_SNAPSHOT_TYPES as zn, valueAtCoordinate as zo, isTerminationProtectionPropagationError as zr, applyCrossPrefixScan as zs, destroyStackRecordsView as zt };
46162
- //# sourceMappingURL=deploy-engine-4K_B3N08.js.map
46383
+ export { isTruthyCfnBoolean as $, NO_CC_HANDLERS_REASON as $a, resolveApp as $c, malformedLocalResourceEntriesWarning as $i, ledgerForStack as $n, shareLogOnlyValues as $o, sendableAssumeRoleCommand as $r, hasUnverifiableParameterRefusal as $s, seedsDeleteFirstGuard as $t, noEchoComparisonForTemplate as A, refuseMalformedResourceEntriesForOrphan as Aa, dockerSpawnEnvWithSensitive as Ac, refStateLookupFromResource as Ai, displayAssemblyPath as Al, journaledOrphanPrintingBag as An, TemplateParser as Ao, deleteIndeterminateGuards as Ar, wholeStringLeavesOf as As, dropFailedHint as At, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as B, repairMalformedOrphansForReadOnly as Ba, runDockerForeground as Bc, UNREADABLE_RESOURCES_MAP_ROW as Bi, PRE_DELETE_SNAPSHOT_TYPES as Bn, passedNoEchoParametersOf as Bo, reDisableInstanceApiTermination as Br, rebuildClientForBucketRegion as Bs, getStackRecords as Bt, recordRetainedForReadoption as C, refuseMalformedOutputsForDestroy as Ca, validateContainerRepoName as Cc, carriesDynamicReference as Ci, defineOwnKey as Cl, collectDeclaredOutputNames as Cn, templateResourceTypes as Co, applyCustomResourceResponseExpiration as Cr, carriesSecretMask as Cs, revertNestedChildFromJournal as Ct, withResourceDeadline as D, refuseMalformedResourceEntriesForDestroy as Da, describeDockerCapturedOutput as Dc, AWS_NO_VALUE as Di, ownValue as Dl, DEFAULT_RESOURCE_TIMEOUT_MS as Dn, lambdaFunctionNameForMask as Do, unchangedBehindSecretReference as Dr, recordNoEchoAttributeValues as Ds, getCurrentNestedStackContext as Dt, serviceTokenBlockingReason as E, refuseMalformedResourceEntriesForDeploy as Ea, resolveDockerContextDirectory as Ec, keepsSecretReferenceToken as Ei, nullPrototypeRecord as El, bindingSkippedOutputs as En, canonicalLambdaFunctionName as Eo, slowCcOperationTimeoutMs as Er, recordMaskOnlyValuesIn as Es, collectNestedChildUnaddressed as Et, PROTECTION_PROPERTY_BY_TYPE as F, refuseMalformedResourcesForDeploy as Fa, isMalformedEnvKey as Fc, declaresNoEcho as Fi, clearBucketRegionCache as Fl, secretNamedRecordNeedles as Fn, maskWholeValue as Fo, markWaitAbandoned as Fr, WHOLE_DYNAMIC_REFERENCE_PATTERN as Fs, sameJournaledOrphans as Ft, resolveDynamoDbDeleteBudgetMs as G, unpreviewableOrphanRecords as Ga, stripForDisplay as Gc, hasReadableOutputs as Gi, isFinalSnapshotError as Gn, carryLogOnlyValues as Go, poisonRenderedSpellingsCollidingIn as Gr, isAccessDenied$1 as Gs, isJournaledOrphan as Gt, compensateRemovedDeletionProtection as H, repairMalformedResourceEntriesForReadOnly as Ha, warnFinchArgvExposure as Hc, deployRefusesOrphanRowsReason as Hi, ccRoutedFinalSnapshotError as Hn, readsNoEchoSource as Ho, DiffCalculator as Hr, CrossPrefixScanCache as Hs, removeProtectionTypeList as Ht, isProtectionValueActive as I, refuseMalformedResourcesForDestroy as Ia, partitionSensitiveEnv as Ic, JSON_LISTING_HOLE_VALUE as Ii, resolveBucketRegion as Il, stateSecretNameNeedles as In, maskedLeafCoordinatesOf as Io, disableInstanceApiTermination as Ir, isSingleDynamicReferenceToken as Is, replayFailedOperations as It, deleteTableWithIndexBusyRetry as J, withheldAccountClause as Ja, Synthesizer as Jc, isReadableResourceEntry as Ji, maskingRetryLogger as Jn, literalSplitDelimitersOf as Jo, applyRoleArnIfSet as Jr, acceptedCreateOnlyDropsOf as Js, planRollback as Jt, DELETE_INDEX_WAIT_PROCEED_NOTE as K, unreadableOrphanRecords as Ka, AssetManifestLoader as Kc, hasReadableResources as Ki, refusesFinalSnapshot as Kn, createUnionSecretMasker as Ko, producerLookupOver as Kr, isNotImplemented as Ks, isReplacementOrphan as Kt, perType as L, refuseMalformedResourcesForExport as La, redactDockerArgvValues as Lc, STATE_REGION_DIVERGED as Li, storedSecretNameNeedles as Ln, noEchoCoordinatesOf as Lo, ec2InstanceProtectionSite as Lr, LockManager as Ls, replayRollback as Lt, noEchoParameterNamesOf as M, refuseMalformedResourcePropertiesForDrift as Ma, formatDockerLoginError as Mc, withSharedDrainBudget as Mi, resolveAssemblyPath as Ml, orphanRecordsPrintingBag as Mn, isMarkedCoordinate as Mo, deleteSkipReason as Mr, STATE_SOURCED_CROSS_GENERATION_RULES as Ms, journaledOrphanLines as Mt, recordedProtectionEvidence as N, refuseMalformedResourcePropertiesForExport as Na, getDockerCmd as Nc, parameterInputsFor as Ni, injectAwsRegion as Nl, secretNamePrintingBag as Nn, maskAtCoordinates as No, withIndeterminateGuard as Nr, STATE_SOURCED_READBACK_RULES as Ns, loadJournaledOrphans as Nt, diffSecurity as O, refuseMalformedResourceEntriesForImport as Oa, describeDockerExecFailure as Oc, cfnRefValueFromPhysicalId as Oi, absoluteAssemblyPathEscape as Ol, DEFAULT_RESOURCE_WARN_AFTER_MS as On, sameLambdaFunctionAddress as Oo, RollbackInlinePolicyWriters as Or, recordNoEchoParameterFreshValue as Os, withNestedStackContext as Ot, recordedProtectionNote as P, refuseMalformedResourcePropertiesForOrphan as Pa, isDockerClientEnvKey as Pc, passedParameterClassesOf as Pi, injectedAwsRegionValue as Pl, secretNamePrintingBags as Pn, maskReadbackAtCoordinates as Po, isWaitAbandonedError as Pr, TEMPLATE_SOURCED_RULES as Ps, makeForeignHolderScan as Pt, hasCdkAutoDeleteTag as Q, withoutSilentDropProperties as Qa, loadCdkJson as Qc, malformedLocalOutputsWarning as Qi, earliestDefined as Qn, recordLogOnlyValue as Qo, isIamRoleArn as Qr, hasReasonlessBaselineRefusal as Qs, resolveReplacementOldType as Qt, readProtection as R, refuseMalformedState as Ra, redactedCause as Rc, STATE_RESOURCES_MALFORMED as Ri, extractDeploymentEventError as Rn, noEchoLeavesOf as Ro, isTerminationProtectionPropagationError as Rr, isLockInfoExpired as Rs, awaitInFlightSibling as Rt, keptForReadoption as S, refuseMalformedOutputs as Sa, validateAssetBucketName as Sc, isImpossibleEmptyStoredAttribute as Si, processStackMessages as Sl, noEchoParameterValueSeed as Sn, prefetchCreateOnlyPropertyPaths as So, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Sr, splitGetAttStringForm as Ss, recordDisplacedSkips as St, findServiceTokenRefusals as T, refuseMalformedResourceEntries as Ta, buildDockerImage as Tc, isNamelessDynamicReferenceError as Ti, hasPlainPrototype$1 as Tl, isExportAliasCollision as Tn, withRetry as To, CloudControlProvider as Tr, recordMaskOnlyValue as Ts, withNestedRevertRun as Tt, deleteBudgetKey as U, repairMalformedResourcePropertiesForReadOnly as Ua, escapeRegExp$3 as Uc, displayLogicalId as Ui, createPreDeleteFinalSnapshot as Un, valueAtCoordinate as Uo, INTRINSIC_KEYS as Ur, applyCrossPrefixScan as Us, recordAfterRollbackUpdate as Ut, beginDeleteWait as V, repairMalformedOutputsForReadOnly as Va, runDockerStreaming as Vc, accountArgs as Vi, buildFinalSnapshotIdentifier as Vn, readbackPathFor as Vo, reEnableInstanceApiTermination as Vr, CrossPrefixReadError as Vs, withStackRecords as Vt, resolveDynamoDbDeleteBudgetClock as W, repairMalformedResourcesForReadOnly as Wa, stripControlChars as Wc, hasReadableOrphans as Wi, effectiveDeletionPolicy as Wn, liveMatchesUnresolvedTokenFrame as Wo, IntrinsicFunctionResolver as Wr, crossPrefixDeniedWarning as Ws, demoteSupersededOrphans as Wt, ECR_AUTO_DELETE_IMAGES_TAG as X, findSilentDropProperties as Xa, getDefaultStateBucketName as Xc, malformedExportNamesWarning as Xi, findDestructiveChanges as Xn, printingCorpusOf as Xo, assertSendableRoleArn as Xr, exportNamesCarriedFrom as Xs, recordUnderIdIsNotOwn as Xt, waitForIndexesSettled as Y, findActionableSilentDrops as Ya, synthesisStatusMessage as Yc, malformedDriftResourcePropertiesWarning as Yi, constructPathOf as Yn, logOnlyValueCount as Yo, assertFlagRoleArn as Yr, describeRegionValueKind as Ys, recheckFailedPlan as Yt, S3_AUTO_DELETE_OBJECTS_TAG as Z, unwrittenCreateOnlyReplacement as Za, getLegacyStateBucketName as Zc, malformedExportSourceWarning as Zi, formatDestructiveChange as Zn, recordLogOnlyParameterValue as Zo, explicitRoleArnOrThrow as Zr, hasReadableExportSet as Zs, replacementNeverSwapped as Zt, makeCanonicalizePropertiesFn as _, refuseMalformedOrphanRecords as _a, ensureAssetStorage as _c, regionLessSecretName as _i, PARTITION_TABLE as _l, secretSafeKeyDisplay as _n, readConfigString as _o, TemplateNoEchoReresolver as _r, recordNestedStackParameterExpressions as _s, displacedOpClause as _t, findNestedTemplateTreeDefect as a, malformedOrphansWarning as aa, shouldRetainResource as ac, keepHeldTokenProvenance as ai, resolveUseCdkBootstrapAssets as al, isRedactedRecordedValue as an, isStatefulRecreateTargetSync as ao, planTagDiff as ar, recordReferenceProvenanceEntry as as, cyan as at, lookupEachName as b, refuseMalformedOrphansForDestroy as ba, parseBootstrapMarker as bc, parameterTypeMayLoseSecretIdentity as bi, AssemblyReader as bl, exportNameSecretExposure as bn, requireConfigObject as bo, getCurrentResourceSecrets as br, recordAttributeIdCopy as bs, getNestedRevertRun as bt, renderNestedTemplateTreeDefect as c, malformedRenderedContainersWarning as ca, stringifyValue as cc, recordedReferenceRegions as ci, ssmResolvedValueType as cl, updatePartialMessage as cn, coerceWarmThroughput as co, tagMapAsList as cr, scrubResourceRecord as cs, red as ct, conditionInputsFrom as d, malformedResourcesWarning as da, createAssetRedirectResolver as dc, s3BucketDualStackDomainName as di, MIGRATE_TMP_PREFIX as dl, DeploymentEventsStore as dn, toFiniteNumber as do, stringifyIfAssigned as dr, DYNAMIC_REFERENCE_TOKEN_SCAN as ds, namesAnyDeclaredParameter as dt, malformedLocalResourcesWarning as ea, importableOutputKeys as ec, AWS_CREDENTIAL_ENV_KEYS as ei, resolveAutoAssetStorage as el, orphanDeleteNeedsIdentity as en, hasNoCloudControlHandlers as eo, reserveStackCreateToken as er, createSecretMasker as es, getPriorAttempts as et, parentSuppliedValues as f, malformedScrubResourceEntriesRefusalMessage as fa, loadPublishableAssetManifest as fc, s3BucketRegionalDomainName as fi, findLargeInlineResources as fl, WITHHELD_NAME_DISPLAY as fn, coerceCfnBoolean as fo, CC_BROKEN_REASON as fr, dynamicReferenceTokens as fs, reachableDivergentParameters as ft, mergeNoChangeOutputs as g, refuseMalformedNestedChildOutputs as ga, assertAssetBucketRegion as gc, producerRegionsFromState as gi, expectedOwnerParam as gl, secretBearingStateKeyWarning as gn, configStringRefusal as go, wouldReturnToSdkProvider as gr, inheritNestedStackParameterAssociations as gs, NESTED_PENDING_PARENT_REASON as gt, keptWholeReasonText as h, refuseDivergentRecordRegionForDestroy as ha, BOOTSTRAP_MARKER_PREFIX as hc, classifyReplaySecretRegion as hi, decodeListingKey as hl, secretBearing as hn, configIntegerRefusal as ho, isCustomResource as hr, identityKeyFor as hs, planOrphanAdoption as ht, childTemplateLoader as i, malformedOrphansRefusalMessage as ia, orphansCarriedFrom as ic, isSettledInstanceState as ii, resolveStateBucketWithDefaultAndSource as il, REDACTED_DELETE_ADDRESS_SKIP_REASON as in, isStatefulRecreateTargetForReplace as io, DBPROXY_TAG_OPTIONS as ir, markSameGenerationBag as is, bold as it, noEchoExactEchoLeavesOf as j, refuseMalformedResourcePropertiesForDestroy as ja, finchSecretArgvRefusal as jc, parseWebACLArn as ji, renderAssemblyPathEscape as jl, maskEventTextWithBoundBags as jn, canonicalCoordinates as jo, deleteLeftInPlace as jr, STATE_SOURCED_BASELINE_RULES as js, isHandledOrphan as jt, noEchoAttributeNamesOf as k, refuseMalformedResourceEntriesForImportSave as ka, describeDockerFailure as kc, isStalePlaceholderArnAttribute as ki, describeFileReadFailure as kl, completedReplayEntries as kn, DagBuilder as ko, UNSPECIFIED_SKIP_REASON as kr, recordProvenPublicExpression as ks, deleteJournaledOrphans as kt, templateIdentity as l, malformedResourceEntriesWarning as la, WorkGraph as lc, s3BucketArn as li, CFN_TEMPLATE_BODY_LIMIT as ll, updatePartialReason as ln, isWarmThroughputDecrease as lo, tagPlanWarning as lr, withPhysicalNameCopies as ls, yellow as lt, isSecretBearingReferenceString as m, previewableOrphanRecords as ma, AssetModeResolver as mc, classifyRecordedSecretRegion as mi, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ml, exportAliasCollisionScrubWarning as mn, configBooleanRefusal as mo, ccBrokenReason as mr, pathCrossesDottedKey as ms, makeSiblingClaimReader as mt, IMPLICIT_DELETE_DEPENDENCIES as n, malformedOrphanRecordsWarning as na, isReadableBag as nc, callerEnvCredentials as ni, resolveSkipPrefix as nl, getCurrentProducerRegions as nn, shownType as no, acquireIdempotencyToken as nr, maskSecretsInError as ns, formatResourceLine as nt, isAbsoluteAssetPath as o, malformedOutputsRefusalMessage as oa, AssetPublisher as oc, outputReferenceProvenanceOf as oi, stateBucketExistenceConfirmed as ol, redactedDeleteAddressFields as on, renderStatefulReason as oo, readTagList as or, snapshotPassProvenance as os, gray as ot, readRecordedConditionVerdicts as p, malformedStateRefusalMessage as pa, rewriteTemplateAssetReferences as pc, s3BucketWebsiteUrl as pi, uploadCfnTemplate as pl, displayTextOrWithheld as pn, coerceCfnInteger as po, ProviderRegistry as pr, isUncertifiedBaselineMaskPosition as ps, resourcesNamingDeclaredParameter as pt, INDEX_SETTLE_POLL_INTERVAL_MS as q, unreadableResourceEntries as qa, getDockerImageBySourceHash as qc, isReadableOrphanRecord as qi, unsupportedFinalSnapshotError as qn, hasMaskableValues as qo, refuseUnreadableCdkCrossAccountRefs as qr, splitImportedOps as qs, planFailedOps as qt, computeImplicitDeleteEdges as r, malformedOrphanRowsKeptWarning as ra, orphansAfterRollback as rc, envCredentialsAreAssumedRole as ri, resolveStateBucketWithDefault as rl, inheritProducerRegions as rn, MULTI_REGION_RECREATE_BLOCKED_TYPES as ro, DBPROXY_TAGS_WHAT as rr, maskSecretsInText as rs, createReadOnlyAttributeHealerFactory as rt, listNestedTemplateRows as s, malformedOutputsWarning as sa, isSensitiveAttributeName as sc, recordedOutputReferenceRegions as si, warnDeprecatedNoPrefixCliFlag as sl, redactedDeleteAddressSkip as sn, WARM_THROUGHPUT_MEMBERS as so, refuseMalformedDesiredTags as sr, redactSecretsForState as ss, green as st, DeployEngine as t, malformedOrphanRecordsRefusalMessage as ta, importableOutputs as tc, applyCallerIdentityCredentials as ti, resolveCaptureObservedState as tl, findNestedStackTypeChanges as tn, findReplacedReadersOfRecreateTargets as to, withCreateTokenLedger as tr, errorCauseChain as ts, markRefusedBeforeApplying as tt, conditionFingerprint as u, malformedResourcePropertiesWarning as ua, buildAssetRedirectMap as uc, s3BucketDomainName as ui, CFN_TEMPLATE_URL_LIMIT as ul, DeploymentEventsReader as un, toCfnInteger as uo, definedAttributes as ur, withoutPhysicalNameCopies as us, computeParameterTaint as ut, chunks as v, refuseMalformedOrphanRecordsForDestroy as va, getBootstrapMarkerKey as vc, coerceParameterTypedValue as vi, canonicalizeRegion as vl, carriedExportAliasExposure as vn, replayWarn as vo, readsNoEchoDeleteValues as vr, recoverMaskedOutput as vs, displacedPhysicalIdShown as vt, deferredServiceTokenWarning as w, refuseMalformedResourceAttributesForOrphan as wa, buildDenyExternalAccessPolicy as wc, carriesFetchableDynamicReference as wi, hasOwnKey as wl, collectPublishedOutputNames as wn, describeTypeWithThrottleRetry as wo, customResourceResponseExpirationWarning as wr, provenPublicValue as ws, revertedNestedRowIds as wt, withApiLimit as x, refuseMalformedOrphansForOrphan as xa, readBootstrapMarkerBody as xc, getAccountInfo as xi, StageLoadError as xl, isWholeDynamicReferenceValue as xn, requireConfigString as xo, withPrintingSecrets as xr, recordPhysicalNameCopy as xs, nestedChildStackName as xt, isAccessDeniedError as y, refuseMalformedOrphans as ya, isCrossRegionRedirect as yc, isUnboundTemplateParameter as yi, derivePartitionAndUrlSuffix as yl, exportNameNoEchoParameters as yn, requireConfigArray as yo, isCustomResourceType as yr, physicalNameCopiesOf as ys, dropSettledNestedJournals as yt, DynamoDBGlobalTableProvider as z, repairMalformedOrphanRecordsForReadOnly as za, redactedDockerCause as zc, UNREADABLE_ORPHANS_CONTAINER_ROW as zi, ATOMIC_FINAL_SNAPSHOT_TYPES as zn, noEchoOutputsComparison as zo, observeThenDisableInstanceApiTermination as zr, S3StateBackend as zs, destroyStackRecordsView as zt };
46384
+ //# sourceMappingURL=deploy-engine-DlLwYRJk.js.map