@go-to-k/cdkd 0.296.7 → 0.296.9

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 (27) hide show
  1. package/dist/{asg-provider-BU0YONBp.js → asg-provider-B0IrI6EW.js} +3 -3
  2. package/dist/{asg-provider-BU0YONBp.js.map → asg-provider-B0IrI6EW.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-wyaJUA8V.js → deploy-engine-B-oaHd2t.js} +142 -96
  5. package/dist/deploy-engine-B-oaHd2t.js.map +1 -0
  6. package/dist/{iam-policy-targets-td1X_kKN.js → iam-policy-targets-BREzwsG6.js} +9 -8
  7. package/dist/iam-policy-targets-BREzwsG6.js.map +1 -0
  8. package/dist/{iam-role-provider-obY72uH2.js → iam-role-provider-DsJM0NT3.js} +3 -3
  9. package/dist/{iam-role-provider-obY72uH2.js.map → iam-role-provider-DsJM0NT3.js.map} +1 -1
  10. package/dist/index.d.ts +11 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -3
  13. package/dist/{neptune-provider-C3f-vDOh.js → neptune-provider-DGaKBQxm.js} +3 -3
  14. package/dist/{neptune-provider-C3f-vDOh.js.map → neptune-provider-DGaKBQxm.js.map} +1 -1
  15. package/dist/{program-DEnDp4o0.js → program-DTXVCX29.js} +226 -121
  16. package/dist/program-DTXVCX29.js.map +1 -0
  17. package/dist/{provider-classes-CsF7Ia5F.js → provider-classes-y-yYsSvB.js} +137 -23
  18. package/dist/provider-classes-y-yYsSvB.js.map +1 -0
  19. package/dist/{rds-provider-Cf5P2so_.js → rds-provider-B0YTjZKU.js} +3 -3
  20. package/dist/{rds-provider-Cf5P2so_.js.map → rds-provider-B0YTjZKU.js.map} +1 -1
  21. package/dist/{version-LalLOhpQ.js → version-Dqnp1Xj8.js} +2 -2
  22. package/dist/{version-LalLOhpQ.js.map → version-Dqnp1Xj8.js.map} +1 -1
  23. package/package.json +1 -1
  24. package/dist/deploy-engine-wyaJUA8V.js.map +0 -1
  25. package/dist/iam-policy-targets-td1X_kKN.js.map +0 -1
  26. package/dist/program-DEnDp4o0.js.map +0 -1
  27. package/dist/provider-classes-CsF7Ia5F.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js";
2
2
  import { A as displayIdent, C as withoutGeneratedFallbackName, D as UNRENDERABLE, E as STACK_REF_MAX_CODE_POINTS, F as plainIdentOr, I as safeMsg, M as displayStackName, N as isPasteableIdent, R as truncateCodePoints, S as withStackName, T as SECRET_REF_MAX_CODE_POINTS, _ as generateResourceNameWithFallback, b as looksLikeCdkdGeneratedName, c as installLogLineMaskerSource, g as generateResourceName, h as explicitNamePropertyFor, j as displaySafe, k as displayAwsMessage, l as getLiveRenderer, n as getLogger, p as applyDefaultNameForFallback, r as isStdoutReservedForPayload, s as currentLogLineMasker, v as getCurrentSkipPrefix, x as withSkipPrefix, y as getCurrentStackName } from "./logger-DAaB7GFO.js";
3
- import { $n as markRedactedCause, $t as LockError, A as isTerminalDeleteFailure, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bn as isAmbiguousCcHandlerErrorCode, Bt as clientDefaultsFor, C as refusalTypeShown, Cn as physicalIdShownBesideCommand, Ct as buildForceUnlockCommand, D as ProtectionFlipRegistry, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, Fn as isRecreateRetryableError, Ft as producerRecordKey, Gn as retryClassificationText, H as pasteableAwsCommand, Hn as isIamPropagationError, Ht as AccountIdUnavailableError, In as isReplayedNameCollisionFrom, J as isInterruptedWaitError, Jn as safeStringify$1, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mn as hasReplayMayCollide, Mt as injectiveKey, N as protectionFlipKey, Nn as isNameCollisionErrorFrom, O as compensateProtectionFlip, On as withheldTargetClause, Ot as formatLockOwner, Pn as isNameCooldownError, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, R as DELETION_PROTECTION_DOC_POINTER, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, T as resolveExplicitPhysicalId, Tn as quotedOrDescribed, U as protectedReplacementAdvice, Un as isRetryableTransientError, Ut as AssetError, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Y as startInterruptWatch, Yt as DynamicReferenceRegionAmbiguousError, Z as monotonicNowMs, Zn as isThrottlingError, _n as SHELL_ACTIVE_WHY, _t as hasCreatedBeforeFailure, an as ResourceTimeoutError, at as segmentAfterAnchor, b as isQuotableImportValue, bt as markAuxiliaryFailure, ct as createMaskedRetryLogger, d as prepareRemovalForUpdate, dt as maskerOrIdentity, en as MacroExpansionError, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, f as removalWarning, ft as withDerivedNameMasks, g as assertRegionMatch, gn as SHELL_ACTIVE, gt as createdBeforeFailure, h as RESOURCE_NOT_FOUND, i as holdsSecretDerivedEntry, in as ProvisioningError, it as resourceTypeShown, jn as isUpdateUnsupportedError, jt as DEFAULT_STATE_PREFIX, k as deleteWithProtectionCompensation, kt as sanitizeRecoveryValue, l as withUnchangedSecretPrincipalLists, ln as StateError, lt as isSecretDerivedValue, m as withoutInjectedRemovals, mt as carryCreatedBeforeFailure, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, pn as normalizeAwsError, pt as RETRY_AUXILIARY_OWNER, qt as DependencyError, st as createMaskedLogSinks, tn as MalformedProducerRecordRefusalError, un as SynthesisError, ut as maskDeep, vn as UNSHOWABLE_VALUE, vt as isAuxiliaryFailure, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, yn as commandHole, yt as isAuxiliaryMarkOf, zn as formatRetryClassificationSignals, zt as ambientCredentialConfig } from "./iam-policy-targets-td1X_kKN.js";
3
+ import { $n as markRedactedCause, $t as LockError, A as isTerminalDeleteFailure, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bn as isAmbiguousCcHandlerErrorCode, Bt as clientDefaultsFor, C as refusalTypeShown, Cn as physicalIdShownBesideCommand, Ct as buildForceUnlockCommand, D as ProtectionFlipRegistry, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, Fn as isRecreateRetryableError, Ft as producerRecordKey, Gn as retryClassificationText, H as pasteableAwsCommand, Hn as isIamPropagationError, Ht as AccountIdUnavailableError, In as isReplayedNameCollisionFrom, J as isInterruptedWaitError, Jn as safeStringify$1, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mn as hasReplayMayCollide, Mt as injectiveKey, N as protectionFlipKey, Nn as isNameCollisionErrorFrom, O as compensateProtectionFlip, On as withheldTargetClause, Ot as formatLockOwner, Pn as isNameCooldownError, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, R as DELETION_PROTECTION_DOC_POINTER, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, T as resolveExplicitPhysicalId, Tn as quotedOrDescribed, U as protectedReplacementAdvice, Un as isRetryableTransientError, Ut as AssetError, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Y as startInterruptWatch, Yt as DynamicReferenceRegionAmbiguousError, Z as monotonicNowMs, Zn as isThrottlingError, _n as SHELL_ACTIVE_WHY, _t as hasCreatedBeforeFailure, an as ResourceTimeoutError, at as segmentAfterAnchor, b as isQuotableImportValue, bt as markAuxiliaryFailure, ct as createMaskedRetryLogger, d as prepareRemovalForUpdate, dt as maskerOrIdentity, en as MacroExpansionError, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, f as removalWarning, ft as withDerivedNameMasks, g as assertRegionMatch, gn as SHELL_ACTIVE, gt as createdBeforeFailure, h as RESOURCE_NOT_FOUND, i as holdsSecretDerivedEntry, in as ProvisioningError, it as resourceTypeShown, jn as isUpdateUnsupportedError, jt as DEFAULT_STATE_PREFIX, k as deleteWithProtectionCompensation, kt as sanitizeRecoveryValue, l as withUnchangedSecretPrincipalLists, ln as StateError, lt as isSecretDerivedValue, m as withoutInjectedRemovals, mt as carryCreatedBeforeFailure, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, pn as normalizeAwsError, pt as RETRY_AUXILIARY_OWNER, qt as DependencyError, st as createMaskedLogSinks, tn as MalformedProducerRecordRefusalError, un as SynthesisError, ut as maskDeep, vn as UNSHOWABLE_VALUE, vt as isAuxiliaryFailure, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, yn as commandHole, yt as isAuxiliaryMarkOf, zn as formatRetryClassificationSignals, zt as ambientCredentialConfig } from "./iam-policy-targets-BREzwsG6.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-LalLOhpQ.js";
5
+ import { t as getCdkdVersion } from "./version-Dqnp1Xj8.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";
@@ -12445,7 +12445,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
12445
12445
  ]),
12446
12446
  silentDrop: /* @__PURE__ */ new Map(),
12447
12447
  createOnlyDrops: /* @__PURE__ */ new Set(),
12448
- readOnly: /* @__PURE__ */ new Set(["Id"]),
12448
+ readOnly: /* @__PURE__ */ new Set(["AnomalyDetectorId"]),
12449
12449
  ccRouteUnavailable: true
12450
12450
  }],
12451
12451
  ["AWS::CodeBuild::Project", {
@@ -15237,22 +15237,27 @@ function accountArgs(recovery) {
15237
15237
  flag: "--state-prefix",
15238
15238
  value: prefix,
15239
15239
  hole: "prefix",
15240
- opts: { plainIdent: true }
15240
+ opts: prefixGate(prefix)
15241
15241
  });
15242
15242
  return args;
15243
15243
  }
15244
+ function prefixGate(prefix) {
15245
+ return prefix.split("/").every((seg) => isPasteableIdent(seg)) ? {} : { plainIdent: true };
15246
+ }
15244
15247
  const ACCOUNT_FLAG_BY_HOLE = {
15245
15248
  profile: "--profile",
15246
15249
  bucket: "--state-bucket",
15247
15250
  prefix: "--state-prefix"
15248
15251
  };
