@go-to-k/cdkd 0.296.19 → 0.296.21

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-ha36d8C0.js → asg-provider-D5_Zlj5T.js} +2 -2
  2. package/dist/{asg-provider-ha36d8C0.js.map → asg-provider-D5_Zlj5T.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-DFGqFKxg.js → deploy-engine-CFgNpsEy.js} +404 -38
  5. package/dist/deploy-engine-CFgNpsEy.js.map +1 -0
  6. package/dist/iam-policy-targets-BoZuWtxK.js.map +1 -1
  7. package/dist/{iam-role-provider-ClhDA-4n.js → iam-role-provider-lZJS9r6W.js} +2 -2
  8. package/dist/{iam-role-provider-ClhDA-4n.js.map → iam-role-provider-lZJS9r6W.js.map} +1 -1
  9. package/dist/index.d.ts +75 -27
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -2
  12. package/dist/{neptune-provider-DHPdyc-o.js → neptune-provider-DGI_r9C8.js} +2 -2
  13. package/dist/{neptune-provider-DHPdyc-o.js.map → neptune-provider-DGI_r9C8.js.map} +1 -1
  14. package/dist/{program-B71EFlzv.js → program-B5hwPYpu.js} +16 -5
  15. package/dist/program-B5hwPYpu.js.map +1 -0
  16. package/dist/{provider-classes-ByXP467R.js → provider-classes-D9az4nS4.js} +73 -15
  17. package/dist/provider-classes-D9az4nS4.js.map +1 -0
  18. package/dist/{rds-provider-DOBUTuj4.js → rds-provider-CE85wFCg.js} +2 -2
  19. package/dist/{rds-provider-DOBUTuj4.js.map → rds-provider-CE85wFCg.js.map} +1 -1
  20. package/dist/{version-DsDA-Fvw.js → version-_h48bvqX.js} +2 -2
  21. package/dist/{version-DsDA-Fvw.js.map → version-_h48bvqX.js.map} +1 -1
  22. package/package.json +1 -1
  23. package/dist/deploy-engine-DFGqFKxg.js.map +0 -1
  24. package/dist/program-B71EFlzv.js.map +0 -1
  25. package/dist/provider-classes-ByXP467R.js.map +0 -1
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js"
2
2
  import { A as UNRENDERABLE, C as looksLikeCdkdGeneratedName, E as withoutGeneratedFallbackName, F as displayStackName, 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 truncateCodePoints, 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-BaWeCWRz.js";
3
3
  import { $ as protectedReplacementAdvice, $n as isIamPropagationError, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bt as sanitizeRecoveryValue, Ct as RETRY_AUXILIARY_OWNER, Dn as SHELL_ACTIVE, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, G as runDeleteAttempt, Gn as isNameCooldownError, H as observeThenDisableProtection, Hn as isUpdateUnsupportedError, Ht as DEFAULT_STATE_PREFIX, In as quotedOrDescribed, J as DELETION_PROTECTION_DOC_POINTER, Jt as withPasteableAwsProfile, Kn as isRecreateRetryableError, Kt as producerRecordKey, L as ProtectionFlipRegistry, Ln as shellBoundedDisplay, Lt as formatLockExpiry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, Nt as UNREPRODUCIBLE_LOCK_CLAUSE, On as SHELL_ACTIVE_WHY, Ot as hasCreatedBeforeFailure, Pn as physicalIdShownBesideCommand, Pt as buildForceUnlockCommand, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, R as compensateProtectionFlip, Rn as shellQuote, Rt as formatLockOperation, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Un as hasReplayMayCollide, Ut as injectiveKey, Vt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Wn as isNameCollisionErrorFrom, Xn as formatRetryClassificationSignals, Xt as ambientCredentialConfig, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Zn as isAmbiguousCcHandlerErrorCode, Zt as clientDefaultsFor, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, ar as isThrottlingError, at as startInterruptWatch, bn as StateError, bt as maskDeep, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dn as MacroExpansionError, en as AssetError, er as isRetryableTransientError, f as removalWarning, fn as MalformedProducerRecordRefusalError, ft as logicalIdShown, gn as ResourceTimeoutError, gt as stateOrphanRecordRemedy, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as DependencyError, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, kn as UNSHOWABLE_VALUE, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, m as withoutInjectedRemovals, mt as resourceTypeShown, nr as retryClassificationText, on as DynamicReferenceRegionAmbiguousError, or as markNonRetryable, ot as ElapsedBudgetRegistry, qn as isReplayedNameCollisionFrom, rn as CrossAccountSecretRefusalError, sn as IntrinsicResolutionRefusalError, sr as markRedactedCause, st as monotonicNowMs, tn as CdkdError, tr as isTransientServerError, un as LockError, ut as compositeIdSeparatorRefusal, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as normalizeAwsError, wt as carryCreatedBeforeFailure, xn as SynthesisError, xt as maskerOrIdentity, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause, zt as formatLockOwner } from "./iam-policy-targets-BoZuWtxK.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-D0q0z4dG.js";
5
- import { t as getCdkdVersion } from "./version-DsDA-Fvw.js";
5
+ import { t as getCdkdVersion } from "./version-_h48bvqX.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -8436,7 +8436,7 @@ function wildcardOverlapsResolvedPlaintext(send, wildcards, secrets) {
8436
8436
 
8437
8437
  //#endregion
8438
8438
  //#region src/deployment/secret-redaction/noecho-leaves.ts
8439
- const SUB_VARIABLE$1 = /\$\{([^}!][^}]*)\}/g;
8439
+ const SUB_VARIABLE$2 = /\$\{([^}!][^}]*)\}/g;
8440
8440
  function intrinsicKeyOf(node) {
8441
8441
  const keys = Object.keys(node);
8442
8442
  if (keys.length !== 1) return void 0;
@@ -8463,7 +8463,7 @@ function getAttReadsNoEcho(argument, sources) {
8463
8463
  return sources.attributeIsNoEcho(target, attribute);
8464
8464
  }
8465
8465
  function subStringReadsNoEcho(text, variables, sources) {
8466
- for (const match of text.matchAll(SUB_VARIABLE$1)) {
8466
+ for (const match of text.matchAll(SUB_VARIABLE$2)) {
8467
8467
  const name = match[1].trim();
8468
8468
  if (variables !== void 0 && Object.hasOwn(variables, name)) continue;
8469
8469
  if (sources.parameters.has(name)) return true;
@@ -8511,8 +8511,12 @@ function literalIndex(index) {
8511
8511
  if (typeof index === "number" && Number.isInteger(index)) return index;
8512
8512
  if (typeof index === "string" && /^\d+$/.test(index)) return Number(index);
8513
8513
  }
8514
- function noEchoCoordinatesOf(template, resolved, sources) {
8514
+ function noEchoCoordinatesOf(template, resolved, sources, onCoordinate) {
8515
8515
  const coordinates = [];
8516
+ const push = (path, node) => {
8517
+ coordinates.push(path);
8518
+ onCoordinate?.(path, node);
8519
+ };
8516
8520
  const ancestors = /* @__PURE__ */ new Set();
8517
8521
  const parametersOnly = {
8518
8522
  parameters: sources.parameters,
@@ -8528,14 +8532,14 @@ function noEchoCoordinatesOf(template, resolved, sources) {
8528
8532
  if (Array.isArray(source)) {
8529
8533
  if (!readsNoEchoSource(source, sources)) return;
8530
8534
  if (Array.isArray(value) && value.length === source.length) source.forEach((item, index) => walk(item, value[index], [...path, index]));
8531
- else if (readsNoEchoSource(source, parametersOnly) || source.some(isBareDeclaredGetAtt)) coordinates.push(path);
8535
+ else if (readsNoEchoSource(source, parametersOnly) || source.some(isBareDeclaredGetAtt)) push(path, source);
8532
8536
  return;
8533
8537
  }
8534
8538
  const record = source;
8535
8539
  const intrinsic = intrinsicKeyOf(record);
8536
8540
  if (intrinsic === void 0) {
8537
8541
  if (!isPlainObject$4(value)) {
8538
- if (readsNoEchoSource(record, parametersOnly)) coordinates.push(path);
8542
+ if (readsNoEchoSource(record, parametersOnly)) push(path, source);
8539
8543
  return;
8540
8544
  }
8541
8545
  for (const [key, child] of Object.entries(record)) if (Object.hasOwn(value, key)) walk(child, value[key], [...path, key]);
@@ -8550,7 +8554,7 @@ function noEchoCoordinatesOf(template, resolved, sources) {
8550
8554
  return;
8551
8555
  }
8552
8556
  if (isBareDeclaredGetAtt(argument[1]) || isBareDeclaredGetAtt(argument[2])) {
8553
- coordinates.push(path);
8557
+ push(path, source);
8554
8558
  return;
8555
8559
  }
8556
8560
  }
@@ -8567,10 +8571,10 @@ function noEchoCoordinatesOf(template, resolved, sources) {
8567
8571
  }
8568
8572
  }
8569
8573
  if (intrinsic === "Fn::GetAtt") {
8570
- if (getAttReadsNoEcho(record["Fn::GetAtt"], sources)) coordinates.push(path);
8574
+ if (getAttReadsNoEcho(record["Fn::GetAtt"], sources)) push(path, source);
8571
8575
  return;
8572
8576
  }
8573
- if (readsNoEchoSource(record, parametersOnly)) coordinates.push(path);
8577
+ if (readsNoEchoSource(record, parametersOnly)) push(path, source);
8574
8578
  } finally {
8575
8579
  ancestors.delete(source);
8576
8580
  }
@@ -8646,6 +8650,31 @@ function maskAtCoordinates(bag, coordinates) {
8646
8650
  }
8647
8651
  return root;
8648
8652
  }
8653
+ function replaceAtCoordinates(bag, entries) {
8654
+ let root = bag;
8655
+ for (const { coordinate, value } of entries) {
8656
+ if (!readAt(root, coordinate).found) continue;
8657
+ if (coordinate.length === 0) {
8658
+ root = value;
8659
+ continue;
8660
+ }
8661
+ root = cloneContainer(root);
8662
+ let node = root;
8663
+ for (let i = 0; i <= coordinate.length - 1; i++) {
8664
+ const segment = coordinate[i];
8665
+ const next = i === coordinate.length - 1 ? value : cloneContainer(node[segment]);
8666
+ if (typeof segment === "number") node[segment] = next;
8667
+ else Object.defineProperty(node, segment, {
8668
+ value: next,
8669
+ enumerable: true,
8670
+ writable: true,
8671
+ configurable: true
8672
+ });
8673
+ node = next;
8674
+ }
8675
+ }
8676
+ return root;
8677
+ }
8649
8678
  function maskReadbackAtCoordinates(readback, properties, coordinates) {
8650
8679
  let result = readback;
8651
8680
  for (const coordinate of coordinates) {
@@ -9932,7 +9961,7 @@ async function withRetry(operation, logicalId, opts = {}) {
9932
9961
  const backoffThroughThisAttemptMs = propagation ? propagationSleptMs + delay : propagationSleptMs;
9933
9962
  opts.logger?.debug(` ⏳ Retrying ${shownId} in ${delay / 1e3}s (attempt ${attempt + 1}/${attemptLimit}${propagation ? `, ${(backoffThroughThisAttemptMs / 1e3).toFixed(2)}s backoff through this attempt` : ""}) - ${message}`);
9934
9963
  for (let waited = 0; waited < delay; waited += 1e3) {
9935
- if (opts.isInterrupted?.()) throw opts.onInterrupted ? opts.onInterrupted() : /* @__PURE__ */ new Error("Interrupted");
9964
+ if (opts.isInterrupted?.()) throw carryCreatedBeforeFailure(previousError, opts.onInterrupted ? opts.onInterrupted() : /* @__PURE__ */ new Error("Interrupted"));
9936
9965
  await sleep(Math.min(1e3, delay - waited));
9937
9966
  }
9938
9967
  if (propagation) {
@@ -22923,7 +22952,7 @@ var CloudControlProvider = class {
22923
22952
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
22924
22953
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
22925
22954
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
22926
- const { ASGProvider } = await import("./asg-provider-ha36d8C0.js");
22955
+ const { ASGProvider } = await import("./asg-provider-D5_Zlj5T.js");
22927
22956
  const delegateRegion = ambientRegion();
22928
22957
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
22929
22958
  if (asgProvider === void 0) {
@@ -23029,7 +23058,7 @@ var CloudControlProvider = class {
23029
23058
  const family = SDK_DELETE_FAMILIES.get(resourceType);
23030
23059
  const cached = this.sdkDeleteDelegates.get(family);
23031
23060
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
23032
- const provider = family === "rds" ? new (await (import("./rds-provider-DOBUTuj4.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DHPdyc-o.js"))).NeptuneProvider({ region: ccRegion });
23061
+ const provider = family === "rds" ? new (await (import("./rds-provider-CE85wFCg.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DGI_r9C8.js"))).NeptuneProvider({ region: ccRegion });
23033
23062
  this.sdkDeleteDelegates.set(family, {
23034
23063
  region: ccRegion,
23035
23064
  provider
@@ -23923,6 +23952,305 @@ function findResolvedSecretPaths(properties, secrets) {
23923
23952
  return paths;
23924
23953
  }
23925
23954
 
23955
+ //#endregion
23956
+ //#region src/deployment/noecho-delete-reresolution.ts
23957
+ function readsNoEchoDeleteValues(resourceType) {
23958
+ return resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::") || resourceType === "AWS::CloudFormation::Stack";
23959
+ }
23960
+ function isRecord(value) {
23961
+ return value !== null && typeof value === "object" && !Array.isArray(value);
23962
+ }
23963
+ function maskedNoEchoCoordinates(properties, recordedLeaves) {
23964
+ return (recordedLeaves ?? []).filter((coordinate) => carriesSecretMask(valueAtCoordinate(properties, coordinate)));
23965
+ }
23966
+ function applyNoEchoDeleteValues(properties, recordedLeaves, values) {
23967
+ const masked = maskedNoEchoCoordinates(properties, recordedLeaves);
23968
+ if (masked.length === 0) return {
23969
+ payload: properties,
23970
+ unresolved: []
23971
+ };
23972
+ const byKey = new Map((values?.leaves ?? []).map((leaf) => [canonicalJson$3(leaf.coordinate), leaf]));
23973
+ const entries = [];
23974
+ const unresolved = [];
23975
+ for (const coordinate of masked) {
23976
+ const leaf = byKey.get(canonicalJson$3(coordinate));
23977
+ if (leaf === void 0) unresolved.push(coordinate);
23978
+ else entries.push({
23979
+ coordinate,
23980
+ value: leaf.value
23981
+ });
23982
+ }
23983
+ if (unresolved.length > 0) return {
23984
+ payload: properties,
23985
+ unresolved
23986
+ };
23987
+ return {
23988
+ payload: replaceAtCoordinates(properties, entries),
23989
+ unresolved
23990
+ };
23991
+ }
23992
+ function recordLeaves(bag, value) {
23993
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
23994
+ for (const child of Object.values(value)) recordLeaves(bag, child);
23995
+ return;
23996
+ }
23997
+ recordLogOnlyParameterValue(bag, value);
23998
+ }
23999
+ function templateNodesAt(templateProperties, shape, noEchoParameters, conditions) {
24000
+ const nodes = /* @__PURE__ */ new Map();
24001
+ noEchoCoordinatesOf(templateProperties ?? {}, shape, {
24002
+ parameters: noEchoParameters,
24003
+ ...conditions !== void 0 && { conditions }
24004
+ }, (coordinate, node) => nodes.set(canonicalJson$3(coordinate), node));
24005
+ return nodes;
24006
+ }
24007
+ async function fingerprintsUnchanged(record, templateProperties, coordinate, fingerprinter) {
24008
+ const key = coordinate[0];
24009
+ if (typeof key !== "string") return false;
24010
+ const props = templateProperties !== null && typeof templateProperties === "object" ? templateProperties : {};
24011
+ const raw = record.maskedPropertyFingerprints;
24012
+ if (!(raw !== null && typeof raw === "object" && Object.hasOwn(raw, key))) return true;
24013
+ const recorded = maskedPropertyFingerprintsOf(record).get(key);
24014
+ if (recorded === void 0 || !Object.hasOwn(props, key)) return false;
24015
+ if (recorded !== maskedPropertyFingerprint(props[key])) return false;
24016
+ const bound = maskedPropertyInputFingerprintsOf(record).get(key);
24017
+ if (bound === void 0) return true;
24018
+ const now = fingerprinter === void 0 ? void 0 : await fingerprinter(key);
24019
+ return now !== void 0 && now === bound;
24020
+ }
24021
+ async function noEchoDeleteValuesFromResolved(options) {
24022
+ const { record, templateResource, resolvedProperties } = options;
24023
+ if (!readsNoEchoDeleteValues(record.resourceType)) return void 0;
24024
+ const masked = maskedNoEchoCoordinates(record.properties, noEchoLeavesOf(record));
24025
+ if (masked.length === 0 || templateResource === void 0 || resolvedProperties === void 0) return;
24026
+ if (templateResource.Type !== record.resourceType) return void 0;
24027
+ if (carriesResolvedSecret(options.secrets)) return void 0;
24028
+ const nodes = templateNodesAt(templateResource.Properties, resolvedProperties, options.noEchoParameters, options.conditions);
24029
+ const bag = new Map(options.secrets);
24030
+ carryLogOnlyValues(options.secrets, bag);
24031
+ const templateProps = isRecord(templateResource.Properties) ? templateResource.Properties : {};
24032
+ const fingerprinter = options.inputSources === void 0 ? void 0 : inputFingerprinter(templateProps, options.inputSources);
24033
+ const leaves = [];
24034
+ for (const coordinate of masked) {
24035
+ if (!nodes.has(canonicalJson$3(coordinate))) continue;
24036
+ if (!await fingerprintsUnchanged(record, templateProps, coordinate, fingerprinter)) continue;
24037
+ const value = valueAtCoordinate(resolvedProperties, coordinate);
24038
+ if (value === void 0 || carriesSecretMask(value)) continue;
24039
+ recordLeaves(bag, value);
24040
+ leaves.push({
24041
+ coordinate,
24042
+ value
24043
+ });
24044
+ }
24045
+ if (leaves.length === 0) return void 0;
24046
+ return {
24047
+ leaves,
24048
+ maskSecrets: createSecretMasker(bag)
24049
+ };
24050
+ }
24051
+ const PSEUDO_PARAMETERS = /* @__PURE__ */ new Set([
24052
+ "AWS::Region",
24053
+ "AWS::Partition",
24054
+ "AWS::URLSuffix",
24055
+ "AWS::AccountId",
24056
+ "AWS::StackName"
24057
+ ]);
24058
+ const SUB_VARIABLE$1 = /\$\{([^}!][^}]*)\}/g;
24059
+ const PARAMETER_ONLY_INTRINSICS = /* @__PURE__ */ new Set([
24060
+ "Ref",
24061
+ "Fn::Join",
24062
+ "Fn::Sub",
24063
+ "Fn::Select",
24064
+ "Fn::Split",
24065
+ "Fn::Base64"
24066
+ ]);
24067
+ function readsParametersOnly(node, declared, refused) {
24068
+ const isParameter = (name) => typeof name === "string" && (declared.has(name) && !refused.has(name) || PSEUDO_PARAMETERS.has(name));
24069
+ const walk = (value) => {
24070
+ if (typeof value === "string") return !value.includes("{{resolve:");
24071
+ if (value === null || typeof value !== "object") return true;
24072
+ if (Array.isArray(value)) return value.every(walk);
24073
+ const record = value;
24074
+ const keys = Object.keys(record);
24075
+ const intrinsic = keys.length === 1 && (keys[0] === "Ref" || keys[0].startsWith("Fn::")) ? keys[0] : void 0;
24076
+ if (keys.includes("Condition")) return false;
24077
+ if (intrinsic === void 0) return Object.values(record).every(walk);
24078
+ if (!PARAMETER_ONLY_INTRINSICS.has(intrinsic)) return false;
24079
+ const argument = record[intrinsic];
24080
+ if (intrinsic === "Ref") return isParameter(argument);
24081
+ if (intrinsic === "Fn::Sub") {
24082
+ const [text, variables] = Array.isArray(argument) ? argument : [argument, void 0];
24083
+ if (typeof text !== "string" || text.includes("{{resolve:")) return false;
24084
+ const local = variables !== null && typeof variables === "object" && !Array.isArray(variables) ? variables : void 0;
24085
+ if (Array.isArray(argument) && argument.length === 2 && local === void 0) return false;
24086
+ for (const match of text.matchAll(SUB_VARIABLE$1)) {
24087
+ const name = match[1];
24088
+ if (local !== void 0 && Object.hasOwn(local, name)) continue;
24089
+ if (!isParameter(name)) return false;
24090
+ }
24091
+ return local === void 0 || Object.values(local).every(walk);
24092
+ }
24093
+ return walk(argument);
24094
+ };
24095
+ return walk(node);
24096
+ }
24097
+ var TemplateNoEchoReresolver = class TemplateNoEchoReresolver {
24098
+ logger = getLogger().child("NoEchoDeleteReresolution");
24099
+ resolver;
24100
+ parametersPromise;
24101
+ noEchoParameters;
24102
+ options;
24103
+ constructor(options) {
24104
+ this.options = options;
24105
+ this.resolver = new IntrinsicFunctionResolver(options.region);
24106
+ const declared = /* @__PURE__ */ new Set();
24107
+ const section = options.template.Parameters;
24108
+ if (section !== null && typeof section === "object") for (const [name, definition] of Object.entries(section)) {
24109
+ const noEcho = definition?.NoEcho;
24110
+ if (noEcho === true || noEcho === "true") declared.add(name);
24111
+ }
24112
+ for (const name of options.inheritedNoEchoParameters ?? []) declared.add(name);
24113
+ this.noEchoParameters = declared;
24114
+ }
24115
+ static usable(template) {
24116
+ return template !== void 0 && template !== null && typeof template === "object" && template.Transform === void 0;
24117
+ }
24118
+ newBag() {
24119
+ const bag = new Map(this.options.inheritedSecrets ?? []);
24120
+ if (this.options.inheritedSecrets !== void 0) carryLogOnlyValues(this.options.inheritedSecrets, bag);
24121
+ return bag;
24122
+ }
24123
+ boundParameters() {
24124
+ this.parametersPromise ??= this.resolver.resolveParameters(this.options.template, this.options.parameters, { inheritedSecrets: this.newBag() }).catch(() => {
24125
+ this.logger.debug(safeMsg`Could not bind the parameters of ${this.options.stackName}'s template; NoEcho ` + `coordinates are not re-resolved for its custom resources' deletes.`);
24126
+ });
24127
+ return this.parametersPromise;
24128
+ }
24129
+ inputSources(parameters) {
24130
+ const { parameterInput, bound } = parameterInputsFor({
24131
+ template: this.options.template,
24132
+ values: parameters,
24133
+ nestedChild: this.options.parameters !== void 0,
24134
+ supplied: this.options.parameters,
24135
+ passedClasses: this.options.passedClasses
24136
+ });
24137
+ return {
24138
+ template: this.options.template,
24139
+ parameterInput,
24140
+ resolve: async (node) => {
24141
+ const secrets = /* @__PURE__ */ new Map();
24142
+ return {
24143
+ value: await this.resolver.resolve(structuredClone(node), {
24144
+ template: this.options.template,
24145
+ resources: {},
24146
+ parameters: bound,
24147
+ stackName: this.options.stackName,
24148
+ recordedSecretValues: secrets,
24149
+ skipDynamicReferences: true
24150
+ }),
24151
+ secrets
24152
+ };
24153
+ }
24154
+ };
24155
+ }
24156
+ async noEchoNeedles() {
24157
+ const bag = this.newBag();
24158
+ const parameters = await this.boundParameters();
24159
+ for (const name of this.noEchoParameters) if (parameters !== void 0 && Object.hasOwn(parameters, name)) recordLogOnlyParameterValue(bag, parameters[name]);
24160
+ return bag;
24161
+ }
24162
+ async valuesFor(logicalId, record) {
24163
+ const masked = maskedNoEchoCoordinates(record.properties, noEchoLeavesOf(record));
24164
+ if (masked.length === 0) return void 0;
24165
+ const resources = this.options.template.Resources;
24166
+ const templateResource = resources !== void 0 && Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0;
24167
+ if (templateResource?.Type !== record.resourceType) return void 0;
24168
+ const parameters = await this.boundParameters();
24169
+ if (parameters === void 0) return void 0;
24170
+ const nodes = templateNodesAt(templateResource.Properties, record.properties, this.noEchoParameters, void 0);
24171
+ const declared = new Set(Object.keys(this.options.template.Parameters ?? {}));
24172
+ const templateProps = isRecord(templateResource.Properties) ? templateResource.Properties : {};
24173
+ const fingerprinter = inputFingerprinter(templateProps, this.inputSources(parameters));
24174
+ const refused = this.options.maskedParameters ?? /* @__PURE__ */ new Set();
24175
+ const bag = await this.noEchoNeedles();
24176
+ const leaves = [];
24177
+ for (const coordinate of masked) {
24178
+ const key = canonicalJson$3(coordinate);
24179
+ if (!nodes.has(key)) continue;
24180
+ const node = nodes.get(key);
24181
+ if (!readsParametersOnly(node, declared, refused)) continue;
24182
+ if (!await fingerprintsUnchanged(record, templateProps, coordinate, fingerprinter)) continue;
24183
+ let value;
24184
+ try {
24185
+ value = await this.resolver.resolve(structuredClone(node), {
24186
+ template: this.options.template,
24187
+ resources: {},
24188
+ parameters,
24189
+ stackName: this.options.stackName,
24190
+ recordedSecretValues: bag
24191
+ });
24192
+ } catch {
24193
+ this.logger.debug(safeMsg`Could not re-resolve a NoEcho coordinate of ${logicalId} from today's template.`);
24194
+ continue;
24195
+ }
24196
+ if (value === void 0 || carriesSecretMask(value)) continue;
24197
+ recordLeaves(bag, value);
24198
+ leaves.push({
24199
+ coordinate,
24200
+ value
24201
+ });
24202
+ }
24203
+ if (leaves.length === 0) return void 0;
24204
+ return {
24205
+ leaves,
24206
+ maskSecrets: createSecretMasker(bag)
24207
+ };
24208
+ }
24209
+ async forNestedChild(logicalId, row, childStackName, load, extractParameters) {
24210
+ const nested = this.options.nestedTemplates;
24211
+ const templatePath = nested !== void 0 && Object.hasOwn(nested, logicalId) ? nested[logicalId] : void 0;
24212
+ if (templatePath === void 0 || !fs.existsSync(templatePath)) return void 0;
24213
+ try {
24214
+ const child = load(templatePath);
24215
+ if (!TemplateNoEchoReresolver.usable(child.template)) return void 0;
24216
+ const leaves = row.noEchoLeaves ?? [];
24217
+ const replaced = replaceAtCoordinates(row.properties ?? {}, row.values?.leaves ?? []);
24218
+ const parameters = extractParameters(replaced);
24219
+ const inherited = /* @__PURE__ */ new Set();
24220
+ for (const coordinate of leaves) if (coordinate.length >= 2 && coordinate[0] === "Parameters") inherited.add(String(coordinate[1]));
24221
+ const rowParameters = replaced.Parameters;
24222
+ const masked = /* @__PURE__ */ new Set();
24223
+ for (const [name, value] of Object.entries(parameters)) {
24224
+ const raw = rowParameters !== null && typeof rowParameters === "object" && Object.hasOwn(rowParameters, name) ? rowParameters[name] : value;
24225
+ if (carriesSecretMask(raw) || carriesSecretMask(value)) masked.add(name);
24226
+ }
24227
+ const parentNeedles = await this.noEchoNeedles();
24228
+ const inheritedSecrets = this.newBag();
24229
+ for (const name of inherited) if (!masked.has(name) && Object.hasOwn(parameters, name)) {
24230
+ recordLogOnlyParameterValue(inheritedSecrets, parameters[name]);
24231
+ carryLogOnlyValuesCarriedBy(parentNeedles, inheritedSecrets, parameters[name]);
24232
+ }
24233
+ const parameters0 = await this.boundParameters();
24234
+ const rowTemplate = this.options.template.Resources?.[logicalId];
24235
+ const passedClasses = parameters0 === void 0 ? void 0 : await classifyPassedParameters(rowTemplate?.Properties?.Parameters, this.inputSources(parameters0)).catch(() => void 0);
24236
+ return new TemplateNoEchoReresolver({
24237
+ ...passedClasses !== void 0 && { passedClasses },
24238
+ template: child.template,
24239
+ stackName: childStackName,
24240
+ region: this.options.region,
24241
+ nestedTemplates: child.nestedTemplates,
24242
+ parameters,
24243
+ inheritedNoEchoParameters: inherited,
24244
+ maskedParameters: masked,
24245
+ inheritedSecrets
24246
+ });
24247
+ } catch {
24248
+ this.logger.debug(safeMsg`Could not load nested stack ${logicalId}'s template to re-resolve its NoEcho values.`);
24249
+ return;
24250
+ }
24251
+ }
24252
+ };
24253
+
23926
24254
  //#endregion
23927
24255
  //#region src/provisioning/providers/custom-resource-provider.ts
23928
24256
  const DELETE_PATH_UNMASKED = void 0;
@@ -23930,6 +24258,8 @@ const CR_NO_PROPERTIES_SKIP_REASON = "no properties in state — Delete handler
23930
24258
  const CR_NO_SERVICE_TOKEN_SKIP_REASON = "no ServiceToken in state — Delete handler not invoked";
23931
24259
  const CR_MASKED_SERVICE_TOKEN_SKIP_REASON = "masked ServiceToken in state — Delete handler not invoked";
23932
24260
  const CR_NOECHO_PROPERTIES_SKIP_REASON = "NoEcho mask in recorded properties — Delete handler not invoked";
24261
+ const CR_MASKED_PROPERTIES_SKIP_REASON = "redaction mask in properties — Delete handler not invoked";
24262
+ const NOECHO_RERESOLUTION_BOUND = "cdkd re-resolves such a coordinate only where it holds the template ('cdkd destroy' with the app), and only while today's template reads a NoEcho parameter there with the property's text and inputs unchanged; an attribute a producer declared NoEcho has no template value to re-resolve.";
23933
24263
  function noEchoPropertiesRemedy(context, logicalId) {
23934
24264
  return context?.stackDestroy === true ? `cdkd is KEEPING the state record and the run exits non-zero, and every re-run skips it again. Tear down what the handler manages by hand, then drop the record with ${stateOrphanRecordRemedy(context, logicalId)}.` : "This delete is not part of a stack destroy (a 'cdkd deploy' template removal, replacement or rollback, or a 'cdkd rollback'). For a resource removed from the template the record is KEPT and every 'cdkd deploy' skips it again: tear down what the handler manages by hand. " + crDeploySkipTail(logicalId);
23935
24265
  }
@@ -24402,14 +24732,25 @@ var CustomResourceProvider = class CustomResourceProvider {
24402
24732
  reason: CR_REFERENCE_SERVICE_TOKEN_SKIP_REASON
24403
24733
  };
24404
24734
  }
24405
- const maskedNoEchoPaths = (context?.recordedNoEchoLeaves ?? []).filter((coordinate) => carriesSecretMask(valueAtCoordinate(properties, coordinate))).map((coordinate) => coordinate.join("."));
24406
- if (maskedNoEchoPaths.length > 0) {
24407
- this.logger.warn(safeMsg`Custom resource ${logicalId} is recorded in state with ${maskedNoEchoPaths.join(", ")} ` + "holding the '***' mask of a NoEcho value (a NoEcho parameter, or an attribute declared NoEcho), which cdkd does not keep or re-resolve on delete, so its handler would receive the mask in ResourceProperties; skipping deletion — the handler is not invoked, so anything this custom resource manages is LEFT IN PLACE. " + safeMsg`${noEchoPropertiesRemedy(context, logicalId)}`);
24735
+ const reresolved = context?.noEchoDeleteValues;
24736
+ const { payload, unresolved } = applyNoEchoDeleteValues(properties, context?.recordedNoEchoLeaves, reresolved);
24737
+ if (unresolved.length > 0) {
24738
+ const maskedNoEchoPaths = unresolved.map((coordinate) => coordinate.join("."));
24739
+ this.logger.warn(safeMsg`Custom resource ${logicalId} is recorded in state with ${maskedNoEchoPaths.join(", ")} ` + `holding the '***' mask of a NoEcho value (a NoEcho parameter, or an attribute declared NoEcho), which cdkd does not keep, so its handler would receive the mask in ResourceProperties; skipping deletion — the handler is not invoked, so anything this custom resource manages is LEFT IN PLACE. ${NOECHO_RERESOLUTION_BOUND} ` + safeMsg`${noEchoPropertiesRemedy(context, logicalId)}`);
24408
24740
  return {
24409
24741
  outcome: "skipped",
24410
24742
  reason: CR_NOECHO_PROPERTIES_SKIP_REASON
24411
24743
  };
24412
24744
  }
24745
+ if (carriesSecretMask(payload)) {
24746
+ this.logger.warn(safeMsg`Custom resource ${logicalId} is recorded in state with a property holding the ` + "'***' redaction mask, which no NoEcho coordinate of the record names, so cdkd cannot re-resolve it and its handler would receive the mask in ResourceProperties; skipping deletion — the handler is not invoked, so anything this custom resource manages is LEFT IN PLACE. For a record 'cdkd import' or 'cdkd scrub' wrote, a 'cdkd deploy' of the app first records which positions hold a NoEcho value, after which 'cdkd destroy' sends the delete. " + safeMsg`${noEchoPropertiesRemedy(context, logicalId)}`);
24747
+ return {
24748
+ outcome: "skipped",
24749
+ reason: CR_MASKED_PROPERTIES_SKIP_REASON
24750
+ };
24751
+ }
24752
+ const deleteMask = payload === properties ? DELETE_PATH_UNMASKED : reresolved?.maskSecrets;
24753
+ const show = (text) => deleteMask === void 0 ? text : deleteMask(text);
24413
24754
  if (!this.isSnsServiceToken(serviceToken) && await this.isBackingLambdaGone(serviceToken)) {
24414
24755
  if (context?.stackDestroy === true) {
24415
24756
  this.logger.warn(safeMsg`Backing Lambda for custom resource ${logicalId} no longer exists (${serviceToken}), so ` + "its Delete handler cannot be invoked and cdkd cannot confirm the resource was deleted; skipping deletion — anything this custom resource manages may still be LIVE. cdkd is KEEPING the state record and the run exits non-zero, as CloudFormation leaves such a stack DELETE_FAILED. A re-run skips it again unless a function with that exact ARN exists again (e.g. a shared provider stack destroyed before this one, then redeployed). Otherwise confirm by hand that whatever it manages is gone (or tear it down), then drop the record with " + safeMsg`${stateOrphanRecordRemedy(context, logicalId)}.`);
@@ -24430,10 +24771,10 @@ var CustomResourceProvider = class CustomResourceProvider {
24430
24771
  LogicalResourceId: logicalId,
24431
24772
  PhysicalResourceId: physicalId,
24432
24773
  StackId: invocation.stackId,
24433
- ResourceProperties: this.stringifyProperties(properties)
24434
- }), DELETE_PATH_UNMASKED);
24774
+ ResourceProperties: this.stringifyProperties(payload)
24775
+ }), deleteMask);
24435
24776
  if (cfnResponse.Status === "FAILED") {
24436
- this.logger.warn(`Custom resource delete handler returned FAILED for ${logicalId}: ${cfnResponse.Reason || "Unknown reason"}. The handler reported that it did NOT delete, so anything this custom resource manages is LEFT IN PLACE${handlerSkipRemedy(context, logicalId)}`);
24777
+ this.logger.warn(show(`Custom resource delete handler returned FAILED for ${logicalId}: ${cfnResponse.Reason || "Unknown reason"}. The handler reported that it did NOT delete, so anything this custom resource manages is LEFT IN PLACE${handlerSkipRemedy(context, logicalId)}`));
24437
24778
  return {
24438
24779
  outcome: "skipped",
24439
24780
  reason: CR_DELETE_HANDLER_FAILED_SKIP_REASON
@@ -24441,7 +24782,7 @@ var CustomResourceProvider = class CustomResourceProvider {
24441
24782
  }
24442
24783
  this.logger.debug(`Successfully deleted custom resource ${logicalId}`);
24443
24784
  } catch (error) {
24444
- this.logger.warn(`Failed to delete custom resource ${logicalId}, but continuing: ${describeAwsFailure(error).detail}. The Delete handler did not complete, so anything this custom resource manages may still be LIVE${handlerSkipRemedy(context, logicalId)}`);
24785
+ this.logger.warn(show(`Failed to delete custom resource ${logicalId}, but continuing: ${describeAwsFailure(error).detail}. The Delete handler did not complete, so anything this custom resource manages may still be LIVE${handlerSkipRemedy(context, logicalId)}`));
24445
24786
  return {
24446
24787
  outcome: "skipped",
24447
24788
  reason: CR_DELETE_INVOKE_FAILED_SKIP_REASON
@@ -24470,6 +24811,7 @@ var CustomResourceProvider = class CustomResourceProvider {
24470
24811
  }
24471
24812
  async invokeCustomResourceWithRetry(serviceToken, logicalId, operation, buildRequest, mask) {
24472
24813
  const watch = startInterruptWatch(`Custom resource ${logicalId}`);
24814
+ const shown = (text) => mask === void 0 ? text : mask(text);
24473
24815
  try {
24474
24816
  const stackId = await this.resolveSyntheticStackId(logicalId, operation, watch);
24475
24817
  let preDeliveryRetries = 0;
@@ -24494,7 +24836,7 @@ var CustomResourceProvider = class CustomResourceProvider {
24494
24836
  } catch (error) {
24495
24837
  if (delivered || preDeliveryRetries >= this.preDeliveryAuthzMaxRetries || !this.isTransientAuthzThrow(error)) throw error;
24496
24838
  const delayMs = Math.min(250 * Math.pow(2, preDeliveryRetries), IAM_PROPAGATION_MAX_DELAY_MS);
24497
- this.logger.warn(`Custom resource ${operation} for ${logicalId} hit a transient IAM-authorization error before the request was delivered (attempt ${attempt + 1}/${this.preDeliveryAuthzMaxRetries + 1}): ${this.truncateReason(describeAwsFailure(error).detail)}. Retrying in ${delayMs / 1e3}s with a fresh response URL and RequestId.`);
24839
+ this.logger.warn(`Custom resource ${operation} for ${logicalId} hit a transient IAM-authorization error before the request was delivered (attempt ${attempt + 1}/${this.preDeliveryAuthzMaxRetries + 1}): ${this.truncateReason(shown(describeAwsFailure(error).detail))}. Retrying in ${delayMs / 1e3}s with a fresh response URL and RequestId.`);
24498
24840
  if (invocation !== void 0) await this.cleanupResponseObject(invocation.responseKey);
24499
24841
  preDeliveryRetries += 1;
24500
24842
  await this.sleepInterruptibly(delayMs, watch);
@@ -24505,7 +24847,7 @@ var CustomResourceProvider = class CustomResourceProvider {
24505
24847
  const logAuthzMatch = logTail === void 0 ? void 0 : this.findTransientAuthzLogLine(logTail);
24506
24848
  if (cfnResponse.Status === "FAILED" && failedResponseRetries < this.transientAuthzMaxRetries && (reasonIsAuthz || logAuthzMatch !== void 0)) {
24507
24849
  failedResponseRetries += 1;
24508
- this.logger.warn(`Custom resource ${operation} for ${logicalId} returned a transient IAM-authorization FAILED (attempt ${attempt + 1}/${this.transientAuthzMaxRetries + 1}): ${this.truncateReason(cfnResponse.Reason)}. ` + (logAuthzMatch === void 0 ? "" : `The handler's reason carried no authorization wording; the denial was found in the backing function's log: ${this.truncateReason(logAuthzMatch.line)}. `) + `Recycling the backing function's execution environment and retrying so its next cold start picks up the propagated policy.`);
24850
+ this.logger.warn(`Custom resource ${operation} for ${logicalId} returned a transient IAM-authorization FAILED (attempt ${attempt + 1}/${this.transientAuthzMaxRetries + 1}): ${this.truncateReason(cfnResponse.Reason === void 0 ? void 0 : shown(cfnResponse.Reason))}. ` + (logAuthzMatch === void 0 ? "" : `The handler's reason carried no authorization wording; the denial was found in the backing function's log: ${this.truncateReason(shown(logAuthzMatch.line))}. `) + `Recycling the backing function's execution environment and retrying so its next cold start picks up the propagated policy.`);
24509
24851
  await this.recycleBackingFunctionExecEnv(serviceToken, logicalId);
24510
24852
  continue;
24511
24853
  }
@@ -24513,7 +24855,7 @@ var CustomResourceProvider = class CustomResourceProvider {
24513
24855
  ...cfnResponse,
24514
24856
  Reason: `${cfnResponse.Reason ?? "Unknown reason"} [cdkd: the reason carried no authorization wording, but the backing function's invocation log matched the IAM-authorization signal "${logAuthzMatch.signal}" — see the cdkd warning for the log line, or the function's CloudWatch log group]`
24515
24857
  };
24516
- if (logTail !== void 0 && hasHandlerLogOutput(logTail)) this.logger.warn(`Custom resource ${operation} for ${logicalId} failed and cdkd could not classify the reason. Log tail from the DISPATCH invocation (for the CDK Provider framework's async pattern the failure may have occurred in a later execution, whose log this is not):\n` + this.truncateReason(logTail, CR_LOG_TAIL_WARN_MAX_CHARS));
24858
+ if (logTail !== void 0 && hasHandlerLogOutput(logTail)) this.logger.warn(`Custom resource ${operation} for ${logicalId} failed and cdkd could not classify the reason. Log tail from the DISPATCH invocation (for the CDK Provider framework's async pattern the failure may have occurred in a later execution, whose log this is not):\n` + this.truncateReason(shown(logTail), CR_LOG_TAIL_WARN_MAX_CHARS));
24517
24859
  return cfnResponse;
24518
24860
  }
24519
24861
  } finally {
@@ -24629,8 +24971,8 @@ var CustomResourceProvider = class CustomResourceProvider {
24629
24971
  if (lambdaResponse.FunctionError) {
24630
24972
  const errorPayload = lambdaResponse.Payload ? Buffer.from(lambdaResponse.Payload).toString() : "Unknown";
24631
24973
  const logTail = decodeInvokeLogTail(lambdaResponse.LogResult);
24632
- if (logTail !== void 0 && hasHandlerLogOutput(logTail)) this.logger.warn(`Backing function log tail for ${logicalId} (${operation}):\n` + this.truncateReason(logTail, CR_LOG_TAIL_WARN_MAX_CHARS));
24633
- throw new Error(`Lambda function error (${lambdaResponse.FunctionError}): ${errorPayload}`);
24974
+ if (logTail !== void 0 && hasHandlerLogOutput(logTail)) this.logger.warn(`Backing function log tail for ${logicalId} (${operation}):\n` + this.truncateReason(mask === void 0 ? logTail : mask(logTail), CR_LOG_TAIL_WARN_MAX_CHARS));
24975
+ throw new Error(`Lambda function error (${lambdaResponse.FunctionError}): ${mask === void 0 ? errorPayload : mask(errorPayload)}`);
24634
24976
  }
24635
24977
  let hasDirectPayload = false;
24636
24978
  try {
@@ -32946,7 +33288,7 @@ async function prepareFinalSnapshotForDelete(logicalId, resourceType, currentRes
32946
33288
  }
32947
33289
  throw unsupportedFinalSnapshotError(logicalId, resourceType, "--skip-final-snapshot");
32948
33290
  }
32949
- async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, secrets, updateReplacePolicy, oldDeleteProvisionedBy) {
33291
+ async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, secrets, updateReplacePolicy, oldDeleteProvisionedBy, noEchoDeleteValues) {
32950
33292
  const createContext = { maskSecrets: createSecretMasker(secrets) };
32951
33293
  const finalSnapshotIdentifier = await this.prepareFinalSnapshotForDelete(logicalId, oldResourceType, currentResource, updateReplacePolicy);
32952
33294
  let deleteResult;
@@ -32957,7 +33299,8 @@ async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourc
32957
33299
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
32958
33300
  ...this.replacementDeleteContext(updateReplacePolicy),
32959
33301
  recordedAttributes: currentResource.attributes,
32960
- recordedNoEchoLeaves: currentResource.noEchoLeaves
33302
+ recordedNoEchoLeaves: currentResource.noEchoLeaves,
33303
+ ...noEchoDeleteValues !== void 0 && { noEchoDeleteValues }
32961
33304
  });
32962
33305
  } catch (deleteError) {
32963
33306
  throw new Error(maskSecretsInText(`Failed to delete old resource ${logicalId} (${currentResource.physicalId}) during the --replace delete-first fallback: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`, secrets), { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, secrets) : void 0 });
@@ -33072,10 +33415,10 @@ async function createFirstThenDeleteOld(input) {
33072
33415
  if (input.equalIdIsSameResource && createResult.physicalId === currentResource.physicalId) throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}) under a new name, but the create returned the resource being replaced (${displaySafe(currentResource.physicalId)}) instead of a new one, so cdkd cannot tell which name it holds. Nothing was deleted. Delete that resource by hand if it is yours, then re-run the deploy.`), "NAMED_REPLACEMENT_IDEMPOTENT_CREATE"));
33073
33416
  if (retainOld) return createResult;
33074
33417
  this.logger.info(safeMsg` Deleting old ${logicalId} (${currentResource.physicalId})...`);
33075
- await this.deleteReplacedAfterCreate(logicalId, input.oldResourceType, currentResource, input.deleteProvider, input.deleteProperties, finalSnapshotIdentifier, input.deletePolicy, secrets, input.deleteProvisionedBy);
33418
+ await this.deleteReplacedAfterCreate(logicalId, input.oldResourceType, currentResource, input.deleteProvider, input.deleteProperties, finalSnapshotIdentifier, input.deletePolicy, secrets, input.deleteProvisionedBy, input.noEchoDeleteValues);
33076
33419
  return createResult;
33077
33420
  }
33078
- async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, deleteProvider, deleteProperties, finalSnapshotIdentifier, updateReplacePolicy, secrets, deleteProvisionedBy) {
33421
+ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, deleteProvider, deleteProperties, finalSnapshotIdentifier, updateReplacePolicy, secrets, deleteProvisionedBy, noEchoDeleteValues) {
33079
33422
  let deleteResult = void 0;
33080
33423
  let deleteFailed = false;
33081
33424
  try {
@@ -33085,7 +33428,8 @@ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentReso
33085
33428
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
33086
33429
  ...this.replacementDeleteContext(updateReplacePolicy),
33087
33430
  recordedAttributes: currentResource.attributes,
33088
- recordedNoEchoLeaves: currentResource.noEchoLeaves
33431
+ recordedNoEchoLeaves: currentResource.noEchoLeaves,
33432
+ ...noEchoDeleteValues !== void 0 && { noEchoDeleteValues }
33089
33433
  });
33090
33434
  } catch (deleteError) {
33091
33435
  const deleteMsg = maskSecretsInText(deleteError instanceof Error ? deleteError.message : String(deleteError), secrets);
@@ -37295,6 +37639,15 @@ function recordPreviousNoEchoLeaves(registry, stored, desiredLeaves, resolution,
37295
37639
  //#endregion
37296
37640
  //#region src/deployment/deploy-engine/update-replace.ts
37297
37641
  async function updateByReplacement({ change, counts, currentProps, currentResource, dependencies, logicalId, oldResourceType, progress, propertyDrivenReplacement, recreateFlagged, recreateViaCcApi, recreateViaSdkProvider, renderer, resolvedProps, resourceType, stackName, stateResources, template, typeChanged, updateReplacePolicy, updateSecrets, lostWithParent }) {
37642
+ const noEchoDeleteValues = await noEchoDeleteValuesFromResolved({
37643
+ record: currentResource,
37644
+ templateResource: template?.Resources?.[logicalId],
37645
+ resolvedProperties: resolvedProps,
37646
+ noEchoParameters: this.noEchoPositionSources(stateResources, template)?.parameters ?? /* @__PURE__ */ new Set(),
37647
+ conditions: this.noEchoConditions,
37648
+ secrets: updateSecrets,
37649
+ inputSources: template && this.maskedInputSources(template, stateResources, this.noEchoConditions, stackName)
37650
+ });
37298
37651
  if (propertyDrivenReplacement && !recreateFlagged && updateReplacePolicy !== "Retain") {
37299
37652
  const statefulReason = isStatefulRecreateTargetForReplace(oldResourceType, currentProps, currentResource.observedProperties);
37300
37653
  if (statefulReason && this.options.forceStatefulRecreation !== true) {
@@ -37374,7 +37727,8 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
37374
37727
  equalIdIsSameResource,
37375
37728
  snapshotPolicy: updateReplacePolicy,
37376
37729
  deletePolicy: updateReplacePolicy,
37377
- trigger: recreateFlagName
37730
+ trigger: recreateFlagName,
37731
+ noEchoDeleteValues
37378
37732
  });
37379
37733
  } else if (recreateFlagged) {
37380
37734
  const recreateFlagName = recreateViaCcApi ? "--recreate-via-cc-api" : "--recreate-via-sdk-provider";
@@ -37393,7 +37747,8 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
37393
37747
  ...recreateFinalSnapshotId !== void 0 && { finalSnapshotIdentifier: recreateFinalSnapshotId },
37394
37748
  ...this.replacementDeleteContext(updateReplacePolicy),
37395
37749
  recordedAttributes: currentResource.attributes,
37396
- recordedNoEchoLeaves: currentResource.noEchoLeaves
37750
+ recordedNoEchoLeaves: currentResource.noEchoLeaves,
37751
+ ...noEchoDeleteValues !== void 0 && { noEchoDeleteValues }
37397
37752
  });
37398
37753
  } catch (deleteError) {
37399
37754
  throw new Error(maskSecretsInText(`Failed to destroy old resource ${logicalId} (${currentResource.physicalId}) during ${recreateFlagName}: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`, updateSecrets), { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, updateSecrets) : void 0 });
@@ -37462,7 +37817,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
37462
37817
  if (this.options.replace !== true) throw new CdkdError(`${logicalId} (${resourceType}) requires replacement, but the create-first attempt collided with the existing resource: ${createMsg}. ${nameOrigin.descriptor}, so the CloudFormation-style safe replacement order (create the new resource before deleting the old) cannot reuse the occupied name — CloudFormation refuses this shape with "cannot update a stack when a custom-named resource requires replacing". ${nameOrigin.remedy}, or re-run with \`cdkd deploy --replace\` to delete the old resource FIRST and recreate it under the same name (the resource is briefly unavailable while it is recreated).`, "NAMED_REPLACEMENT_COLLISION");
37463
37818
  this.logger.info(` Create-first collided with the existing resource's name and --replace is set — deleting old ${logicalId} (${currentResource.physicalId}) first...`);
37464
37819
  deletedOldFirst = true;
37465
- createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy);
37820
+ createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy, noEchoDeleteValues);
37466
37821
  }
37467
37822
  if (equalIdIsSameResource && !deletedOldFirst && createResult.physicalId === currentResource.physicalId) {
37468
37823
  const idempotentNameOrigin = this.replacementNameOrigin(logicalId, currentResource.physicalId);
@@ -37470,7 +37825,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
37470
37825
  if (this.options.replace !== true) throw new CdkdError(`${logicalId} (${resourceType}) requires replacement, but its Create API is name-idempotent: the create-first attempt returned the EXISTING resource (${currentResource.physicalId}) instead of creating a new one, so deleting the "old" resource would silently destroy the resource the deploy just reported as created. ${idempotentNameOrigin.descriptor}; ${idempotentNameOrigin.remedy}, or re-run with \`cdkd deploy --replace\` to delete the old resource FIRST and recreate it under the same name (the resource is briefly unavailable while it is recreated). Note: this branch is also reached when the old resource was deleted out-of-band and the physical id is name-derived — there the create was a genuine fresh create; \`--replace\` converges that case too.`, "NAMED_REPLACEMENT_IDEMPOTENT_CREATE");
37471
37826
  this.logger.info(` Create-first returned the existing resource (name-idempotent Create API) and --replace is set — deleting old ${logicalId} (${currentResource.physicalId}) first...`);
37472
37827
  deletedOldFirst = true;
37473
- createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy);
37828
+ createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy, noEchoDeleteValues);
37474
37829
  }
37475
37830
  if (deletedOldFirst) {} else if (updateReplacePolicy === "Retain") {
37476
37831
  this.retainedOldOnReplacement.add(logicalId);
@@ -37487,7 +37842,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
37487
37842
  snapshotBlockedDelete = true;
37488
37843
  this.logger.warn(` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) failed: ${snapshotError instanceof Error ? snapshotError.message : String(snapshotError)}. The old resource was NOT deleted (UpdateReplacePolicy: Snapshot) — delete it manually once you have a snapshot; it is no longer tracked in state.`);
37489
37844
  }
37490
- if (!snapshotBlockedDelete) await this.deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets, oldDeleteRoute.provisionedBy);
37845
+ if (!snapshotBlockedDelete) await this.deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets, oldDeleteRoute.provisionedBy, noEchoDeleteValues);
37491
37846
  }
37492
37847
  }
37493
37848
  this.registerNoEchoAttributes(logicalId, createResult, updateSecrets, resolvedProps);
@@ -37611,6 +37966,15 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
37611
37966
  secrets: updateSecrets
37612
37967
  });
