@go-to-k/cdkd 0.296.1 → 0.296.3

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 (24) hide show
  1. package/dist/{asg-provider-BwWy0pBH.js → asg-provider-CksS_6jO.js} +3 -3
  2. package/dist/{asg-provider-BwWy0pBH.js.map → asg-provider-CksS_6jO.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-xlct0Hcm.js → deploy-engine-Dre6eDNJ.js} +164 -28
  5. package/dist/deploy-engine-Dre6eDNJ.js.map +1 -0
  6. package/dist/{iam-role-provider-BRVCTUZu.js → iam-role-provider-D9wk9Bnh.js} +2 -2
  7. package/dist/{iam-role-provider-BRVCTUZu.js.map → iam-role-provider-D9wk9Bnh.js.map} +1 -1
  8. package/dist/index.d.ts +5 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/{neptune-provider-Cdp4jX8S.js → neptune-provider-B1GRQ6UO.js} +2 -2
  12. package/dist/{neptune-provider-Cdp4jX8S.js.map → neptune-provider-B1GRQ6UO.js.map} +1 -1
  13. package/dist/{program-DXRavuSm.js → program-DFehMfoh.js} +286 -85
  14. package/dist/program-DFehMfoh.js.map +1 -0
  15. package/dist/{provider-classes-DNkoEEo4.js → provider-classes-Ca6o5by0.js} +269 -50
  16. package/dist/provider-classes-Ca6o5by0.js.map +1 -0
  17. package/dist/{rds-provider-McCDKyXN.js → rds-provider-Dl--9uQU.js} +3 -3
  18. package/dist/{rds-provider-McCDKyXN.js.map → rds-provider-Dl--9uQU.js.map} +1 -1
  19. package/dist/{version-Dpc_HYX0.js → version-B5LYpWJH.js} +2 -2
  20. package/dist/{version-Dpc_HYX0.js.map → version-B5LYpWJH.js.map} +1 -1
  21. package/package.json +2 -2
  22. package/dist/deploy-engine-xlct0Hcm.js.map +0 -1
  23. package/dist/program-DXRavuSm.js.map +0 -1
  24. package/dist/provider-classes-DNkoEEo4.js.map +0 -1
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js"
2
2
  import { A as displaySafe, E as UNRENDERABLE, F as safeMsg, L as truncateCodePoints, M as isPasteableIdent, O as displayAwsMessage, P as plainIdentOr, S as withoutGeneratedFallbackName, T as STACK_REF_MAX_CODE_POINTS, _ as getCurrentSkipPrefix, b as withSkipPrefix, c as getLiveRenderer, f as applyDefaultNameForFallback, g as generateResourceNameWithFallback, h as generateResourceName, j as displayStackName, k as displayIdent, m as explicitNamePropertyFor, n as getLogger, r as isStdoutReservedForPayload, s as installLogLineMaskerSource, v as getCurrentStackName, w as SECRET_REF_MAX_CODE_POINTS, x as withStackName, y as looksLikeCdkdGeneratedName } from "./logger-Dvc7ddKe.js";
