@go-to-k/cdkd 0.294.11 → 0.294.12

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.
@@ -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-B46YMG0h.js";
3
3
  import { $t as StateError, A as isTerminalDeleteFailure, An as isAmbiguousCcHandlerErrorCode, At as clientDefaultsFor, Bn as isMarkedNonRetryable, Bt as IntrinsicResolutionRefusalError, C as refusalTypeShown, Cn as isNameCollisionErrorFrom, D as ProtectionFlipRegistry, Dt as withPasteableAwsProfile, En as isReplayedNameCollisionFrom, Fn as retryClassificationText, Gt as MalformedProducerRecordRefusalError, H as pasteableAwsCommand, Hn as markNonRetryable, In as describeAwsFailure, It as CrossAccountSecretRefusalError, J as isInterruptedWaitError, Jt as ProvisioningError, Lt as DependencyError, M as observeThenDisableProtection, Mn as isIamPropagationError, Mt as AccountIdUnavailableError, N as protectionFlipKey, Nn as isRetryableTransientError, Nt as AssetError, O as compensateProtectionFlip, On as markReplayMayCollide, Ot as ambientClientDefaults, Pn as isTransientServerError, Pt as CdkdError, Q as canonicalizeRoute53QueryName, R as DELETION_PROTECTION_DOC_POINTER, Rn as safeStringify$1, S as quotedRemedyLogicalId, Sn as hasReplayMayCollide, St as injectiveKey, T as resolveExplicitPhysicalId, Tn as isRecreateRetryableError, Tt as producerRecordKey, U as protectedReplacementAdvice, Un as markRedactedCause, Ut as LockError, Vn as isThrottlingError, Wn as wrapMaskedAwsError, Wt as MacroExpansionError, X as ElapsedBudgetRegistry, Xt as ResourceUpdateNotSupportedError, Y as startInterruptWatch, Yt as ResourceTimeoutError, Z as monotonicNowMs, _n as shellQuote, _t as formatLockOperation, at as segmentAfterAnchor, b as isQuotableImportValue, bt as CUSTOM_RESOURCE_RESPONSE_PREFIX, cn as UNSHOWABLE_VALUE, ct as isSecretDerivedValue, d as prepareRemovalForUpdate, dn as isInertUnquoted, dt as withDerivedNameMasks, en as SynthesisError, et as compositeIdSeparatorRefusal, f as removalWarning, fn as pasteableCommand, ft as UNREPRODUCIBLE_LOCK_CLAUSE, g as assertRegionMatch, gn as shellBoundedDisplay, gt as formatLockExpiry, h as RESOURCE_NOT_FOUND, hn as quotedOrDescribed, i as holdsSecretDerivedEntry, it as resourceTypeShown, jn as isAmbiguousOutcomeError, jt as credentialFingerprint, k as deleteWithProtectionCompensation, kn as formatRetryClassificationSignals, kt as ambientCredentialConfig, l as withUnchangedSecretPrincipalLists, ln as commandHole, lt as maskDeep, m as withoutInjectedRemovals, mn as plainOrDescribed, nt as logicalIdShown, on as SHELL_ACTIVE, ot as createMaskedLogSinks, pn as physicalIdShownBesideCommand, pt as buildForceUnlockCommand, rn as normalizeAwsError, sn as SHELL_ACTIVE_WHY, st as createMaskedRetryLogger, ut as maskerOrIdentity, vn as withheldTargetClause, vt as formatLockOwner, wn as isNameCooldownError, x as normalizeAwsTagsToCfn, xn as isUpdateUnsupportedError, xt as DEFAULT_STATE_PREFIX, yt as sanitizeRecoveryValue, zt as DynamicReferenceRegionAmbiguousError } from "./iam-policy-targets-CMSQGQnm.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-DIQcU8CA.js";