37613
37968
  const createFirst = !retainOldOnReplace && fallbackNameChange !== void 0;
37969
+ const noEchoDeleteValues = await noEchoDeleteValuesFromResolved({
37970
+ record: currentResource,
37971
+ templateResource: template?.Resources?.[logicalId],
37972
+ resolvedProperties: resolvedProps,
37973
+ noEchoParameters: this.noEchoPositionSources(stateResources, template)?.parameters ?? /* @__PURE__ */ new Set(),
37974
+ conditions: this.noEchoConditions,
37975
+ secrets: updateSecrets,
37976
+ inputSources: template && this.maskedInputSources(template, stateResources, this.noEchoConditions, stackName)
37977
+ });
37614
37978
  this.logger.info(retainOldOnReplace ? `UPDATE not supported for ${logicalId} (${resourceType}), replacing (CREATE only — UpdateReplacePolicy: Retain keeps the old resource)` : createFirst ? safeMsg`UPDATE not supported for ${logicalId} (${resourceType}), replacing (CREATE → DELETE — the new name differs from the old resource's)` : `UPDATE not supported for ${logicalId} (${resourceType}), replacing (DELETE → CREATE)`);
37615
37979
  if (retainOldOnReplace) await noteRetainedResource(resourceType, logicalId);
37616
37980
  if (!retainOldOnReplace && !createFirst) {
@@ -37624,7 +37988,8 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
37624
37988
  ...fallbackFinalSnapshotId !== void 0 && { finalSnapshotIdentifier: fallbackFinalSnapshotId },
37625
37989
  ...this.replacementDeleteContext(fallbackUpdateReplacePolicy),
37626
37990
  recordedAttributes: currentResource.attributes,
37627
- recordedNoEchoLeaves: currentResource.noEchoLeaves
37991
+ recordedNoEchoLeaves: currentResource.noEchoLeaves,
37992
+ ...noEchoDeleteValues !== void 0 && { noEchoDeleteValues }
37628
37993
  });