3
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-DSDSdxXz.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-Dpc_HYX0.js";
5
+ import { t as getCdkdVersion } from "./version-B5LYpWJH.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";
@@ -4803,6 +4803,11 @@ function refuseMalformedOperation(shownStack, where, op) {
4803
4803
  const attempted = o["attemptedProperties"];
4804
4804
  if (attempted !== void 0 && (typeof attempted !== "object" || attempted === null || Array.isArray(attempted))) fail("attemptedProperties", attempted, "an object when present");
4805
4805
  if (o["oldResourceRetained"] !== void 0 && typeof o["oldResourceRetained"] !== "boolean") fail("oldResourceRetained", o["oldResourceRetained"], "a boolean when present");
4806
+ if (o["replacementOrphaned"] !== void 0) {
4807
+ if (!["create-first", "delete-first"].includes(o["replacementOrphaned"])) fail("replacementOrphaned", o["replacementOrphaned"], "create-first or delete-first when present");
4808
+ if (o["changeType"] !== "UPDATE") refuseMalformed(shownStack, `${where}.replacementOrphaned is only valid on an UPDATE.`);
4809
+ }
4810
+ if (o["wasReplaced"] !== void 0 && typeof o["wasReplaced"] !== "boolean") fail("wasReplaced", o["wasReplaced"], "a boolean when present");
4806
4811
  if (o["physicalIdRecoveredFromError"] !== void 0 && typeof o["physicalIdRecoveredFromError"] !== "boolean") fail("physicalIdRecoveredFromError", o["physicalIdRecoveredFromError"], "a boolean when present");
4807
4812
  if (o["physicalIdRecoveredFromError"] !== void 0 && o["changeType"] !== "CREATE") refuseMalformed(shownStack, `${where}.physicalIdRecoveredFromError is only valid on a CREATE (got changeType ${kind(o["changeType"])}).`);
4808
4813
  if (o["deletionPolicy"] !== void 0 && ![
@@ -4811,6 +4816,16 @@ function refuseMalformedOperation(shownStack, where, op) {
4811
4816
  "Snapshot",
4812
4817
  "RetainExceptOnCreate"
4813
4818
  ].includes(o["deletionPolicy"])) fail("deletionPolicy", o["deletionPolicy"], "one of Delete, Retain, Snapshot, RetainExceptOnCreate when present");
4819
+ const replacedId = o["replacedPhysicalId"];
4820
+ const replacedType = o["replacedResourceType"];
4821
+ if (o["replacedResourceDeleted"] !== void 0 && replacedId === void 0) refuseMalformed(shownStack, `${where}.replacedResourceDeleted is only valid beside replacedPhysicalId.`);
4822
+ if (replacedId !== void 0 || replacedType !== void 0) {
4823
+ if (typeof replacedId !== "string" || replacedId === "") fail("replacedPhysicalId", replacedId, "a non-empty string beside replacedResourceType");
4824
+ if (typeof replacedType !== "string" || replacedType === "") fail("replacedResourceType", replacedType, "a non-empty string beside replacedPhysicalId");
4825
+ if (typeof o["physicalIdRecoveredFromError"] !== "boolean") refuseMalformed(shownStack, `${where}.replacedPhysicalId is only valid on a CREATE carrying physicalIdRecoveredFromError.`);
4826
+ if (o["replacedResourceDeleted"] !== void 0 && o["replacedResourceDeleted"] !== true) fail("replacedResourceDeleted", o["replacedResourceDeleted"], "true when present");
4827
+ if (replacedId === o["physicalId"]) refuseMalformed(shownStack, `${where}.replacedPhysicalId must differ from the op's own physicalId.`);
4828
+ }
4814
4829
  if (o["previousResourceType"] !== void 0 && typeof o["previousResourceType"] !== "string") fail("previousResourceType", o["previousResourceType"], "a string when present");
4815
4830
  }
4816
4831
  function kind(v) {
@@ -22016,7 +22031,7 @@ var CloudControlProvider = class {
22016
22031
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
22017
22032
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
22018
22033
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
22019
- const { ASGProvider } = await import("./asg-provider-BwWy0pBH.js");
22034
+ const { ASGProvider } = await import("./asg-provider-CksS_6jO.js");
22020
22035
  const delegateRegion = ambientRegion();
22021
22036
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
22022
22037
  if (asgProvider === void 0) {
@@ -22122,7 +22137,7 @@ var CloudControlProvider = class {
22122
22137
  const family = SDK_DELETE_FAMILIES.get(resourceType);
22123
22138
  const cached = this.sdkDeleteDelegates.get(family);
22124
22139
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
22125
- const provider = family === "rds" ? new (await (import("./rds-provider-McCDKyXN.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-Cdp4jX8S.js"))).NeptuneProvider({ region: ccRegion });
22140
+ const provider = family === "rds" ? new (await (import("./rds-provider-Dl--9uQU.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-B1GRQ6UO.js"))).NeptuneProvider({ region: ccRegion });
22126
22141
  this.sdkDeleteDelegates.set(family, {
22127
22142
  region: ccRegion,
22128
22143
  provider
@@ -28348,7 +28363,7 @@ function isTypeChangeOp(op) {
28348
28363
  return stamped !== void 0 && stamped !== op.resourceType || recorded !== void 0 && recorded !== op.resourceType;
28349
28364
  }
28350
28365
  function isReplacementOp(op) {
28351
- return op.changeType === "UPDATE" && op.previousState?.physicalId !== void 0 && (op.previousState.physicalId !== op.physicalId || isTypeChangeOp(op) || equalIdNamesDifferentResources({
28366
+ return op.changeType === "UPDATE" && op.previousState?.physicalId !== void 0 && (op.previousState.physicalId !== op.physicalId && op.wasReplaced !== false || isTypeChangeOp(op) || equalIdNamesDifferentResources({
28352
28367
  resourceType: op.resourceType,
28353
28368
  physicalId: op.physicalId,
28354
28369
  oldProperties: op.previousState.properties,
@@ -28409,14 +28424,17 @@ function classifyRollbackOp(op, stateResources, orphanLogicalIds) {
28409
28424
  if (op.previousState && deepEqual$1(current.properties, op.previousState.properties)) return "skip-already-done";
28410
28425
  return "revert";
28411
28426
  }
28412
- function classifyFailedOp(op, stateResources) {
28427
+ function classifyFailedOp(op, stateResources, siblings = []) {
28413
28428
  if (op.changeType === "DELETE") return "skip-failed-noop";
28414
28429
  const current = stateResources[op.logicalId];
28415
28430
  if (op.changeType === "CREATE") {
28416
28431
  if (!op.physicalId) return "skip-failed-unknown";
28417
28432
  if (op.physicalIdRecoveredFromError === false) return "skip-failed-superseded";
28418
28433
  if (op.physicalIdRecoveredFromError === true) {
28419
- if (current) return current.physicalId === op.physicalId ? "skip-failed-noop" : "skip-failed-mismatch";
28434
+ if (current) {
28435
+ if (current.physicalId === op.physicalId) return "skip-failed-noop";
28436
+ if (!isReplacedRecord(op, current)) return "skip-failed-mismatch";
28437
+ }
28420
28438
  if (stateHoldsPhysicalId(stateResources, op.resourceType, op.physicalId)) return "skip-failed-noop";
28421
28439
  const orphanPolicy = effectiveDeletionPolicy(op.resourceType, op.deletionPolicy, op.attemptedProperties);
28422
28440
  if (orphanPolicy === "Retain") return "orphan-failed-create-retain";
@@ -28431,9 +28449,25 @@ function classifyFailedOp(op, stateResources) {
28431
28449
  return "delete-failed-create";
28432
28450
  }
28433
28451
  if (!current || !op.previousState) return "skip-failed-absent";
28452
+ if (op.replacementOrphaned !== void 0 || replacementNeverSwapped(op, siblings)) return current.physicalId === op.physicalId && (op.replacementOrphaned === "delete-first" || replacedResourceDeleted(op, siblings)) ? "skip-failed-replaced-deleted" : "skip-failed-noop";
28434
28453
  if (isTypeChangeOp(op)) return "skip-failed-type-change";
28435
28454
  return "revert-failed-update";
28436
28455
  }
28456
+ function isReplacementOrphan(op) {
28457
+ return op.changeType === "CREATE" && op.replacedPhysicalId !== void 0;
28458
+ }
28459
+ function isReplacedRecord(op, record) {
28460
+ return isReplacementOrphan(op) && record !== void 0 && record.physicalId === op.replacedPhysicalId && record.resourceType === op.replacedResourceType;
28461
+ }
28462
+ function failedOpOwnRecord(op, stateResources) {
28463
+ return isReplacementOrphan(op) ? void 0 : stateResources[op.logicalId];
28464
+ }
28465
+ function replacementNeverSwapped(op, siblings) {
28466
+ return siblings.some((s) => s !== op && isReplacementOrphan(s) && s.logicalId === op.logicalId && s.replacedPhysicalId === op.physicalId);
28467
+ }
28468
+ function replacedResourceDeleted(op, siblings) {
28469
+ return siblings.some((s) => s !== op && isReplacementOrphan(s) && s.logicalId === op.logicalId && s.replacedPhysicalId === op.physicalId && s.replacedResourceDeleted === true);
28470
+ }
28437
28471
  function stateHoldsPhysicalId(stateResources, resourceType, physicalId) {
28438
28472
  return Object.values(stateResources).some((r) => r?.resourceType === resourceType && r.physicalId === physicalId);
28439
28473
  }
@@ -28462,8 +28496,8 @@ function isJournaledOrphan(op) {
28462
28496
  function planFailedOps(failedOps, stateResources) {
28463
28497
  return failedOps.map((op) => ({
28464
28498
  op,
28465
- action: classifyFailedOp(op, stateResources),
28466
- effectiveProvisionedBy: effectiveProvisionedBy(stateResources[op.logicalId], op.provisionedBy)
28499
+ action: classifyFailedOp(op, stateResources, failedOps),
28500
+ effectiveProvisionedBy: effectiveProvisionedBy(failedOpOwnRecord(op, stateResources), op.provisionedBy)
28467
28501
  }));
28468
28502
  }
28469
28503
  function planRollback(operations, stateResources, orphanLogicalIds = /* @__PURE__ */ new Set()) {
@@ -28937,6 +28971,17 @@ async function replayReverseReplacement(s) {
28937
28971
  });
28938
28972
  const newCopyClaimed = inlinePolicyWriters.claimedFor(op.resourceType, op.logicalId, stateResources);
28939
28973
  let deletedNewFirst = false;
28974
+ const recreateCleanup = {
28975
+ op,
28976
+ oldType,
28977
+ provider: createProvider,
28978
+ properties: prev.properties,
28979
+ deletionPolicy: effectiveDeletionPolicy(oldType, prev.deletionPolicy, prev.properties),
28980
+ stateResources,
28981
+ region: ctx.region,
28982
+ logger,
28983
+ mask
28984
+ };
28940
28985
  let createResult;
28941
28986
  try {
28942
28987
  createResult = await createWithRollbackRetry(createProvider, () => inOriginalPrefix(() => withCurrentResourceSecrets(secrets, () => createProvider.create(op.logicalId, oldType, replayCreateProps(), replayingStateCreateContext(secrets)))), op.logicalId, logger, isInterrupted, mask, {
@@ -28944,8 +28989,9 @@ async function replayReverseReplacement(s) {
28944
28989
  interruptedMessage: "Rollback interrupted while waiting out the name cooldown"
28945
28990
  });
28946
28991
  } catch (createError) {
28992
+ const deletedMade = await deleteMarkedRecreate(createError, recreateCleanup);
28947
28993
  const msg = createError instanceof Error ? createError.message : String(createError);
28948
- if (!isNameCollisionErrorFrom(createError, op.logicalId)) throw createError;
28994
+ if (!isNameCollisionErrorFrom(createError, op.logicalId) || deletedMade) throw createError;
28949
28995
  const holder = inOriginalPrefix(() => reverseReplacementNewHoldsName({
28950
28996
  oldResourceType: oldType,
28951
28997
  newResourceType: op.resourceType,
@@ -28990,6 +29036,7 @@ async function replayReverseReplacement(s) {
28990
29036
  interruptedMessage: "Rollback interrupted while waiting for the old name to release"
28991
29037
  });
28992
29038
  } catch (recreateError) {
29039
+ await deleteMarkedRecreate(recreateError, recreateCleanup);
28993
29040
  throw new Error(mask(`Failed to re-create the old ${safe(op.logicalId)} after the new resource (${mask(current.physicalId)}) was already deleted: ${displaySafe(recreateError instanceof Error ? recreateError.message : String(recreateError))}. The resource is now absent — fix forward by re-deploying the stack.`), { cause: maskSecretsInError(recreateError instanceof Error ? recreateError : void 0, secrets) });
28994
29041
  }
28995
29042
  }
@@ -29070,6 +29117,31 @@ async function replayReverseReplacement(s) {
29070
29117
  ...adoptedLiveNewResource && { reason: mask("The re-create returned the live new resource instead of re-creating the old one (its Create API is name-idempotent), so the replacement was NOT fully reversed: the old resource's original properties may not have been re-applied. Inspect it with `cdkd drift` and run `cdkd deploy` to reconcile.") }
29071
29118
  });
29072
29119
  }
29120
+ async function deleteMarkedRecreate(error, s) {
29121
+ const madeId = createdBeforeFailure(error, s.op.logicalId, s.oldType);
29122
+ if (madeId === void 0) return false;
29123
+ const shown = `${shownLogicalId(s.op.logicalId)} (${refusalResourceType(s.oldType)})`;
29124
+ const id = s.mask(madeId);
29125
+ if (Object.values(s.stateResources).some((r) => r?.resourceType === s.oldType && r.physicalId === madeId)) return false;
29126
+ if (s.deletionPolicy === "Retain" || s.deletionPolicy === "Snapshot") {
29127
+ s.logger.warn(safeMsg` Rollback: the failed re-create of ${shown} made ${id} before failing; ` + safeMsg`it is left in AWS (DeletionPolicy: ${s.deletionPolicy}) and no record holds it — delete it yourself if it is not needed`);
29128
+ return false;
29129
+ }
29130
+ s.logger.info(safeMsg` Rollback: deleting ${id}, which the failed re-create of ${shown} made before failing`);
29131
+ let failure;
29132
+ try {
29133
+ const outcome = await s.provider.delete(s.op.logicalId, madeId, s.oldType, s.properties, {
29134
+ expectedRegion: s.region,
29135
+ deletionPolicy: "Delete"
29136
+ });
29137
+ failure = deleteSkipReason(outcome);
29138
+ } catch (deleteError) {
29139
+ failure = deleteError instanceof Error ? deleteError.message : String(deleteError);
29140
+ }
29141
+ if (failure === void 0) return true;
29142
+ s.logger.warn(safeMsg` Rollback: could not delete ${id}, which the failed re-create of ${shown} made before ` + safeMsg`failing (${s.mask(failure)}); no record holds it — delete it yourself`);
29143
+ return false;
29144
+ }
29073
29145
 
29074
29146
  //#endregion
29075
29147
  //#region src/deployment/stack-records-scope.ts
@@ -29269,7 +29341,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29269
29341
  break;
29270
29342
  }
29271
29343
  const op = failedOps[i];
29272
- const action = classifyFailedOp(op, stateResources);
29344
+ const action = classifyFailedOp(op, stateResources, failedOps);
29273
29345
  const secrets = /* @__PURE__ */ new Map();
29274
29346
  const opMasker = createOpMasker(logger, secrets);
29275
29347
  const mask = opMasker.mask;
@@ -29291,6 +29363,10 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29291
29363
  logger.warn(safeMsg` Rollback: Skipping failed CREATE of ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) — it recorded ${mask(String(op.physicalId))}, which is not the resource state tracks under this id; manual attention may be required`);
29292
29364
  recordRollbackSkip(skipScope, op, "The failed CREATE recorded a physical id other than the one state now tracks under this logical id, so the rollback left it as it is; manual attention may be required.");
29293
29365
  break;
29366
+ case "skip-failed-replaced-deleted":
29367
+ logger.warn(safeMsg` Rollback: Skipping failed UPDATE of ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) — its replacement deleted the old resource ${mask(String(op.physicalId))} before the new one's create failed, so there is nothing to revert` + (options.forDestroy === true ? "; the destroy drops its record with the stack" : "; state still records it, and a deploy whose template still replaces it creates it again"));
29368
+ recordRollbackSkip(skipScope, op, "The failed UPDATE was a replacement that deleted the old resource before its create failed, so there is nothing to revert it onto; state still records the deleted resource.");
29369
+ break;
29294
29370
  case "skip-failed-superseded":
29295
29371
  logger.warn(safeMsg` Rollback: Skipping failed CREATE of ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) — it created ${mask(String(op.physicalId))} before failing, and a later deploy or rollback may own a resource under that id now; if it is not in use, delete it manually`);
29296
29372
  recordRollbackSkip(skipScope, op, "The failed CREATE created its resource before failing, but a later deploy or rollback may own a resource under that id now, so the rollback left it as it is; manual attention may be required.");
@@ -29308,7 +29384,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29308
29384
  recordRollbackSkip(skipScope, op, `The failed UPDATE was a Type change (${String(op.previousState?.resourceType)} -> ${String(op.resourceType)}), which is a replacement, and its remote state is unknown, so it cannot be reverted in place.`);
29309
29385
  break;
29310
29386
  case "orphan-failed-create-retain": {
29311
- const failedCreateRecord = stateResources[op.logicalId];
29387
+ const failedCreateRecord = failedOpOwnRecord(op, stateResources);
29312
29388
  const orphanProvisionedBy = effectiveProvisionedBy(failedCreateRecord, op.provisionedBy);
29313
29389
  createRollbackRoute = orphanProvisionedBy;
29314
29390
  if (failedCreateRecord) {
@@ -29320,7 +29396,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29320
29396
  result.orphaned.push(orphaned);
29321
29397
  options.onOrphan?.(orphaned);
29322
29398
  }
29323
- delete stateResources[op.logicalId];
29399
+ if (!isReplacementOrphan(op)) delete stateResources[op.logicalId];
29324
29400
  await noteRetainedResource(op.resourceType, op.logicalId);
29325
29401
  logger.info(` Rollback: leaving partially-created ${safe(op.logicalId)} (${safe(op.resourceType)}) in AWS (DeletionPolicy: Retain)` + (failedCreateRecord ? " — removed from state" : " — it was never in state"));
29326
29402
  await options.afterOp?.(op.logicalId);
@@ -29336,7 +29412,8 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29336
29412
  }
29337
29413
  case "delete-failed-create":
29338
29414
  case "delete-failed-create-with-final-snapshot": {
29339
- const deleteProvisionedBy = effectiveProvisionedBy(stateResources[op.logicalId], op.provisionedBy);
29415
+ const failedCreateRecord = failedOpOwnRecord(op, stateResources);
29416
+ const deleteProvisionedBy = effectiveProvisionedBy(failedCreateRecord, op.provisionedBy);
29340
29417
  createRollbackRoute = deleteProvisionedBy;
29341
29418
  const snapshotPolicy = action === "delete-failed-create-with-final-snapshot";
29342
29419
  const takeFinalSnapshot = snapshotPolicy && ctx.skipFinalSnapshot !== true;
@@ -29354,7 +29431,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29354
29431
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
29355
29432
  ...ctx.skipFinalSnapshot === true && { skipFinalSnapshot: true },
29356
29433
  deletionPolicy: snapshotPolicy ? "Snapshot" : "Delete",
29357
- recordedAttributes: stateResources[op.logicalId]?.attributes
29434
+ recordedAttributes: failedCreateRecord?.attributes
29358
29435
  });
29359
29436
  throwIfDeleteSkipped(failedCreateDelete, op.logicalId, op.physicalId, "while deleting the partially-created resource", {
29360
29437
  ctx,
@@ -29363,7 +29440,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29363
29440
  provisionedBy: deleteRoutedVia,
29364
29441
  mask
29365
29442
  });
29366
- delete stateResources[op.logicalId];
29443
+ if (!isReplacementOrphan(op)) delete stateResources[op.logicalId];
29367
29444
  await options.afterOp?.(op.logicalId);
29368
29445
  ctx.recordEvent?.({
29369
29446
  eventType: "ROLLBACK_RESOURCE_SUCCEEDED",
@@ -29463,7 +29540,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29463
29540
  error: maskedRollbackEventError(revertError, mask)
29464
29541
  });
29465
29542
  }
29466
- inlinePolicyWriters.noteOutcome(op, action === "skip-failed-noop" || action === "skip-failed-mismatch" || action === "skip-failed-superseded" || ownRecord(stateResources, op.logicalId) !== recordBefore);
29543
+ inlinePolicyWriters.noteOutcome(op, action === "skip-failed-noop" || action === "skip-failed-mismatch" || action === "skip-failed-superseded" || action === "skip-failed-replaced-deleted" || ownRecord(stateResources, op.logicalId) !== recordBefore || isReplacementOrphan(op) && !pending.has(op) && (action === "delete-failed-create" || action === "delete-failed-create-with-final-snapshot" || action === "orphan-failed-create-retain"));
29467
29544
  }
29468
29545
  if (result.interrupted) await restoreHeldInlinePolicies(inlinePolicyWriters, stateResources, stackName, ctx, result, { refuseAll: true });
29469
29546
  if (emitEnvelope) ctx.recordEvent?.({
@@ -29976,11 +30053,14 @@ async function loadJournaledOrphans(stateBackend, stackName, region, rollbackOrp
29976
30053
  for (let s = segments.length - 1; s >= 0; s--) {
29977
30054
  const segment = segments[s];
29978
30055
  if (segment.reason === "nested-pending-parent") continue;
29979
- const ops = splitImportedOps(segment.failedOperations ?? [], segment).replay.filter(isJournaledOrphan);
30056
+ const replay = splitImportedOps(segment.failedOperations ?? [], segment).replay;
30057
+ const ops = replay.filter(isJournaledOrphan);
29980
30058
  if (ops.length === 0) continue;
30059
+ const companions = replay.filter((op) => op.changeType === "UPDATE" && replacementNeverSwapped(op, ops));
29981
30060
  out.push({
29982
30061
  segment,
29983
- ops
30062
+ ops,
30063
+ ...companions.length > 0 && { companions }
29984
30064
  });
29985
30065
  count += ops.length;
29986
30066
  }
@@ -30001,14 +30081,16 @@ async function deleteJournaledOrphans(orphans, stateResources, stackName, ctx, o
30001
30081
  handled: []
30002
30082
  };
30003
30083
  const inlinePolicyWriters = new RollbackInlinePolicyWriters();
30004
- for (const { segment, ops } of orphans.segments) {
30084
+ for (const { segment, ops: orphanOps, companions } of orphans.segments) {
30005
30085
  if (options.isInterrupted?.()) {
30006
30086
  total.interrupted = true;
30007
30087
  break;
30008
30088
  }
30089
+ const ops = [...companions ?? [], ...orphanOps];
30009
30090
  const replay = () => withStackName(stackName, () => replayFailedOperations(ops, stateResources, stackName, ctx, {
30010
30091
  emitEnvelope: false,
30011
30092
  inlinePolicyWriters,
30093
+ forDestroy: true,
30012
30094
  ...options.isInterrupted && { isInterrupted: options.isInterrupted }
30013
30095
  }));
30014
30096
  const result = segment.skipPrefix === void 0 ? await replay() : await withSkipPrefix(segment.skipPrefix, replay);
@@ -30074,7 +30156,11 @@ async function settleJournaledOrphansOnSuccess(args) {
30074
30156
  }
30075
30157
  const keptOps = new Set(kept.map(({ op }) => op));
30076
30158
  const skipped = all.filter(({ op }) => !keptOps.has(op) && op.physicalIdRecoveredFromError === false).length;
30077
- const cleared = all.filter(({ op }) => !keptOps.has(op));
30159
+ const clearedOrphans = all.filter(({ op }) => !keptOps.has(op));
30160
+ const cleared = [...clearedOrphans, ...orphans.segments.flatMap(({ segment, companions }) => (companions ?? []).filter((c) => replacementNeverSwapped(c, clearedOrphans.filter((o) => o.segment === segment).map((o) => o.op))).map((op) => ({
30161
+ segment,
30162
+ op
30163
+ })))];
30078
30164
  const stripCleared = cleared.length === 0 ? void 0 : async () => {
30079
30165
  try {
30080
30166
  await stateBackend.dropRollbackJournalFailedOperations(stackName, region, (op, segment) => isHandledOrphan(cleared, segment, op));
@@ -30123,7 +30209,7 @@ async function applySuccessRule(orphans, stateResources, deployLogicalIds, forei
30123
30209
  tracked.add(op);
30124
30210
  continue;
30125
30211
  }
30126
- if (Object.prototype.hasOwnProperty.call(stateResources, op.logicalId) || deployLogicalIds.has(op.logicalId)) {
30212
+ if (Object.prototype.hasOwnProperty.call(stateResources, op.logicalId) && !isReplacedRecord(op, stateResources[op.logicalId]) || deployLogicalIds.has(op.logicalId)) {
30127
30213
  op.physicalIdRecoveredFromError = false;
30128
30214
  continue;
30129
30215
  }
@@ -30293,7 +30379,7 @@ async function performRollback(completedOperations, stateResources, stackName, p
30293
30379
  const orphanIndexes = [];
30294
30380
  const orphanOps = [];
30295
30381
  failedOperations.forEach((op, i) => {
30296
- if (!isJournaledOrphan(op)) return;
30382
+ if (!isJournaledOrphan(op) && !(op.changeType === "UPDATE" && replacementNeverSwapped(op, failedOperations))) return;
30297
30383
  orphanIndexes.push(i);
30298
30384
  orphanOps.push({ ...op });
30299
30385
  });
@@ -31289,6 +31375,7 @@ async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourc
31289
31375
  const replaceSkipReason = deleteSkipReason(deleteResult);
31290
31376
  if (replaceSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, replaceSkipReason, "during the --replace delete-first fallback"));
31291
31377
  this.logger.info(` ${green("✓")} Old resource deleted`);
31378
+ this.oldDeletedBeforeCreate.add(logicalId);
31292
31379
  this.logger.info(` Re-creating ${logicalId}...`);
31293
31380
  try {
31294
31381
  return await withRetry(() => this.withRetry(() => withCurrentResourceSecrets(secrets, () => replaceProvider.create(logicalId, resourceType, replaceProps, createContext)), logicalId, void 0, void 0, replaceProvider), logicalId, {
@@ -31859,8 +31946,20 @@ async function refuseTakenCreateName(input) {
31859
31946
  const holderId = found.physicalId;
31860
31947
  const ownHolder = Object.entries(input.stateResources).find(([otherId, record]) => otherId !== logicalId && record.resourceType === resourceType && probeFoundSameId(resourceType, record.physicalId, holderId));
31861
31948
  if (ownHolder !== void 0) return refuse(`${subject} is created with ${named}, which this stack's ${displaySafe(ownHolder[0])} (${shown(holderId)}) already holds — a construct moved or renamed keeps its explicit name under a new logical id. Since ${adoptsText}, the create would hand back that resource and the removal of ${displaySafe(ownHolder[0])} would then delete it. Nothing was created. Give the new resource another name, or deploy the removal of ${displaySafe(ownHolder[0])} first. Do not delete or import that resource: it is already this stack's.`);
31862
- const ownRemedy = input.stackName.includes("~") ? "if the resource is this stack's own, left by an earlier interrupted deploy, delete it and re-run." : "if the resource is this stack's own, left by an earlier interrupted deploy, delete it or adopt it with `cdkd import` and re-run.";
31863
- return refuse(`${subject} is created with ${named}, and an existing resource (${shown(holderId)}) already holds that name. Since ${adoptsText}, creating it would take that resource over and record it as this stack's, for a later \`cdkd destroy\` to delete. Nothing was created. Choose a name no other resource holds; ` + ownRemedy);
31949
+ const ownCase = "if the resource is this stack's own (left by an earlier interrupted deploy, or kept by an earlier `cdkd destroy` under DeletionPolicy: Retain)";
31950
+ const built = input.stackName.includes("~") || resourceType === "AWS::S3::Bucket" ? void 0 : pasteableCommand("cdkd import", [{
31951
+ value: input.stackName,
31952
+ hole: "stack"
31953
+ }, {
31954
+ flag: "--resource",
31955
+ value: `${logicalId}=${holderId}`,
31956
+ hole: "logicalId=physicalId"
31957
+ }]);
31958
+ const adopt = built !== void 0 && maskName(built.command) === built.command ? built : void 0;
31959
+ const ownRemedy = input.stackName.includes("~") ? `${ownCase}, delete it and re-run.` : adopt !== void 0 ? `${ownCase}, delete it, or adopt it with \`cdkd import\` using the command below and re-run.` : `${ownCase}, delete it or adopt it with \`cdkd import\` and re-run.`;
31960
+ const holeNote = adopt === void 0 || adopt.withheld.length === 0 ? "" : " The command below prints a quoted hole in place of a value cdkd will not name on a command line; replace it whole, quotes included, with your stack name or '<logicalId>=<physicalId>', shell-quoted.";
31961
+ return refuse(`${subject} is created with ${named}, and an existing resource (${shown(holderId)}) already holds that name. Since ${adoptsText}, creating it would take that resource over and record it as this stack's, for a later \`cdkd destroy\` to delete. Nothing was created. Choose a name no other resource holds; ` + ownRemedy + holeNote + (adopt === void 0 ? "" : `
31962
+ CONFIRM IT IS YOURS FIRST: another stack or app may own a resource of that name, and adopting it hands that resource to this stack's \`cdkd destroy\`.\nAdopt with: ${adopt.command}`));
31864
31963
  }
31865
31964
 
31866
31965
  //#endregion
@@ -34981,6 +35080,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
34981
35080
  const recreateSkipReason = deleteSkipReason(recreateDeleteResult);
34982
35081
  if (recreateSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, recreateSkipReason, `during ${recreateFlagName}`));
34983
35082
  this.logger.info(` ${green("✓")} Old resource deleted`);
35083
+ this.oldDeletedBeforeCreate.add(logicalId);
34984
35084
  }
34985
35085
  this.logger.info(` Creating new ${logicalId}...`);
34986
35086
  createResult = await withRetry(() => this.withRetry(() => withCurrentResourceSecrets(updateSecrets, () => replaceProvider.create(logicalId, resourceType, replaceProps, { maskSecrets: createSecretMasker(updateSecrets) })), logicalId, void 0, void 0, replaceProvider), logicalId, {
@@ -34996,7 +35096,10 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
34996
35096
  } else {
34997
35097
  this.logger.info(` Creating new ${logicalId}...`);
34998
35098
  let deletedOldFirst = lostWithParent !== void 0;
34999
- if (lostWithParent !== void 0) this.logger.info(safeMsg` ${logicalId} went with ${lostWithParent}, which was destroyed and re-created under the same id: re-creating it`);
35099
+ if (lostWithParent !== void 0) {
35100
+ this.oldDeletedBeforeCreate.add(logicalId);
35101
+ this.logger.info(safeMsg` ${logicalId} went with ${lostWithParent}, which was destroyed and re-created under the same id: re-creating it`);
35102
+ }
35000
35103
  try {
35001
35104
  createResult = await this.withRetry(() => withCurrentResourceSecrets(updateSecrets, () => replaceProvider.create(logicalId, resourceType, replaceProps, { maskSecrets: createSecretMasker(updateSecrets) })), logicalId, void 0, void 0, replaceProvider);
35002
35105
  } catch (createError) {
@@ -35201,6 +35304,7 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
35201
35304
  });
35202
35305
  const fallbackSkipReason = deleteSkipReason(fallbackDeleteResult);
35203
35306
  if (fallbackSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, fallbackSkipReason, "during the UPDATE-not-supported replacement"));
35307
+ this.oldDeletedBeforeCreate.add(logicalId);
35204
35308
  }
35205
35309
  let retainedSurvivorReason;
35206
35310
  let createResult;
@@ -35280,6 +35384,7 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
35280
35384
  captureProvider = replProvider;
35281
35385
  } else throw updateError;
35282
35386
  }
35387
+ this.updateWasReplaced.set(logicalId, result.wasReplaced === true);
35283
35388
  if (result.wasReplaced) {
35284
35389
  this.noteSecretNamedRecord(logicalId, {
35285
35390
  resourceType,
@@ -35783,6 +35888,11 @@ var DagExecutor = class {
35783
35888
 
35784
35889
  //#endregion
35785
35890
  //#region src/deployment/deploy-engine/execute.ts
35891
+ const NO_REPLACEMENT_ORPHAN_TYPES = /* @__PURE__ */ new Set([
35892
+ "AWS::CloudFormation::Stack",
35893
+ "AWS::SQS::QueuePolicy",
35894
+ "AWS::SNS::TopicPolicy"
35895
+ ]);
35786
35896
  async function executeDeployment(template, currentState, changes, dag, executionLevels, stackName, outputsDigestSource, parameterValues, conditions, currentEtag, progress, migrationPending = false) {
35787
35897
  const concurrency = this.options.concurrency;
35788
35898
  this.deployChanges = changes;
@@ -35917,6 +36027,13 @@ async function executeDeployment(template, currentState, changes, dag, execution
35917
36027
  const statePhysicalId = newResources[logicalId]?.physicalId ?? previousState?.physicalId;
35918
36028
  if (refused && change.changeType === "CREATE" && statePhysicalId === void 0) throw provisionError;
35919
36029
  const createdId = change.changeType === "CREATE" && statePhysicalId === void 0 ? createdBeforeFailure(provisionError, logicalId, change.resourceType) : void 0;
36030
+ const heldRecord = newResources[logicalId] ?? previousState;
36031
+ const replaced = change.changeType === "UPDATE" && !NO_REPLACEMENT_ORPHAN_TYPES.has(change.resourceType) && statePhysicalId !== void 0 && statePhysicalId !== "" && heldRecord?.physicalId === statePhysicalId ? heldRecord : void 0;
36032
+ const replacementCreatedId = replaced ? createdBeforeFailure(provisionError, logicalId, change.resourceType) : void 0;
36033
+ const orphanedBy = replaced !== void 0 && replacementCreatedId !== void 0 && replacementCreatedId !== replaced.physicalId ? {
36034
+ record: replaced,
36035
+ createdId: replacementCreatedId
36036
+ } : void 0;
35920
36037
  failedOperations.push({
35921
36038
  logicalId,
35922
36039
  changeType: change.changeType,
@@ -35928,6 +36045,20 @@ async function executeDeployment(template, currentState, changes, dag, execution
35928
36045
  physicalIdRecoveredFromError: true,
35929
36046
  deletionPolicy: journaledOrphanPolicy(this.extractTemplateAttributes(template, logicalId).deletionPolicy)
35930
36047
  },
36048
+ ...orphanedBy !== void 0 && { replacementOrphaned: this.oldDeletedBeforeCreate.has(logicalId) ? "delete-first" : "create-first" },
36049
+ ...!refused && { attemptedProperties: this.attemptedResolvedProps.get(logicalId) }
36050
+ });
36051
+ if (orphanedBy !== void 0) failedOperations.push({
36052
+ logicalId,
36053
+ changeType: "CREATE",
36054
+ resourceType: change.resourceType,
36055
+ provisionedBy: "sdk",
36056
+ physicalId: orphanedBy.createdId,
36057
+ physicalIdRecoveredFromError: true,
36058
+ deletionPolicy: journaledOrphanPolicy(this.extractTemplateAttributes(template, logicalId).deletionPolicy),
36059
+ replacedPhysicalId: orphanedBy.record.physicalId,
36060
+ replacedResourceType: orphanedBy.record.resourceType,
36061
+ ...this.oldDeletedBeforeCreate.has(logicalId) && { replacedResourceDeleted: true },
35931
36062
  ...!refused && { attemptedProperties: this.attemptedResolvedProps.get(logicalId) }
35932
36063
  });
35933
36064
  throw provisionError;
@@ -35941,6 +36072,7 @@ async function executeDeployment(template, currentState, changes, dag, execution
35941
36072
  physicalId: newResources[logicalId]?.physicalId,
35942
36073
  properties: newResources[logicalId]?.properties,
35943
36074
  ...change.changeType === "UPDATE" && { oldResourceRetained: this.retainedOldOnReplacement.has(logicalId) },
36075
+ ...change.changeType === "UPDATE" && this.updateWasReplaced.has(logicalId) && { wasReplaced: this.updateWasReplaced.get(logicalId) },
35944
36076
  ...change.changeType === "UPDATE" && previousState !== void 0 && { previousResourceType: previousState.resourceType }
35945
36077
  });
35946
36078
  saveStateAfterResource(logicalId);
@@ -36097,7 +36229,7 @@ async function executeDeployment(template, currentState, changes, dag, execution
36097
36229
  autoRollbackClean = autoRollbackJournaled && rollbackResult.failures === 0 && rollbackResult.skipped === 0;
36098
36230
  if (rollbackResult.failures === 0 && rollbackResult.skipped > 0) {
36099
36231
  this.logger.warn(safeMsg`The automatic rollback could not revert ${rollbackResult.skipped} operation(s) ` + `(see the warnings above; each is recorded as a ROLLBACK_RESOURCE_SKIPPED event).` + (autoRollbackJournaled ? ` The rollback journal keeps them.` : ""));
36100
- if (autoRollbackJournaled && this.options.parentStackInfo === void 0 && failedOperations.some((op) => op.changeType !== "DELETE")) this.logger.warn(safeMsg`The record of the operation that failed is kept too. Revert it with: ${pasteableCommand("cdkd rollback", [{
36232
+ if (autoRollbackJournaled && this.options.parentStackInfo === void 0 && rollbackResult.remainingFailedOps.some((op) => op.changeType !== "DELETE")) this.logger.warn(safeMsg`The record of the operation that failed is kept too. Revert it with: ${pasteableCommand("cdkd rollback", [{
36101
36233
  value: stackName,
36102
36234
  hole: "stack"
36103
36235
  }, { literal: "--revert-failed" }]).command}`);
@@ -37352,6 +37484,8 @@ var DeployEngine = class {
37352
37484
  recreatedUnderSameId = /* @__PURE__ */ new Set();
37353
37485
  restoredLostChildren = /* @__PURE__ */ new Set();
37354
37486
  updatesThatSentNothing = /* @__PURE__ */ new Set();
37487
+ updateWasReplaced = /* @__PURE__ */ new Map();
37488
+ oldDeletedBeforeCreate = /* @__PURE__ */ new Set();
37355
37489
  healBaseline = {};
37356
37490
  deployChanges = /* @__PURE__ */ new Map();
37357
37491
  stackRecordsView = void 0;
@@ -37404,6 +37538,8 @@ var DeployEngine = class {
37404
37538
  this.recreatedUnderSameId = /* @__PURE__ */ new Set();
37405
37539
  this.restoredLostChildren = /* @__PURE__ */ new Set();
37406
37540
  this.updatesThatSentNothing = /* @__PURE__ */ new Set();
37541
+ this.updateWasReplaced = /* @__PURE__ */ new Map();
37542
+ this.oldDeletedBeforeCreate = /* @__PURE__ */ new Set();
37407
37543
  this.healBaseline = {};
37408
37544
  this.deployChanges = /* @__PURE__ */ new Map();
37409
37545
  this.inlinePolicyWriters = /* @__PURE__ */ new Map();
@@ -37606,5 +37742,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
37606
37742
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
37607
37743
 
37608
37744
  //#endregion
37609
- export { resourcesNamingDeclaredParameter as $, dynamicReferenceTokens as $a, withoutSilentDropProperties as $i, reEnableInstanceApiTermination as $n, resolveDockerContextDirectory as $o, malformedExportSourceWarning as $r, absoluteAssemblyPathEscape as $s, displayTextOrWithheld as $t, resolveDynamoDbDeleteBudgetClock as A, DagBuilder as Aa, refuseMalformedResourceEntriesForImport as Ai, definedAttributes as An, orphansAfterRollback as Ao, keepsSecretReferenceToken as Ar, resolveUseCdkBootstrapAssets as As, resolveReplacementOldType as At, getPriorAttempts as B, printingCorpusOf as Ba, refuseMalformedState as Bi, ccProtectionRegistryTypes as Bn, rewriteTemplateAssetReferences as Bo, STATE_REGION_DIVERGED as Br, decodeListingKey as Bs, isFinalSnapshotError as Bt, perType as C, prefetchCreateOnlyPropertyPaths as Ca, refuseMalformedOrphansForOrphan as Ci, DBPROXY_TAGS_WHAT as Cn, exportNamesCarriedFrom as Co, isUnboundTemplateParameter as Cr, loadCdkJson as Cs, getStackRecords as Ct, beginDeleteWait as D, canonicalLambdaFunctionName as Da, refuseMalformedResourceEntries as Di, refuseMalformedDesiredTags as Dn, importableOutputKeys as Do, carriesDynamicReference as Dr, resolveSkipPrefix as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, withRetry as Ea, refuseMalformedResourceAttributesForOrphan as Ei, readTagList as En, hasUnverifiableParameterRefusal as Eo, isImpossibleEmptyStoredAttribute as Er, resolveCaptureObservedState as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, carryLogOnlyValues as Fa, refuseMalformedResourcePropertiesForExport as Fi, wouldReturnToSdkProvider as Fn, stringifyValue as Fo, parseWebACLArn as Fr, CFN_TEMPLATE_URL_LIMIT as Fs, PRE_DELETE_SNAPSHOT_TYPES as Ft, cyan as G, errorCauseChain as Ga, repairMalformedResourcePropertiesForReadOnly as Gi, withIndeterminateGuard as Gn, getBootstrapMarkerKey as Go, displayLogicalId as Gr, AssemblyReader as Gs, redactedDeleteAddressFields as Gt, formatResourceLine as H, recordLogOnlyValue as Ha, repairMalformedOrphansForReadOnly as Hi, UNSPECIFIED_SKIP_REASON as Hn, BOOTSTRAP_MARKER_PREFIX as Ho, UNREADABLE_ORPHANS_CONTAINER_ROW as Hr, PARTITION_TABLE as Hs, unsupportedFinalSnapshotError as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, createUnionSecretMasker as Ia, refuseMalformedResourcePropertiesForOrphan as Ii, isCustomResourceType as In, WorkGraph as Io, withSharedDrainBudget as Ir, MIGRATE_TMP_PREFIX as Is, buildFinalSnapshotIdentifier as It, red as J, markSameGenerationBag as Ja, unreadableOrphanRecords as Ji, disableInstanceApiTermination as Jn, readBootstrapMarkerBody as Jo, hasReadableResources as Jr, defineOwnKey as Js, updatePartialReason as Jt, gray as K, maskSecretsInError as Ka, repairMalformedResourcesForReadOnly as Ki, isWaitAbandonedError as Kn, isCrossRegionRedirect as Ko, hasReadableOrphans as Kr, StageLoadError as Ks, redactedDeleteAddressSkip as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, hasMaskableValues as La, refuseMalformedResourcesForDeploy as Li, getCurrentResourceSecrets as Ln, buildAssetRedirectMap as Lo, parameterInputsFor as Lr, findLargeInlineResources as Ls, ccRoutedFinalSnapshotError as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, liveMatchesUnresolvedTokenFrame as Ma, refuseMalformedResourceEntriesForOrphan as Mi, CC_BROKEN_REASON as Mn, shouldRetainResource as Mo, cfnRefValueFromPhysicalId as Mr, warnDeprecatedNoPrefixCliFlag as Ms, getCurrentProducerRegions as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, inheritNestedStackParameterAssociations as Na, refuseMalformedResourcePropertiesForDestroy as Ni, ProviderRegistry as Nn, AssetPublisher as No, isStalePlaceholderArnAttribute as Nr, ssmResolvedValueType as Ns, inheritProducerRegions as Nt, compensateRemovedDeletionProtection as O, lambdaFunctionNameForMask as Oa, refuseMalformedResourceEntriesForDeploy as Oi, tagMapAsList as On, importableOutputs as Oo, carriesFetchableDynamicReference as Or, resolveStateBucketWithDefault as Os, planFailedOps as Ot, deleteTableWithIndexBusyRetry as P, recordNestedStackParameterExpressions as Pa, refuseMalformedResourcePropertiesForDrift as Pi, ccBrokenReason as Pn, isSensitiveAttributeName as Po, refStateLookupFromResource as Pr, CFN_TEMPLATE_BODY_LIMIT as Ps, ATOMIC_FINAL_SNAPSHOT_TYPES as Pt, reachableDivergentParameters as Q, DYNAMIC_REFERENCE_TOKEN_SCAN as Qa, unwrittenCreateOnlyReplacement as Qi, reDisableInstanceApiTermination as Qn, buildDockerImage as Qo, malformedExportNamesWarning as Qr, ownValue as Qs, WITHHELD_NAME_DISPLAY as Qt, hasCdkAutoDeleteTag as R, literalSplitDelimitersOf as Ra, refuseMalformedResourcesForDestroy as Ri, CloudControlProvider as Rn, createAssetRedirectResolver as Ro, passedParameterClassesOf as Rr, uploadCfnTemplate as Rs, createPreDeleteFinalSnapshot as Rt, isProtectionValueActive as S, requireConfigString as Sa, refuseMalformedOrphansForDestroy as Si, acquireIdempotencyToken as Sn, describeRegionValueKind as So, coerceParameterTypedValue as Sr, getLegacyStateBucketName as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, describeTypeWithThrottleRetry as Ta, refuseMalformedOutputsForDestroy as Ti, planTagDiff as Tn, hasReasonlessBaselineRefusal as To, getAccountInfo as Tr, resolveAutoAssetStorage as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, shareLogOnlyValues as Ua, repairMalformedOutputsForReadOnly as Ui, deleteIndeterminateGuards as Un, assertAssetBucketRegion as Uo, UNREADABLE_RESOURCES_MAP_ROW as Ur, canonicalizeRegion as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, markRefusedBeforeApplying as V, recordLogOnlyParameterValue as Va, repairMalformedOrphanRecordsForReadOnly as Vi, unchangedBehindSecretReference as Vn, AssetModeResolver as Vo, STATE_RESOURCES_MALFORMED as Vr, expectedOwnerParam as Vs, refusesFinalSnapshot as Vt, bold as W, createSecretMasker as Wa, repairMalformedResourceEntriesForReadOnly as Wi, deleteSkipReason as Wn, ensureAssetStorage as Wo, deployRefusesOrphanRowsReason as Wr, derivePartitionAndUrlSuffix as Ws, isRedactedRecordedValue as Wt, computeParameterTaint as X, scrubResourceRecord as Xa, findActionableSilentDrops as Xi, isTerminationProtectionPropagationError as Xn, validateContainerRepoName as Xo, isReadableResourceEntry as Xr, hasPlainPrototype$1 as Xs, DeploymentEventsStore as Xt, yellow as Y, redactSecretsForState as Ya, unreadableResourceEntries as Yi, ec2InstanceProtectionSite as Yn, validateAssetBucketName as Yo, isReadableOrphanRecord as Yr, hasOwnKey as Ys, DeploymentEventsReader as Yt, namesAnyDeclaredParameter as Z, recoverMaskedOutput as Za, findSilentDropProperties as Zi, observeThenDisableInstanceApiTermination as Zn, buildDenyExternalAccessPolicy as Zo, malformedDriftResourcePropertiesWarning as Zr, nullPrototypeRecord as Zs, extractDeploymentEventError as Zt, makeCanonicalizePropertiesFn as _, configStringRefusal as _a, refuseDivergentRecordRegionForDestroy as _i, RollbackInlinePolicyWriters as _n, isLockInfoExpired as _o, s3BucketArn as _r, AssetManifestLoader as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, isStatefulRecreateTargetForReplace as aa, resolveBucketRegion as ac, malformedOrphanRowsKeptWarning as ai, isWholeDynamicReferenceValue as an, recordMaskOnlyValue as ao, regionLessSecretName as ar, formatDockerLoginError as as, makeSiblingClaimReader as at, recordedProtectionNote as b, requireConfigArray as ba, refuseMalformedOrphanRecordsForDestroy as bi, reserveStackCreateToken as bn, splitImportedOps as bo, s3BucketRegionalDomainName as br, synthesisStatusMessage as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, WARM_THROUGHPUT_MEMBERS as ca, malformedOutputsRefusalMessage as ci, collectPublishedOutputNames as cn, recordProvenPublicExpression as co, assertSendableRoleArn as cr, isMalformedEnvKey as cs, displacedOpClause as ct, conditionInputsFrom as d, toCfnInteger as da, malformedResourceEntriesWarning as di, DEFAULT_RESOURCE_TIMEOUT_MS as dn, STATE_SOURCED_CROSS_GENERATION_RULES as do, sendableAssumeRoleCommand as dr, redactedDockerCause as ds, getNestedRevertRun as dt, NO_CC_HANDLERS_REASON as ea, describeFileReadFailure as ec, malformedLocalOutputsWarning as ei, exportAliasCollisionScrubWarning as en, isUncertifiedBaselineMaskPosition as eo, DiffCalculator as er, describeDockerCapturedOutput as es, deleteJournaledOrphans as et, parentSuppliedValues as f, toFiniteNumber as fa, malformedResourcePropertiesWarning as fi, DEFAULT_RESOURCE_WARN_AFTER_MS as fn, STATE_SOURCED_READBACK_RULES as fo, AWS_CREDENTIAL_ENV_KEYS as fr, runDockerForeground as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, configIntegerRefusal as ga, previewableOrphanRecords as gi, formatDestructiveChange as gn, LockManager as go, isSettledInstanceState as gr, stripControlChars as gs, withNestedRevertRun as gt, keptWholeReasonText as h, configBooleanRefusal as ha, malformedStateRefusalMessage as hi, findDestructiveChanges as hn, isSingleDynamicReferenceToken as ho, envCredentialsAreAssumedRole as hr, escapeRegExp$3 as hs, revertedNestedRowIds as ht, childTemplateLoader as i, MULTI_REGION_RECREATE_BLOCKED_TYPES as ia, clearBucketRegionCache as ic, malformedOrphanRecordsWarning as ii, exportNameSecretExposure as in, provenPublicValue as io, producerRegionsFromState as ir, finchSecretArgvRefusal as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, TemplateParser as ja, refuseMalformedResourceEntriesForImportSave as ji, stringifyIfAssigned as jn, orphansCarriedFrom as jo, AWS_NO_VALUE as jr, stateBucketExistenceConfirmed as js, findNestedStackTypeChanges as jt, deleteBudgetKey as k, sameLambdaFunctionAddress as ka, refuseMalformedResourceEntriesForDestroy as ki, tagPlanWarning as kn, isReadableBag as ko, isNamelessDynamicReferenceError as kr, resolveStateBucketWithDefaultAndSource as ks, planRollback as kt, templateIdentity as l, coerceWarmThroughput as la, malformedOutputsWarning as li, isExportAliasCollision as ln, wholeStringLeavesOf as lo, explicitRoleArnOrThrow as lr, partitionSensitiveEnv as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, coerceCfnInteger as ma, malformedScrubResourceEntriesRefusalMessage as mi, constructPathOf as mn, WHOLE_DYNAMIC_REFERENCE_PATTERN as mo, callerEnvCredentials as mr, warnFinchArgvExposure as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, findReplacedReadersOfRecreateTargets as na, renderAssemblyPathEscape as nc, malformedLocalResourcesWarning as ni, secretBearingStateKeyWarning as nn, identityKeyFor as no, IntrinsicFunctionResolver as nr, describeDockerFailure as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, isStatefulRecreateTargetSync as oa, malformedOrphansRefusalMessage as oi, noEchoParameterValueSeed as on, recordMaskOnlyValuesIn as oo, applyRoleArnIfSet as or, getDockerCmd as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, coerceCfnBoolean as pa, malformedResourcesWarning as pi, maskingRetryLogger as pn, TEMPLATE_SOURCED_RULES as po, applyCallerIdentityCredentials as pr, runDockerStreaming as ps, recordDisplacedSkips as pt, green as q, maskSecretsInText as qa, unpreviewableOrphanRecords as qi, markWaitAbandoned as qn, parseBootstrapMarker as qo, hasReadableOutputs as qr, processStackMessages as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, shownType as ra, resolveAssemblyPath as rc, malformedOrphanRecordsRefusalMessage as ri, secretSafeKeyDisplay as rn, carriesSecretMask as ro, classifyReplaySecretRegion as rr, dockerSpawnEnvWithSensitive as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, renderStatefulReason as sa, malformedOrphansWarning as si, collectDeclaredOutputNames as sn, recordNoEchoAttributeValues as so, assertFlagRoleArn as sr, isDockerClientEnvKey as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, hasNoCloudControlHandlers as ta, displayAssemblyPath as tc, malformedLocalResourceEntriesWarning as ti, secretBearing as tn, pathCrossesDottedKey as to, INTRINSIC_KEYS as tr, describeDockerExecFailure as ts, isHandledOrphan as tt, conditionFingerprint as u, isWarmThroughputDecrease as ua, malformedRenderedContainersWarning as ui, bindingSkippedOutputs as un, STATE_SOURCED_BASELINE_RULES as uo, isIamRoleArn as ur, redactDockerArgvValues as us, dropSettledNestedJournals as ut, withResourceDeadline as v, readConfigString as va, refuseMalformedNestedChildOutputs as vi, earliestDefined as vn, S3StateBackend as vo, s3BucketDomainName as vr, getDockerImageBySourceHash as vs, withNestedStackContext as vt, readProtection as w, templateResourceTypes as wa, refuseMalformedOutputs as wi, DBPROXY_TAG_OPTIONS as wn, hasReadableExportSet as wo, parameterTypeMayLoseSecretIdentity as wr, resolveApp as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, requireConfigObject as xa, refuseMalformedOrphans as xi, withCreateTokenLedger as xn, acceptedCreateOnlyDropsOf as xo, s3BucketWebsiteUrl as xr, getDefaultStateBucketName as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, replayWarn as ya, refuseMalformedOrphanRecords as yi, ledgerForStack as yn, rebuildClientForBucketRegion as yo, s3BucketDualStackDomainName as yr, Synthesizer as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, logOnlyValueCount as za, refuseMalformedResourcesForExport as zi, slowCcOperationTimeoutMs as zn, loadPublishableAssetManifest as zo, JSON_LISTING_HOLE_VALUE as zr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as zs, effectiveDeletionPolicy as zt };
37610
- //# sourceMappingURL=deploy-engine-xlct0Hcm.js.map
37745
+ export { resourcesNamingDeclaredParameter as $, recoverMaskedOutput as $a, findSilentDropProperties as $i, observeThenDisableInstanceApiTermination as $n, buildDenyExternalAccessPolicy as $o, malformedDriftResourcePropertiesWarning as $r, nullPrototypeRecord as $s, extractDeploymentEventError as $t, resolveDynamoDbDeleteBudgetClock as A, lambdaFunctionNameForMask as Aa, refuseMalformedResourceEntriesForDeploy as Ai, tagMapAsList as An, importableOutputs as Ao, carriesFetchableDynamicReference as Ar, resolveStateBucketWithDefault as As, planRollback as At, getPriorAttempts as B, literalSplitDelimitersOf as Ba, refuseMalformedResourcesForDestroy as Bi, CloudControlProvider as Bn, createAssetRedirectResolver as Bo, passedParameterClassesOf as Br, uploadCfnTemplate as Bs, createPreDeleteFinalSnapshot as Bt, perType as C, requireConfigObject as Ca, refuseMalformedOrphans as Ci, withCreateTokenLedger as Cn, acceptedCreateOnlyDropsOf as Co, s3BucketWebsiteUrl as Cr, getDefaultStateBucketName as Cs, getStackRecords as Ct, beginDeleteWait as D, describeTypeWithThrottleRetry as Da, refuseMalformedOutputsForDestroy as Di, planTagDiff as Dn, hasReasonlessBaselineRefusal as Do, getAccountInfo as Dr, resolveAutoAssetStorage as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, templateResourceTypes as Ea, refuseMalformedOutputs as Ei, DBPROXY_TAG_OPTIONS as En, hasReadableExportSet as Eo, parameterTypeMayLoseSecretIdentity as Er, resolveApp as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, inheritNestedStackParameterAssociations as Fa, refuseMalformedResourcePropertiesForDestroy as Fi, ProviderRegistry as Fn, AssetPublisher as Fo, isStalePlaceholderArnAttribute as Fr, ssmResolvedValueType as Fs, inheritProducerRegions as Ft, cyan as G, shareLogOnlyValues as Ga, repairMalformedOutputsForReadOnly as Gi, deleteIndeterminateGuards as Gn, assertAssetBucketRegion as Go, UNREADABLE_RESOURCES_MAP_ROW as Gr, canonicalizeRegion as Gs, REDACTED_DELETE_ADDRESS_SKIP_REASON as Gt, formatResourceLine as H, printingCorpusOf as Ha, refuseMalformedState as Hi, ccProtectionRegistryTypes as Hn, rewriteTemplateAssetReferences as Ho, STATE_REGION_DIVERGED as Hr, decodeListingKey as Hs, isFinalSnapshotError as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, recordNestedStackParameterExpressions as Ia, refuseMalformedResourcePropertiesForDrift as Ii, ccBrokenReason as In, isSensitiveAttributeName as Io, refStateLookupFromResource as Ir, CFN_TEMPLATE_BODY_LIMIT as Is, ATOMIC_FINAL_SNAPSHOT_TYPES as It, red as J, maskSecretsInError as Ja, repairMalformedResourcesForReadOnly as Ji, isWaitAbandonedError as Jn, isCrossRegionRedirect as Jo, hasReadableOrphans as Jr, StageLoadError as Js, redactedDeleteAddressSkip as Jt, gray as K, createSecretMasker as Ka, repairMalformedResourceEntriesForReadOnly as Ki, deleteSkipReason as Kn, ensureAssetStorage as Ko, deployRefusesOrphanRowsReason as Kr, derivePartitionAndUrlSuffix as Ks, isRedactedRecordedValue as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, carryLogOnlyValues as La, refuseMalformedResourcePropertiesForExport as Li, wouldReturnToSdkProvider as Ln, stringifyValue as Lo, parseWebACLArn as Lr, CFN_TEMPLATE_URL_LIMIT as Ls, PRE_DELETE_SNAPSHOT_TYPES as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, DagBuilder as Ma, refuseMalformedResourceEntriesForImport as Mi, definedAttributes as Mn, orphansAfterRollback as Mo, keepsSecretReferenceToken as Mr, resolveUseCdkBootstrapAssets as Ms, resolveReplacementOldType as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, TemplateParser as Na, refuseMalformedResourceEntriesForImportSave as Ni, stringifyIfAssigned as Nn, orphansCarriedFrom as No, AWS_NO_VALUE as Nr, stateBucketExistenceConfirmed as Ns, findNestedStackTypeChanges as Nt, compensateRemovedDeletionProtection as O, withRetry as Oa, refuseMalformedResourceAttributesForOrphan as Oi, readTagList as On, hasUnverifiableParameterRefusal as Oo, isImpossibleEmptyStoredAttribute as Or, resolveCaptureObservedState as Os, isReplacementOrphan as Ot, deleteTableWithIndexBusyRetry as P, liveMatchesUnresolvedTokenFrame as Pa, refuseMalformedResourceEntriesForOrphan as Pi, CC_BROKEN_REASON as Pn, shouldRetainResource as Po, cfnRefValueFromPhysicalId as Pr, warnDeprecatedNoPrefixCliFlag as Ps, getCurrentProducerRegions as Pt, reachableDivergentParameters as Q, scrubResourceRecord as Qa, findActionableSilentDrops as Qi, isTerminationProtectionPropagationError as Qn, validateContainerRepoName as Qo, isReadableResourceEntry as Qr, hasPlainPrototype$1 as Qs, DeploymentEventsStore as Qt, hasCdkAutoDeleteTag as R, createUnionSecretMasker as Ra, refuseMalformedResourcePropertiesForOrphan as Ri, isCustomResourceType as Rn, WorkGraph as Ro, withSharedDrainBudget as Rr, MIGRATE_TMP_PREFIX as Rs, buildFinalSnapshotIdentifier as Rt, isProtectionValueActive as S, requireConfigArray as Sa, refuseMalformedOrphanRecordsForDestroy as Si, reserveStackCreateToken as Sn, splitImportedOps as So, s3BucketRegionalDomainName as Sr, synthesisStatusMessage as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, prefetchCreateOnlyPropertyPaths as Ta, refuseMalformedOrphansForOrphan as Ti, DBPROXY_TAGS_WHAT as Tn, exportNamesCarriedFrom as To, isUnboundTemplateParameter as Tr, loadCdkJson as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, recordLogOnlyParameterValue as Ua, repairMalformedOrphanRecordsForReadOnly as Ui, unchangedBehindSecretReference as Un, AssetModeResolver as Uo, STATE_RESOURCES_MALFORMED as Ur, expectedOwnerParam as Us, refusesFinalSnapshot as Ut, markRefusedBeforeApplying as V, logOnlyValueCount as Va, refuseMalformedResourcesForExport as Vi, slowCcOperationTimeoutMs as Vn, loadPublishableAssetManifest as Vo, JSON_LISTING_HOLE_VALUE as Vr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Vs, effectiveDeletionPolicy as Vt, bold as W, recordLogOnlyValue as Wa, repairMalformedOrphansForReadOnly as Wi, UNSPECIFIED_SKIP_REASON as Wn, BOOTSTRAP_MARKER_PREFIX as Wo, UNREADABLE_ORPHANS_CONTAINER_ROW as Wr, PARTITION_TABLE as Ws, unsupportedFinalSnapshotError as Wt, computeParameterTaint as X, markSameGenerationBag as Xa, unreadableOrphanRecords as Xi, disableInstanceApiTermination as Xn, readBootstrapMarkerBody as Xo, hasReadableResources as Xr, defineOwnKey as Xs, updatePartialReason as Xt, yellow as Y, maskSecretsInText as Ya, unpreviewableOrphanRecords as Yi, markWaitAbandoned as Yn, parseBootstrapMarker as Yo, hasReadableOutputs as Yr, processStackMessages as Ys, updatePartialMessage as Yt, namesAnyDeclaredParameter as Z, redactSecretsForState as Za, unreadableResourceEntries as Zi, ec2InstanceProtectionSite as Zn, validateAssetBucketName as Zo, isReadableOrphanRecord as Zr, hasOwnKey as Zs, DeploymentEventsReader as Zt, makeCanonicalizePropertiesFn as _, configBooleanRefusal as _a, malformedStateRefusalMessage as _i, findDestructiveChanges as _n, isSingleDynamicReferenceToken as _o, envCredentialsAreAssumedRole as _r, escapeRegExp$3 as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, shownType as aa, resolveAssemblyPath as ac, malformedOrphanRecordsRefusalMessage as ai, secretSafeKeyDisplay as an, carriesSecretMask as ao, classifyReplaySecretRegion as ar, dockerSpawnEnvWithSensitive as as, makeSiblingClaimReader as at, recordedProtectionNote as b, readConfigString as ba, refuseMalformedNestedChildOutputs as bi, earliestDefined as bn, S3StateBackend as bo, s3BucketDomainName as br, getDockerImageBySourceHash as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, isStatefulRecreateTargetSync as ca, malformedOrphansRefusalMessage as ci, noEchoParameterValueSeed as cn, recordMaskOnlyValuesIn as co, applyRoleArnIfSet as cr, getDockerCmd as cs, displacedOpClause as ct, conditionInputsFrom as d, coerceWarmThroughput as da, malformedOutputsWarning as di, isExportAliasCollision as dn, wholeStringLeavesOf as do, explicitRoleArnOrThrow as dr, partitionSensitiveEnv as ds, getNestedRevertRun as dt, unwrittenCreateOnlyReplacement as ea, ownValue as ec, malformedExportNamesWarning as ei, WITHHELD_NAME_DISPLAY as en, DYNAMIC_REFERENCE_TOKEN_SCAN as eo, reDisableInstanceApiTermination as er, buildDockerImage as es, deleteJournaledOrphans as et, parentSuppliedValues as f, isWarmThroughputDecrease as fa, malformedRenderedContainersWarning as fi, bindingSkippedOutputs as fn, STATE_SOURCED_BASELINE_RULES as fo, isIamRoleArn as fr, redactDockerArgvValues as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, coerceCfnInteger as ga, malformedScrubResourceEntriesRefusalMessage as gi, constructPathOf as gn, WHOLE_DYNAMIC_REFERENCE_PATTERN as go, callerEnvCredentials as gr, warnFinchArgvExposure as gs, withNestedRevertRun as gt, keptWholeReasonText as h, coerceCfnBoolean as ha, malformedResourcesWarning as hi, maskingRetryLogger as hn, TEMPLATE_SOURCED_RULES as ho, applyCallerIdentityCredentials as hr, runDockerStreaming as hs, revertedNestedRowIds as ht, childTemplateLoader as i, findReplacedReadersOfRecreateTargets as ia, renderAssemblyPathEscape as ic, malformedLocalResourcesWarning as ii, secretBearingStateKeyWarning as in, identityKeyFor as io, IntrinsicFunctionResolver as ir, describeDockerFailure as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, sameLambdaFunctionAddress as ja, refuseMalformedResourceEntriesForDestroy as ji, tagPlanWarning as jn, isReadableBag as jo, isNamelessDynamicReferenceError as jr, resolveStateBucketWithDefaultAndSource as js, replacementNeverSwapped as jt, deleteBudgetKey as k, canonicalLambdaFunctionName as ka, refuseMalformedResourceEntries as ki, refuseMalformedDesiredTags as kn, importableOutputKeys as ko, carriesDynamicReference as kr, resolveSkipPrefix as ks, planFailedOps as kt, templateIdentity as l, renderStatefulReason as la, malformedOrphansWarning as li, collectDeclaredOutputNames as ln, recordNoEchoAttributeValues as lo, assertFlagRoleArn as lr, isDockerClientEnvKey as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, toFiniteNumber as ma, malformedResourcePropertiesWarning as mi, DEFAULT_RESOURCE_WARN_AFTER_MS as mn, STATE_SOURCED_READBACK_RULES as mo, AWS_CREDENTIAL_ENV_KEYS as mr, runDockerForeground as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, NO_CC_HANDLERS_REASON as na, describeFileReadFailure as nc, malformedLocalOutputsWarning as ni, exportAliasCollisionScrubWarning as nn, isUncertifiedBaselineMaskPosition as no, DiffCalculator as nr, describeDockerCapturedOutput as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, MULTI_REGION_RECREATE_BLOCKED_TYPES as oa, clearBucketRegionCache as oc, malformedOrphanRecordsWarning as oi, exportNameSecretExposure as on, provenPublicValue as oo, producerRegionsFromState as or, finchSecretArgvRefusal as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, toCfnInteger as pa, malformedResourceEntriesWarning as pi, DEFAULT_RESOURCE_TIMEOUT_MS as pn, STATE_SOURCED_CROSS_GENERATION_RULES as po, sendableAssumeRoleCommand as pr, redactedDockerCause as ps, recordDisplacedSkips as pt, green as q, errorCauseChain as qa, repairMalformedResourcePropertiesForReadOnly as qi, withIndeterminateGuard as qn, getBootstrapMarkerKey as qo, displayLogicalId as qr, AssemblyReader as qs, redactedDeleteAddressFields as qt, computeImplicitDeleteEdges as r, hasNoCloudControlHandlers as ra, displayAssemblyPath as rc, malformedLocalResourceEntriesWarning as ri, secretBearing as rn, pathCrossesDottedKey as ro, INTRINSIC_KEYS as rr, describeDockerExecFailure as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, isStatefulRecreateTargetForReplace as sa, resolveBucketRegion as sc, malformedOrphanRowsKeptWarning as si, isWholeDynamicReferenceValue as sn, recordMaskOnlyValue as so, regionLessSecretName as sr, formatDockerLoginError as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, withoutSilentDropProperties as ta, absoluteAssemblyPathEscape as tc, malformedExportSourceWarning as ti, displayTextOrWithheld as tn, dynamicReferenceTokens as to, reEnableInstanceApiTermination as tr, resolveDockerContextDirectory as ts, isHandledOrphan as tt, conditionFingerprint as u, WARM_THROUGHPUT_MEMBERS as ua, malformedOutputsRefusalMessage as ui, collectPublishedOutputNames as un, recordProvenPublicExpression as uo, assertSendableRoleArn as ur, isMalformedEnvKey as us, dropSettledNestedJournals as ut, withResourceDeadline as v, configIntegerRefusal as va, previewableOrphanRecords as vi, formatDestructiveChange as vn, LockManager as vo, isSettledInstanceState as vr, stripControlChars as vs, withNestedStackContext as vt, readProtection as w, requireConfigString as wa, refuseMalformedOrphansForDestroy as wi, acquireIdempotencyToken as wn, describeRegionValueKind as wo, coerceParameterTypedValue as wr, getLegacyStateBucketName as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, replayWarn as xa, refuseMalformedOrphanRecords as xi, ledgerForStack as xn, rebuildClientForBucketRegion as xo, s3BucketDualStackDomainName as xr, Synthesizer as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, configStringRefusal as ya, refuseDivergentRecordRegionForDestroy as yi, RollbackInlinePolicyWriters as yn, isLockInfoExpired as yo, s3BucketArn as yr, AssetManifestLoader as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, hasMaskableValues as za, refuseMalformedResourcesForDeploy as zi, getCurrentResourceSecrets as zn, buildAssetRedirectMap as zo, parameterInputsFor as zr, findLargeInlineResources as zs, ccRoutedFinalSnapshotError as zt };
37746
+ //# sourceMappingURL=deploy-engine-Dre6eDNJ.js.map