15249
- function withheldAccountClause(withheld, where) {
15250
- const parts = withheld.filter((w) => ACCOUNT_FLAG_BY_HOLE[w.hole] !== void 0).map((w) => `the '${ACCOUNT_FLAG_BY_HOLE[w.hole]}' value this run was given ${accountReason(w.reason)}`);
15252
+ function withheldAccountClause(recovery, where) {
15253
+ const slashPrefix = recovery?.statePrefix?.includes("/") === true;
15254
+ const parts = withheldAccountValues(recovery).filter((w) => ACCOUNT_FLAG_BY_HOLE[w.hole] !== void 0).map((w) => `the '${ACCOUNT_FLAG_BY_HOLE[w.hole]}' value this run was given ${w.hole === "prefix" && w.reason === "not-plain" && slashPrefix ? PREFIX_NOT_PLAIN_WHY : accountReason(w.reason)}`);
15251
15255
  if (parts.length === 0) return "";
15252
15256
  const sentence = parts.join(", and ");
15253
15257
  const holes = parts.length === 1 ? "a quoted hole in its place" : "quoted holes in their place";
15254
15258
  return `${sentence.charAt(0).toUpperCase()}${sentence.slice(1)}, so ${where} ${holes}: replace each such hole whole, quotes included, with the shell-quoted value you passed this run. `;
15255
15259
  }
15260
+ const PREFIX_NOT_PLAIN_WHY = "has a '/'-separated part that is not a plain identifier (a letter or digit, then letters, digits, '~', '_', '.' or '-'), the only shape printed in a command beside a labelled line";
15256
15261
  function accountReason(reason) {
15257
15262
  switch (reason) {
15258
15263
  case "altered": return "does not render exactly";
@@ -15283,7 +15288,7 @@ function confirmKeyListing(recovery) {
15283
15288
  return accountArgs(recovery).length === 0 ? `'cdkd state list --long'` : `'cdkd state list --long' run with the same account flags as the command lines below`;
15284
15289
  }
15285
15290
  function destroyAccountClause(recovery) {
15286
- const clause = withheldAccountClause(withheldAccountValues(recovery), "the command lines below print");
15291
+ const clause = withheldAccountClause(recovery, "the command lines below print");
15287
15292
  return clause === "" ? "" : ` ${clause.trimEnd()}`;
15288
15293
  }
15289
15294
  function refuseMalformedResourcesForDestroy(state, stackName, region, recovery) {
@@ -15298,8 +15303,7 @@ function divergentRecordRegionRefusalMessage(stackName, keyRegion, divergentBody
15298
15303
  const kind = describeRegionValueKind(divergentBodyRegion);
15299
15304
  const opening = exact ? `cdkd will not destroy stack ${shellQuote(safeIdentifier(stackName, cap))} (${shellQuote(safeIdentifier(keyRegion, cap))}): the state record read from that region's key carries a 'region' of its own (${kind}) that is not the key's, and ${lists}` : `cdkd will not destroy the state record this command loaded: it carries a 'region' of its own (${kind}) that is not the region of the key it was read from, and ${lists}`;
15300
15305
  const listing = withheldListingPointer(recovery);
15301
- const withheldAccounts = withheldAccountValues(recovery);
15302
- const remedy = exact ? "Re-run with --verbose to see what the record's region field holds, then either destroy against the region the resources are really in, or repair that field to match the key it is stored under and re-run. " + withheldAccountClause(withheldAccounts, "the command at the end of this message prints") + "To drop the record and leave the live resources standing, spelled out rather than pasteable because that command DELETES a record: " + dropRecordTemplate(recovery) : "This record's stack name or region does NOT render exactly — what any surrounding output shows is a sanitized form, and another record may render identically — so this message names no target and offers no command against one. List the records with " + (listing.line === void 0 ? `${WITHHELD_LISTING_POINTER}. Inspect it with: ${inspectCommand(void 0, void 0)}` : `${listing.pointer}.` + destroyAccountClause(recovery) + `\n${listing.line}\nInspect it with: ${inspectCommand(void 0, void 0, recovery)}`);
15306
+ const remedy = exact ? "Re-run with --verbose to see what the record's region field holds, then either destroy against the region the resources are really in, or repair that field to match the key it is stored under and re-run. " + withheldAccountClause(recovery, "the command at the end of this message prints") + "To drop the record and leave the live resources standing, spelled out rather than pasteable because that command DELETES a record: " + dropRecordTemplate(recovery) : "This record's stack name or region does NOT render exactly — what any surrounding output shows is a sanitized form, and another record may render identically — so this message names no target and offers no command against one. List the records with " + (listing.line === void 0 ? `${WITHHELD_LISTING_POINTER}. Inspect it with: ${inspectCommand(void 0, void 0)}` : `${listing.pointer}.` + destroyAccountClause(recovery) + `\n${listing.line}\nInspect it with: ${inspectCommand(void 0, void 0, recovery)}`);
15303
15307
  return `${opening} ${resourceCount === void 0 ? `— so cdkd can neither count what it would delete nor tell which region it is in` : `— so cdkd cannot tell which region those resources are in`}. cdkd stamps the key's region into every record it writes, so this record was not written by cdkd. Destroying against the key's region would issue every delete there; if the record's own region is the honest half, each delete comes back not-found, which this command reads as ALREADY DELETED — it would report success, remove the record, and leave every resource standing in the other region with nothing naming it. ${remedy}`;
15304
15308
  }
15305
15309
  function refuseDivergentRecordRegionForDestroy(state, stackName, keyRegion, divergentBodyRegion, recovery, provenOrphans = 0) {
@@ -15308,14 +15312,14 @@ function refuseDivergentRecordRegionForDestroy(state, stackName, keyRegion, dive
15308
15312
  if (resourceCount === 0 && provenOrphans === 0) return;
15309
15313
  throw markNonRetryable(new CdkdError(divergentRecordRegionRefusalMessage(stackName, keyRegion, divergentBodyRegion, resourceCount, recovery, provenOrphans), STATE_REGION_DIVERGED));
15310
15314
  }
15311
- function malformedDeployResourcesRefusalMessage(rawStackName, rawRegion) {
15315
+ function malformedDeployResourcesRefusalMessage(rawStackName, rawRegion, recovery) {
15312
15316
  const stackName = absentIfEmpty(rawStackName);
15313
15317
  const region = absentIfEmpty(rawRegion);
15314
- return `${malformedStateDiagnosis(stackName, region)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: an unreadable map reads as ZERO recorded resources, so every resource the template declares is planned as a CREATE and the deploy re-provisions a stack that already exists, colliding on each deterministic name and duplicating the rest, then saves a well-formed record over the only evidence anything was wrong. Reading the bag as EMPTY produces that same plan rather than avoiding it. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the stack with this map read as EMPTY and warns that it did. ${inspectClause(stackName, region)}Inspect it with: ${inspectCommand(stackName, region)}`;
15318
+ return `${malformedStateDiagnosis(stackName, region)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: an unreadable map reads as ZERO recorded resources, so every resource the template declares is planned as a CREATE and the deploy re-provisions a stack that already exists, colliding on each deterministic name and duplicating the rest, then saves a well-formed record over the only evidence anything was wrong. Reading the bag as EMPTY produces that same plan rather than avoiding it. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the stack with this map read as EMPTY and warns that it did. ${inspectClause(stackName, region, recovery)}Inspect it with: ${inspectCommand(stackName, region, recovery)}`;
15315
15319
  }
15316
- function refuseMalformedResourcesForDeploy(state, stackName, region) {
15320
+ function refuseMalformedResourcesForDeploy(state, stackName, region, recovery) {
15317
15321
  if (hasReadableResources(state)) return;
15318
- throw markNonRetryable(new CdkdError(malformedDeployResourcesRefusalMessage(stackName, region), STATE_RESOURCES_MALFORMED));
15322
+ throw markNonRetryable(new CdkdError(malformedDeployResourcesRefusalMessage(stackName, region, recovery), STATE_RESOURCES_MALFORMED));
15319
15323
  }
15320
15324
  const EXPORT_LEGACY_LEAD = "The record was loaded from its legacy key, which carries no region segment — 'cdkd state show' reads such a record only when its body names a region, and a 'cdkd deploy' will not migrate it while it is torn — so inspect the object directly";
15321
15325
  const EXPORT_DELETES_STATE = "'cdkd export' migrates the resources this record lists into CloudFormation and then DELETES the cdkd state, so it refuses rather than continuing, under '--dry-run' too.";
@@ -15328,19 +15332,19 @@ function refuseMalformedResourcesForExport(state, stackName, region, recovery) {
15328
15332
  if (hasReadableResources(state)) return;
15329
15333
  throw new CdkdError(malformedExportResourcesRefusalMessage(stackName, region, recovery), STATE_RESOURCES_MALFORMED);
15330
15334
  }
15331
- function malformedRenderedContainersWarning(rawStackName, rawRegion, containers) {
15335
+ function malformedRenderedContainersWarning(rawStackName, rawRegion, containers, recovery) {
15332
15336
  const stackName = absentIfEmpty(rawStackName);
15333
15337
  const region = absentIfEmpty(rawRegion);
15334
15338
  const names = containers.map((name) => `'${safeIdentifier(name, 128)}'`).join(", ");
15335
- return `${stackClause(stackName, region)} has a non-object ${names} — the record is malformed or truncated. 'Object.entries' walks a string or a list as readily as a map, so rendering one INVENTS a row per character or element. Continuing with it EMPTY: this view shows no rows there, which is not the same as the record holding none. A per-resource container is named once however many resources hold one. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15339
+ return `${stackClause(stackName, region)} has a non-object ${names} — the record is malformed or truncated. 'Object.entries' walks a string or a list as readily as a map, so rendering one INVENTS a row per character or element. Continuing with it EMPTY: this view shows no rows there, which is not the same as the record holding none. A per-resource container is named once however many resources hold one. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15336
15340
  }
15337
15341
  function absentIfEmpty(value) {
15338
15342
  return value === "" ? void 0 : value;
15339
15343
  }
15340
- function malformedResourcesWarning(rawStackName, rawRegion) {
15344
+ function malformedResourcesWarning(rawStackName, rawRegion, recovery) {
15341
15345
  const stackName = absentIfEmpty(rawStackName);
15342
15346
  const region = absentIfEmpty(rawRegion);
15343
- return `${malformedStateDiagnosis(stackName, region)} Continuing with an EMPTY resource set: this command's output describes zero resources, which is not the same as the stack having none. ${inspectClause(stackName, region)}Inspect it with: ${inspectCommand(stackName, region)}`;
15347
+ return `${malformedStateDiagnosis(stackName, region)} Continuing with an EMPTY resource set: this command's output describes zero resources, which is not the same as the stack having none. ${inspectClause(stackName, region, recovery)}Inspect it with: ${inspectCommand(stackName, region, recovery)}`;
15344
15348
  }
15345
15349
  function repairMalformedOutputsForReadOnly(state) {
15346
15350
  if (hasReadableOutputs(state)) return false;
@@ -15348,10 +15352,10 @@ function repairMalformedOutputsForReadOnly(state) {
15348
15352
  return true;
15349
15353
  }
15350
15354
  const DEPLOY_REFUSES_OUTPUTS_SENTENCE = "'cdkd deploy' REFUSES this record when it loads it, over this same unreadable 'outputs' map, rather than rebuilding the map over it — repair the stored value before deploying.";
15351
- function malformedOutputsWarning(rawStackName, rawRegion) {
15355
+ function malformedOutputsWarning(rawStackName, rawRegion, recovery) {
15352
15356
  const stackName = absentIfEmpty(rawStackName);
15353
15357
  const region = absentIfEmpty(rawRegion);
15354
- return `${stackClause(stackName, region)} has no readable 'outputs' map — the record is malformed or truncated. Where the stored value is a string or a list, 'Object.entries' walks it as readily as a map, so diffing it INVENTS a REMOVE row per character or element carrying the record's own characters; where it is a number, a boolean or null, it yields no comparison at all. Continuing with it EMPTY: every output this diff resolves is reported as an ADD and no stored key is reported as a REMOVE, which is not the same as the record holding none. ${DEPLOY_REFUSES_OUTPUTS_SENTENCE} ${inspectClause(stackName, region)}See the stored value with: ` + inspectCommand(stackName, region);
15358
+ return `${stackClause(stackName, region)} has no readable 'outputs' map — the record is malformed or truncated. Where the stored value is a string or a list, 'Object.entries' walks it as readily as a map, so diffing it INVENTS a REMOVE row per character or element carrying the record's own characters; where it is a number, a boolean or null, it yields no comparison at all. Continuing with it EMPTY: every output this diff resolves is reported as an ADD and no stored key is reported as a REMOVE, which is not the same as the record holding none. ${DEPLOY_REFUSES_OUTPUTS_SENTENCE} ${inspectClause(stackName, region, recovery)}See the stored value with: ` + inspectCommand(stackName, region, recovery);
15355
15359
  }
15356
15360
  function refuseMalformedState(state, stackName, region, recovery) {
15357
15361
  if (hasReadableResources(state)) return;
@@ -15362,15 +15366,15 @@ function malformedOutputsRefusalMessage(rawStackName, rawRegion, recovery) {
15362
15366
  const region = absentIfEmpty(rawRegion);
15363
15367
  return inspectTail(`${stackClause(stackName, region)} has no readable 'outputs' map — the record is malformed or truncated. This command can WRITE state, so it refuses rather than continuing: it REBUILDS the bag before saving, and 'Object.entries' walks a string or a list as readily as a map, so a six-character value would be saved back as a well-formed six-key map (a null one as an empty map). That replaces the only signal anything is wrong with a legitimate-looking record, permanently — and the next deploy republishes it into the shared exports index every other stack's Fn::ImportValue resolves against. Repair or remove the record first.`, stackName, region, recovery);
15364
15368
  }
15365
- function malformedExportSourceWarning(rawStackName, rawRegion) {
15369
+ function malformedExportSourceWarning(rawStackName, rawRegion, recovery) {
15366
15370
  const stackName = absentIfEmpty(rawStackName);
15367
15371
  const region = absentIfEmpty(rawRegion);
15368
- return `${stackClause(stackName, region)} has no readable 'outputs' map or 'exportNames' list — the record is malformed or truncated. It contributes NO exports to this region's index, which is not the same as the stack exporting none: an Fn::ImportValue of a name this stack really publishes will fail in the CONSUMER stack, naming that stack rather than this record. Continuing with the other producers — enumerating a string or a list here would instead publish one FABRICATED export per character or element. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15372
+ return `${stackClause(stackName, region)} has no readable 'outputs' map or 'exportNames' list — the record is malformed or truncated. It contributes NO exports to this region's index, which is not the same as the stack exporting none: an Fn::ImportValue of a name this stack really publishes will fail in the CONSUMER stack, naming that stack rather than this record. Continuing with the other producers — enumerating a string or a list here would instead publish one FABRICATED export per character or element. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15369
15373
  }
15370
- function malformedExportNamesWarning(rawStackName, rawRegion) {
15374
+ function malformedExportNamesWarning(rawStackName, rawRegion, recovery) {
15371
15375
  const stackName = absentIfEmpty(rawStackName);
15372
15376
  const region = absentIfEmpty(rawRegion);
15373
- return `${stackClause(stackName, region)} has an unusable 'exportNames' list — the record is malformed or truncated. It is read as an EMPTY export set, which is not the same as the record holding one: no stored key is reported as an export, so a row that should carry an '[export]' tag renders without it. Reading it as UNKNOWN instead would be worse — that falls back to the pre-v9 rule where every output name is importable. ${inspectClause(stackName, region)}See the stored value with: ` + inspectCommand(stackName, region);
15377
+ return `${stackClause(stackName, region)} has an unusable 'exportNames' list — the record is malformed or truncated. It is read as an EMPTY export set, which is not the same as the record holding one: no stored key is reported as an export, so a row that should carry an '[export]' tag renders without it. Reading it as UNKNOWN instead would be worse — that falls back to the pre-v9 rule where every output name is importable. ${inspectClause(stackName, region, recovery)}See the stored value with: ` + inspectCommand(stackName, region, recovery);
15374
15378
  }
15375
15379
  function refuseMalformedOutputs(state, stackName, region, recovery) {
15376
15380
  if (hasReadableOutputs(state)) return;
@@ -15385,10 +15389,10 @@ function repairMalformedOrphansForReadOnly(state) {
15385
15389
  state.orphans = [];
15386
15390
  return true;
15387
15391
  }
15388
- function malformedOrphansWarning(rawStackName, rawRegion) {
15392
+ function malformedOrphansWarning(rawStackName, rawRegion, recovery) {
15389
15393
  const stackName = absentIfEmpty(rawStackName);
15390
15394
  const region = absentIfEmpty(rawRegion);
15391
- return `${stackClause(stackName, region)} has no readable 'orphans' list — the record is malformed or truncated. Readers reach it on a bare '?? []' or '?.length', which admits a string, a number, a plain object and null alike: a string is WALKED, one garbage orphan per character, and the others read as no orphans at all. Continuing with it EMPTY: this view previews no adoption and names no orphan, which is NOT the same as the record holding none — resources from an earlier failed deploy may still be live in AWS. ${inspectClause(stackName, region)}See the stored value with: ` + inspectCommand(stackName, region);
15395
+ return `${stackClause(stackName, region)} has no readable 'orphans' list — the record is malformed or truncated. Readers reach it on a bare '?? []' or '?.length', which admits a string, a number, a plain object and null alike: a string is WALKED, one garbage orphan per character, and the others read as no orphans at all. Continuing with it EMPTY: this view previews no adoption and names no orphan, which is NOT the same as the record holding none — resources from an earlier failed deploy may still be live in AWS. ${inspectClause(stackName, region, recovery)}See the stored value with: ` + inspectCommand(stackName, region, recovery);
15392
15396
  }
15393
15397
  function malformedOrphansRefusalMessage(rawStackName, rawRegion, recovery) {
15394
15398
  const stackName = absentIfEmpty(rawStackName);
@@ -15422,19 +15426,19 @@ function refuseMalformedOutputsForDestroy(state, stackName, region, recovery) {
15422
15426
  if (hasReadableOutputs(state)) return;
15423
15427
  throw markNonRetryable(new CdkdError(malformedDestroyOutputsRefusalMessage(stackName, region, recovery), STATE_RESOURCES_MALFORMED));
15424
15428
  }
15425
- function malformedNestedChildOutputsRefusalMessage(rawChildStackName, rawRegion) {
15429
+ function malformedNestedChildOutputsRefusalMessage(rawChildStackName, rawRegion, recovery) {
15426
15430
  const childStackName = absentIfEmpty(rawChildStackName);
15427
15431
  const region = absentIfEmpty(rawRegion);
15428
- return `${stackClause(childStackName, region, "nested stack child")} has no readable 'outputs' map — the record is malformed or truncated. The parent's 'Outputs.<Key>' attributes are REBUILT from this bag and persisted into the PARENT's record, and 'Object.entries' walks a string or a list as readily as a map — so a six-character value would become six fabricated parent attributes that every Fn::GetAtt against this nested stack then resolves into live AWS calls. The deploy refuses rather than fabricating them. Repair or remove the child's record first. ${inspectClause(childStackName, region)}Inspect it with: ` + inspectCommand(childStackName, region);
15432
+ return `${stackClause(childStackName, region, "nested stack child")} has no readable 'outputs' map — the record is malformed or truncated. The parent's 'Outputs.<Key>' attributes are REBUILT from this bag and persisted into the PARENT's record, and 'Object.entries' walks a string or a list as readily as a map — so a six-character value would become six fabricated parent attributes that every Fn::GetAtt against this nested stack then resolves into live AWS calls. The deploy refuses rather than fabricating them. Repair or remove the child's record first. ${inspectClause(childStackName, region, recovery)}Inspect it with: ` + inspectCommand(childStackName, region, recovery);
15429
15433
  }
15430
- function refuseMalformedNestedChildOutputs(state, childStackName, region) {
15434
+ function refuseMalformedNestedChildOutputs(state, childStackName, region, recovery) {
15431
15435
  if (hasReadableOutputs(state)) return;
15432
- throw markNonRetryable(new CdkdError(malformedNestedChildOutputsRefusalMessage(childStackName, region), STATE_RESOURCES_MALFORMED));
15436
+ throw markNonRetryable(new CdkdError(malformedNestedChildOutputsRefusalMessage(childStackName, region, recovery), STATE_RESOURCES_MALFORMED));
15433
15437
  }
15434
- function malformedLocalOutputsWarning(rawStackName, rawRegion) {
15438
+ function malformedLocalOutputsWarning(rawStackName, rawRegion, recovery) {
15435
15439
  const stackName = absentIfEmpty(rawStackName);
15436
15440
  const region = absentIfEmpty(rawRegion);
15437
- return `${stackClause(stackName, region)} has no readable 'outputs' map — the record is malformed or truncated. 'Object.entries' walks a string or a list as readily as a map, so reading it would hand this local run one FABRICATED output per character or element. Continuing with it EMPTY: every reference to an output of this record resolves to nothing and is dropped, which is not the same as the record holding none. ${inspectClause(stackName, region)}See the stored value with: ` + inspectCommand(stackName, region);
15441
+ return `${stackClause(stackName, region)} has no readable 'outputs' map — the record is malformed or truncated. 'Object.entries' walks a string or a list as readily as a map, so reading it would hand this local run one FABRICATED output per character or element. Continuing with it EMPTY: every reference to an output of this record resolves to nothing and is dropped, which is not the same as the record holding none. ${inspectClause(stackName, region, recovery)}See the stored value with: ` + inspectCommand(stackName, region, recovery);
15438
15442
  }
15439
15443
  const NAMED_UNREADABLE_PROPERTY_BAGS = 5;
15440
15444
  function stackClause(stackName, region, kind = "") {
@@ -15485,7 +15489,7 @@ function inspectCommand(stackName, region, recovery) {
15485
15489
  return inspectGate(stackName, region, recovery).command;
15486
15490
  }
15487
15491
  function inspectClause(stackName, region, recovery) {
15488
- const accounts = withheldAccountClause(withheldAccountValues(recovery), "the command at the end of this line prints");
15492
+ const accounts = withheldAccountClause(recovery, "the command at the end of this line prints");
15489
15493
  if (stackName === void 0) return accounts;
15490
15494
  const { withheld } = inspectGate(stackName, region, recovery);
15491
15495
  const parts = [inspectWithheldPart("stack name above", withheld, "stack", true), inspectWithheldPart("region above", withheld, "region", false)].filter((part) => part !== "");
@@ -15542,10 +15546,10 @@ function unreadableResourcePropertyBags(state) {
15542
15546
  if (!hasReadableResources(state)) return [];
15543
15547
  return Object.entries(state.resources).filter(([, entry]) => isReadableBag(entry) && !isReadableBag(entry.properties)).map(([logicalId]) => logicalId);
15544
15548
  }
15545
- function refuseMalformedResourceProperties(state, stackName, region) {
15549
+ function refuseMalformedResourceProperties(state, stackName, region, recovery) {
15546
15550
  const unreadable = unreadableResourcePropertyBags(state);
15547
15551
  if (unreadable.length === 0) return;
15548
- throw markNonRetryable(new CdkdError(malformedResourcePropertiesRefusalMessage(stackName, region, unreadable), STATE_RESOURCES_MALFORMED));
15552
+ throw markNonRetryable(new CdkdError(malformedResourcePropertiesRefusalMessage(stackName, region, unreadable, recovery), STATE_RESOURCES_MALFORMED));
15549
15553
  }
15550
15554
  function repairMalformedResourcePropertiesForReadOnly(state) {
15551
15555
  const unreadable = unreadableResourcePropertyBags(state);
@@ -15567,10 +15571,10 @@ function namedPropertyBagsDiagnosis(stackName, region, logicalIds, describeUnsaf
15567
15571
  function namedPropertyBagsClause(stackName, region, logicalIds) {
15568
15572
  return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} Comparing a template against one reports every property the template declares as ADDED (a string bag also invents one change per character), and a create-only property among them is a REPLACEMENT of the live resource.`;
15569
15573
  }
15570
- function malformedResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds) {
15574
+ function malformedResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15571
15575
  const stackName = absentIfEmpty(rawStackName);
15572
15576
  const region = absentIfEmpty(rawRegion);
15573
- return `${namedPropertyBagsClause(stackName, region, logicalIds)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: a DELETE and re-create of resources the template did not change, and reading the bag as empty produces that same verdict rather than avoiding it. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the rest of the stack with those maps read as EMPTY and warns that it did. ${inspectClause(stackName, region)}Inspect the record with: ${inspectCommand(stackName, region)}`;
15577
+ return `${namedPropertyBagsClause(stackName, region, logicalIds)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: a DELETE and re-create of resources the template did not change, and reading the bag as empty produces that same verdict rather than avoiding it. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the rest of the stack with those maps read as EMPTY and warns that it did. ${inspectClause(stackName, region, recovery)}Inspect the record with: ${inspectCommand(stackName, region, recovery)}`;
15574
15578
  }
15575
15579
  function malformedOrphanResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15576
15580
  const stackName = absentIfEmpty(rawStackName);
@@ -15603,7 +15607,7 @@ function withheldIdentityClause(stackName, region) {
15603
15607
  return ` — the stack name or region above did not render exactly, so take them from the 'Find the exact name' command below — replace each quoted hole, quotes included, with ${JSON_LISTING_HOLE_VALUE} — rather than from this message`;
15604
15608
  }
15605
15609
  function withheldRecoveryClause(recovery) {
15606
- const clause = withheldAccountClause(withheldAccountValues(recovery), "the command lines below print").trimEnd();
15610
+ const clause = withheldAccountClause(recovery, "the command lines below print").trimEnd();
15607
15611
  if (clause === "") return "";
15608
15612
  return ` — ${clause.charAt(0).toLowerCase()}${clause.slice(1, -1)}`;
15609
15613
  }
@@ -15655,26 +15659,26 @@ function refuseMalformedResourcePropertiesForOrphan(state, removedLogicalIds, st
15655
15659
  if (unreadable.length === 0) return;
15656
15660
  throw new CdkdError(malformedOrphanResourcePropertiesRefusalMessage(stackName, region, unreadable, recovery), STATE_RESOURCES_MALFORMED);
15657
15661
  }
15658
- function malformedResourcePropertiesWarning(rawStackName, rawRegion, logicalIds) {
15662
+ function malformedResourcePropertiesWarning(rawStackName, rawRegion, logicalIds, recovery) {
15659
15663
  const stackName = absentIfEmpty(rawStackName);
15660
15664
  const region = absentIfEmpty(rawRegion);
15661
- return `${namedPropertyBagsClause(stackName, region, logicalIds)} Continuing with those maps EMPTY: what these records are stored as holding is NOT what this preview compares against. Where the template still declares the resource, every property it declares previews as an addition and a create-only one as a replacement; where it no longer declares it, the DELETE row shows an empty previous side instead of the stored one. Do NOT run 'cdkd deploy' against this record — it REFUSES on the same defect rather than acting on this preview. ${inspectClause(stackName, region)}See the stored values with: ${inspectCommand(stackName, region)}`;
15665
+ return `${namedPropertyBagsClause(stackName, region, logicalIds)} Continuing with those maps EMPTY: what these records are stored as holding is NOT what this preview compares against. Where the template still declares the resource, every property it declares previews as an addition and a create-only one as a replacement; where it no longer declares it, the DELETE row shows an empty previous side instead of the stored one. Do NOT run 'cdkd deploy' against this record — it REFUSES on the same defect rather than acting on this preview. ${inspectClause(stackName, region, recovery)}See the stored values with: ${inspectCommand(stackName, region, recovery)}`;
15662
15666
  }
15663
15667
  const DRIFT_PROPERTIES_ROLE = "To 'cdkd drift' this map is the baseline wherever no 'observedProperties' is recorded — a stored string reads as one drifted key per character, and an EMPTY reading compares nothing and reports the resource clean — and it is where cdkd finds the secret positions it must mask.";
15664
- function malformedDriftResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds) {
15668
+ function malformedDriftResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15665
15669
  const stackName = absentIfEmpty(rawStackName);
15666
15670
  const region = absentIfEmpty(rawRegion);
15667
- return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} 'cdkd drift --accept' and '--revert' WRITE this record back, so they refuse rather than continuing. ${DRIFT_PROPERTIES_ROLE} Continuing would let '--accept' save, and '--revert' push to the live resource, a verdict about properties this record does not hold. Nothing was written and no AWS resource was modified. Repair or remove the record first; plain 'cdkd drift' compares the rest of the stack and reports these resources as not compared. ${inspectClause(stackName, region)}Inspect the record with: ${inspectCommand(stackName, region)}`;
15671
+ return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} 'cdkd drift --accept' and '--revert' WRITE this record back, so they refuse rather than continuing. ${DRIFT_PROPERTIES_ROLE} Continuing would let '--accept' save, and '--revert' push to the live resource, a verdict about properties this record does not hold. Nothing was written and no AWS resource was modified. Repair or remove the record first; plain 'cdkd drift' compares the rest of the stack and reports these resources as not compared. ${inspectClause(stackName, region, recovery)}Inspect the record with: ${inspectCommand(stackName, region, recovery)}`;
15668
15672
  }
15669
- function refuseMalformedResourcePropertiesForDrift(state, stackName, region) {
15673
+ function refuseMalformedResourcePropertiesForDrift(state, stackName, region, recovery) {
15670
15674
  const unreadable = unreadableResourcePropertyBags(state);
15671
15675
  if (unreadable.length === 0) return;
15672
- throw new CdkdError(malformedDriftResourcePropertiesRefusalMessage(stackName, region, unreadable), STATE_RESOURCES_MALFORMED);
15676
+ throw new CdkdError(malformedDriftResourcePropertiesRefusalMessage(stackName, region, unreadable, recovery), STATE_RESOURCES_MALFORMED);
15673
15677
  }
15674
- function malformedDriftResourcePropertiesWarning(rawStackName, rawRegion, logicalIds) {
15678
+ function malformedDriftResourcePropertiesWarning(rawStackName, rawRegion, logicalIds, recovery) {
15675
15679
  const stackName = absentIfEmpty(rawStackName);
15676
15680
  const region = absentIfEmpty(rawRegion);
15677
- return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} ${DRIFT_PROPERTIES_ROLE} So 'cdkd drift' does NOT compare these resources: each is reported as not compared, and the run does not exit clean. The rest of the stack is compared as usual. 'cdkd drift --accept' / '--revert' and 'cdkd deploy' REFUSE this record. ${inspectClause(stackName, region)}See the stored values with: ${inspectCommand(stackName, region)}`;
15681
+ return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} ${DRIFT_PROPERTIES_ROLE} So 'cdkd drift' does NOT compare these resources: each is reported as not compared, and the run does not exit clean. The rest of the stack is compared as usual. 'cdkd drift --accept' / '--revert' and 'cdkd deploy' REFUSE this record. ${inspectClause(stackName, region, recovery)}See the stored values with: ${inspectCommand(stackName, region, recovery)}`;
15678
15682
  }
15679
15683
  function malformedExportResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15680
15684
  const stackName = absentIfEmpty(rawStackName);
@@ -15704,15 +15708,15 @@ function repairMalformedResourceEntriesForReadOnly(state) {
15704
15708
  for (const logicalId of unreadable) delete state.resources[logicalId];
15705
15709
  return unreadable;
15706
15710
  }
15707
- function malformedResourceEntriesWarning(rawStackName, rawRegion, logicalIds) {
15711
+ function malformedResourceEntriesWarning(rawStackName, rawRegion, logicalIds, recovery) {
15708
15712
  const stackName = absentIfEmpty(rawStackName);
15709
15713
  const region = absentIfEmpty(rawRegion);
15710
- return `${namedEntriesClause(stackName, region, logicalIds)} Continuing WITHOUT them: this command's output describes the remaining resources only, which is not the same as the stack holding none of these. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15714
+ return `${namedEntriesClause(stackName, region, logicalIds)} Continuing WITHOUT them: this command's output describes the remaining resources only, which is not the same as the stack holding none of these. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15711
15715
  }
15712
- function malformedOrphanRecordsWarning(rawStackName, rawRegion, logicalIds, alsoRejectsTornMaps) {
15716
+ function malformedOrphanRecordsWarning(rawStackName, rawRegion, logicalIds, alsoRejectsTornMaps, recovery) {
15713
15717
  const stackName = absentIfEmpty(rawStackName);
15714
15718
  const region = absentIfEmpty(rawRegion);
15715
- return `${stackClause(stackName, region)} holds ${logicalIds.length} rollback-orphan record(s) in 'orphans' that cannot be read as resources — ${namedOrphanRows(logicalIds)} — because they are not objects, have no string 'logicalId' or share it with another row, or their 'state' is not an object, names no resource type${alsoRejectsTornMaps ? ", has no non-empty string 'physicalId', or holds a 'properties' or 'attributes' map that is not an object" : ` or has no non-empty string 'physicalId'`}. Continuing WITHOUT them: ${alsoRejectsTornMaps ? `they are excluded from the secret scan, so nothing this run does can certify them` : "they are not previewed for adoption, and 'cdkd deploy' refuses the record over them rather than dropping them as this command does"}. These ids were read from 'orphans'; the 'resources' map carries its own warning when it is damaged too. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15719
+ return `${stackClause(stackName, region)} holds ${logicalIds.length} rollback-orphan record(s) in 'orphans' that cannot be read as resources — ${namedOrphanRows(logicalIds)} — because they are not objects, have no string 'logicalId' or share it with another row, or their 'state' is not an object, names no resource type${alsoRejectsTornMaps ? ", has no non-empty string 'physicalId', or holds a 'properties' or 'attributes' map that is not an object" : ` or has no non-empty string 'physicalId'`}. Continuing WITHOUT them: ${alsoRejectsTornMaps ? `they are excluded from the secret scan, so nothing this run does can certify them` : "they are not previewed for adoption, and 'cdkd deploy' refuses the record over them rather than dropping them as this command does"}. These ids were read from 'orphans'; the 'resources' map carries its own warning when it is damaged too. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15716
15720
  }
15717
15721
  function namedEntriesClause(stackName, region, logicalIds) {
15718
15722
  const named = logicalIds.slice(0, NAMED_UNREADABLE_ENTRIES).map((id) => displayLogicalId(id)).join(", ");
@@ -15725,15 +15729,15 @@ function malformedResourceEntriesRefusalMessage(rawStackName, rawRegion, logical
15725
15729
  const region = absentIfEmpty(rawRegion);
15726
15730
  return `${namedEntriesClause(stackName, region, logicalIds)} This command can WRITE state, so it refuses rather than skipping them: saving over the record would report a clean run for entries nothing could read, and would leave the next command to fail on them with no more to go on. Nothing was locked, read from AWS or written FOR THIS STACK. ${inspectClause(stackName, region, recovery)}Inspect it with: ` + inspectCommand(stackName, region, recovery);
15727
15731
  }
15728
- function refuseMalformedResourceEntriesForDeploy(state, stackName, region) {
15732
+ function refuseMalformedResourceEntriesForDeploy(state, stackName, region, recovery) {
15729
15733
  const unreadable = unreadableResourceEntries(state);
15730
15734
  if (unreadable.length === 0) return;
15731
- throw markNonRetryable(new CdkdError(malformedDeployResourceEntriesRefusalMessage(stackName, region, unreadable), STATE_RESOURCES_MALFORMED));
15735
+ throw markNonRetryable(new CdkdError(malformedDeployResourceEntriesRefusalMessage(stackName, region, unreadable, recovery), STATE_RESOURCES_MALFORMED));
15732
15736
  }
15733
- function malformedDeployResourceEntriesRefusalMessage(rawStackName, rawRegion, logicalIds) {
15737
+ function malformedDeployResourceEntriesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15734
15738
  const stackName = absentIfEmpty(rawStackName);
15735
15739
  const region = absentIfEmpty(rawRegion);
15736
- return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: a row that is not an object reads as a resource cdkd does not manage, so the template's resource of that id is planned as a CREATE (a second copy of a live resource, or a name collision), and a row with no resource type is planned as a TYPE CHANGE, which replaces the live resource. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the rest of the stack without those rows and warns that it did. ${inspectClause(stackName, region)}Inspect the record with: ` + inspectCommand(stackName, region);
15740
+ return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd deploy' can WRITE state and AWS resources, so it refuses rather than continuing — under '--dry-run' too, because the plan a dry run would print is the wrong one: a row that is not an object reads as a resource cdkd does not manage, so the template's resource of that id is planned as a CREATE (a second copy of a live resource, or a name collision), and a row with no resource type is planned as a TYPE CHANGE, which replaces the live resource. Nothing was provisioned and no state was written FOR THIS STACK. Repair or remove the record first; 'cdkd diff' previews the rest of the stack without those rows and warns that it did. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
15737
15741
  }
15738
15742
  function refuseMalformedResourceEntriesForDestroy(state, stackName, region, recovery) {
15739
15743
  const unreadable = unreadableResourceEntries(state);
@@ -15771,20 +15775,20 @@ function malformedImportUnrepairedEntriesRefusalMessage(rawStackName, rawRegion,
15771
15775
  const region = absentIfEmpty(rawRegion);
15772
15776
  return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd import' was asked to re-import these rows and their import did not succeed (each is reported above), so the record it would save still holds them unreadable; it refuses rather than saving a row it could not replace. Nothing was written FOR THIS STACK, and the resources this run did import stay as they are in AWS. Fix what the import reported, or repair the rows by hand, and re-run. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
15773
15777
  }
15774
- function malformedScrubResourceEntriesRefusalMessage(rawStackName, rawRegion, logicalIds) {
15778
+ function malformedScrubResourceEntriesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
15775
15779
  const stackName = absentIfEmpty(rawStackName);
15776
15780
  const region = absentIfEmpty(rawRegion);
15777
- return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd scrub' REBUILDS and SAVES the resource map whenever anything in the stack changed, so it refuses rather than continuing: a null row either stops the rewrite on a bare TypeError under the lock (the template still positions it and this stack recorded a secret) or is copied into the rebuilt map as it stands — reported clean when no secret was recorded at all, saved back the moment another record changed; a string or number the template positions is spread into an object and saved as one; and a row with no resource type is rewritten and saved still without one. Nothing was written FOR THIS STACK. Repair or remove the row first; '--dry-run' audits the rest of the record without it and warns that it did. ${inspectClause(stackName, region)}Inspect the record with: ` + inspectCommand(stackName, region);
15781
+ return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd scrub' REBUILDS and SAVES the resource map whenever anything in the stack changed, so it refuses rather than continuing: a null row either stops the rewrite on a bare TypeError under the lock (the template still positions it and this stack recorded a secret) or is copied into the rebuilt map as it stands — reported clean when no secret was recorded at all, saved back the moment another record changed; a string or number the template positions is spread into an object and saved as one; and a row with no resource type is rewritten and saved still without one. Nothing was written FOR THIS STACK. Repair or remove the row first; '--dry-run' audits the rest of the record without it and warns that it did. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
15778
15782
  }
15779
- function malformedLocalResourcesWarning(rawStackName, rawRegion) {
15783
+ function malformedLocalResourcesWarning(rawStackName, rawRegion, recovery) {
15780
15784
  const stackName = absentIfEmpty(rawStackName);
15781
15785
  const region = absentIfEmpty(rawRegion);
15782
- return `${malformedStateDiagnosis(stackName, region)} Continuing with it EMPTY: every 'Ref' and 'Fn::GetAtt' in this run's environment that names a resource of this record resolves to nothing and is dropped, and a bare '--assume-role' falls back to the developer's credentials — which is not the same as the record holding no resources. Nothing is written; 'cdkd deploy' and 'cdkd destroy' refuse this record instead. ${inspectClause(stackName, region)}See the stored value with: ` + inspectCommand(stackName, region);
15786
+ return `${malformedStateDiagnosis(stackName, region)} Continuing with it EMPTY: every 'Ref' and 'Fn::GetAtt' in this run's environment that names a resource of this record resolves to nothing and is dropped, and a bare '--assume-role' falls back to the developer's credentials — which is not the same as the record holding no resources. Nothing is written; 'cdkd deploy' and 'cdkd destroy' refuse this record instead. ${inspectClause(stackName, region, recovery)}See the stored value with: ` + inspectCommand(stackName, region, recovery);
15783
15787
  }
15784
- function malformedLocalResourceEntriesWarning(rawStackName, rawRegion, logicalIds) {
15788
+ function malformedLocalResourceEntriesWarning(rawStackName, rawRegion, logicalIds, recovery) {
15785
15789
  const stackName = absentIfEmpty(rawStackName);
15786
15790
  const region = absentIfEmpty(rawRegion);
15787
- return `${namedEntriesClause(stackName, region, logicalIds)} Continuing WITHOUT them: a 'Ref' or 'Fn::GetAtt' in this run's environment that names one of these ids resolves to nothing and is dropped, and a bare '--assume-role' read through one falls back to the developer's credentials — which is not the same as the record holding no such resource. Nothing is written; 'cdkd deploy' and 'cdkd destroy' refuse this record instead. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15791
+ return `${namedEntriesClause(stackName, region, logicalIds)} Continuing WITHOUT them: a 'Ref' or 'Fn::GetAtt' in this run's environment that names one of these ids resolves to nothing and is dropped, and a bare '--assume-role' read through one falls back to the developer's credentials — which is not the same as the record holding no such resource. Nothing is written; 'cdkd deploy' and 'cdkd destroy' refuse this record instead. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15788
15792
  }
15789
15793
  function refuseMalformedResourceEntriesForOrphan(state, removedLogicalIds, stackName, region, recovery) {
15790
15794
  const removed = new Set(removedLogicalIds);
@@ -15833,10 +15837,10 @@ function hasAddressablePhysicalId(entry) {
15833
15837
  const physicalId = entry.physicalId;
15834
15838
  return typeof physicalId === "string" && physicalId.trim() !== "";
15835
15839
  }
15836
- function unaddressableUpdateRefusalMessage(rawStackName, rawRegion, logicalId, resourceType) {
15840
+ function unaddressableUpdateRefusalMessage(rawStackName, rawRegion, logicalId, resourceType, recovery) {
15837
15841
  const stackName = absentIfEmpty(rawStackName);
15838
15842
  const region = absentIfEmpty(rawRegion);
15839
- return `${stackClause(stackName, region)} holds a record for ${displayIdent(logicalId)} (${displayIdent(resourceType)}) with no non-empty string 'physicalId', so cdkd cannot address that resource in AWS and did not try to update it. 'cdkd deploy' fails on it rather than skipping it, since a skipped update would end the deploy without the template's change. Nothing was sent for this resource. Repair the record's 'physicalId' and re-run. ${inspectClause(stackName, region)}Inspect the record with: ` + inspectCommand(stackName, region);
15843
+ return `${stackClause(stackName, region)} holds a record for ${displayIdent(logicalId)} (${displayIdent(resourceType)}) with no non-empty string 'physicalId', so cdkd cannot address that resource in AWS and did not try to update it. 'cdkd deploy' fails on it rather than skipping it, since a skipped update would end the deploy without the template's change. Nothing was sent for this resource. Repair the record's 'physicalId' and re-run. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
15840
15844
  }
15841
15845
  function unpreviewableOrphanRecords(state) {
15842
15846
  if (!Array.isArray(state.orphans)) return [];
@@ -15925,10 +15929,10 @@ function refuseMalformedOrphansForOrphan(state, stackName, region, recovery) {
15925
15929
  function deployRefusesOrphanRowsReason(logicalIds) {
15926
15930
  return `${logicalIds.length} rollback-orphan record(s) in 'orphans' — ${namedOrphanRows(logicalIds)} — carry a 'properties' or 'attributes' map that cannot be read. This preview KEEPS them, so any adoption shown for them is one 'cdkd deploy' will not perform: it refuses the record over the same rows, and the deploy this previews will not start.`;
15927
15931
  }
15928
- function malformedOrphanRowsKeptWarning(rawStackName, rawRegion, logicalIds) {
15932
+ function malformedOrphanRowsKeptWarning(rawStackName, rawRegion, logicalIds, recovery) {
15929
15933
  const stackName = absentIfEmpty(rawStackName);
15930
15934
  const region = absentIfEmpty(rawRegion);
15931
- return `${stackClause(stackName, region)} holds ${logicalIds.length} rollback-orphan record(s) in 'orphans' — ${namedOrphanRows(logicalIds)} — whose 'properties' or 'attributes' map is not an object. This preview KEEPS them. 'cdkd deploy' of THIS stack does NOT: it refuses the whole record over these rows and will not start until they are repaired. ${inspectClause(stackName, region)}See the stored values with: ` + inspectCommand(stackName, region);
15935
+ return `${stackClause(stackName, region)} holds ${logicalIds.length} rollback-orphan record(s) in 'orphans' — ${namedOrphanRows(logicalIds)} — whose 'properties' or 'attributes' map is not an object. This preview KEEPS them. 'cdkd deploy' of THIS stack does NOT: it refuses the whole record over these rows and will not start until they are repaired. ${inspectClause(stackName, region, recovery)}See the stored values with: ` + inspectCommand(stackName, region, recovery);
15932
15936
  }
15933
15937
  function namedOrphanRows(logicalIds) {
15934
15938
  const named = logicalIds.slice(0, NAMED_UNREADABLE_ENTRIES).map((id) => displayLogicalId(id)).join(", ");
@@ -20671,10 +20675,10 @@ var DiffCalculator = class DiffCalculator {
20671
20675
  conditionalReplacementVerdict(resourceType, propertyPath, oldValue, newValue) {
20672
20676
  return this.replacementRules.conditionalReplacementVerdict(resourceType, propertyPath, oldValue, newValue);
20673
20677
  }
20674
- async calculateDiff(currentState, desiredTemplate, resolveFn, canonicalizeProperties, allowedUnsupportedProperties, freshParameters, maskForLog, recreateTargets, maskedInputs) {
20678
+ async calculateDiff(currentState, desiredTemplate, resolveFn, canonicalizeProperties, allowedUnsupportedProperties, freshParameters, maskForLog, recreateTargets, maskedInputs, refusalRecovery) {
20675
20679
  const changes = /* @__PURE__ */ new Map();
20676
- refuseMalformedResourceEntriesForDeploy(currentState, void 0, void 0);
20677
- refuseMalformedResourceProperties(currentState, void 0, void 0);
20680
+ refuseMalformedResourceEntriesForDeploy(currentState, void 0, void 0, refusalRecovery);
20681
+ refuseMalformedResourceProperties(currentState, void 0, void 0, refusalRecovery);
20678
20682
  const currentResources = currentState.resources;
20679
20683
  const desiredResources = desiredTemplate.Resources;
20680
20684
  this.logger.debug("Calculating diff...");
@@ -22103,7 +22107,7 @@ var CloudControlProvider = class {
22103
22107
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
22104
22108
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
22105
22109
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
22106
- const { ASGProvider } = await import("./asg-provider-BU0YONBp.js");
22110
+ const { ASGProvider } = await import("./asg-provider-B0IrI6EW.js");
22107
22111
  const delegateRegion = ambientRegion();
22108
22112
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
22109
22113
  if (asgProvider === void 0) {
@@ -22209,7 +22213,7 @@ var CloudControlProvider = class {
22209
22213
  const family = SDK_DELETE_FAMILIES.get(resourceType);
22210
22214
  const cached = this.sdkDeleteDelegates.get(family);
22211
22215
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
22212
- const provider = family === "rds" ? new (await (import("./rds-provider-Cf5P2so_.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-C3f-vDOh.js"))).NeptuneProvider({ region: ccRegion });
22216
+ const provider = family === "rds" ? new (await (import("./rds-provider-B0YTjZKU.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DGaKBQxm.js"))).NeptuneProvider({ region: ccRegion });
22213
22217
  this.sdkDeleteDelegates.set(family, {
22214
22218
  region: ccRegion,
22215
22219
  provider
@@ -25523,6 +25527,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
25523
25527
  ["AWS::CloudFront::OriginAccessControl", "{\"OriginAccessControlConfig\":\"object\"}"],
25524
25528
  ["AWS::CloudTrail::Trail", "{\"AdvancedEventSelectors\":\"array\",\"AdvancedEventSelectors[]\":\"object\",\"AdvancedEventSelectors[].FieldSelectors\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[]\":\"object\",\"AdvancedEventSelectors[].FieldSelectors[].EndsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].Equals\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotEndsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotEquals\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotStartsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].StartsWith\":\"array\",\"AggregationConfigurations\":\"array\",\"AggregationConfigurations[]\":\"object\",\"AggregationConfigurations[].Templates\":\"array\",\"EventSelectors\":\"array\",\"EventSelectors[]\":\"object\",\"EventSelectors[].DataResources\":\"array\",\"EventSelectors[].DataResources[]\":\"object\",\"EventSelectors[].DataResources[].Values\":\"array\",\"EventSelectors[].ExcludeManagementEventSources\":\"array\",\"InsightSelectors\":\"array\",\"InsightSelectors[]\":\"object\",\"InsightSelectors[].EventCategories\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
25525
25529
  ["AWS::CloudWatch::Alarm", "{\"AlarmActions\":\"array\",\"Dimensions\":\"array\",\"Dimensions[]\":\"object\",\"EvaluationCriteria\":\"object\",\"EvaluationCriteria.PromQLCriteria\":\"object\",\"EvaluationWindow\":\"object\",\"EvaluationWindow.SlidingWindow\":\"object\",\"EvaluationWindow.WallClockWindow\":\"object\",\"InsufficientDataActions\":\"array\",\"Metrics\":\"array\",\"Metrics[]\":\"object\",\"Metrics[].MetricStat\":\"object\",\"Metrics[].MetricStat.Metric\":\"object\",\"Metrics[].MetricStat.Metric.Dimensions\":\"array\",\"Metrics[].MetricStat.Metric.Dimensions[]\":\"object\",\"OKActions\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"WarmUpConfiguration\":\"object\"}"],
25530
+ ["AWS::CloudWatch::AnomalyDetector", "{\"Configuration\":\"object\",\"Configuration.ExcludedTimeRanges\":\"array\",\"Configuration.ExcludedTimeRanges[]\":\"object\",\"Dimensions\":\"array\",\"Dimensions[]\":\"object\",\"MetricCharacteristics\":\"object\",\"MetricMathAnomalyDetector\":\"object\",\"MetricMathAnomalyDetector.MetricDataQueries\":\"array\",\"MetricMathAnomalyDetector.MetricDataQueries[]\":\"object\",\"MetricMathAnomalyDetector.MetricDataQueries[].MetricStat\":\"object\",\"MetricMathAnomalyDetector.MetricDataQueries[].MetricStat.Metric\":\"object\",\"MetricMathAnomalyDetector.MetricDataQueries[].MetricStat.Metric.Dimensions\":\"array\",\"MetricMathAnomalyDetector.MetricDataQueries[].MetricStat.Metric.Dimensions[]\":\"object\",\"SingleMetricAnomalyDetector\":\"object\",\"SingleMetricAnomalyDetector.Dimensions\":\"array\",\"SingleMetricAnomalyDetector.Dimensions[]\":\"object\"}"],
25526
25531
  ["AWS::CodeCommit::Repository", "{\"Code\":\"object\",\"Code.S3\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Triggers\":\"array\",\"Triggers[]\":\"object\",\"Triggers[].Branches\":\"array\",\"Triggers[].Events\":\"array\"}"],
25527
25532
  ["AWS::Cognito::UserPool", "{\"AccountRecoverySetting\":\"object\",\"AccountRecoverySetting.RecoveryMechanisms\":\"array\",\"AccountRecoverySetting.RecoveryMechanisms[]\":\"object\",\"AdminCreateUserConfig\":\"object\",\"AdminCreateUserConfig.InviteMessageTemplate\":\"object\",\"AliasAttributes\":\"array\",\"AutoVerifiedAttributes\":\"array\",\"DeviceConfiguration\":\"object\",\"EmailConfiguration\":\"object\",\"EnabledMfas\":\"array\",\"IssuerConfiguration\":\"object\",\"KeyConfiguration\":\"object\",\"LambdaConfig\":\"object\",\"LambdaConfig.CustomEmailSender\":\"object\",\"LambdaConfig.CustomSMSSender\":\"object\",\"LambdaConfig.InboundFederation\":\"object\",\"LambdaConfig.PreTokenGenerationConfig\":\"object\",\"Policies\":\"object\",\"Policies.PasswordPolicy\":\"object\",\"Policies.SignInPolicy\":\"object\",\"Policies.SignInPolicy.AllowedFirstAuthFactors\":\"array\",\"Schema\":\"array\",\"Schema[]\":\"object\",\"Schema[].NumberAttributeConstraints\":\"object\",\"Schema[].StringAttributeConstraints\":\"object\",\"SmsConfiguration\":\"object\",\"SmsConfiguration.EumsSms\":\"object\",\"UserAttributeUpdateSettings\":\"object\",\"UserAttributeUpdateSettings.AttributesRequireVerificationBeforeUpdate\":\"array\",\"UserPoolAddOns\":\"object\",\"UserPoolAddOns.AdvancedSecurityAdditionalFlows\":\"object\",\"UserPoolTags\":\"object\",\"UsernameAttributes\":\"array\",\"UsernameConfiguration\":\"object\",\"VerificationMessageTemplate\":\"object\"}"],
25528
25533
  ["AWS::DLM::LifecyclePolicy", "{\"CrossRegionCopyTargets\":\"array\",\"CrossRegionCopyTargets[]\":\"object\",\"Exclusions\":\"object\",\"Exclusions.ExcludeTags\":\"array\",\"Exclusions.ExcludeTags[]\":\"object\",\"Exclusions.ExcludeVolumeTypes\":\"array\",\"PolicyDetails\":\"object\",\"PolicyDetails.Actions\":\"array\",\"PolicyDetails.Actions[]\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy\":\"array\",\"PolicyDetails.Actions[].CrossRegionCopy[]\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy[].EncryptionConfiguration\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy[].RetainRule\":\"object\",\"PolicyDetails.CrossRegionCopyTargets\":\"array\",\"PolicyDetails.CrossRegionCopyTargets[]\":\"object\",\"PolicyDetails.EventSource\":\"object\",\"PolicyDetails.EventSource.Parameters\":\"object\",\"PolicyDetails.EventSource.Parameters.SnapshotOwner\":\"array\",\"PolicyDetails.Exclusions\":\"object\",\"PolicyDetails.Exclusions.ExcludeTags\":\"array\",\"PolicyDetails.Exclusions.ExcludeTags[]\":\"object\",\"PolicyDetails.Exclusions.ExcludeVolumeTypes\":\"array\",\"PolicyDetails.Parameters\":\"object\",\"PolicyDetails.Parameters.ExcludeDataVolumeTags\":\"array\",\"PolicyDetails.Parameters.ExcludeDataVolumeTags[]\":\"object\",\"PolicyDetails.ResourceLocations\":\"array\",\"PolicyDetails.ResourceTypes\":\"array\",\"PolicyDetails.Schedules\":\"array\",\"PolicyDetails.Schedules[]\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule.RetainRule\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule.RetainRule.RetentionArchiveTier\":\"object\",\"PolicyDetails.Schedules[].CreateRule\":\"object\",\"PolicyDetails.Schedules[].CreateRule.Scripts\":\"array\",\"PolicyDetails.Schedules[].CreateRule.Scripts[]\":\"object\",\"PolicyDetails.Schedules[].CreateRule.Scripts[].Stages\":\"array\",\"PolicyDetails.Schedules[].CreateRule.Times\":\"array\",\"PolicyDetails.Schedules[].CrossRegionCopyRules\":\"array\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[]\":\"object\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[].DeprecateRule\":\"object\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[].RetainRule\":\"object\",\"PolicyDetails.Schedules[].DeprecateRule\":\"object\",\"PolicyDetails.Schedules[].FastRestoreRule\":\"object\",\"PolicyDetails.Schedules[].FastRestoreRule.AvailabilityZoneIds\":\"array\",\"PolicyDetails.Schedules[].FastRestoreRule.AvailabilityZones\":\"array\",\"PolicyDetails.Schedules[].RetainRule\":\"object\",\"PolicyDetails.Schedules[].ShareRules\":\"array\",\"PolicyDetails.Schedules[].ShareRules[]\":\"object\",\"PolicyDetails.Schedules[].ShareRules[].TargetAccounts\":\"array\",\"PolicyDetails.Schedules[].TagsToAdd\":\"array\",\"PolicyDetails.Schedules[].TagsToAdd[]\":\"object\",\"PolicyDetails.Schedules[].VariableTags\":\"array\",\"PolicyDetails.Schedules[].VariableTags[]\":\"object\",\"PolicyDetails.TargetTags\":\"array\",\"PolicyDetails.TargetTags[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
@@ -27536,8 +27541,17 @@ function sanitizeSnapshotBase(physicalId) {
27536
27541
  return base;
27537
27542
  }
27538
27543
  function finalSnapshotNamePrefix(physicalId, resourceType) {
27544
+ return finalSnapshotNameCut(physicalId, resourceType).prefix;
27545
+ }
27546
+ function finalSnapshotNameCut(physicalId, resourceType) {
27539
27547
  const maxLength = resourceType === "AWS::ElastiCache::CacheCluster" || resourceType === "AWS::ElastiCache::ReplicationGroup" ? 50 : 255;
27540
- return `${sanitizeSnapshotBase(physicalId).slice(0, maxLength - 22).replace(/-+$/, "")}-final-`;
27548
+ const sanitized = sanitizeSnapshotBase(physicalId);
27549
+ const base = sanitized.slice(0, maxLength - 22).replace(/-+$/, "");
27550
+ return {
27551
+ prefix: `${base}-final-`,
27552
+ sanitized,
27553
+ kept: base.length
27554
+ };
27541
27555
  }
27542
27556
  function buildFinalSnapshotIdentifier(physicalId, resourceType, now = /* @__PURE__ */ new Date()) {
27543
27557
  const ts = now.toISOString().replace(/[-:]/g, "").replace(/\..*$/, "").replace("T", "-").toLowerCase();
@@ -28203,8 +28217,24 @@ function secretNameNeedlesOf(logicalId, record, secrets, options) {
28203
28217
  if (embeddedBag !== void 0 && physicalId !== void 0) {
28204
28218
  for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
28205
28219
  }
28220
+ if (physicalId !== void 0) for (const spelling of finalSnapshotSpellingsOf(physicalId, record?.resourceType, needles)) add(spelling);
28206
28221
  return needles.size > 0 ? needles : void 0;
28207
28222
  }
28223
+ function finalSnapshotSpellingsOf(physicalId, resourceType, needles) {
28224
+ if (typeof resourceType !== "string" || !(ATOMIC_FINAL_SNAPSHOT_TYPES.has(resourceType) || PRE_DELETE_SNAPSHOT_TYPES.has(resourceType))) return [];
28225
+ const { prefix, sanitized, kept } = finalSnapshotNameCut(physicalId, resourceType);
28226
+ const spellings = [];
28227
+ for (const needle of needles) {
28228
+ const folded = needle.toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-{2,}/g, "-");
28229
+ if (folded.length < 4) continue;
28230
+ for (let at = sanitized.indexOf(folded); at !== -1; at = sanitized.indexOf(folded, at + 1)) {
28231
+ if (at >= kept) break;
28232
+ if (at + folded.length > kept) spellings.push(prefix);
28233
+ else if (folded !== needle) spellings.push(folded);
28234
+ }
28235
+ }
28236
+ return spellings;
28237
+ }
28208
28238
  function secretNamesReadBy(logicalId, record, resources, judge = () => ({
28209
28239
  secrets: void 0,
28210
28240
  embedded: void 0
@@ -35127,7 +35157,7 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
35127
35157
  return;
35128
35158
  }
35129
35159
  this.refuseRedactedAttributeReads(logicalId, resourceType, context);
35130
- if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(unaddressableUpdateRefusalMessage(stackName, this.stackRegion, logicalId, oldResourceType), STATE_RESOURCES_MALFORMED)));
35160
+ if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(unaddressableUpdateRefusalMessage(stackName, this.stackRegion, logicalId, oldResourceType, this.options.refusalRecovery), STATE_RESOURCES_MALFORMED)));
35131
35161
  this.attemptedResolvedProps.set(logicalId, resolvedProps);
35132
35162
  const noEchoHeldPaths = /* @__PURE__ */ new Set();
35133
35163
  if (change.propertyChanges?.some((pc) => pc.requiresReplacement) === true) {
@@ -35781,15 +35811,21 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
35781
35811
  renderer.removeTask(logicalId);
35782
35812
  const skipLine = formatResourceLine("skipped", logicalId, resourceType, `skipped (${reason})`);
35783
35813
  this.logger.info(safeMsg`${skipPrefix}${skipLine}`);
35784
- const showCommand = pasteableCommand("cdkd state show", [{
35785
- value: stackName,
35786
- hole: "stack",
35787
- opts: { plainIdent: true }
35788
- }, {
35789
- flag: "--stack-region",
35790
- value: this.stackRegion,
35791
- hole: "region"
35792
- }]).command;
35814
+ const recovery = this.options.refusalRecovery;
35815
+ const account = accountArgs(recovery);
35816
+ const showCommand = pasteableCommand("cdkd state show", [
35817
+ {
35818
+ value: stackName,
35819
+ hole: "stack",
35820
+ opts: { plainIdent: true }
35821
+ },
35822
+ {
35823
+ flag: "--stack-region",
35824
+ value: this.stackRegion,
35825
+ hole: "region"
35826
+ },
35827
+ ...account
35828
+ ]).command;
35793
35829
  const dropCommand = pasteableCommand("cdkd state orphan", [
35794
35830
  {
35795
35831
  value: stackName,
@@ -35806,9 +35842,11 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
35806
35842
  value: logicalId,
35807
35843
  hole: "logicalId",
35808
35844
  opts: { plainIdent: true }
35809
- }
35845
+ },
35846
+ ...account
35810
35847
  ]).command;
35811
- this.logger.warn(safeMsg`Resource ${displaySafe(logicalId)} (${displaySafe(resourceType)}) has no non-empty string 'physicalId' in its state record, so cdkd cannot address it in AWS and did not try to delete it while removing it from the template. Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record's 'physicalId', or delete the resource by hand and drop the record.
35848
+ const accountClause = withheldAccountClause(recovery, "the command lines below print").trimEnd();
35849
+ this.logger.warn(safeMsg`Resource ${displaySafe(logicalId)} (${displaySafe(resourceType)}) has no non-empty string 'physicalId' in its state record, so cdkd cannot address it in AWS and did not try to delete it while removing it from the template. Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record's 'physicalId', or delete the resource by hand and drop the record.${accountClause === "" ? "" : ` ${accountClause}`}
35812
35850
  Inspect it with: ${showCommand}
35813
35851
  Drop the record with: ${dropCommand}`);
35814
35852
  if (counts) counts.deleteSkipped++;
@@ -35852,16 +35890,23 @@ Drop the record with: ${dropCommand}`);
35852
35890
  const nested = resourceType === "AWS::CloudFormation::Stack";
35853
35891
  const recordStack = nested ? nestedChildStackName(stackName, logicalId) : stackName;
35854
35892
  const interrupted = nested && deleteSkipped.endsWith(" was interrupted");
35893
+ const recovery = this.options.refusalRecovery;
35894
+ const account = accountArgs(recovery);
35895
+ const accountClause = withheldAccountClause(recovery, "the command lines below print").trimEnd();
35855
35896
  const stackArg = {
35856
35897
  value: recordStack,
35857
35898
  hole: nested ? "child-stack" : "stack",
35858
35899
  opts: { plainIdent: true }
35859
35900
  };
35860
- this.logger.warn(deleteSkippedMessage(logicalId, currentResource.physicalId, deleteSkipped, "while removing it from the template") + ". Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record first (for a nested stack it is the CHILD's own state, whose other resources may already be gone), or delete the resource by hand and drop the record." + (interrupted ? " The commands name the child stack record. Its destroy was interrupted: re-run 'cdkd deploy' to resume it, and drop the child record only if that cannot finish, after deleting by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop)." : nested ? " The commands name the child stack record. Dropping it drops every record the child still has and nothing reaches those resources again, so first delete by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop). The next 'cdkd deploy' then removes this row." : " Keep '--resource' on the drop: without it the command drops the record of every resource in this still-deployed stack.") + `\nInspect it with: ${pasteableCommand("cdkd state show", [stackArg, {
35861
- flag: "--stack-region",
35862
- value: this.stackRegion,
35863
- hole: "region"
35864
- }]).command}\nDrop the record with: ${pasteableCommand("cdkd state orphan", [
35901
+ this.logger.warn(deleteSkippedMessage(logicalId, currentResource.physicalId, deleteSkipped, "while removing it from the template") + ". Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record first (for a nested stack it is the CHILD's own state, whose other resources may already be gone), or delete the resource by hand and drop the record." + (interrupted ? " The commands name the child stack record. Its destroy was interrupted: re-run 'cdkd deploy' to resume it, and drop the child record only if that cannot finish, after deleting by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop)." : nested ? " The commands name the child stack record. Dropping it drops every record the child still has and nothing reaches those resources again, so first delete by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop). The next 'cdkd deploy' then removes this row." : " Keep '--resource' on the drop: without it the command drops the record of every resource in this still-deployed stack.") + (accountClause === "" ? "" : ` ${accountClause}`) + `\nInspect it with: ${pasteableCommand("cdkd state show", [
35902
+ stackArg,
35903
+ {
35904
+ flag: "--stack-region",
35905
+ value: this.stackRegion,
35906
+ hole: "region"
35907
+ },
35908
+ ...account
35909
+ ]).command}\nDrop the record with: ${pasteableCommand("cdkd state orphan", [
35865
35910
  stackArg,
35866
35911
  {
35867
35912
  flag: "--stack-region",
@@ -35873,7 +35918,8 @@ Drop the record with: ${dropCommand}`);
35873
35918
  value: logicalId,
35874
35919
  hole: "logicalId",
35875
35920
  opts: { plainIdent: true }
35876
- }]
35921
+ }],
35922
+ ...account
35877
35923
  ]).command}`);
35878
35924
  if (counts) counts.deleteSkipped++;
35879
35925
  return { deleteSkipped };
@@ -37324,12 +37370,12 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
37324
37370
  };
37325
37371
  const currentEtag = currentStateData?.etag;
37326
37372
  this.healBaseline = currentState.resources ?? {};
37327
- refuseMalformedOutputs(currentState, stackName, this.stackRegion);
37328
- refuseMalformedResourcesForDeploy(currentState, stackName, this.stackRegion);
37329
- refuseMalformedResourceEntriesForDeploy(currentState, stackName, this.stackRegion);
37330
- refuseMalformedResourceProperties(currentState, stackName, this.stackRegion);
37331
- refuseMalformedOrphans(currentState, stackName, this.stackRegion);
37332
- refuseMalformedOrphanRecords(currentState, stackName, this.stackRegion);
37373
+ refuseMalformedOutputs(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37374
+ refuseMalformedResourcesForDeploy(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37375
+ refuseMalformedResourceEntriesForDeploy(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37376
+ refuseMalformedResourceProperties(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37377
+ refuseMalformedOrphans(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37378
+ refuseMalformedOrphanRecords(currentState, stackName, this.stackRegion, this.options.refusalRecovery);
37333
37379
  const migrationPending = currentStateData?.migrationPending ?? false;
37334
37380
  this.logger.debug(`Loaded current state: ${Object.keys(currentState.resources).length} resources`);
37335
37381
  if (this.options.onCurrentStateLoaded) await this.options.onCurrentStateLoaded(stackName, currentStateData?.state);
@@ -37426,7 +37472,7 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
37426
37472
  sources: maskedInputSourcesForDiff,
37427
37473
  rebaselined: /* @__PURE__ */ new Map()
37428
37474
  };
37429
- const changes = await this.diffCalculator.calculateDiff(currentState, effectiveTemplate, diffResolveFn, makeCanonicalizePropertiesFn(this.providerRegistry), this.providerRegistry.getAllowedUnsupportedProperties?.(), this.freshNoEchoParameters(parameterValues), this.diffLogMasker(diffResolverContext.recordedSecretValues, effectiveTemplate, parameterValues), recreateTargetIdsFor(this.options.recreateTargets, stackName), maskedInputs);
37475
+ const changes = await this.diffCalculator.calculateDiff(currentState, effectiveTemplate, diffResolveFn, makeCanonicalizePropertiesFn(this.providerRegistry), this.providerRegistry.getAllowedUnsupportedProperties?.(), this.freshNoEchoParameters(parameterValues), this.diffLogMasker(diffResolverContext.recordedSecretValues, effectiveTemplate, parameterValues), recreateTargetIdsFor(this.options.recreateTargets, stackName), maskedInputs, this.options.refusalRecovery);
37430
37476
  createOnlyPrefetch.cancel();
37431
37477
  for (const [logicalId, fingerprints] of maskedInputs?.rebaselined ?? []) {
37432
37478
  const record = currentState.resources[logicalId];
@@ -38104,5 +38150,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
38104
38150
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
38105
38151
 
38106
38152
  //#endregion
38107
- export { resourcesNamingDeclaredParameter as $, maskSecretsInError as $a, repairMalformedResourceEntriesForReadOnly as $i, deleteSkipReason as $n, ensureAssetStorage as $o, deployRefusesOrphanRowsReason as $r, derivePartitionAndUrlSuffix as $s, effectiveDeletionPolicy as $t, resolveDynamoDbDeleteBudgetClock as A, requireConfigObject as Aa, refuseMalformedOrphans as Ai, acquireIdempotencyToken as An, acceptedCreateOnlyDropsOf as Ao, s3BucketWebsiteUrl as Ar, getDefaultStateBucketName as As, planRollback as At, getPriorAttempts as B, TemplateParser as Ba, refuseMalformedResourceEntriesForImportSave as Bi, CC_BROKEN_REASON as Bn, orphansCarriedFrom as Bo, AWS_NO_VALUE as Br, stateBucketExistenceConfirmed as Bs, updatePartialMessage as Bt, perType as C, coerceCfnInteger as Ca, malformedScrubResourceEntriesRefusalMessage as Ci, findDestructiveChanges as Cn, WHOLE_DYNAMIC_REFERENCE_PATTERN as Co, callerEnvCredentials as Cr, warnFinchArgvExposure as Cs, getStackRecords as Ct, beginDeleteWait as D, readConfigString as Da, refuseMalformedNestedChildOutputs as Di, ledgerForStack as Dn, S3StateBackend as Do, s3BucketDomainName as Dr, getDockerImageBySourceHash as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, configStringRefusal as Ea, refuseDivergentRecordRegionForDestroy as Ei, earliestDefined as En, isLockInfoExpired as Eo, s3BucketArn as Er, AssetManifestLoader as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, withRetry as Fa, refuseMalformedResourceAttributesForOrphan as Fi, refuseMalformedDesiredTags as Fn, hasUnverifiableParameterRefusal as Fo, isImpossibleEmptyStoredAttribute as Fr, resolveCaptureObservedState as Fs, inheritProducerRegions as Ft, cyan as G, literalSplitDelimitersOf as Ga, refuseMalformedResourcePropertiesForOrphan as Gi, getCurrentResourceSecrets as Gn, WorkGraph as Go, withSharedDrainBudget as Gr, MIGRATE_TMP_PREFIX as Gs, orphanRecordsPrintingBag as Gt, formatResourceLine as H, carryLogOnlyValues as Ha, refuseMalformedResourcePropertiesForDestroy as Hi, ccBrokenReason as Hn, AssetPublisher as Ho, isStalePlaceholderArnAttribute as Hr, ssmResolvedValueType as Hs, completedReplayEntries as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, canonicalLambdaFunctionName as Ia, refuseMalformedResourceEntries as Ii, tagMapAsList as In, importableOutputKeys as Io, carriesDynamicReference as Ir, resolveSkipPrefix as Is, REDACTED_DELETE_ADDRESS_SKIP_REASON as It, red as J, recordLogOnlyParameterValue as Ja, refuseMalformedResourcesForExport as Ji, slowCcOperationTimeoutMs as Jn, loadPublishableAssetManifest as Jo, JSON_LISTING_HOLE_VALUE as Jr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Js, ATOMIC_FINAL_SNAPSHOT_TYPES as Jt, gray as K, logOnlyValueCount as Ka, refuseMalformedResourcesForDeploy as Ki, withPrintingSecrets as Kn, buildAssetRedirectMap as Ko, parameterInputsFor as Kr, findLargeInlineResources as Ks, secretNamePrintingBag as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, lambdaFunctionNameForMask as La, refuseMalformedResourceEntriesForDeploy as Li, tagPlanWarning as Ln, importableOutputs as Lo, carriesFetchableDynamicReference as Lr, resolveStateBucketWithDefault as Ls, isRedactedRecordedValue as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, prefetchCreateOnlyPropertyPaths as Ma, refuseMalformedOrphansForOrphan as Mi, DBPROXY_TAG_OPTIONS as Mn, exportNamesCarriedFrom as Mo, isUnboundTemplateParameter as Mr, loadCdkJson as Ms, resolveReplacementOldType as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, templateResourceTypes as Na, refuseMalformedOutputs as Ni, planTagDiff as Nn, hasReadableExportSet as No, parameterTypeMayLoseSecretIdentity as Nr, resolveApp as Ns, findNestedStackTypeChanges as Nt, compensateRemovedDeletionProtection as O, replayWarn as Oa, refuseMalformedOrphanRecords as Oi, reserveStackCreateToken as On, rebuildClientForBucketRegion as Oo, s3BucketDualStackDomainName as Or, Synthesizer as Os, isReplacementOrphan as Ot, deleteTableWithIndexBusyRetry as P, describeTypeWithThrottleRetry as Pa, refuseMalformedOutputsForDestroy as Pi, readTagList as Pn, hasReasonlessBaselineRefusal as Po, getAccountInfo as Pr, resolveAutoAssetStorage as Ps, getCurrentProducerRegions as Pt, reachableDivergentParameters as Q, errorCauseChain as Qa, repairMalformedOutputsForReadOnly as Qi, deleteIndeterminateGuards as Qn, assertAssetBucketRegion as Qo, UNREADABLE_RESOURCES_MAP_ROW as Qr, canonicalizeRegion as Qs, createPreDeleteFinalSnapshot as Qt, hasCdkAutoDeleteTag as R, sameLambdaFunctionAddress as Ra, refuseMalformedResourceEntriesForDestroy as Ri, definedAttributes as Rn, isReadableBag as Ro, isNamelessDynamicReferenceError as Rr, resolveStateBucketWithDefaultAndSource as Rs, redactedDeleteAddressFields as Rt, isProtectionValueActive as S, coerceCfnBoolean as Sa, malformedResourcesWarning as Si, constructPathOf as Sn, TEMPLATE_SOURCED_RULES as So, applyCallerIdentityCredentials as Sr, runDockerStreaming as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, configIntegerRefusal as Ta, previewableOrphanRecords as Ti, RollbackInlinePolicyWriters as Tn, LockManager as To, isSettledInstanceState as Tr, stripControlChars as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, createUnionSecretMasker as Ua, refuseMalformedResourcePropertiesForDrift as Ui, wouldReturnToSdkProvider as Un, isSensitiveAttributeName as Uo, refStateLookupFromResource as Ur, CFN_TEMPLATE_BODY_LIMIT as Us, journaledOrphanPrintingBag as Ut, markRefusedBeforeApplying as V, liveMatchesUnresolvedTokenFrame as Va, refuseMalformedResourceEntriesForOrphan as Vi, ProviderRegistry as Vn, shouldRetainResource as Vo, cfnRefValueFromPhysicalId as Vr, warnDeprecatedNoPrefixCliFlag as Vs, updatePartialReason as Vt, bold as W, hasMaskableValues as Wa, refuseMalformedResourcePropertiesForExport as Wi, isCustomResourceType as Wn, stringifyValue as Wo, parseWebACLArn as Wr, CFN_TEMPLATE_URL_LIMIT as Ws, maskEventTextWithBoundBags as Wt, computeParameterTaint as X, shareLogOnlyValues as Xa, repairMalformedOrphanRecordsForReadOnly as Xi, unchangedBehindSecretReference as Xn, AssetModeResolver as Xo, STATE_RESOURCES_MALFORMED as Xr, expectedOwnerParam as Xs, buildFinalSnapshotIdentifier as Xt, yellow as Y, recordLogOnlyValue as Ya, refuseMalformedState as Yi, ccProtectionRegistryTypes as Yn, rewriteTemplateAssetReferences as Yo, STATE_REGION_DIVERGED as Yr, decodeListingKey as Ys, PRE_DELETE_SNAPSHOT_TYPES as Yt, namesAnyDeclaredParameter as Z, createSecretMasker as Za, repairMalformedOrphansForReadOnly as Zi, UNSPECIFIED_SKIP_REASON as Zn, BOOTSTRAP_MARKER_PREFIX as Zo, UNREADABLE_ORPHANS_CONTAINER_ROW as Zr, PARTITION_TABLE as Zs, ccRoutedFinalSnapshotError as Zt, makeCanonicalizePropertiesFn as _, WARM_THROUGHPUT_MEMBERS as _a, malformedOutputsRefusalMessage as _i, isExportAliasCollision as _n, recordProvenPublicExpression as _o, assertSendableRoleArn as _r, isMalformedEnvKey as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, findActionableSilentDrops as aa, hasPlainPrototype$1 as ac, isReadableResourceEntry as ai, extractDeploymentEventError as an, dynamicReferenceTokens as ao, isTerminationProtectionPropagationError as ar, validateContainerRepoName as as, makeSiblingClaimReader as at, recordedProtectionNote as b, toCfnInteger as ba, malformedResourceEntriesWarning as bi, DEFAULT_RESOURCE_WARN_AFTER_MS as bn, STATE_SOURCED_CROSS_GENERATION_RULES as bo, sendableAssumeRoleCommand as br, redactedDockerCause as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, withoutSilentDropProperties as ca, absoluteAssemblyPathEscape as cc, malformedExportSourceWarning as ci, exportAliasCollisionScrubWarning as cn, inheritNestedStackParameterAssociations as co, reEnableInstanceApiTermination as cr, resolveDockerContextDirectory as cs, displacedOpClause as ct, conditionInputsFrom as d, findReplacedReadersOfRecreateTargets as da, renderAssemblyPathEscape as dc, malformedLocalResourcesWarning as di, secretSafeKeyDisplay as dn, identityKeyFor as do, IntrinsicFunctionResolver as dr, describeDockerFailure as ds, getNestedRevertRun as dt, repairMalformedResourcePropertiesForReadOnly as ea, AssemblyReader as ec, displayLogicalId as ei, isFinalSnapshotError as en, maskSecretsInText as eo, withIndeterminateGuard as er, getBootstrapMarkerKey as es, deleteJournaledOrphans as et, parentSuppliedValues as f, shownType as fa, resolveAssemblyPath as fc, malformedOrphanRecordsRefusalMessage as fi, exportNameSecretExposure as fn, carriesSecretMask as fo, classifyReplaySecretRegion as fr, dockerSpawnEnvWithSensitive as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, renderStatefulReason as ga, malformedOrphansWarning as gi, collectPublishedOutputNames as gn, recordNoEchoAttributeValues as go, assertFlagRoleArn as gr, isDockerClientEnvKey as gs, withNestedRevertRun as gt, keptWholeReasonText as h, isStatefulRecreateTargetSync as ha, malformedOrphansRefusalMessage as hi, collectDeclaredOutputNames as hn, recordMaskOnlyValuesIn as ho, applyRoleArnIfSet as hr, getDockerCmd as hs, revertedNestedRowIds as ht, childTemplateLoader as i, unreadableResourceEntries as ia, hasOwnKey as ic, isReadableOrphanRecord as ii, DeploymentEventsStore as in, DYNAMIC_REFERENCE_TOKEN_SCAN as io, ec2InstanceProtectionSite as ir, validateAssetBucketName as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, requireConfigString as ja, refuseMalformedOrphansForDestroy as ji, DBPROXY_TAGS_WHAT as jn, describeRegionValueKind as jo, coerceParameterTypedValue as jr, getLegacyStateBucketName as js, replacementNeverSwapped as jt, deleteBudgetKey as k, requireConfigArray as ka, refuseMalformedOrphanRecordsForDestroy as ki, withCreateTokenLedger as kn, splitImportedOps as ko, s3BucketRegionalDomainName as kr, synthesisStatusMessage as ks, planFailedOps as kt, templateIdentity as l, NO_CC_HANDLERS_REASON as la, describeFileReadFailure as lc, malformedLocalOutputsWarning as li, secretBearing as ln, recordNestedStackParameterExpressions as lo, DiffCalculator as lr, describeDockerCapturedOutput as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, isStatefulRecreateTargetForReplace as ma, resolveBucketRegion as mc, malformedOrphanRowsKeptWarning as mi, noEchoParameterValueSeed as mn, recordMaskOnlyValue as mo, regionLessSecretName as mr, formatDockerLoginError as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, unpreviewableOrphanRecords as na, processStackMessages as nc, hasReadableOutputs as ni, unsupportedFinalSnapshotError as nn, redactSecretsForState as no, markWaitAbandoned as nr, parseBootstrapMarker as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, findSilentDropProperties as oa, nullPrototypeRecord as oc, malformedDriftResourcePropertiesWarning as oi, WITHHELD_NAME_DISPLAY as on, isUncertifiedBaselineMaskPosition as oo, observeThenDisableInstanceApiTermination as or, buildDenyExternalAccessPolicy as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, MULTI_REGION_RECREATE_BLOCKED_TYPES as pa, clearBucketRegionCache as pc, malformedOrphanRecordsWarning as pi, isWholeDynamicReferenceValue as pn, provenPublicValue as po, producerRegionsFromState as pr, finchSecretArgvRefusal as ps, recordDisplacedSkips as pt, green as q, printingCorpusOf as qa, refuseMalformedResourcesForDestroy as qi, CloudControlProvider as qn, createAssetRedirectResolver as qo, passedParameterClassesOf as qr, uploadCfnTemplate as qs, stateSecretNameNeedles as qt, computeImplicitDeleteEdges as r, unreadableOrphanRecords as ra, defineOwnKey as rc, hasReadableResources as ri, DeploymentEventsReader as rn, scrubResourceRecord as ro, disableInstanceApiTermination as rr, readBootstrapMarkerBody as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, unwrittenCreateOnlyReplacement as sa, ownValue as sc, malformedExportNamesWarning as si, displayTextOrWithheld as sn, pathCrossesDottedKey as so, reDisableInstanceApiTermination as sr, buildDockerImage as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, repairMalformedResourcesForReadOnly as ta, StageLoadError as tc, hasReadableOrphans as ti, refusesFinalSnapshot as tn, markSameGenerationBag as to, isWaitAbandonedError as tr, isCrossRegionRedirect as ts, isHandledOrphan as tt, conditionFingerprint as u, hasNoCloudControlHandlers as ua, displayAssemblyPath as uc, malformedLocalResourceEntriesWarning as ui, secretBearingStateKeyWarning as un, recoverMaskedOutput as uo, INTRINSIC_KEYS as ur, describeDockerExecFailure as us, dropSettledNestedJournals as ut, withResourceDeadline as v, coerceWarmThroughput as va, malformedOutputsWarning as vi, bindingSkippedOutputs as vn, wholeStringLeavesOf as vo, explicitRoleArnOrThrow as vr, partitionSensitiveEnv as vs, withNestedStackContext as vt, readProtection as w, configBooleanRefusal as wa, malformedStateRefusalMessage as wi, formatDestructiveChange as wn, isSingleDynamicReferenceToken as wo, envCredentialsAreAssumedRole as wr, escapeRegExp$3 as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, toFiniteNumber as xa, malformedResourcePropertiesWarning as xi, maskingRetryLogger as xn, STATE_SOURCED_READBACK_RULES as xo, AWS_CREDENTIAL_ENV_KEYS as xr, runDockerForeground as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, isWarmThroughputDecrease as ya, malformedRenderedContainersWarning as yi, DEFAULT_RESOURCE_TIMEOUT_MS as yn, STATE_SOURCED_BASELINE_RULES as yo, isIamRoleArn as yr, redactDockerArgvValues as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, DagBuilder as za, refuseMalformedResourceEntriesForImport as zi, stringifyIfAssigned as zn, orphansAfterRollback as zo, keepsSecretReferenceToken as zr, resolveUseCdkBootstrapAssets as zs, redactedDeleteAddressSkip as zt };
38108
- //# sourceMappingURL=deploy-engine-wyaJUA8V.js.map
38153
+ export { resourcesNamingDeclaredParameter as $, createSecretMasker as $a, repairMalformedOutputsForReadOnly as $i, deleteSkipReason as $n, BOOTSTRAP_MARKER_PREFIX as $o, accountArgs as $r, PARTITION_TABLE as $s, effectiveDeletionPolicy as $t, resolveDynamoDbDeleteBudgetClock as A, replayWarn as Aa, refuseMalformedOrphanRecordsForDestroy as Ai, acquireIdempotencyToken as An, rebuildClientForBucketRegion as Ao, s3BucketWebsiteUrl as Ar, Synthesizer as As, planRollback as At, getPriorAttempts as B, sameLambdaFunctionAddress as Ba, refuseMalformedResourceEntriesForImport as Bi, CC_BROKEN_REASON as Bn, isReadableBag as Bo, AWS_NO_VALUE as Br, resolveStateBucketWithDefaultAndSource as Bs, updatePartialMessage as Bt, perType as C, toFiniteNumber as Ca, malformedResourcesWarning as Ci, findDestructiveChanges as Cn, STATE_SOURCED_READBACK_RULES as Co, callerEnvCredentials as Cr, runDockerForeground as Cs, getStackRecords as Ct, beginDeleteWait as D, configIntegerRefusal as Da, refuseDivergentRecordRegionForDestroy as Di, ledgerForStack as Dn, LockManager as Do, s3BucketDomainName as Dr, stripControlChars as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, configBooleanRefusal as Ea, previewableOrphanRecords as Ei, earliestDefined as En, isSingleDynamicReferenceToken as Eo, s3BucketArn as Er, escapeRegExp$3 as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, templateResourceTypes as Fa, refuseMalformedOutputsForDestroy as Fi, refuseMalformedDesiredTags as Fn, hasReadableExportSet as Fo, isImpossibleEmptyStoredAttribute as Fr, resolveApp as Fs, inheritProducerRegions as Ft, cyan as G, createUnionSecretMasker as Ga, refuseMalformedResourcePropertiesForExport as Gi, getCurrentResourceSecrets as Gn, isSensitiveAttributeName as Go, withSharedDrainBudget as Gr, CFN_TEMPLATE_BODY_LIMIT as Gs, orphanRecordsPrintingBag as Gt, formatResourceLine as H, TemplateParser as Ha, refuseMalformedResourceEntriesForOrphan as Hi, ccBrokenReason as Hn, orphansCarriedFrom as Ho, isStalePlaceholderArnAttribute as Hr, stateBucketExistenceConfirmed as Hs, completedReplayEntries as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, describeTypeWithThrottleRetry as Ia, refuseMalformedResourceAttributesForOrphan as Ii, tagMapAsList as In, hasReasonlessBaselineRefusal as Io, carriesDynamicReference as Ir, resolveAutoAssetStorage as Is, REDACTED_DELETE_ADDRESS_SKIP_REASON as It, red as J, logOnlyValueCount as Ja, refuseMalformedResourcesForDestroy as Ji, slowCcOperationTimeoutMs as Jn, buildAssetRedirectMap as Jo, JSON_LISTING_HOLE_VALUE as Jr, findLargeInlineResources as Js, ATOMIC_FINAL_SNAPSHOT_TYPES as Jt, gray as K, hasMaskableValues as Ka, refuseMalformedResourcePropertiesForOrphan as Ki, withPrintingSecrets as Kn, stringifyValue as Ko, parameterInputsFor as Kr, CFN_TEMPLATE_URL_LIMIT as Ks, secretNamePrintingBag as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, withRetry as La, refuseMalformedResourceEntries as Li, tagPlanWarning as Ln, hasUnverifiableParameterRefusal as Lo, carriesFetchableDynamicReference as Lr, resolveCaptureObservedState as Ls, isRedactedRecordedValue as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, requireConfigObject as Ma, refuseMalformedOrphansForDestroy as Mi, DBPROXY_TAG_OPTIONS as Mn, acceptedCreateOnlyDropsOf as Mo, isUnboundTemplateParameter as Mr, getDefaultStateBucketName as Ms, resolveReplacementOldType as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, requireConfigString as Na, refuseMalformedOrphansForOrphan as Ni, planTagDiff as Nn, describeRegionValueKind as No, parameterTypeMayLoseSecretIdentity as Nr, getLegacyStateBucketName as Ns, findNestedStackTypeChanges as Nt, compensateRemovedDeletionProtection as O, configStringRefusal as Oa, refuseMalformedNestedChildOutputs as Oi, reserveStackCreateToken as On, isLockInfoExpired as Oo, s3BucketDualStackDomainName as Or, AssetManifestLoader as Os, isReplacementOrphan as Ot, deleteTableWithIndexBusyRetry as P, prefetchCreateOnlyPropertyPaths as Pa, refuseMalformedOutputs as Pi, readTagList as Pn, exportNamesCarriedFrom as Po, getAccountInfo as Pr, loadCdkJson as Ps, getCurrentProducerRegions as Pt, reachableDivergentParameters as Q, shareLogOnlyValues as Qa, repairMalformedOrphansForReadOnly as Qi, deleteIndeterminateGuards as Qn, AssetModeResolver as Qo, UNREADABLE_RESOURCES_MAP_ROW as Qr, expectedOwnerParam as Qs, createPreDeleteFinalSnapshot as Qt, hasCdkAutoDeleteTag as R, canonicalLambdaFunctionName as Ra, refuseMalformedResourceEntriesForDeploy as Ri, definedAttributes as Rn, importableOutputKeys as Ro, isNamelessDynamicReferenceError as Rr, resolveSkipPrefix as Rs, redactedDeleteAddressFields as Rt, isProtectionValueActive as S, toCfnInteger as Sa, malformedResourcePropertiesWarning as Si, constructPathOf as Sn, STATE_SOURCED_CROSS_GENERATION_RULES as So, applyCallerIdentityCredentials as Sr, redactedDockerCause as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, coerceCfnInteger as Ta, malformedStateRefusalMessage as Ti, RollbackInlinePolicyWriters as Tn, WHOLE_DYNAMIC_REFERENCE_PATTERN as To, isSettledInstanceState as Tr, warnFinchArgvExposure as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, liveMatchesUnresolvedTokenFrame as Ua, refuseMalformedResourcePropertiesForDestroy as Ui, wouldReturnToSdkProvider as Un, shouldRetainResource as Uo, refStateLookupFromResource as Ur, warnDeprecatedNoPrefixCliFlag as Us, journaledOrphanPrintingBag as Ut, markRefusedBeforeApplying as V, DagBuilder as Va, refuseMalformedResourceEntriesForImportSave as Vi, ProviderRegistry as Vn, orphansAfterRollback as Vo, cfnRefValueFromPhysicalId as Vr, resolveUseCdkBootstrapAssets as Vs, updatePartialReason as Vt, bold as W, carryLogOnlyValues as Wa, refuseMalformedResourcePropertiesForDrift as Wi, isCustomResourceType as Wn, AssetPublisher as Wo, parseWebACLArn as Wr, ssmResolvedValueType as Ws, maskEventTextWithBoundBags as Wt, computeParameterTaint as X, recordLogOnlyParameterValue as Xa, refuseMalformedState as Xi, unchangedBehindSecretReference as Xn, loadPublishableAssetManifest as Xo, STATE_RESOURCES_MALFORMED as Xr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Xs, buildFinalSnapshotIdentifier as Xt, yellow as Y, printingCorpusOf as Ya, refuseMalformedResourcesForExport as Yi, ccProtectionRegistryTypes as Yn, createAssetRedirectResolver as Yo, STATE_REGION_DIVERGED as Yr, uploadCfnTemplate as Ys, PRE_DELETE_SNAPSHOT_TYPES as Yt, namesAnyDeclaredParameter as Z, recordLogOnlyValue as Za, repairMalformedOrphanRecordsForReadOnly as Zi, UNSPECIFIED_SKIP_REASON as Zn, rewriteTemplateAssetReferences as Zo, UNREADABLE_ORPHANS_CONTAINER_ROW as Zr, decodeListingKey as Zs, ccRoutedFinalSnapshotError as Zt, makeCanonicalizePropertiesFn as _, isStatefulRecreateTargetSync as _a, malformedOrphansWarning as _i, isExportAliasCollision as _n, recordMaskOnlyValuesIn as _o, assertSendableRoleArn as _r, getDockerCmd as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, unreadableResourceEntries as aa, defineOwnKey as ac, isReadableOrphanRecord as ai, extractDeploymentEventError as an, scrubResourceRecord as ao, isTerminationProtectionPropagationError as ar, readBootstrapMarkerBody as as, makeSiblingClaimReader as at, recordedProtectionNote as b, coerceWarmThroughput as ba, malformedRenderedContainersWarning as bi, DEFAULT_RESOURCE_WARN_AFTER_MS as bn, wholeStringLeavesOf as bo, sendableAssumeRoleCommand as br, partitionSensitiveEnv as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, findSilentDropProperties as ca, nullPrototypeRecord as cc, malformedExportNamesWarning as ci, exportAliasCollisionScrubWarning as cn, isUncertifiedBaselineMaskPosition as co, reEnableInstanceApiTermination as cr, buildDenyExternalAccessPolicy as cs, displacedOpClause as ct, conditionInputsFrom as d, NO_CC_HANDLERS_REASON as da, describeFileReadFailure as dc, malformedLocalResourceEntriesWarning as di, secretSafeKeyDisplay as dn, recordNestedStackParameterExpressions as do, IntrinsicFunctionResolver as dr, describeDockerCapturedOutput as ds, getNestedRevertRun as dt, repairMalformedResourceEntriesForReadOnly as ea, canonicalizeRegion as ec, deployRefusesOrphanRowsReason as ei, isFinalSnapshotError as en, errorCauseChain as eo, withIndeterminateGuard as er, assertAssetBucketRegion as es, deleteJournaledOrphans as et, parentSuppliedValues as f, hasNoCloudControlHandlers as fa, displayAssemblyPath as fc, malformedLocalResourcesWarning as fi, exportNameSecretExposure as fn, recoverMaskedOutput as fo, classifyReplaySecretRegion as fr, describeDockerExecFailure as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, isStatefulRecreateTargetForReplace as ga, resolveBucketRegion as gc, malformedOrphansRefusalMessage as gi, collectPublishedOutputNames as gn, recordMaskOnlyValue as go, assertFlagRoleArn as gr, formatDockerLoginError as gs, withNestedRevertRun as gt, keptWholeReasonText as h, MULTI_REGION_RECREATE_BLOCKED_TYPES as ha, clearBucketRegionCache as hc, malformedOrphanRowsKeptWarning as hi, collectDeclaredOutputNames as hn, provenPublicValue as ho, applyRoleArnIfSet as hr, finchSecretArgvRefusal as hs, revertedNestedRowIds as ht, childTemplateLoader as i, unreadableOrphanRecords as ia, processStackMessages as ic, hasReadableResources as ii, DeploymentEventsStore as in, redactSecretsForState as io, ec2InstanceProtectionSite as ir, parseBootstrapMarker as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, requireConfigArray as ja, refuseMalformedOrphans as ji, DBPROXY_TAGS_WHAT as jn, splitImportedOps as jo, coerceParameterTypedValue as jr, synthesisStatusMessage as js, replacementNeverSwapped as jt, deleteBudgetKey as k, readConfigString as ka, refuseMalformedOrphanRecords as ki, withCreateTokenLedger as kn, S3StateBackend as ko, s3BucketRegionalDomainName as kr, getDockerImageBySourceHash as ks, planFailedOps as kt, templateIdentity as l, unwrittenCreateOnlyReplacement as la, ownValue as lc, malformedExportSourceWarning as li, secretBearing as ln, pathCrossesDottedKey as lo, DiffCalculator as lr, buildDockerImage as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, shownType as ma, resolveAssemblyPath as mc, malformedOrphanRecordsWarning as mi, noEchoParameterValueSeed as mn, carriesSecretMask as mo, regionLessSecretName as mr, dockerSpawnEnvWithSensitive as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, repairMalformedResourcesForReadOnly as na, AssemblyReader as nc, hasReadableOrphans as ni, unsupportedFinalSnapshotError as nn, maskSecretsInText as no, markWaitAbandoned as nr, getBootstrapMarkerKey as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, withheldAccountClause as oa, hasOwnKey as oc, isReadableResourceEntry as oi, WITHHELD_NAME_DISPLAY as on, DYNAMIC_REFERENCE_TOKEN_SCAN as oo, observeThenDisableInstanceApiTermination as or, validateAssetBucketName as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, findReplacedReadersOfRecreateTargets as pa, renderAssemblyPathEscape as pc, malformedOrphanRecordsRefusalMessage as pi, isWholeDynamicReferenceValue as pn, identityKeyFor as po, producerRegionsFromState as pr, describeDockerFailure as ps, recordDisplacedSkips as pt, green as q, literalSplitDelimitersOf as qa, refuseMalformedResourcesForDeploy as qi, CloudControlProvider as qn, WorkGraph as qo, passedParameterClassesOf as qr, MIGRATE_TMP_PREFIX as qs, stateSecretNameNeedles as qt, computeImplicitDeleteEdges as r, unpreviewableOrphanRecords as ra, StageLoadError as rc, hasReadableOutputs as ri, DeploymentEventsReader as rn, markSameGenerationBag as ro, disableInstanceApiTermination as rr, isCrossRegionRedirect as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, findActionableSilentDrops as sa, hasPlainPrototype$1 as sc, malformedDriftResourcePropertiesWarning as si, displayTextOrWithheld as sn, dynamicReferenceTokens as so, reDisableInstanceApiTermination as sr, validateContainerRepoName as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, repairMalformedResourcePropertiesForReadOnly as ta, derivePartitionAndUrlSuffix as tc, displayLogicalId as ti, refusesFinalSnapshot as tn, maskSecretsInError as to, isWaitAbandonedError as tr, ensureAssetStorage as ts, isHandledOrphan as tt, conditionFingerprint as u, withoutSilentDropProperties as ua, absoluteAssemblyPathEscape as uc, malformedLocalOutputsWarning as ui, secretBearingStateKeyWarning as un, inheritNestedStackParameterAssociations as uo, INTRINSIC_KEYS as ur, resolveDockerContextDirectory as us, dropSettledNestedJournals as ut, withResourceDeadline as v, renderStatefulReason as va, malformedOutputsRefusalMessage as vi, bindingSkippedOutputs as vn, recordNoEchoAttributeValues as vo, explicitRoleArnOrThrow as vr, isDockerClientEnvKey as vs, withNestedStackContext as vt, readProtection as w, coerceCfnBoolean as wa, malformedScrubResourceEntriesRefusalMessage as wi, formatDestructiveChange as wn, TEMPLATE_SOURCED_RULES as wo, envCredentialsAreAssumedRole as wr, runDockerStreaming as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, isWarmThroughputDecrease as xa, malformedResourceEntriesWarning as xi, maskingRetryLogger as xn, STATE_SOURCED_BASELINE_RULES as xo, AWS_CREDENTIAL_ENV_KEYS as xr, redactDockerArgvValues as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, WARM_THROUGHPUT_MEMBERS as ya, malformedOutputsWarning as yi, DEFAULT_RESOURCE_TIMEOUT_MS as yn, recordProvenPublicExpression as yo, isIamRoleArn as yr, isMalformedEnvKey as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, lambdaFunctionNameForMask as za, refuseMalformedResourceEntriesForDestroy as zi, stringifyIfAssigned as zn, importableOutputs as zo, keepsSecretReferenceToken as zr, resolveStateBucketWithDefault as zs, redactedDeleteAddressSkip as zt };
38154
+ //# sourceMappingURL=deploy-engine-B-oaHd2t.js.map