37629
37994
  } catch (deleteError) {
37630
37995
  const deleteMsg = deleteError instanceof Error ? deleteError.message : String(deleteError);
@@ -37663,7 +38028,8 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
37663
38028
  }),
37664
38029
  snapshotPolicy: template?.Resources?.[logicalId]?.UpdateReplacePolicy ?? currentResource.updateReplacePolicy,
37665
38030
  deletePolicy: template?.Resources?.[logicalId]?.UpdateReplacePolicy ?? currentResource.updateReplacePolicy,
37666
- trigger: "the provisioning layer cannot update it in place"
38031
+ trigger: "the provisioning layer cannot update it in place",
38032
+ noEchoDeleteValues
37667
38033
  }) : await this.withRetry(() => withCurrentResourceSecrets(updateSecrets, () => replProvider.create(logicalId, resourceType, replProps, { maskSecrets: createSecretMasker(updateSecrets) })), logicalId, void 0, void 0, replProvider);
37668
38034
  } catch (createError) {
37669
38035
  if (createFirst) throw createError;
@@ -40067,5 +40433,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
40067
40433
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
40068
40434
 
40069
40435
  //#endregion
40070
- export { computeParameterTaint as $, isMarkedCoordinate as $a, refuseMalformedResourcePropertiesForDestroy as $i, wouldReturnToSdkProvider as $n, hasReadableExportSet as $o, refStateLookupFromResource as $r, resolveApp as $s, secretNamePrintingBag as $t, beginDeleteWait as A, coerceWarmThroughput as Aa, displayAssemblyPath as Ac, malformedRenderedContainersWarning as Ai, maskingRetryLogger as An, recordNestedStackParameterExpressions as Ao, sendableAssumeRoleCommand as Ar, describeDockerExecFailure as As, removeProtectionTypeList as At, S3_AUTO_DELETE_OBJECTS_TAG as B, replayWarn as Ba, refuseMalformedOrphanRecordsForDestroy as Bi, DBPROXY_TAGS_WHAT as Bn, STATE_SOURCED_CROSS_GENERATION_RULES as Bo, s3BucketWebsiteUrl as Br, redactedDockerCause as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, findReplacedReadersOfRecreateTargets as Ca, defineOwnKey as Cc, malformedOrphanRecordsRefusalMessage as Ci, noEchoParameterValueSeed as Cn, scrubResourceRecord as Co, producerRegionsFromState as Cr, readBootstrapMarkerBody as Cs, sameJournaledOrphans as Ct, readProtection as D, isStatefulRecreateTargetSync as Da, ownValue as Dc, malformedOrphansWarning as Di, bindingSkippedOutputs as Dn, pathCrossesDottedKey as Do, assertSendableRoleArn as Dr, buildDockerImage as Ds, destroyStackRecordsView as Dt, perType as E, isStatefulRecreateTargetForReplace as Ea, nullPrototypeRecord as Ec, malformedOrphansRefusalMessage as Ei, isExportAliasCollision as En, isUncertifiedBaselineMaskPosition as Eo, assertFlagRoleArn as Er, buildDenyExternalAccessPolicy as Es, awaitInFlightSibling as Et, DELETE_INDEX_WAIT_PROCEED_NOTE as F, coerceCfnInteger as Fa, malformedStateRefusalMessage as Fi, earliestDefined as Fn, recordMaskOnlyValuesIn as Fo, isSettledInstanceState as Fr, getDockerCmd as Fs, isReplacementOrphan as Ft, formatResourceLine as G, templateResourceTypes as Ga, refuseMalformedOutputsForDestroy as Gi, tagMapAsList as Gn, LockManager as Go, isImpossibleEmptyStoredAttribute as Gr, stripControlChars as Gs, redactedDeleteAddressFields as Gt, isTruthyCfnBoolean as H, requireConfigObject as Ha, refuseMalformedOrphansForDestroy as Hi, planTagDiff as Hn, TEMPLATE_SOURCED_RULES as Ho, isUnboundTemplateParameter as Hr, runDockerStreaming as Hs, inheritProducerRegions as Ht, INDEX_SETTLE_POLL_INTERVAL_MS as I, configBooleanRefusal as Ia, previewableOrphanRecords as Ii, ledgerForStack as In, recordNoEchoAttributeValues as Io, s3BucketArn as Ir, isDockerClientEnvKey as Is, planFailedOps as It, cyan as J, canonicalLambdaFunctionName as Ja, refuseMalformedResourceEntriesForDeploy as Ji, stringifyIfAssigned as Jn, rebuildClientForBucketRegion as Jo, isNamelessDynamicReferenceError as Jr, Synthesizer as Js, updatePartialReason as Jt, createReadOnlyAttributeHealerFactory as K, describeTypeWithThrottleRetry as Ka, refuseMalformedResourceAttributesForOrphan as Ki, tagPlanWarning as Kn, isLockInfoExpired as Ko, carriesDynamicReference as Kr, AssetManifestLoader as Ks, redactedDeleteAddressSkip as Kt, deleteTableWithIndexBusyRetry as L, configIntegerRefusal as La, refuseDivergentRecordRegionForDestroy as Li, reserveStackCreateToken as Ln, recordProvenPublicExpression as Lo, s3BucketDomainName as Lr, isMalformedEnvKey as Ls, planRollback as Lt, deleteBudgetKey as M, toCfnInteger as Ma, resolveAssemblyPath as Mc, malformedResourcePropertiesWarning as Mi, findDestructiveChanges as Mn, carriesSecretMask as Mo, applyCallerIdentityCredentials as Mr, dockerSpawnEnvWithSensitive as Ms, recordAfterRollbackUpdate as Mt, resolveDynamoDbDeleteBudgetClock as N, toFiniteNumber as Na, clearBucketRegionCache as Nc, malformedResourcesWarning as Ni, formatDestructiveChange as Nn, provenPublicValue as No, callerEnvCredentials as Nr, finchSecretArgvRefusal as Ns, demoteSupersededOrphans as Nt, DynamoDBGlobalTableProvider as O, renderStatefulReason as Oa, absoluteAssemblyPathEscape as Oc, malformedOutputsRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, identityKeyFor as Oo, explicitRoleArnOrThrow as Or, resolveDockerContextDirectory as Os, getStackRecords as Ot, resolveDynamoDbDeleteBudgetMs as P, coerceCfnBoolean as Pa, resolveBucketRegion as Pc, malformedScrubResourceEntriesRefusalMessage as Pi, RollbackInlinePolicyWriters as Pn, recordMaskOnlyValue as Po, envCredentialsAreAssumedRole as Pr, formatDockerLoginError as Ps, isJournaledOrphan as Pt, yellow as Q, TemplateParser as Qa, refuseMalformedResourceEntriesForOrphan as Qi, isCustomResource as Qn, exportNamesCarriedFrom as Qo, isStalePlaceholderArnAttribute as Qr, loadCdkJson as Qs, orphanRecordsPrintingBag as Qt, waitForIndexesSettled as R, configStringRefusal as Ra, refuseMalformedNestedChildOutputs as Ri, withCreateTokenLedger as Rn, wholeStringLeavesOf as Ro, s3BucketDualStackDomainName as Rr, partitionSensitiveEnv as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, hasNoCloudControlHandlers as Sa, processStackMessages as Sc, malformedLocalResourcesWarning as Si, isWholeDynamicReferenceValue as Sn, redactSecretsForState as So, classifyReplaySecretRegion as Sr, parseBootstrapMarker as Ss, makeForeignHolderScan as St, isProtectionValueActive as T, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ta, hasPlainPrototype$1 as Tc, malformedOrphanRowsKeptWarning as Ti, collectPublishedOutputNames as Tn, dynamicReferenceTokens as To, applyRoleArnIfSet as Tr, validateContainerRepoName as Ts, replayRollback as Tt, getPriorAttempts as U, requireConfigString as Ua, refuseMalformedOrphansForOrphan as Ui, readTagList as Un, WHOLE_DYNAMIC_REFERENCE_PATTERN as Uo, parameterTypeMayLoseSecretIdentity as Ur, warnFinchArgvExposure as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, hasCdkAutoDeleteTag as V, requireConfigArray as Va, refuseMalformedOrphans as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_READBACK_RULES as Vo, coerceParameterTypedValue as Vr, runDockerForeground as Vs, getCurrentProducerRegions as Vt, markRefusedBeforeApplying as W, prefetchCreateOnlyPropertyPaths as Wa, refuseMalformedOutputs as Wi, refuseMalformedDesiredTags as Wn, isSingleDynamicReferenceToken as Wo, getAccountInfo as Wr, escapeRegExp$3 as Ws, isRedactedRecordedValue as Wt, green as X, sameLambdaFunctionAddress as Xa, refuseMalformedResourceEntriesForImport as Xi, ProviderRegistry as Xn, acceptedCreateOnlyDropsOf as Xo, AWS_NO_VALUE as Xr, getDefaultStateBucketName as Xs, journaledOrphanPrintingBag as Xt, gray as Y, lambdaFunctionNameForMask as Ya, refuseMalformedResourceEntriesForDestroy as Yi, CC_BROKEN_REASON as Yn, splitImportedOps as Yo, keepsSecretReferenceToken as Yr, synthesisStatusMessage as Ys, completedReplayEntries as Yt, red as Z, DagBuilder as Za, refuseMalformedResourceEntriesForImportSave as Zi, ccBrokenReason as Zn, describeRegionValueKind as Zo, cfnRefValueFromPhysicalId as Zr, getLegacyStateBucketName as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, findActionableSilentDrops as _a, PARTITION_TABLE as _c, malformedDriftResourcePropertiesWarning as _i, secretBearingStateKeyWarning as _n, createSecretMasker as _o, reEnableInstanceApiTermination as _r, BOOTSTRAP_MARKER_PREFIX as _s, deleteJournaledOrphans as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForExport as aa, resolveUseCdkBootstrapAssets as ac, STATE_REGION_DIVERGED as ai, createPreDeleteFinalSnapshot as an, passedNoEchoParametersOf as ao, unchangedBehindSecretReference as ar, orphansAfterRollback as as, NESTED_PENDING_PARENT_REASON as at, noEchoComparisonForTemplate as b, withoutSilentDropProperties as ba, AssemblyReader as bc, malformedLocalOutputsWarning as bi, exportNameNoEchoParameters as bn, maskSecretsInText as bo, IntrinsicFunctionResolver as br, getBootstrapMarkerKey as bs, journaledOrphanLines as bt, renderNestedTemplateTreeDefect as c, repairMalformedOrphansForReadOnly as ca, ssmResolvedValueType as cc, UNREADABLE_RESOURCES_MAP_ROW as ci, refusesFinalSnapshot as cn, carryLogOnlyValues as co, deleteSkipReason as cr, AssetPublisher as cs, dropSettledNestedJournals as ct, conditionInputsFrom as d, repairMalformedResourcePropertiesForReadOnly as da, MIGRATE_TMP_PREFIX as dc, displayLogicalId as di, DeploymentEventsStore as dn, literalSplitDelimitersOf as do, markWaitAbandoned as dr, WorkGraph as ds, recordDisplacedSkips as dt, refuseMalformedResourcePropertiesForDrift as ea, resolveAutoAssetStorage as ec, parseWebACLArn as ei, stateSecretNameNeedles as en, maskReadbackAtCoordinates as eo, isCustomResourceType as er, hasReasonlessBaselineRefusal as es, namesAnyDeclaredParameter as et, parentSuppliedValues as f, repairMalformedResourcesForReadOnly as fa, findLargeInlineResources as fc, hasReadableOrphans as fi, extractDeploymentEventError as fn, logOnlyValueCount as fo, disableInstanceApiTermination as fr, buildAssetRedirectMap as fs, revertNestedChildFromJournal as ft, mergeNoChangeOutputs as g, withheldAccountClause as ga, expectedOwnerParam as gc, isReadableResourceEntry as gi, secretBearing as gn, shareLogOnlyValues as go, reDisableInstanceApiTermination as gr, AssetModeResolver as gs, withNestedStackContext as gt, keptWholeReasonText as h, unreadableResourceEntries as ha, decodeListingKey as hc, isReadableOrphanRecord as hi, exportAliasCollisionScrubWarning as hn, recordLogOnlyValue as ho, observeThenDisableInstanceApiTermination as hr, rewriteTemplateAssetReferences as hs, getCurrentNestedStackContext as ht, childTemplateLoader as i, refuseMalformedResourcesForDestroy as ia, resolveStateBucketWithDefaultAndSource as ic, JSON_LISTING_HOLE_VALUE as ii, ccRoutedFinalSnapshotError as in, noEchoOutputsComparison as io, slowCcOperationTimeoutMs as ir, isReadableBag as is, planOrphanAdoption as it, compensateRemovedDeletionProtection as j, isWarmThroughputDecrease as ja, renderAssemblyPathEscape as jc, malformedResourceEntriesWarning as ji, constructPathOf as jn, recoverMaskedOutput as jo, AWS_CREDENTIAL_ENV_KEYS as jr, describeDockerFailure as js, orphanDeleteNeedsIdentity as jt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, WARM_THROUGHPUT_MEMBERS as ka, describeFileReadFailure as kc, malformedOutputsWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, inheritNestedStackParameterAssociations as ko, isIamRoleArn as kr, describeDockerCapturedOutput as ks, withStackRecords as kt, templateIdentity as l, repairMalformedOutputsForReadOnly as la, CFN_TEMPLATE_BODY_LIMIT as lc, accountArgs as li, unsupportedFinalSnapshotError as ln, createUnionSecretMasker as lo, withIndeterminateGuard as lr, isSensitiveAttributeName as ls, getNestedRevertRun as lt, isSecretBearingReferenceString as m, unreadableOrphanRecords as ma, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as mc, hasReadableResources as mi, displayTextOrWithheld as mn, recordLogOnlyParameterValue as mo, isTerminationProtectionPropagationError as mr, loadPublishableAssetManifest as ms, withNestedRevertRun as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForOrphan as na, resolveSkipPrefix as nc, parameterInputsFor as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskedLeafCoordinatesOf as no, withPrintingSecrets as nr, importableOutputKeys as ns, resourcesNamingDeclaredParameter as nt, isAbsoluteAssetPath as o, refuseMalformedState as oa, stateBucketExistenceConfirmed as oc, STATE_RESOURCES_MALFORMED as oi, effectiveDeletionPolicy as on, readsNoEchoSource as oo, UNSPECIFIED_SKIP_REASON as or, orphansCarriedFrom as os, displacedOpClause as ot, readRecordedConditionVerdicts as p, unpreviewableOrphanRecords as pa, uploadCfnTemplate as pc, hasReadableOutputs as pi, WITHHELD_NAME_DISPLAY as pn, printingCorpusOf as po, ec2InstanceProtectionSite as pr, createAssetRedirectResolver as ps, revertedNestedRowIds as pt, bold as q, withRetry as qa, refuseMalformedResourceEntries as qi, definedAttributes as qn, S3StateBackend as qo, carriesFetchableDynamicReference as qr, getDockerImageBySourceHash as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcesForDeploy as ra, resolveStateBucketWithDefault as rc, passedParameterClassesOf as ri, buildFinalSnapshotIdentifier as rn, noEchoLeavesOf as ro, CloudControlProvider as rr, importableOutputs as rs, makeSiblingClaimReader as rt, listNestedTemplateRows as s, repairMalformedOrphanRecordsForReadOnly as sa, warnDeprecatedNoPrefixCliFlag as sc, UNREADABLE_ORPHANS_CONTAINER_ROW as si, isFinalSnapshotError as sn, liveMatchesUnresolvedTokenFrame as so, deleteIndeterminateGuards as sr, shouldRetainResource as ss, displacedPhysicalIdShown as st, DeployEngine as t, refuseMalformedResourcePropertiesForExport as ta, resolveCaptureObservedState as tc, withSharedDrainBudget as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, maskWholeValue as to, getCurrentResourceSecrets as tr, hasUnverifiableParameterRefusal as ts, reachableDivergentParameters as tt, conditionFingerprint as u, repairMalformedResourceEntriesForReadOnly as ua, CFN_TEMPLATE_URL_LIMIT as uc, deployRefusesOrphanRowsReason as ui, DeploymentEventsReader as un, hasMaskableValues as uo, isWaitAbandonedError as ur, stringifyValue as us, nestedChildStackName as ut, withResourceDeadline as v, findSilentDropProperties as va, canonicalizeRegion as vc, malformedExportNamesWarning as vi, secretSafeKeyDisplay as vn, errorCauseChain as vo, DiffCalculator as vr, assertAssetBucketRegion as vs, dropFailedHint as vt, PROTECTION_PROPERTY_BY_TYPE as w, shownType as wa, hasOwnKey as wc, malformedOrphanRecordsWarning as wi, collectDeclaredOutputNames as wn, DYNAMIC_REFERENCE_TOKEN_SCAN as wo, regionLessSecretName as wr, validateAssetBucketName as ws, replayFailedOperations as wt, noEchoParameterNamesOf as x, NO_CC_HANDLERS_REASON as xa, StageLoadError as xc, malformedLocalResourceEntriesWarning as xi, exportNameSecretExposure as xn, markSameGenerationBag as xo, poisonRenderedSpellingsCollidingIn as xr, isCrossRegionRedirect as xs, loadJournaledOrphans as xt, noEchoAttributeNamesOf as y, unwrittenCreateOnlyReplacement as ya, derivePartitionAndUrlSuffix as yc, malformedExportSourceWarning as yi, carriedExportAliasExposure as yn, maskSecretsInError as yo, INTRINSIC_KEYS as yr, ensureAssetStorage as ys, isHandledOrphan as yt, ECR_AUTO_DELETE_IMAGES_TAG as z, readConfigString as za, refuseMalformedOrphanRecords as zi, acquireIdempotencyToken as zn, STATE_SOURCED_BASELINE_RULES as zo, s3BucketRegionalDomainName as zr, redactDockerArgvValues as zs, resolveReplacementOldType as zt };
40071
- //# sourceMappingURL=deploy-engine-DFGqFKxg.js.map
40436
+ export { computeParameterTaint as $, DagBuilder as $a, refuseMalformedResourceEntriesForImportSave as $i, wouldReturnToSdkProvider as $n, describeRegionValueKind as $o, cfnRefValueFromPhysicalId as $r, getLegacyStateBucketName as $s, secretNamePrintingBag as $t, beginDeleteWait as A, renderStatefulReason as Aa, absoluteAssemblyPathEscape as Ac, malformedOutputsRefusalMessage as Ai, maskingRetryLogger as An, identityKeyFor as Ao, explicitRoleArnOrThrow as Ar, resolveDockerContextDirectory as As, removeProtectionTypeList as At, S3_AUTO_DELETE_OBJECTS_TAG as B, configStringRefusal as Ba, refuseMalformedNestedChildOutputs as Bi, DBPROXY_TAGS_WHAT as Bn, wholeStringLeavesOf as Bo, s3BucketDualStackDomainName as Br, partitionSensitiveEnv as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, NO_CC_HANDLERS_REASON as Ca, StageLoadError as Cc, malformedLocalResourceEntriesWarning as Ci, noEchoParameterValueSeed as Cn, markSameGenerationBag as Co, poisonRenderedSpellingsCollidingIn as Cr, isCrossRegionRedirect as Cs, sameJournaledOrphans as Ct, readProtection as D, MULTI_REGION_RECREATE_BLOCKED_TYPES as Da, hasPlainPrototype$1 as Dc, malformedOrphanRowsKeptWarning as Di, bindingSkippedOutputs as Dn, dynamicReferenceTokens as Do, applyRoleArnIfSet as Dr, validateContainerRepoName as Ds, destroyStackRecordsView as Dt, perType as E, shownType as Ea, hasOwnKey as Ec, malformedOrphanRecordsWarning as Ei, isExportAliasCollision as En, DYNAMIC_REFERENCE_TOKEN_SCAN as Eo, regionLessSecretName as Er, validateAssetBucketName as Es, awaitInFlightSibling as Et, DELETE_INDEX_WAIT_PROCEED_NOTE as F, toFiniteNumber as Fa, clearBucketRegionCache as Fc, malformedResourcesWarning as Fi, earliestDefined as Fn, provenPublicValue as Fo, callerEnvCredentials as Fr, finchSecretArgvRefusal as Fs, isReplacementOrphan as Ft, formatResourceLine as G, requireConfigString as Ga, refuseMalformedOrphansForOrphan as Gi, tagMapAsList as Gn, WHOLE_DYNAMIC_REFERENCE_PATTERN as Go, parameterTypeMayLoseSecretIdentity as Gr, warnFinchArgvExposure as Gs, redactedDeleteAddressFields as Gt, isTruthyCfnBoolean as H, replayWarn as Ha, refuseMalformedOrphanRecordsForDestroy as Hi, planTagDiff as Hn, STATE_SOURCED_CROSS_GENERATION_RULES as Ho, s3BucketWebsiteUrl as Hr, redactedDockerCause as Hs, inheritProducerRegions as Ht, INDEX_SETTLE_POLL_INTERVAL_MS as I, coerceCfnBoolean as Ia, resolveBucketRegion as Ic, malformedScrubResourceEntriesRefusalMessage as Ii, ledgerForStack as In, recordMaskOnlyValue as Io, envCredentialsAreAssumedRole as Ir, formatDockerLoginError as Is, planFailedOps as It, cyan as J, describeTypeWithThrottleRetry as Ja, refuseMalformedResourceAttributesForOrphan as Ji, stringifyIfAssigned as Jn, isLockInfoExpired as Jo, carriesDynamicReference as Jr, AssetManifestLoader as Js, updatePartialReason as Jt, createReadOnlyAttributeHealerFactory as K, prefetchCreateOnlyPropertyPaths as Ka, refuseMalformedOutputs as Ki, tagPlanWarning as Kn, isSingleDynamicReferenceToken as Ko, getAccountInfo as Kr, escapeRegExp$3 as Ks, redactedDeleteAddressSkip as Kt, deleteTableWithIndexBusyRetry as L, coerceCfnInteger as La, malformedStateRefusalMessage as Li, reserveStackCreateToken as Ln, recordMaskOnlyValuesIn as Lo, isSettledInstanceState as Lr, getDockerCmd as Ls, planRollback as Lt, deleteBudgetKey as M, coerceWarmThroughput as Ma, displayAssemblyPath as Mc, malformedRenderedContainersWarning as Mi, findDestructiveChanges as Mn, recordNestedStackParameterExpressions as Mo, sendableAssumeRoleCommand as Mr, describeDockerExecFailure as Ms, recordAfterRollbackUpdate as Mt, resolveDynamoDbDeleteBudgetClock as N, isWarmThroughputDecrease as Na, renderAssemblyPathEscape as Nc, malformedResourceEntriesWarning as Ni, formatDestructiveChange as Nn, recoverMaskedOutput as No, AWS_CREDENTIAL_ENV_KEYS as Nr, describeDockerFailure as Ns, demoteSupersededOrphans as Nt, DynamoDBGlobalTableProvider as O, isStatefulRecreateTargetForReplace as Oa, nullPrototypeRecord as Oc, malformedOrphansRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, isUncertifiedBaselineMaskPosition as Oo, assertFlagRoleArn as Or, buildDenyExternalAccessPolicy as Os, getStackRecords as Ot, resolveDynamoDbDeleteBudgetMs as P, toCfnInteger as Pa, resolveAssemblyPath as Pc, malformedResourcePropertiesWarning as Pi, RollbackInlinePolicyWriters as Pn, carriesSecretMask as Po, applyCallerIdentityCredentials as Pr, dockerSpawnEnvWithSensitive as Ps, isJournaledOrphan as Pt, yellow as Q, sameLambdaFunctionAddress as Qa, refuseMalformedResourceEntriesForImport as Qi, isCustomResource as Qn, acceptedCreateOnlyDropsOf as Qo, AWS_NO_VALUE as Qr, getDefaultStateBucketName as Qs, orphanRecordsPrintingBag as Qt, waitForIndexesSettled as R, configBooleanRefusal as Ra, previewableOrphanRecords as Ri, withCreateTokenLedger as Rn, recordNoEchoAttributeValues as Ro, s3BucketArn as Rr, isDockerClientEnvKey as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, withoutSilentDropProperties as Sa, AssemblyReader as Sc, malformedLocalOutputsWarning as Si, isWholeDynamicReferenceValue as Sn, maskSecretsInText as So, IntrinsicFunctionResolver as Sr, getBootstrapMarkerKey as Ss, makeForeignHolderScan as St, isProtectionValueActive as T, findReplacedReadersOfRecreateTargets as Ta, defineOwnKey as Tc, malformedOrphanRecordsRefusalMessage as Ti, collectPublishedOutputNames as Tn, scrubResourceRecord as To, producerRegionsFromState as Tr, readBootstrapMarkerBody as Ts, replayRollback as Tt, getPriorAttempts as U, requireConfigArray as Ua, refuseMalformedOrphans as Ui, readTagList as Un, STATE_SOURCED_READBACK_RULES as Uo, coerceParameterTypedValue as Ur, runDockerForeground as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, hasCdkAutoDeleteTag as V, readConfigString as Va, refuseMalformedOrphanRecords as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_BASELINE_RULES as Vo, s3BucketRegionalDomainName as Vr, redactDockerArgvValues as Vs, getCurrentProducerRegions as Vt, markRefusedBeforeApplying as W, requireConfigObject as Wa, refuseMalformedOrphansForDestroy as Wi, refuseMalformedDesiredTags as Wn, TEMPLATE_SOURCED_RULES as Wo, isUnboundTemplateParameter as Wr, runDockerStreaming as Ws, isRedactedRecordedValue as Wt, green as X, canonicalLambdaFunctionName as Xa, refuseMalformedResourceEntriesForDeploy as Xi, ProviderRegistry as Xn, rebuildClientForBucketRegion as Xo, isNamelessDynamicReferenceError as Xr, Synthesizer as Xs, journaledOrphanPrintingBag as Xt, gray as Y, withRetry as Ya, refuseMalformedResourceEntries as Yi, CC_BROKEN_REASON as Yn, S3StateBackend as Yo, carriesFetchableDynamicReference as Yr, getDockerImageBySourceHash as Ys, completedReplayEntries as Yt, red as Z, lambdaFunctionNameForMask as Za, refuseMalformedResourceEntriesForDestroy as Zi, ccBrokenReason as Zn, splitImportedOps as Zo, keepsSecretReferenceToken as Zr, synthesisStatusMessage as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, unreadableResourceEntries as _a, decodeListingKey as _c, isReadableOrphanRecord as _i, secretBearingStateKeyWarning as _n, recordLogOnlyValue as _o, observeThenDisableInstanceApiTermination as _r, rewriteTemplateAssetReferences as _s, deleteJournaledOrphans as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForDeploy as aa, resolveStateBucketWithDefault as ac, passedParameterClassesOf as ai, createPreDeleteFinalSnapshot as an, noEchoLeavesOf as ao, CloudControlProvider as ar, importableOutputs as as, NESTED_PENDING_PARENT_REASON as at, noEchoComparisonForTemplate as b, findSilentDropProperties as ba, canonicalizeRegion as bc, malformedExportNamesWarning as bi, exportNameNoEchoParameters as bn, errorCauseChain as bo, DiffCalculator as br, assertAssetBucketRegion as bs, journaledOrphanLines as bt, renderNestedTemplateTreeDefect as c, refuseMalformedState as ca, stateBucketExistenceConfirmed as cc, STATE_RESOURCES_MALFORMED as ci, refusesFinalSnapshot as cn, readsNoEchoSource as co, UNSPECIFIED_SKIP_REASON as cr, orphansCarriedFrom as cs, dropSettledNestedJournals as ct, conditionInputsFrom as d, repairMalformedOutputsForReadOnly as da, CFN_TEMPLATE_BODY_LIMIT as dc, accountArgs as di, DeploymentEventsStore as dn, createUnionSecretMasker as do, withIndeterminateGuard as dr, isSensitiveAttributeName as ds, recordDisplacedSkips as dt, refuseMalformedResourceEntriesForOrphan as ea, loadCdkJson as ec, isStalePlaceholderArnAttribute as ei, stateSecretNameNeedles as en, TemplateParser as eo, TemplateNoEchoReresolver as er, exportNamesCarriedFrom as es, namesAnyDeclaredParameter as et, parentSuppliedValues as f, repairMalformedResourceEntriesForReadOnly as fa, CFN_TEMPLATE_URL_LIMIT as fc, deployRefusesOrphanRowsReason as fi, extractDeploymentEventError as fn, hasMaskableValues as fo, isWaitAbandonedError as fr, stringifyValue as fs, revertNestedChildFromJournal as ft, mergeNoChangeOutputs as g, unreadableOrphanRecords as ga, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as gc, hasReadableResources as gi, secretBearing as gn, recordLogOnlyParameterValue as go, isTerminationProtectionPropagationError as gr, loadPublishableAssetManifest as gs, withNestedStackContext as gt, keptWholeReasonText as h, unpreviewableOrphanRecords as ha, uploadCfnTemplate as hc, hasReadableOutputs as hi, exportAliasCollisionScrubWarning as hn, printingCorpusOf as ho, ec2InstanceProtectionSite as hr, createAssetRedirectResolver as hs, getCurrentNestedStackContext as ht, childTemplateLoader as i, refuseMalformedResourcePropertiesForOrphan as ia, resolveSkipPrefix as ic, parameterInputsFor as ii, ccRoutedFinalSnapshotError as in, maskedLeafCoordinatesOf as io, withPrintingSecrets as ir, importableOutputKeys as is, planOrphanAdoption as it, compensateRemovedDeletionProtection as j, WARM_THROUGHPUT_MEMBERS as ja, describeFileReadFailure as jc, malformedOutputsWarning as ji, constructPathOf as jn, inheritNestedStackParameterAssociations as jo, isIamRoleArn as jr, describeDockerCapturedOutput as js, orphanDeleteNeedsIdentity as jt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, isStatefulRecreateTargetSync as ka, ownValue as kc, malformedOrphansWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, pathCrossesDottedKey as ko, assertSendableRoleArn as kr, buildDockerImage as ks, withStackRecords as kt, templateIdentity as l, repairMalformedOrphanRecordsForReadOnly as la, warnDeprecatedNoPrefixCliFlag as lc, UNREADABLE_ORPHANS_CONTAINER_ROW as li, unsupportedFinalSnapshotError as ln, liveMatchesUnresolvedTokenFrame as lo, deleteIndeterminateGuards as lr, shouldRetainResource as ls, getNestedRevertRun as lt, isSecretBearingReferenceString as m, repairMalformedResourcesForReadOnly as ma, findLargeInlineResources as mc, hasReadableOrphans as mi, displayTextOrWithheld as mn, logOnlyValueCount as mo, disableInstanceApiTermination as mr, buildAssetRedirectMap as ms, withNestedRevertRun as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForDrift as na, resolveAutoAssetStorage as nc, parseWebACLArn as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskReadbackAtCoordinates as no, isCustomResourceType as nr, hasReasonlessBaselineRefusal as ns, resourcesNamingDeclaredParameter as nt, isAbsoluteAssetPath as o, refuseMalformedResourcesForDestroy as oa, resolveStateBucketWithDefaultAndSource as oc, JSON_LISTING_HOLE_VALUE as oi, effectiveDeletionPolicy as on, noEchoOutputsComparison as oo, slowCcOperationTimeoutMs as or, isReadableBag as os, displacedOpClause as ot, readRecordedConditionVerdicts as p, repairMalformedResourcePropertiesForReadOnly as pa, MIGRATE_TMP_PREFIX as pc, displayLogicalId as pi, WITHHELD_NAME_DISPLAY as pn, literalSplitDelimitersOf as po, markWaitAbandoned as pr, WorkGraph as ps, revertedNestedRowIds as pt, bold as q, templateResourceTypes as qa, refuseMalformedOutputsForDestroy as qi, definedAttributes as qn, LockManager as qo, isImpossibleEmptyStoredAttribute as qr, stripControlChars as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcePropertiesForExport as ra, resolveCaptureObservedState as rc, withSharedDrainBudget as ri, buildFinalSnapshotIdentifier as rn, maskWholeValue as ro, getCurrentResourceSecrets as rr, hasUnverifiableParameterRefusal as rs, makeSiblingClaimReader as rt, listNestedTemplateRows as s, refuseMalformedResourcesForExport as sa, resolveUseCdkBootstrapAssets as sc, STATE_REGION_DIVERGED as si, isFinalSnapshotError as sn, passedNoEchoParametersOf as so, unchangedBehindSecretReference as sr, orphansAfterRollback as ss, displacedPhysicalIdShown as st, DeployEngine as t, refuseMalformedResourcePropertiesForDestroy as ta, resolveApp as tc, refStateLookupFromResource as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, isMarkedCoordinate as to, readsNoEchoDeleteValues as tr, hasReadableExportSet as ts, reachableDivergentParameters as tt, conditionFingerprint as u, repairMalformedOrphansForReadOnly as ua, ssmResolvedValueType as uc, UNREADABLE_RESOURCES_MAP_ROW as ui, DeploymentEventsReader as un, carryLogOnlyValues as uo, deleteSkipReason as ur, AssetPublisher as us, nestedChildStackName as ut, withResourceDeadline as v, withheldAccountClause as va, expectedOwnerParam as vc, isReadableResourceEntry as vi, secretSafeKeyDisplay as vn, shareLogOnlyValues as vo, reDisableInstanceApiTermination as vr, AssetModeResolver as vs, dropFailedHint as vt, PROTECTION_PROPERTY_BY_TYPE as w, hasNoCloudControlHandlers as wa, processStackMessages as wc, malformedLocalResourcesWarning as wi, collectDeclaredOutputNames as wn, redactSecretsForState as wo, classifyReplaySecretRegion as wr, parseBootstrapMarker as ws, replayFailedOperations as wt, noEchoParameterNamesOf as x, unwrittenCreateOnlyReplacement as xa, derivePartitionAndUrlSuffix as xc, malformedExportSourceWarning as xi, exportNameSecretExposure as xn, maskSecretsInError as xo, INTRINSIC_KEYS as xr, ensureAssetStorage as xs, loadJournaledOrphans as xt, noEchoAttributeNamesOf as y, findActionableSilentDrops as ya, PARTITION_TABLE as yc, malformedDriftResourcePropertiesWarning as yi, carriedExportAliasExposure as yn, createSecretMasker as yo, reEnableInstanceApiTermination as yr, BOOTSTRAP_MARKER_PREFIX as ys, isHandledOrphan as yt, ECR_AUTO_DELETE_IMAGES_TAG as z, configIntegerRefusal as za, refuseDivergentRecordRegionForDestroy as zi, acquireIdempotencyToken as zn, recordProvenPublicExpression as zo, s3BucketDomainName as zr, isMalformedEnvKey as zs, resolveReplacementOldType as zt };
40437
+ //# sourceMappingURL=deploy-engine-CFgNpsEy.js.map