5
+ import { t as getCdkdVersion } from "./version-D_N3IrrJ.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";
@@ -21828,7 +21828,7 @@ var CloudControlProvider = class {
21828
21828
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
21829
21829
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
21830
21830
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
21831
- const { ASGProvider } = await import("./asg-provider-CbHiTBaE.js");
21831
+ const { ASGProvider } = await import("./asg-provider-m6f7Veu0.js");
21832
21832
  const delegateRegion = ambientRegion();
21833
21833
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
21834
21834
  if (asgProvider === void 0) {
@@ -21934,7 +21934,7 @@ var CloudControlProvider = class {
21934
21934
  const family = SDK_DELETE_FAMILIES.get(resourceType);
21935
21935
  const cached = this.sdkDeleteDelegates.get(family);
21936
21936
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
21937
- const provider = family === "rds" ? new (await (import("./rds-provider-l9F4Y8YY.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CS-r4Ufj.js"))).NeptuneProvider({ region: ccRegion });
21937
+ const provider = family === "rds" ? new (await (import("./rds-provider-DAe7XFvF.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-B_OxkCXj.js"))).NeptuneProvider({ region: ccRegion });
21938
21938
  this.sdkDeleteDelegates.set(family, {
21939
21939
  region: ccRegion,
21940
21940
  provider
@@ -27397,11 +27397,25 @@ const nonEmptyString = (v) => typeof v === "string" && v.length > 0;
27397
27397
 
27398
27398
  //#endregion
27399
27399
  //#region src/deployment/rollback-executor/messages.ts
27400
- function throwIfDeleteSkipped(result, logicalId, physicalId, duringClause) {
27400
+ function throwIfDeleteSkipped(result, logicalId, physicalId, duringClause, guardScope) {
27401
+ recordRollbackDeleteGuards(result, logicalId, physicalId, guardScope);
27401
27402
  const reason = deleteSkipReason(result);
27402
27403
  if (reason === void 0) return;
27403
27404
  throw new Error(deleteSkippedMessage(logicalId, physicalId, reason, duringClause));
27404
27405
  }
27406
+ function recordRollbackDeleteGuards(result, logicalId, physicalId, scope) {
27407
+ for (const guard of deleteIndeterminateGuards(result)) scope.ctx.recordEvent?.({
27408
+ eventType: "RESOURCE_GUARD_INDETERMINATE",
27409
+ stackName: scope.stackName,
27410
+ operation: "DELETE",
27411
+ logicalId,
27412
+ resourceType: scope.resourceType,
27413
+ ...scope.provisionedBy && { provisionedBy: scope.provisionedBy },
27414
+ ...physicalId && { physicalId: scope.mask(physicalId) },
27415
+ guard: guard.guard,
27416
+ reason: scope.mask(guard.reason)
27417
+ });
27418
+ }
27405
27419
  const SKIP_FINAL_SNAPSHOT_FLAG = "--skip-final-snapshot";
27406
27420
  const REPLAYING_STATE_CREATE_CONTEXT = { replayingState: true };
27407
27421
  function replayingStateCreateContext(secrets) {
@@ -28286,7 +28300,7 @@ async function replayDelete(s) {
28286
28300
  let finalSnapshotIdentifier;
28287
28301
  if (takeFinalSnapshot) finalSnapshotIdentifier = await prepareCreateRollbackFinalSnapshot(op, deleteProvisionedBy, ctx, mask);
28288
28302
  logger.info(` Rollback: Deleting created resource ${safe(op.logicalId)} (${safe(op.resourceType)})` + (takeFinalSnapshot ? " — DeletionPolicy: Snapshot" : "") + (snapshotPolicy && !takeFinalSnapshot ? " — DeletionPolicy: Snapshot NOT taken (--skip-final-snapshot)" : ""));
28289
- const { provider } = ctx.providerRegistry.getProviderFor({
28303
+ const { provider, provisionedBy: deleteRoutedVia } = ctx.providerRegistry.getProviderFor({
28290
28304
  resourceType: op.resourceType,
28291
28305
  provisionedBy: deleteProvisionedBy
28292
28306
  });
@@ -28299,7 +28313,13 @@ async function replayDelete(s) {
28299
28313
  deletionPolicy: snapshotPolicy ? "Snapshot" : "Delete",
28300
28314
  recordedAttributes: stateResources[op.logicalId]?.attributes
28301
28315
  });
28302
- throwIfDeleteSkipped(createRollbackDelete, op.logicalId, op.physicalId, "while rolling back its CREATE");
28316
+ throwIfDeleteSkipped(createRollbackDelete, op.logicalId, op.physicalId, "while rolling back its CREATE", {
28317
+ ctx,
28318
+ stackName,
28319
+ resourceType: op.resourceType,
28320
+ provisionedBy: deleteRoutedVia,
28321
+ mask
28322
+ });
28303
28323
  delete stateResources[op.logicalId];
28304
28324
  logger.info(` Rollback: ${safe(op.logicalId)} deleted successfully`);
28305
28325
  await afterOp?.(op.logicalId);
@@ -28327,7 +28347,7 @@ async function replayReadopt(s) {
28327
28347
  survivorReason = survivorMessages.reason;
28328
28348
  result.warnings++;
28329
28349
  } else {
28330
- const { provider: newDeleteProvider } = ctx.providerRegistry.getProviderFor({
28350
+ const { provider: newDeleteProvider, provisionedBy: newDeleteVia } = ctx.providerRegistry.getProviderFor({
28331
28351
  resourceType: op.resourceType,
28332
28352
  provisionedBy: current.provisionedBy ?? op.provisionedBy
28333
28353
  });
@@ -28340,7 +28360,13 @@ async function replayReadopt(s) {
28340
28360
  deletionPolicy: replacementDeletePolicy(current.updateReplacePolicy),
28341
28361
  recordedAttributes: current.attributes
28342
28362
  });
28343
- throwIfDeleteSkipped(readoptDelete, op.logicalId, current.physicalId, "while reversing its replacement (re-adopting the retained old resource)");
28363
+ throwIfDeleteSkipped(readoptDelete, op.logicalId, current.physicalId, "while reversing its replacement (re-adopting the retained old resource)", {
28364
+ ctx,
28365
+ stackName,
28366
+ resourceType: op.resourceType,
28367
+ provisionedBy: newDeleteVia,
28368
+ mask
28369
+ });
28344
28370
  }
28345
28371
  stateResources[op.logicalId] = prev;
28346
28372
  logger.info(` Rollback: ${safe(op.logicalId)} restored to the retained old resource`);
@@ -28485,10 +28511,17 @@ async function replayReverseReplacement(s) {
28485
28511
  physicalId: prev.physicalId,
28486
28512
  via: createProvisionedBy
28487
28513
  }, logger, mask, true);
28488
- const resolveNewDeleteProvider = () => ctx.providerRegistry.getProviderFor({
28514
+ const resolveNewDeleteRoute = () => ctx.providerRegistry.getProviderFor({
28489
28515
  resourceType: op.resourceType,
28490
28516
  provisionedBy: current.provisionedBy ?? op.provisionedBy
28491
- }).provider;
28517
+ });
28518
+ const newDeleteGuardScope = (provisionedBy) => ({
28519
+ ctx,
28520
+ stackName,
28521
+ resourceType: op.resourceType,
28522
+ provisionedBy,
28523
+ mask
28524
+ });
28492
28525
  const newCopyClaimed = inlinePolicyWriters.claimedFor(op.resourceType, op.logicalId, stateResources);
28493
28526
  let deletedNewFirst = false;
28494
28527
  let createResult;
@@ -28526,13 +28559,14 @@ async function replayReverseReplacement(s) {
28526
28559
  logger.info(` Rollback: re-create collided with the new resource's name — deleting the new resource (${displaySafe(mask(current.physicalId))}) first...` + (typeChanged ? ` (this op changed the resource's Type, ${safe(op.resourceType)} -> ${safe(oldType)}, which share a name space)` : ""));
28527
28560
  {
28528
28561
  const finalSnapshotIdentifier = rollbackFinalSnapshotId(op.resourceType, current, op.provisionedBy);
28529
- const deleteNewFirst = await resolveNewDeleteProvider().delete(op.logicalId, current.physicalId, op.resourceType, current.properties, {
28562
+ const deleteNewFirstRoute = resolveNewDeleteRoute();
28563
+ const deleteNewFirst = await deleteNewFirstRoute.provider.delete(op.logicalId, current.physicalId, op.resourceType, current.properties, {
28530
28564
  expectedRegion: ctx.region,
28531
28565
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
28532
28566
  deletionPolicy: replacementDeletePolicy(current.updateReplacePolicy),
28533
28567
  recordedAttributes: current.attributes
28534
28568
  });
28535
- throwIfDeleteSkipped(deleteNewFirst, op.logicalId, current.physicalId, "while clearing the new resource so the old one could be re-created");
28569
+ throwIfDeleteSkipped(deleteNewFirst, op.logicalId, current.physicalId, "while clearing the new resource so the old one could be re-created", newDeleteGuardScope(deleteNewFirstRoute.provisionedBy));
28536
28570
  }
28537
28571
  deletedNewFirst = true;
28538
28572
  delete stateResources[op.logicalId];
@@ -28591,14 +28625,15 @@ async function replayReverseReplacement(s) {
28591
28625
  await noteRetainedResource(op.resourceType, op.logicalId);
28592
28626
  } else if (!deletedNewFirst && !adoptedLiveNewResource) try {
28593
28627
  const finalSnapshotIdentifier = rollbackFinalSnapshotId(op.resourceType, current, op.provisionedBy);
28594
- const deleteNewAfterRecreate = await resolveNewDeleteProvider().delete(op.logicalId, current.physicalId, op.resourceType, current.properties, {
28628
+ const deleteNewAfterRecreateRoute = resolveNewDeleteRoute();
28629
+ const deleteNewAfterRecreate = await deleteNewAfterRecreateRoute.provider.delete(op.logicalId, current.physicalId, op.resourceType, current.properties, {
28595
28630
  expectedRegion: ctx.region,
28596
28631
  ...newCopyClaimed && { inlinePolicyClaimed: newCopyClaimed },
28597
28632
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
28598
28633
  deletionPolicy: replacementDeletePolicy(current.updateReplacePolicy),
28599
28634
  recordedAttributes: current.attributes
28600
28635
  });
28601
- throwIfDeleteSkipped(deleteNewAfterRecreate, op.logicalId, current.physicalId, "while deleting the new resource after re-creating the old one");
28636
+ throwIfDeleteSkipped(deleteNewAfterRecreate, op.logicalId, current.physicalId, "while deleting the new resource after re-creating the old one", newDeleteGuardScope(deleteNewAfterRecreateRoute.provisionedBy));
28602
28637
  } catch (deleteError) {
28603
28638
  logger.warn(mask(` Rollback: old ${safe(op.logicalId)} re-created, but deleting the new resource (${displaySafe(mask(current.physicalId))}) failed: ${displaySafe(deleteError instanceof Error ? deleteError.message : String(deleteError))}. Delete it manually — it is no longer tracked in state.`));
28604
28639
  survivorReason = `The replacement's new ${op.resourceType} (${current.physicalId}) could not be deleted after the old resource was re-created: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}. It is live, still billing, and no longer tracked by cdkd — delete it yourself.`;
@@ -28891,7 +28926,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
28891
28926
  let finalSnapshotIdentifier;
28892
28927
  if (takeFinalSnapshot) finalSnapshotIdentifier = await prepareCreateRollbackFinalSnapshot(op, deleteProvisionedBy, ctx, mask);
28893
28928
  logger.info(` Rollback: deleting partially-created ${safe(op.logicalId)} (${safe(op.resourceType)}) (--revert-failed)` + (takeFinalSnapshot ? " — DeletionPolicy: Snapshot" : "") + (snapshotPolicy && !takeFinalSnapshot ? " — DeletionPolicy: Snapshot NOT taken (--skip-final-snapshot)" : ""));
28894
- const { provider } = ctx.providerRegistry.getProviderFor({
28929
+ const { provider, provisionedBy: deleteRoutedVia } = ctx.providerRegistry.getProviderFor({
28895
28930
  resourceType: op.resourceType,
28896
28931
  provisionedBy: deleteProvisionedBy
28897
28932
  });
@@ -28904,7 +28939,13 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
28904
28939
  deletionPolicy: snapshotPolicy ? "Snapshot" : "Delete",
28905
28940
  recordedAttributes: stateResources[op.logicalId]?.attributes
28906
28941
  });
28907
- throwIfDeleteSkipped(failedCreateDelete, op.logicalId, op.physicalId, "while deleting the partially-created resource (--revert-failed)");
28942
+ throwIfDeleteSkipped(failedCreateDelete, op.logicalId, op.physicalId, "while deleting the partially-created resource (--revert-failed)", {
28943
+ ctx,
28944
+ stackName,
28945
+ resourceType: op.resourceType,
28946
+ provisionedBy: deleteRoutedVia,
28947
+ mask
28948
+ });
28908
28949
  delete stateResources[op.logicalId];
28909
28950
  await options.afterOp?.(op.logicalId);
28910
28951
  ctx.recordEvent?.({
@@ -29024,22 +29065,22 @@ async function replayFailedOperations(...args) {
29024
29065
 
29025
29066
  //#endregion
29026
29067
  //#region src/provisioning/nested-stack-context.ts
29027
- const storage = new AsyncLocalStorage();
29068
+ const storage$1 = new AsyncLocalStorage();
29028
29069
  function withNestedStackContext(ctx, fn) {
29029
- return storage.run(ctx, fn);
29070
+ return storage$1.run(ctx, fn);
29030
29071
  }
29031
29072
  function getCurrentNestedStackContext() {
29032
- return storage.getStore();
29073
+ return storage$1.getStore();
29033
29074
  }
29034
29075
  async function collectNestedChildUnaddressed(fn) {
29035
- const ctx = storage.getStore();
29076
+ const ctx = storage$1.getStore();
29036
29077
  if (!ctx) return {
29037
29078
  value: await fn(),
29038
29079
  unaddressed: void 0
29039
29080
  };
29040
29081
  const slot = {};
29041
29082
  return {
29042
- value: await storage.run({
29083
+ value: await storage$1.run({
29043
29084
  ...ctx,
29044
29085
  childUnaddressed: slot
29045
29086
  }, fn),
@@ -30292,6 +30333,24 @@ const cyan = (s) => `${codes.cyan}${s}${codes.reset}`;
30292
30333
  const gray = (s) => `${codes.gray}${s}${codes.reset}`;
30293
30334
  const bold = (s) => `${codes.bright}${s}${codes.reset}`;
30294
30335
 
30336
+ //#endregion
30337
+ //#region src/deployment/delete-guard-scope.ts
30338
+ const storage = new AsyncLocalStorage();
30339
+ function collectDeleteGuards(sink, fn) {
30340
+ return storage.run(sink, fn);
30341
+ }
30342
+ function reportDeleteGuards(result, target) {
30343
+ const sink = storage.getStore();
30344
+ if (!sink) return;
30345
+ for (const guard of deleteIndeterminateGuards(result)) sink.push({
30346
+ guard: guard.guard,
30347
+ reason: guard.reason,
30348
+ physicalId: target.physicalId,
30349
+ resourceType: target.resourceType,
30350
+ ...target.provisionedBy && { provisionedBy: target.provisionedBy }
30351
+ });
30352
+ }
30353
+
30295
30354
  //#endregion
30296
30355
  //#region src/deployment/deploy-engine/replacement.ts
30297
30356
  function replacementDeleteContext(updateReplacePolicy) {
@@ -30310,7 +30369,7 @@ async function prepareFinalSnapshotForDelete(logicalId, resourceType, currentRes
30310
30369
  }
30311
30370
  throw unsupportedFinalSnapshotError(logicalId, resourceType, "--skip-final-snapshot");
30312
30371
  }
30313
- async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, secrets, updateReplacePolicy) {
30372
+ async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, secrets, updateReplacePolicy, oldDeleteProvisionedBy) {
30314
30373
  const createContext = { maskSecrets: createSecretMasker(secrets) };
30315
30374
  const finalSnapshotIdentifier = await this.prepareFinalSnapshotForDelete(logicalId, oldResourceType, currentResource, updateReplacePolicy);
30316
30375
  let deleteResult;
@@ -30325,6 +30384,11 @@ async function replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourc
30325
30384
  } catch (deleteError) {
30326
30385
  throw new Error(maskSecretsInText(`Failed to delete old resource ${logicalId} (${currentResource.physicalId}) during the --replace delete-first fallback: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`, secrets));
30327
30386
  }
30387
+ reportDeleteGuards(deleteResult, {
30388
+ physicalId: currentResource.physicalId,
30389
+ resourceType: oldResourceType,
30390
+ provisionedBy: oldDeleteProvisionedBy
30391
+ });
30328
30392
  const replaceSkipReason = deleteSkipReason(deleteResult);
30329
30393
  if (replaceSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, replaceSkipReason, "during the --replace delete-first fallback"));
30330
30394
  this.logger.info(` ${green("✓")} Old resource deleted`);
@@ -30429,10 +30493,10 @@ async function createFirstThenDeleteOld(input) {
30429
30493
  if (input.equalIdIsSameResource && createResult.physicalId === currentResource.physicalId) throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}) under a new name, but the create returned the resource being replaced (${displaySafe(currentResource.physicalId)}) instead of a new one, so cdkd cannot tell which name it holds. Nothing was deleted. Delete that resource by hand if it is yours, then re-run the deploy.`), "NAMED_REPLACEMENT_IDEMPOTENT_CREATE"));
30430
30494
  if (retainOld) return createResult;
30431
30495
  this.logger.info(safeMsg` Deleting old ${logicalId} (${currentResource.physicalId})...`);
30432
- await this.deleteReplacedAfterCreate(logicalId, input.oldResourceType, currentResource, input.deleteProvider, input.deleteProperties, finalSnapshotIdentifier, input.deletePolicy, secrets);
30496
+ await this.deleteReplacedAfterCreate(logicalId, input.oldResourceType, currentResource, input.deleteProvider, input.deleteProperties, finalSnapshotIdentifier, input.deletePolicy, secrets, input.deleteProvisionedBy);
30433
30497
  return createResult;
30434
30498
  }
30435
- async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, deleteProvider, deleteProperties, finalSnapshotIdentifier, updateReplacePolicy, secrets) {
30499
+ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, deleteProvider, deleteProperties, finalSnapshotIdentifier, updateReplacePolicy, secrets, deleteProvisionedBy) {
30436
30500
  let deleteResult = void 0;
30437
30501
  let deleteFailed = false;
30438
30502
  try {
@@ -30448,6 +30512,11 @@ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentReso
30448
30512
  deleteFailed = true;
30449
30513
  this.logger.warn(safeMsg` ⚠ Failed to delete old resource ${logicalId} (${currentResource.physicalId}): ${deleteMsg}`);
30450
30514
  }
30515
+ reportDeleteGuards(deleteResult, {
30516
+ physicalId: currentResource.physicalId,
30517
+ resourceType: oldResourceType,
30518
+ provisionedBy: deleteProvisionedBy
30519
+ });
30451
30520
  const skipReason = deleteSkipReason(deleteResult);
30452
30521
  if (skipReason !== void 0) this.logger.warn(` ⚠ ${deleteSkippedMessage(logicalId, currentResource.physicalId, skipReason, "while cleaning up the replaced resource", { commandFreeLine: true })}. Delete it manually — it is no longer tracked in state.`);
30453
30522
  else if (!deleteFailed) this.logger.info(` ${green("✓")} Old resource deleted`);
@@ -33842,10 +33911,11 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33842
33911
  });
33843
33912
  const replaceProvider = replaceDecision.provider;
33844
33913
  const replaceProps = replaceDecision.provisionedBy === "cc-api" ? this.preparePropertiesForCcApi(resourceType, resolvedProps, logicalId) : resolvedProps;
33845
- const oldDeleteProvider = this.providerRegistry.getProviderFor({
33914
+ const oldDeleteRoute = this.providerRegistry.getProviderFor({
33846
33915
  resourceType: oldResourceType,
33847
33916
  provisionedBy: currentResource.provisionedBy
33848
- }).provider;
33917
+ });
33918
+ const oldDeleteProvider = oldDeleteRoute.provider;
33849
33919
  const equalIdIsSameResource = equalIdNamesSameResource({
33850
33920
  oldType: oldResourceType,
33851
33921
  newType: resourceType,
@@ -33884,6 +33954,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33884
33954
  createProvider: replaceProvider,
33885
33955
  createProps: replaceProps,
33886
33956
  deleteProvider: oldDeleteProvider,
33957
+ deleteProvisionedBy: oldDeleteRoute.provisionedBy,
33887
33958
  deleteProperties: currentResource.properties,
33888
33959
  secrets: updateSecrets,
33889
33960
  change: nameChange,
@@ -33913,6 +33984,11 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33913
33984
  } catch (deleteError) {
33914
33985
  throw new Error(`Failed to destroy old resource ${logicalId} (${currentResource.physicalId}) during ${recreateFlagName}: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`);
33915
33986
  }
33987
+ reportDeleteGuards(recreateDeleteResult, {
33988
+ physicalId: currentResource.physicalId,
33989
+ resourceType: oldResourceType,
33990
+ provisionedBy: oldDeleteRoute.provisionedBy
33991
+ });
33916
33992
  const recreateSkipReason = deleteSkipReason(recreateDeleteResult);
33917
33993
  if (recreateSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, recreateSkipReason, `during ${recreateFlagName}`));
33918
33994
  this.logger.info(` ${green("✓")} Old resource deleted`);
@@ -33968,7 +34044,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33968
34044
  if (this.options.replace !== true) throw new CdkdError(`${logicalId} (${resourceType}) requires replacement, but the create-first attempt collided with the existing resource: ${createMsg}. ${nameOrigin.descriptor}, so the CloudFormation-style safe replacement order (create the new resource before deleting the old) cannot reuse the occupied name — CloudFormation refuses this shape with "cannot update a stack when a custom-named resource requires replacing". ${nameOrigin.remedy}, or re-run with \`cdkd deploy --replace\` to delete the old resource FIRST and recreate it under the same name (the resource is briefly unavailable while it is recreated).`, "NAMED_REPLACEMENT_COLLISION");
33969
34045
  this.logger.info(` Create-first collided with the existing resource's name and --replace is set — deleting old ${logicalId} (${currentResource.physicalId}) first...`);
33970
34046
  deletedOldFirst = true;
33971
- createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy);
34047
+ createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy);
33972
34048
  }
33973
34049
  if (equalIdIsSameResource && !deletedOldFirst && createResult.physicalId === currentResource.physicalId) {
33974
34050
  const idempotentNameOrigin = this.replacementNameOrigin(logicalId, currentResource.physicalId);
@@ -33976,7 +34052,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33976
34052
  if (this.options.replace !== true) throw new CdkdError(`${logicalId} (${resourceType}) requires replacement, but its Create API is name-idempotent: the create-first attempt returned the EXISTING resource (${currentResource.physicalId}) instead of creating a new one, so deleting the "old" resource would silently destroy the resource the deploy just reported as created. ${idempotentNameOrigin.descriptor}; ${idempotentNameOrigin.remedy}, or re-run with \`cdkd deploy --replace\` to delete the old resource FIRST and recreate it under the same name (the resource is briefly unavailable while it is recreated). Note: this branch is also reached when the old resource was deleted out-of-band and the physical id is name-derived — there the create was a genuine fresh create; \`--replace\` converges that case too.`, "NAMED_REPLACEMENT_IDEMPOTENT_CREATE");
33977
34053
  this.logger.info(` Create-first returned the existing resource (name-idempotent Create API) and --replace is set — deleting old ${logicalId} (${currentResource.physicalId}) first...`);
33978
34054
  deletedOldFirst = true;
33979
- createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy);
34055
+ createResult = await this.replaceDeleteFirstAndRecreate(logicalId, resourceType, oldResourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps, updateSecrets, updateReplacePolicy, oldDeleteRoute.provisionedBy);
33980
34056
  }
33981
34057
  if (deletedOldFirst) {} else if (updateReplacePolicy === "Retain") {
33982
34058
  this.retainedOldOnReplacement.add(logicalId);
@@ -33993,7 +34069,7 @@ async function updateByReplacement({ change, counts, currentProps, currentResour
33993
34069
  snapshotBlockedDelete = true;
33994
34070
  this.logger.warn(` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) failed: ${snapshotError instanceof Error ? snapshotError.message : String(snapshotError)}. The old resource was NOT deleted (UpdateReplacePolicy: Snapshot) — delete it manually once you have a snapshot; it is no longer tracked in state.`);
33995
34071
  }
33996
- if (!snapshotBlockedDelete) await this.deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets);
34072
+ if (!snapshotBlockedDelete) await this.deleteReplacedAfterCreate(logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets, oldDeleteRoute.provisionedBy);
33997
34073
  }
33998
34074
  }
33999
34075
  this.registerNoEchoAttributes(logicalId, createResult, updateSecrets, resolvedProps);
@@ -34129,6 +34205,11 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
34129
34205
  if (!isWaitAbandonedError(deleteError) && !isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && (deleteMsg.includes("does not exist") || deleteMsg.includes("not found") || deleteMsg.includes("NotFound"))) this.logger.debug(`Old resource ${logicalId} already gone, proceeding with CREATE`);
34130
34206
  else throw deleteError;
34131
34207
  }
34208
+ reportDeleteGuards(fallbackDeleteResult, {
34209
+ physicalId: currentResource.physicalId,
34210
+ resourceType,
34211
+ provisionedBy: updateDecision.provisionedBy
34212
+ });
34132
34213
  const fallbackSkipReason = deleteSkipReason(fallbackDeleteResult);
34133
34214
  if (fallbackSkipReason !== void 0) throw new Error(deleteSkippedMessage(logicalId, currentResource.physicalId, fallbackSkipReason, "during the UPDATE-not-supported replacement"));
34134
34215
  }
@@ -34143,6 +34224,7 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
34143
34224
  createProvider: replProvider,
34144
34225
  createProps: replProps,
34145
34226
  deleteProvider: updateProvider,
34227
+ deleteProvisionedBy: updateDecision.provisionedBy,
34146
34228
  deleteProperties: currentProps,
34147
34229
  secrets: updateSecrets,
34148
34230
  change: fallbackNameChange,
@@ -34272,10 +34354,11 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
34272
34354
  }
34273
34355
  const governingPolicy = effectiveDeletionPolicy(resourceType, deletionPolicy, currentResource.properties);
34274
34356
  const finalSnapshotIdentifier = await this.prepareFinalSnapshotForDelete(logicalId, resourceType, currentResource, governingPolicy);
34275
- const deleteProvider = this.providerRegistry.getProviderFor({
34357
+ const deleteRoute = this.providerRegistry.getProviderFor({
34276
34358
  resourceType,
34277
34359
  provisionedBy: currentResource.provisionedBy
34278
- }).provider;
34360
+ });
34361
+ const deleteProvider = deleteRoute.provider;
34279
34362
  this.logger.debug(`Deleting ${logicalId} (${resourceType})`);
34280
34363
  let deleteResult = void 0;
34281
34364
  const inlinePolicyClaimed = this.inlinePolicyClaimedFor(resourceType, logicalId, stateResources);
@@ -34293,6 +34376,11 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
34293
34376
  if (!isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && !isWaitAbandonedError(deleteError) && (msg.includes("does not exist") || msg.includes("was not found") || msg.includes("not found") || msg.includes("No policy found") || msg.includes("NoSuchEntity") || msg.includes("NotFoundException") || msg.includes("ResourceNotFoundException"))) this.logger.debug(`Resource ${logicalId} already deleted (${msg}), removing from state`);
34294
34377
  else throw deleteError;
34295
34378
  }
34379
+ reportDeleteGuards(deleteResult, {
34380
+ physicalId: currentResource.physicalId,
34381
+ resourceType,
34382
+ provisionedBy: deleteRoute.provisionedBy
34383
+ });
34296
34384
  const deleteSkipped = deleteSkipReason(deleteResult);
34297
34385
  if (deleteSkipped !== void 0) {
34298
34386
  if (progress) progress.current++;
@@ -34415,12 +34503,27 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
34415
34503
  const physicalIdBeforeUpdate = stateResources[logicalId]?.physicalId;
34416
34504
  const provisionedByBeforeUpdate = stateResources[logicalId]?.provisionedBy;
34417
34505
  let nestedChildUnaddressed;
34506
+ const deleteGuards = [];
34418
34507
  try {
34419
34508
  await withResourceDeadline(async () => {
34420
- const { value: bodyResult, unaddressed } = await collectNestedChildUnaddressed(() => this.provisionResourceBody(logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress));
34421
- deleteSkipped = bodyResult?.deleteSkipped;
34422
- updatePartial = bodyResult?.updatePartial;
34423
- nestedChildUnaddressed = unaddressed;
34509
+ try {
34510
+ const { value: bodyResult, unaddressed } = await collectDeleteGuards(deleteGuards, () => collectNestedChildUnaddressed(() => this.provisionResourceBody(logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress)));
34511
+ deleteSkipped = bodyResult?.deleteSkipped;
34512
+ updatePartial = bodyResult?.updatePartial;
34513
+ nestedChildUnaddressed = unaddressed;
34514
+ } finally {
34515
+ for (const guard of deleteGuards.splice(0)) this.recordEvent({
34516
+ eventType: "RESOURCE_GUARD_INDETERMINATE",
34517
+ stackName,
34518
+ operation: "DELETE",
34519
+ logicalId,
34520
+ resourceType: guard.resourceType,
34521
+ ...guard.provisionedBy && { provisionedBy: guard.provisionedBy },
34522
+ ...guard.physicalId && { physicalId: this.maskForResource(logicalId, guard.physicalId) },
34523
+ guard: guard.guard,
34524
+ reason: guard.reason
34525
+ });
34526
+ }
34424
34527
  }, {
34425
34528
  warnAfterMs,
34426
34529
  timeoutMs,
@@ -36433,4 +36536,4 @@ DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice
36433
36536
 
36434
36537
  //#endregion
36435
36538
  export { resourcesNamingDeclaredParameter as $, STATE_SOURCED_READBACK_RULES as $a, isWarmThroughputDecrease as $i, explicitRoleArnOrThrow as $n, runDockerForeground as $o, malformedOutputsWarning as $r, noEchoParameterValueSeed as $t, resolveDynamoDbDeleteBudgetClock as A, printingCorpusOf as Aa, repairMalformedOrphanRecordsForReadOnly as Ai, ccProtectionRegistryTypes as An, assertAssetBucketRegion as Ao, STATE_REGION_DIVERGED as Ar, derivePartitionAndUrlSuffix as As, ccRoutedFinalSnapshotError as At, getPriorAttempts as B, scrubResourceRecord as Ba, findSilentDropProperties as Bi, isTerminationProtectionPropagationError as Bn, resolveDockerContextDirectory as Bo, isReadableResourceEntry as Br, describeFileReadFailure as Bs, updatePartialMessage as Bt, perType as C, inheritNestedStackParameterAssociations as Ca, refuseMalformedResourcePropertiesForDrift as Ci, ProviderRegistry as Cn, WorkGraph as Co, isStalePlaceholderArnAttribute as Cr, findLargeInlineResources as Cs, resolveReplacementOldType as Ct, beginDeleteWait as D, hasMaskableValues as Da, refuseMalformedResourcesForDestroy as Di, getCurrentResourceSecrets as Dn, rewriteTemplateAssetReferences as Do, parameterInputsFor as Dr, expectedOwnerParam as Ds, ATOMIC_FINAL_SNAPSHOT_TYPES as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, createUnionSecretMasker as Ea, refuseMalformedResourcesForDeploy as Ei, isCustomResourceType as En, loadPublishableAssetManifest as Eo, withSharedDrainBudget as Er, decodeListingKey as Es, inheritProducerRegions as Et, waitForIndexesSettled as F, errorCauseChain as Fa, repairMalformedResourcesForReadOnly as Fi, withIndeterminateGuard as Fn, readBootstrapMarkerBody as Fo, displayLogicalId as Fr, hasOwnKey as Fs, unsupportedFinalSnapshotError as Ft, cyan as G, pathCrossesDottedKey as Ga, findReplacedReadersOfRecreateTargets as Gi, INTRINSIC_KEYS as Gn, finchSecretArgvRefusal as Go, malformedLocalResourceEntriesWarning as Gr, resolveBucketRegion as Gs, WITHHELD_NAME_DISPLAY as Gt, formatResourceLine as H, DYNAMIC_REFERENCE_TOKEN_SCAN as Ha, withoutSilentDropProperties as Hi, reDisableInstanceApiTermination as Hn, describeDockerExecFailure as Ho, malformedExportNamesWarning as Hr, renderAssemblyPathEscape as Hs, DeploymentEventsReader as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, maskSecretsInError as Ia, unpreviewableOrphanRecords as Ii, isWaitAbandonedError as In, validateAssetBucketName as Io, hasReadableOrphans as Ir, hasPlainPrototype$1 as Is, REDACTED_DELETE_ADDRESS_SKIP_REASON as It, red as J, recordMaskOnlyValue as Ja, isStatefulRecreateTargetForReplace as Ji, producerRegionsFromState as Jn, isDockerClientEnvKey as Jo, malformedOrphanRecordsWarning as Jr, secretBearing as Jt, gray as K, identityKeyFor as Ka, shownType as Ki, IntrinsicFunctionResolver as Kn, formatDockerLoginError as Ko, malformedLocalResourcesWarning as Kr, displayTextOrWithheld as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, maskSecretsInText as La, unreadableOrphanRecords as Li, markWaitAbandoned as Ln, validateContainerRepoName as Lo, hasReadableOutputs as Lr, nullPrototypeRecord as Ls, isRedactedRecordedValue as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, recordLogOnlyValue as Ma, repairMalformedOutputsForReadOnly as Mi, UNSPECIFIED_SKIP_REASON as Mn, getBootstrapMarkerKey as Mo, UNREADABLE_ORPHANS_CONTAINER_ROW as Mr, StageLoadError as Ms, effectiveDeletionPolicy as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, shareLogOnlyValues as Na, repairMalformedResourceEntriesForReadOnly as Ni, deleteIndeterminateGuards as Nn, isCrossRegionRedirect as No, UNREADABLE_RESOURCES_MAP_ROW as Nr, processStackMessages as Ns, isFinalSnapshotError as Nt, compensateRemovedDeletionProtection as O, literalSplitDelimitersOf as Oa, refuseMalformedResourcesForExport as Oi, CloudControlProvider as On, AssetModeResolver as Oo, passedParameterClassesOf as Or, PARTITION_TABLE as Os, PRE_DELETE_SNAPSHOT_TYPES as Ot, deleteTableWithIndexBusyRetry as P, createSecretMasker as Pa, repairMalformedResourcePropertiesForReadOnly as Pi, deleteSkipReason as Pn, parseBootstrapMarker as Po, deployRefusesOrphanRowsReason as Pr, defineOwnKey as Ps, refusesFinalSnapshot as Pt, reachableDivergentParameters as Q, STATE_SOURCED_CROSS_GENERATION_RULES as Qa, coerceWarmThroughput as Qi, assertSendableRoleArn as Qn, redactedDockerCause as Qo, malformedOutputsRefusalMessage as Qr, isWholeDynamicReferenceValue as Qt, hasCdkAutoDeleteTag as R, markSameGenerationBag as Ra, unreadableResourceEntries as Ri, disableInstanceApiTermination as Rn, buildDenyExternalAccessPolicy as Ro, hasReadableResources as Rr, ownValue as Rs, redactedDeleteAddressFields as Rt, isProtectionValueActive as S, liveMatchesUnresolvedTokenFrame as Sa, refuseMalformedResourceEntriesForOrphan as Si, CC_BROKEN_REASON as Sn, stringifyValue as So, cfnRefValueFromPhysicalId as Sr, MIGRATE_TMP_PREFIX as Ss, planRollback as St, DynamoDBGlobalTableProvider as T, carryLogOnlyValues as Ta, refuseMalformedResourcePropertiesForOrphan as Ti, wouldReturnToSdkProvider as Tn, createAssetRedirectResolver as To, parseWebACLArn as Tr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ts, getCurrentProducerRegions as Tt, createReadOnlyAttributeHealerFactory as U, dynamicReferenceTokens as Ua, NO_CC_HANDLERS_REASON as Ui, reEnableInstanceApiTermination as Un, describeDockerFailure as Uo, malformedExportSourceWarning as Ur, resolveAssemblyPath as Us, DeploymentEventsStore as Ut, markRefusedBeforeApplying as V, recoverMaskedOutput as Va, unwrittenCreateOnlyReplacement as Vi, observeThenDisableInstanceApiTermination as Vn, describeDockerCapturedOutput as Vo, malformedDriftResourcePropertiesWarning as Vr, displayAssemblyPath as Vs, updatePartialReason as Vt, bold as W, isUncertifiedBaselineMaskPosition as Wa, hasNoCloudControlHandlers as Wi, DiffCalculator as Wn, dockerSpawnEnvWithSensitive as Wo, malformedLocalOutputsWarning as Wr, clearBucketRegionCache as Ws, extractDeploymentEventError as Wt, computeParameterTaint as X, recordNoEchoAttributeValues as Xa, renderStatefulReason as Xi, applyRoleArnIfSet as Xn, partitionSensitiveEnv as Xo, malformedOrphansRefusalMessage as Xr, secretSafeKeyDisplay as Xt, yellow as Y, recordMaskOnlyValuesIn as Ya, isStatefulRecreateTargetSync as Yi, regionLessSecretName as Yn, isMalformedEnvKey as Yo, malformedOrphanRowsKeptWarning as Yr, secretBearingStateKeyWarning as Yt, namesAnyDeclaredParameter as Z, STATE_SOURCED_BASELINE_RULES as Za, WARM_THROUGHPUT_MEMBERS as Zi, assertFlagRoleArn as Zn, redactDockerArgvValues as Zo, malformedOrphansWarning as Zr, exportNameSecretExposure as Zt, makeCanonicalizePropertiesFn as _, canonicalLambdaFunctionName as _a, refuseMalformedResourceEntries as _i, refuseMalformedDesiredTags as _n, orphansAfterRollback as _o, carriesDynamicReference as _r, stateBucketExistenceConfirmed as _s, destroyStackRecordsView as _t, findNestedTemplateTreeDefect as a, configIntegerRefusal as aa, malformedStateRefusalMessage as ai, DEFAULT_RESOURCE_WARN_AFTER_MS as an, S3StateBackend as ao, envCredentialsAreAssumedRole as ar, getDockerImageBySourceHash as as, dropSettledNestedJournals as at, recordedProtectionNote as b, DagBuilder as ba, refuseMalformedResourceEntriesForImport as bi, definedAttributes as bn, AssetPublisher as bo, keepsSecretReferenceToken as br, CFN_TEMPLATE_BODY_LIMIT as bs, recordAfterRollbackUpdate as bt, renderNestedTemplateTreeDefect as c, replayWarn as ca, refuseMalformedNestedChildOutputs as ci, earliestDefined as cn, acceptedCreateOnlyDropsOf as co, s3BucketDomainName as cr, getDefaultStateBucketName as cs, recordDisplacedSkips as ct, conditionInputsFrom as d, requireConfigString as da, refuseMalformedOrphans as di, withCreateTokenLedger as dn, hasReadableExportSet as do, s3BucketWebsiteUrl as dr, resolveAutoAssetStorage as ds, withNestedRevertRun as dt, toCfnInteger as ea, malformedRenderedContainersWarning as ei, collectDeclaredOutputNames as en, TEMPLATE_SOURCED_RULES as eo, isIamRoleArn as er, runDockerStreaming as es, makeSiblingClaimReader as et, parentSuppliedValues as f, prefetchCreateOnlyPropertyPaths as fa, refuseMalformedOrphansForDestroy as fi, acquireIdempotencyToken as fn, hasReasonlessBaselineRefusal as fo, coerceParameterTypedValue as fr, resolveCaptureObservedState as fs, getCurrentNestedStackContext as ft, mergeNoChangeOutputs as g, markAuxiliaryFailure as ga, refuseMalformedResourceAttributesForOrphan as gi, readTagList as gn, isReadableBag as go, isImpossibleEmptyStoredAttribute as gr, resolveUseCdkBootstrapAssets as gs, awaitInFlightSibling as gt, keptWholeReasonText as h, withRetry as ha, refuseMalformedOutputsForDestroy as hi, planTagDiff as hn, importableOutputs as ho, getAccountInfo as hr, resolveStateBucketWithDefaultAndSource as hs, replayRollback as ht, childTemplateLoader as i, configBooleanRefusal as ia, malformedScrubResourceEntriesRefusalMessage as ii, DEFAULT_RESOURCE_TIMEOUT_MS as in, isLockInfoExpired as io, callerEnvCredentials as ir, AssetManifestLoader as is, displacedPhysicalIdShown as it, resolveDynamoDbDeleteBudgetMs as j, recordLogOnlyParameterValue as ja, repairMalformedOrphansForReadOnly as ji, unchangedBehindSecretReference as jn, ensureAssetStorage as jo, STATE_RESOURCES_MALFORMED as jr, AssemblyReader as js, createPreDeleteFinalSnapshot as jt, deleteBudgetKey as k, logOnlyValueCount as ka, refuseMalformedState as ki, slowCcOperationTimeoutMs as kn, BOOTSTRAP_MARKER_PREFIX as ko, JSON_LISTING_HOLE_VALUE as kr, canonicalizeRegion as ks, buildFinalSnapshotIdentifier as kt, templateIdentity as l, requireConfigArray as la, refuseMalformedOrphanRecords as li, ledgerForStack as ln, describeRegionValueKind as lo, s3BucketDualStackDomainName as lr, getLegacyStateBucketName as ls, revertNestedChildFromJournal as lt, isSecretBearingReferenceString as m, describeTypeWithThrottleRetry as ma, refuseMalformedOutputs as mi, DBPROXY_TAG_OPTIONS as mn, importableOutputKeys as mo, parameterTypeMayLoseSecretIdentity as mr, resolveStateBucketWithDefault as ms, replayFailedOperations as mt, IMPLICIT_DELETE_DEPENDENCIES as n, coerceCfnBoolean as na, malformedResourcePropertiesWarning as ni, isExportAliasCollision as nn, isSingleDynamicReferenceToken as no, AWS_CREDENTIAL_ENV_KEYS as nr, escapeRegExp$2 as ns, NESTED_PENDING_PARENT_REASON as nt, isAbsoluteAssetPath as o, configStringRefusal as oa, previewableOrphanRecords as oi, maskingRetryLogger as on, rebuildClientForBucketRegion as oo, isSettledInstanceState as or, Synthesizer as os, getNestedRevertRun as ot, readRecordedConditionVerdicts as p, templateResourceTypes as pa, refuseMalformedOrphansForOrphan as pi, DBPROXY_TAGS_WHAT as pn, hasUnverifiableParameterRefusal as po, isUnboundTemplateParameter as pr, resolveSkipPrefix as ps, withNestedStackContext as pt, green as q, carriesSecretMask as qa, MULTI_REGION_RECREATE_BLOCKED_TYPES as qi, classifyReplaySecretRegion as qn, getDockerCmd as qo, malformedOrphanRecordsRefusalMessage as qr, exportAliasCollisionScrubWarning as qt, computeImplicitDeleteEdges as r, coerceCfnInteger as ra, malformedResourcesWarning as ri, bindingSkippedOutputs as rn, LockManager as ro, applyCallerIdentityCredentials as rr, stripControlChars as rs, displacedOpClause as rt, listNestedTemplateRows as s, readConfigString as sa, refuseDivergentRecordRegionForDestroy as si, RollbackInlinePolicyWriters as sn, splitImportedOps as so, s3BucketArn as sr, synthesisStatusMessage as ss, nestedChildStackName as st, DeployEngine as t, toFiniteNumber as ta, malformedResourceEntriesWarning as ti, collectPublishedOutputNames as tn, WHOLE_DYNAMIC_REFERENCE_PATTERN as to, sendableAssumeRoleCommand as tr, warnFinchArgvExposure as ts, planOrphanAdoption as tt, conditionFingerprint as u, requireConfigObject as ua, refuseMalformedOrphanRecordsForDestroy as ui, reserveStackCreateToken as un, exportNamesCarriedFrom as uo, s3BucketRegionalDomainName as ur, resolveApp as us, revertedNestedRowIds as ut, withResourceDeadline as v, lambdaFunctionNameForMask as va, refuseMalformedResourceEntriesForDeploy as vi, tagMapAsList as vn, orphansCarriedFrom as vo, carriesFetchableDynamicReference as vr, warnDeprecatedNoPrefixCliFlag as vs, getStackRecords as vt, readProtection as w, recordNestedStackParameterExpressions as wa, refuseMalformedResourcePropertiesForExport as wi, ccBrokenReason as wn, buildAssetRedirectMap as wo, refStateLookupFromResource as wr, uploadCfnTemplate as ws, findNestedStackTypeChanges as wt, PROTECTION_PROPERTY_BY_TYPE as x, TemplateParser as xa, refuseMalformedResourceEntriesForImportSave as xi, stringifyIfAssigned as xn, isSensitiveAttributeName as xo, AWS_NO_VALUE as xr, CFN_TEMPLATE_URL_LIMIT as xs, planFailedOps as xt, recordedProtectionEvidence as y, sameLambdaFunctionAddress as ya, refuseMalformedResourceEntriesForDestroy as yi, tagPlanWarning as yn, shouldRetainResource as yo, isNamelessDynamicReferenceError as yr, ssmResolvedValueType as ys, withStackRecords as yt, isTruthyCfnBoolean as z, redactSecretsForState as za, findActionableSilentDrops as zi, ec2InstanceProtectionSite as zn, buildDockerImage as zo, isReadableOrphanRecord as zr, absoluteAssemblyPathEscape as zs, redactedDeleteAddressSkip as zt };
36436
- //# sourceMappingURL=deploy-engine-CMRU0DTu.js.map
36539
+ //# sourceMappingURL=deploy-engine-C35Ctso3.js.map