@go-to-k/cdkd 0.296.4 → 0.296.5

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 (28) hide show
  1. package/dist/{asg-provider-BSdCtfW_.js → asg-provider-DhyYUns2.js} +4 -4
  2. package/dist/{asg-provider-BSdCtfW_.js.map → asg-provider-DhyYUns2.js.map} +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-HCnNEpdp.js → deploy-engine-Cm7z6aQk.js} +245 -96
  5. package/dist/deploy-engine-Cm7z6aQk.js.map +1 -0
  6. package/dist/{iam-policy-targets-DSDSdxXz.js → iam-policy-targets-td1X_kKN.js} +2 -2
  7. package/dist/{iam-policy-targets-DSDSdxXz.js.map → iam-policy-targets-td1X_kKN.js.map} +1 -1
  8. package/dist/{iam-role-provider-Be0s-qBx.js → iam-role-provider-CXGJXY5J.js} +4 -4
  9. package/dist/{iam-role-provider-Be0s-qBx.js.map → iam-role-provider-CXGJXY5J.js.map} +1 -1
  10. package/dist/index.d.ts +9 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -4
  13. package/dist/{logger-Dvc7ddKe.js → logger-DAaB7GFO.js} +2 -2
  14. package/dist/{logger-Dvc7ddKe.js.map → logger-DAaB7GFO.js.map} +1 -1
  15. package/dist/{neptune-provider-ChV-yRZP.js → neptune-provider-DCgJR2NX.js} +4 -4
  16. package/dist/{neptune-provider-ChV-yRZP.js.map → neptune-provider-DCgJR2NX.js.map} +1 -1
  17. package/dist/{program-CwSdIG3b.js → program-DPk5db_j.js} +22 -18
  18. package/dist/program-DPk5db_j.js.map +1 -0
  19. package/dist/{provider-classes-DXBYMcmp.js → provider-classes-oZ8a4BHE.js} +287 -17
  20. package/dist/provider-classes-oZ8a4BHE.js.map +1 -0
  21. package/dist/{rds-provider-DzPUon_U.js → rds-provider-B0JrOskT.js} +4 -4
  22. package/dist/{rds-provider-DzPUon_U.js.map → rds-provider-B0JrOskT.js.map} +1 -1
  23. package/dist/{version-D557_3cB.js → version-CjMP26Dj.js} +2 -2
  24. package/dist/{version-D557_3cB.js.map → version-CjMP26Dj.js.map} +1 -1
  25. package/package.json +1 -1
  26. package/dist/deploy-engine-HCnNEpdp.js.map +0 -1
  27. package/dist/program-CwSdIG3b.js.map +0 -1
  28. package/dist/provider-classes-DXBYMcmp.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js";
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
- 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";
2
+ import { A as displayIdent, C as withoutGeneratedFallbackName, D as UNRENDERABLE, E as STACK_REF_MAX_CODE_POINTS, F as plainIdentOr, I as safeMsg, M as displayStackName, N as isPasteableIdent, R as truncateCodePoints, S as withStackName, T as SECRET_REF_MAX_CODE_POINTS, _ as generateResourceNameWithFallback, b as looksLikeCdkdGeneratedName, c as installLogLineMaskerSource, g as generateResourceName, h as explicitNamePropertyFor, j as displaySafe, k as displayAwsMessage, l as getLiveRenderer, n as getLogger, p as applyDefaultNameForFallback, r as isStdoutReservedForPayload, s as currentLogLineMasker, v as getCurrentSkipPrefix, x as withSkipPrefix, y as getCurrentStackName } from "./logger-DAaB7GFO.js";
3
+ import { $n as markRedactedCause, $t as LockError, A as isTerminalDeleteFailure, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bn as isAmbiguousCcHandlerErrorCode, Bt as clientDefaultsFor, C as refusalTypeShown, Cn as physicalIdShownBesideCommand, Ct as buildForceUnlockCommand, D as ProtectionFlipRegistry, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, Fn as isRecreateRetryableError, Ft as producerRecordKey, Gn as retryClassificationText, H as pasteableAwsCommand, Hn as isIamPropagationError, Ht as AccountIdUnavailableError, In as isReplayedNameCollisionFrom, J as isInterruptedWaitError, Jn as safeStringify$1, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mn as hasReplayMayCollide, Mt as injectiveKey, N as protectionFlipKey, Nn as isNameCollisionErrorFrom, O as compensateProtectionFlip, On as withheldTargetClause, Ot as formatLockOwner, Pn as isNameCooldownError, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, R as DELETION_PROTECTION_DOC_POINTER, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, T as resolveExplicitPhysicalId, Tn as quotedOrDescribed, U as protectedReplacementAdvice, Un as isRetryableTransientError, Ut as AssetError, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Y as startInterruptWatch, Yt as DynamicReferenceRegionAmbiguousError, Z as monotonicNowMs, Zn as isThrottlingError, _n as SHELL_ACTIVE_WHY, _t as hasCreatedBeforeFailure, an as ResourceTimeoutError, at as segmentAfterAnchor, b as isQuotableImportValue, bt as markAuxiliaryFailure, ct as createMaskedRetryLogger, d as prepareRemovalForUpdate, dt as maskerOrIdentity, en as MacroExpansionError, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, f as removalWarning, ft as withDerivedNameMasks, g as assertRegionMatch, gn as SHELL_ACTIVE, gt as createdBeforeFailure, h as RESOURCE_NOT_FOUND, i as holdsSecretDerivedEntry, in as ProvisioningError, it as resourceTypeShown, jn as isUpdateUnsupportedError, jt as DEFAULT_STATE_PREFIX, k as deleteWithProtectionCompensation, kt as sanitizeRecoveryValue, l as withUnchangedSecretPrincipalLists, ln as StateError, lt as isSecretDerivedValue, m as withoutInjectedRemovals, mt as carryCreatedBeforeFailure, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, pn as normalizeAwsError, pt as RETRY_AUXILIARY_OWNER, qt as DependencyError, st as createMaskedLogSinks, tn as MalformedProducerRecordRefusalError, un as SynthesisError, ut as maskDeep, vn as UNSHOWABLE_VALUE, vt as isAuxiliaryFailure, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, yn as commandHole, yt as isAuxiliaryMarkOf, zn as formatRetryClassificationSignals, zt as ambientCredentialConfig } from "./iam-policy-targets-td1X_kKN.js";
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-D557_3cB.js";
5
+ import { t as getCdkdVersion } from "./version-CjMP26Dj.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";
@@ -15777,6 +15777,15 @@ function hasStringPhysicalId(entry) {
15777
15777
  const physicalId = entry.physicalId;
15778
15778
  return typeof physicalId === "string" && physicalId !== "";
15779
15779
  }
15780
+ function hasAddressablePhysicalId(entry) {
15781
+ const physicalId = entry.physicalId;
15782
+ return typeof physicalId === "string" && physicalId.trim() !== "";
15783
+ }
15784
+ function unaddressableUpdateRefusalMessage(rawStackName, rawRegion, logicalId, resourceType) {
15785
+ const stackName = absentIfEmpty(rawStackName);
15786
+ const region = absentIfEmpty(rawRegion);
15787
+ return `${stackClause(stackName, region)} holds a record for ${displayIdent(logicalId)} (${displayIdent(resourceType)}) with no non-empty string 'physicalId', so cdkd cannot address that resource in AWS and did not try to update it. 'cdkd deploy' fails on it rather than skipping it, since a skipped update would end the deploy without the template's change. Nothing was sent for this resource. Repair the record's 'physicalId' and re-run. ${inspectClause(stackName, region)}Inspect the record with: ` + inspectCommand(stackName, region);
15788
+ }
15780
15789
  function unpreviewableOrphanRecords(state) {
15781
15790
  if (!Array.isArray(state.orphans)) return [];
15782
15791
  const rows = state.orphans;
@@ -21291,6 +21300,11 @@ function deleteSkipReason(result) {
21291
21300
  const trimmed = result.reason.trim();
21292
21301
  return trimmed === "" ? UNSPECIFIED_SKIP_REASON : trimmed;
21293
21302
  }
21303
+ function deleteLeftInPlace(result) {
21304
+ if (result === void 0 || result.outcome !== "deleted") return void 0;
21305
+ const left = result.leftInPlace;
21306
+ return typeof left === "string" && left.length > 0 ? left : void 0;
21307
+ }
21294
21308
  const UNSPECIFIED_SKIP_REASON = "no reason reported by the provider";
21295
21309
  function deleteSkippedMessage(logicalId, physicalId, reason, duringClause, opts) {
21296
21310
  return `cdkd did not confirm ${plainOrDescribed(logicalId, "logical id")} (${opts?.commandFreeLine === true ? displayIdent(physicalId, { maxCodePoints: 613 }) : skipPhysicalIdShown(physicalId)}) was deleted ${duringClause}, so it may still exist: ${skipReasonShown(reason)}`;
@@ -22036,7 +22050,7 @@ var CloudControlProvider = class {
22036
22050
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
22037
22051
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
22038
22052
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
22039
- const { ASGProvider } = await import("./asg-provider-BSdCtfW_.js");
22053
+ const { ASGProvider } = await import("./asg-provider-DhyYUns2.js");
22040
22054
  const delegateRegion = ambientRegion();
22041
22055
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
22042
22056
  if (asgProvider === void 0) {
@@ -22142,7 +22156,7 @@ var CloudControlProvider = class {
22142
22156
  const family = SDK_DELETE_FAMILIES.get(resourceType);
22143
22157
  const cached = this.sdkDeleteDelegates.get(family);
22144
22158
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
22145
- const provider = family === "rds" ? new (await (import("./rds-provider-DzPUon_U.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-ChV-yRZP.js"))).NeptuneProvider({ region: ccRegion });
22159
+ const provider = family === "rds" ? new (await (import("./rds-provider-B0JrOskT.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DCgJR2NX.js"))).NeptuneProvider({ region: ccRegion });
22146
22160
  this.sdkDeleteDelegates.set(family, {
22147
22161
  region: ccRegion,
22148
22162
  provider
@@ -23322,6 +23336,9 @@ function describeCfnResponseBody(body, parsed) {
23322
23336
  const line = `Status=${capForLog(status)} PhysicalResourceId=${capForLog(physicalId)} ${dataPart}`;
23323
23337
  return line.length > DESCRIBE_MAX_LINE_CHARS ? `${line.slice(0, DESCRIBE_MAX_LINE_CHARS)}...(${line.length} chars total)` : line;
23324
23338
  }
23339
+ function respondedPhysicalId(response) {
23340
+ return hasAddressablePhysicalId({ physicalId: response.PhysicalResourceId }) ? response.PhysicalResourceId : void 0;
23341
+ }
23325
23342
  var CustomResourceProvider = class CustomResourceProvider {
23326
23343
  lambdaClient;
23327
23344
  snsClient;
@@ -23428,7 +23445,7 @@ var CustomResourceProvider = class CustomResourceProvider {
23428
23445
  ResourceProperties: this.stringifyProperties(properties)
23429
23446
  }), maskerOrIdentity(context?.maskSecrets));
23430
23447
  if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
23431
- const physicalId = cfnResponse.PhysicalResourceId || logicalId;
23448
+ const physicalId = respondedPhysicalId(cfnResponse) ?? logicalId;
23432
23449
  const attributes = cfnResponse.Data || {};
23433
23450
  this.logger.debug(`Successfully created custom resource ${logicalId}: ${physicalId}`);
23434
23451
  return {
@@ -23461,7 +23478,7 @@ var CustomResourceProvider = class CustomResourceProvider {
23461
23478
  OldResourceProperties: this.stringifyProperties(previousProperties)
23462
23479
  }), maskerOrIdentity(context?.maskSecrets));
23463
23480
  if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
23464
- const newPhysicalId = cfnResponse.PhysicalResourceId || physicalId;
23481
+ const newPhysicalId = respondedPhysicalId(cfnResponse) ?? physicalId;
23465
23482
  const wasReplaced = newPhysicalId !== physicalId;
23466
23483
  const attributes = cfnResponse.Data || {};
23467
23484
  this.logger.debug(`Successfully updated custom resource ${logicalId}: ${newPhysicalId}${wasReplaced ? " (replaced)" : ""}`);
@@ -28244,7 +28261,8 @@ var ReplayResolvers = class {
28244
28261
  };
28245
28262
  function regionAmbiguousReplaySecretError(logicalId, propertyPath, secretName, foreignProducerRegions, consumerRegion, execCtx) {
28246
28263
  const where = propertyPath === "" ? "" : ` property ${quotedPlainOr(propertyPath, "property path")}`;
28247
- return new CdkdError(`Rollback of ${shownLogicalId(logicalId)}${where} cannot re-resolve the secret reference ${quotedPlainOr(secretName, "secret name")}: the reference carries no region of its own, and this stack read across a region boundary (producer region(s) on record: ${foreignProducerRegions.map((r) => plainOrDescribed(r, "region")).join(", ")}), so it may have been resolved in one of those rather than in ${quotedOrDescribed(consumerRegion, "region")}. A secret of the same name in two regions is two independent values, so replaying this would write the WRONG secret to a live resource. Refusing instead. Resolve the reference in its own region and set the property directly (or spell it as a full ARN, which names its region and is resolved there), then re-run ${rerunRollbackPhrase(execCtx, "'cdkd rollback'")}.`, "ROLLBACK_SECRET_REGION_AMBIGUOUS");
28264
+ const error = new CdkdError(`Rollback of ${shownLogicalId(logicalId)}${where} cannot re-resolve the secret reference ${quotedPlainOr(secretName, "secret name")}: the reference carries no region of its own, and this stack read across a region boundary (producer region(s) on record: ${foreignProducerRegions.map((r) => plainOrDescribed(r, "region")).join(", ")}), so it may have been resolved in one of those rather than in ${quotedOrDescribed(consumerRegion, "region")}. A secret of the same name in two regions is two independent values, so replaying this would write the WRONG secret to a live resource. Refusing instead. Resolve the reference in its own region and set the property directly (or spell it as a full ARN, which names its region and is resolved there), then re-run ${rerunRollbackPhrase(execCtx, "'cdkd rollback'")}.`, "ROLLBACK_SECRET_REGION_AMBIGUOUS");
28265
+ return markNonRetryable(error);
28248
28266
  }
28249
28267
  function refuseUnprovenReplaySecret(leaf, propertyPath, logicalId, execCtx) {
28250
28268
  if (execCtx.producerRegionsIncomplete !== true) return;
@@ -29329,7 +29347,8 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29329
29347
  skipped: 0,
29330
29348
  interrupted: false,
29331
29349
  remainingFailedOps: [],
29332
- orphaned: []
29350
+ orphaned: [],
29351
+ leftInPlace: 0
29333
29352
  };
29334
29353
  const { logger } = ctx;
29335
29354
  const resolver = new ReplayResolvers(ctx.region);
@@ -29436,7 +29455,12 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29436
29455
  ...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
29437
29456
  ...ctx.skipFinalSnapshot === true && { skipFinalSnapshot: true },
29438
29457
  deletionPolicy: snapshotPolicy ? "Snapshot" : "Delete",
29439
- recordedAttributes: failedCreateRecord?.attributes
29458
+ recordedAttributes: failedCreateRecord?.attributes,
29459
+ ...op.physicalIdRecoveredFromError === true && {
29460
+ failedCreateOrphan: true,
29461
+ resolveAttemptedProperties: () => resolveReplayProps(op.attemptedProperties, resolver, secrets, ctx, op.logicalId),
29462
+ ...ctx.writtenThisRun !== void 0 && { writtenThisRun: ctx.writtenThisRun }
29463
+ }
29440
29464
  });
29441
29465
  throwIfDeleteSkipped(failedCreateDelete, op.logicalId, op.physicalId, "while deleting the partially-created resource", {
29442
29466
  ctx,
@@ -29445,6 +29469,12 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
29445
29469
  provisionedBy: deleteRoutedVia,
29446
29470
  mask
29447
29471
  });
29472
+ const leftInPlace = deleteLeftInPlace(failedCreateDelete);
29473
+ if (leftInPlace !== void 0) {
29474
+ logger.warn(safeMsg` Rollback: deleted partially-created ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) only in part — ${leftInPlace}; manual attention may be required`);
29475
+ result.warnings++;
29476
+ result.leftInPlace++;
29477
+ }
29448
29478
  if (!isReplacementOrphan(op)) delete stateResources[op.logicalId];
29449
29479
  await options.afterOp?.(op.logicalId);
29450
29480
  ctx.recordEvent?.({
@@ -30023,6 +30053,105 @@ function makeSiblingClaimReader(params) {
30023
30053
  };
30024
30054
  }
30025
30055
 
30056
+ //#endregion
30057
+ //#region src/deployment/secret-name-needles.ts
30058
+ function secretNameNeedlesOf(logicalId, record, secrets, options) {
30059
+ const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
30060
+ const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
30061
+ const mask = (text) => bag === void 0 ? text : maskSecretsInText(text, bag);
30062
+ const unresolved = (value) => value.includes("{{resolve:") || value === "***";
30063
+ const named = {
30064
+ resourceType: record?.resourceType,
30065
+ properties: record?.properties,
30066
+ logicalId
30067
+ };
30068
+ const needles = /* @__PURE__ */ new Set();
30069
+ const add = (needle) => {
30070
+ if (typeof needle === "string" && needle !== "") needles.add(needle);
30071
+ };
30072
+ for (const [raw, derived] of secretDerivedNamePairs({
30073
+ ...named,
30074
+ physicalIds: []
30075
+ })) if (typeof raw === "string" && !unresolved(raw) && isSecretDerivedValue(raw, mask)) add(derived);
30076
+ for (const [raw, spelling] of secretDerivedNamePairs({
30077
+ ...named,
30078
+ physicalIds: [physicalId ?? "cdkd-no-physical-id-yet"]
30079
+ })) {
30080
+ if (!isSecretDerivedValue(raw, mask)) continue;
30081
+ if (unresolved(raw)) {
30082
+ if (physicalId === void 0) continue;
30083
+ add(spelling);
30084
+ } else {
30085
+ add(raw);
30086
+ if (raw.toLowerCase() !== raw && raw.length >= 4) add(raw.toLowerCase());
30087
+ }
30088
+ }
30089
+ const properties = record?.properties;
30090
+ const path = properties !== null && typeof properties === "object" && Object.hasOwn(properties, "Path") ? properties["Path"] : void 0;
30091
+ if (physicalId !== void 0 && isSecretDerivedValue(path, mask)) add(physicalId);
30092
+ const embedded = options === void 0 ? secrets : options.embedded;
30093
+ const embeddedBag = embedded !== void 0 && hasMaskableValues(embedded) ? embedded : void 0;
30094
+ if (embeddedBag !== void 0 && physicalId !== void 0) {
30095
+ for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
30096
+ }
30097
+ return needles.size > 0 ? needles : void 0;
30098
+ }
30099
+ function secretNamesReadBy(logicalId, record, resources, judge = () => ({
30100
+ secrets: void 0,
30101
+ embedded: void 0
30102
+ })) {
30103
+ const read = /* @__PURE__ */ new Set();
30104
+ const leaves = [...wholeStringLeavesOf(record?.properties)].filter((leaf) => leaf !== "");
30105
+ if (leaves.length === 0) return read;
30106
+ for (const [otherId, other] of Object.entries(resources)) {
30107
+ if (otherId === logicalId) continue;
30108
+ const bags = judge(otherId);
30109
+ const needles = secretNameNeedlesOf(otherId, other, bags.secrets, { embedded: bags.embedded });
30110
+ if (needles === void 0) continue;
30111
+ for (const needle of needles) if (leaves.some((leaf) => leaf === needle || needle.length >= 4 && leaf.includes(needle))) read.add(needle);
30112
+ }
30113
+ return read;
30114
+ }
30115
+ function stateSecretNameNeedles(resources, secrets) {
30116
+ return (logicalId) => secretNameNeedlesOf(logicalId, Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0, secrets, { embedded: void 0 });
30117
+ }
30118
+ function secretNamePrintingBag(logicalId, resources) {
30119
+ const bag = /* @__PURE__ */ new Map();
30120
+ const record = Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0;
30121
+ for (const needle of secretNameNeedlesOf(logicalId, record, void 0) ?? []) recordLogOnlyValue(bag, needle);
30122
+ for (const needle of secretNamesReadBy(logicalId, record, resources)) recordLogOnlyValue(bag, needle);
30123
+ return bag;
30124
+ }
30125
+ function journaledOrphanPrintingBag(ops, stateResources) {
30126
+ const bag = /* @__PURE__ */ new Map();
30127
+ for (const op of ops) {
30128
+ const record = {
30129
+ resourceType: op.resourceType,
30130
+ physicalId: op.physicalId,
30131
+ properties: op.attemptedProperties
30132
+ };
30133
+ const replaced = Object.hasOwn(stateResources, op.logicalId) ? stateResources[op.logicalId] : void 0;
30134
+ for (const needle of [
30135
+ ...secretNameNeedlesOf(op.logicalId, record, void 0) ?? [],
30136
+ ...secretNameNeedlesOf(op.logicalId, replaced, void 0) ?? [],
30137
+ ...secretNamesReadBy(op.logicalId, record, stateResources)
30138
+ ]) recordLogOnlyValue(bag, needle);
30139
+ }
30140
+ return bag;
30141
+ }
30142
+ function maskEventTextWithBoundBags(event) {
30143
+ if (event.reason === void 0 && event.error === void 0) return event;
30144
+ const mask = currentLogLineMasker();
30145
+ if (mask === void 0) return event;
30146
+ const masked = { ...event };
30147
+ if (masked.error?.message && masked.error.ownLines !== true) masked.error = {
30148
+ ...masked.error,
30149
+ message: mask(masked.error.message)
30150
+ };
30151
+ if (masked.reason) masked.reason = mask(masked.reason);
30152
+ return masked;
30153
+ }
30154
+
30026
30155
  //#endregion
30027
30156
  //#region src/deployment/rollback-executor/journaled-orphans.ts
30028
30157
  const NONE = {
@@ -30083,24 +30212,32 @@ async function deleteJournaledOrphans(orphans, stateResources, stackName, ctx, o
30083
30212
  failures: 0,
30084
30213
  warnings: 0,
30085
30214
  interrupted: false,
30086
- handled: []
30215
+ handled: [],
30216
+ leftInPlace: 0
30087
30217
  };
30088
30218
  const inlinePolicyWriters = new RollbackInlinePolicyWriters();
30219
+ const record = ctx.recordEvent;
30220
+ const printing = journaledOrphanPrintingBag(orphans.segments.flatMap(({ ops, companions }) => [...companions ?? [], ...ops]), stateResources);
30221
+ const maskedCtx = record === void 0 ? ctx : {
30222
+ ...ctx,
30223
+ recordEvent: (event) => record(maskEventTextWithBoundBags(event))
30224
+ };
30089
30225
  for (const { segment, ops: orphanOps, companions } of orphans.segments) {
30090
30226
  if (options.isInterrupted?.()) {
30091
30227
  total.interrupted = true;
30092
30228
  break;
30093
30229
  }
30094
30230
  const ops = [...companions ?? [], ...orphanOps];
30095
- const replay = () => withStackName(stackName, () => replayFailedOperations(ops, stateResources, stackName, ctx, {
30231
+ const replay = () => withPrintingSecrets(printing, () => withStackName(stackName, () => replayFailedOperations(ops, stateResources, stackName, maskedCtx, {
30096
30232
  emitEnvelope: false,
30097
30233
  inlinePolicyWriters,
30098
30234
  forDestroy: true,
30099
30235
  ...options.isInterrupted && { isInterrupted: options.isInterrupted }
30100
- }));
30236
+ })));
30101
30237
  const result = segment.skipPrefix === void 0 ? await replay() : await withSkipPrefix(segment.skipPrefix, replay);
30102
30238
  total.failures += result.failures;
30103
30239
  total.warnings += result.warnings;
30240
+ total.leftInPlace += result.leftInPlace;
30104
30241
  const pending = new Set(result.remainingFailedOps);
30105
30242
  for (const op of ops) if (!pending.has(op)) total.handled.push({
30106
30243
  segment,
@@ -30141,19 +30278,26 @@ async function settleJournaledOrphansOnSuccess(args) {
30141
30278
  op
30142
30279
  })));
30143
30280
  let kept = all;
30281
+ let leftInPlace = 0;
30144
30282
  if (stateResources === void 0) logger.warn(safeMsg`The rollback journal of stack ${stack} records ${all.length} resource(s) a failed deploy ` + `created, but the stack's state cannot be read, so whether a record now owns them is unknown: none is deleted.`);
30145
30283
  else {
30146
30284
  logger.info(safeMsg`The rollback journal of stack ${stack} records ${all.length} resource(s) a failed deploy ` + `created that no state record holds; acting on them per their DeletionPolicy before the journal is removed:`);
30147
30285
  for (const line of journaledOrphanLines(orphans, logger)) logger.info(line);
30148
30286
  try {
30149
30287
  const { unreadable, tracked } = await applySuccessRule(orphans, stateResources, orphans.deployLogicalIds ?? /* @__PURE__ */ new Set(), args.foreignHolder, stack, logger, args.isInterrupted);
30150
- const outcome = await deleteJournaledOrphans({
30288
+ const acting = {
30151
30289
  segments: orphans.segments.map(({ segment, ops }) => ({
30152
30290
  segment,
30153
30291
  ops: ops.filter((op) => !unreadable.has(op) && !tracked.has(op))
30154
30292
  })).filter(({ ops }) => ops.length > 0),
30155
30293
  count: orphans.count - unreadable.size - tracked.size
30156
- }, { ...stateResources }, stackName, ctx, args.isInterrupted ? { isInterrupted: args.isInterrupted } : {});
30294
+ };
30295
+ const writtenThisRun = [...orphans.deployLogicalIds ?? []].filter((id) => Object.prototype.hasOwnProperty.call(stateResources, id)).map((id) => stateResources[id]).filter((r) => r !== void 0 && r !== null && typeof r === "object");
30296
+ const outcome = await deleteJournaledOrphans(acting, { ...stateResources }, stackName, {
30297
+ ...ctx,
30298
+ writtenThisRun
30299
+ }, args.isInterrupted ? { isInterrupted: args.isInterrupted } : {});
30300
+ leftInPlace = outcome.leftInPlace;
30157
30301
  kept = all.filter(({ segment, op }) => unreadable.has(op) || !tracked.has(op) && !isHandledOrphan(outcome.handled, segment, op));
30158
30302
  } catch (err) {
30159
30303
  logger.warn(safeMsg`Acting on the journaled resources of stack ${stack} failed: ${errorDetail(err)}`);
@@ -30174,7 +30318,7 @@ async function settleJournaledOrphansOnSuccess(args) {
30174
30318
  }
30175
30319
  };
30176
30320
  if (kept.length === 0) return {
30177
- unaddressed: skipped,
30321
+ unaddressed: skipped + leftInPlace,
30178
30322
  keepJournal: false,
30179
30323
  ...stripCleared && { stripCleared }
30180
30324
  };
@@ -30195,7 +30339,7 @@ async function settleJournaledOrphansOnSuccess(args) {
30195
30339
  }
30196
30340
  logger.warn(safeMsg`${kept.length} resource(s) a failed deploy of stack ${stack} created were not deleted ` + (reduced ? "(see above). The rollback journal, their only record, is kept with just them; the next " : "(see above). The rollback journal, their only record, is kept; the next ") + "successful deploy retries.");
30197
30341
  return {
30198
- unaddressed: kept.length + skipped,
30342
+ unaddressed: kept.length + skipped + leftInPlace,
30199
30343
  keepJournal: true
30200
30344
  };
30201
30345
  }
@@ -30371,15 +30515,46 @@ async function adoptRollbackOrphans(currentState, effectiveTemplate) {
30371
30515
  }),
30372
30516
  logger: { debug: (m) => this.logger.debug(m) }
30373
30517
  });
30374
- for (const notice of plan.notices) this.logger.info(notice);
30375
- if (plan.refusals.length > 0) throw new Error(`Deploy refused — cdkd left ${plan.refusals.length} resource(s) in AWS that it cannot safely re-adopt:\n ${plan.refusals.join("\n ")}`);
30518
+ const named = /* @__PURE__ */ new Map();
30519
+ for (const entry of records) {
30520
+ if (entry === null || typeof entry !== "object") continue;
30521
+ const { logicalId, state } = entry;
30522
+ if (typeof logicalId !== "string" || state === null || typeof state !== "object") continue;
30523
+ for (const needle of secretNameNeedlesOf(logicalId, state, void 0) ?? []) recordLogOnlyValue(named, needle);
30524
+ }
30525
+ for (const notice of plan.notices) this.logger.info(maskSecretsInText(notice, named));
30526
+ if (plan.refusals.length > 0) throw new Error(`Deploy refused — cdkd left ${plan.refusals.length} resource(s) in AWS that it cannot safely re-adopt:\n ${plan.refusals.map((r) => maskSecretsInText(r, named)).join("\n ")}`);
30376
30527
  for (const [logicalId, record] of Object.entries(plan.adopted)) {
30377
30528
  currentState.resources[logicalId] = record;
30378
- this.logger.info(`Adopting ${displayIdent(logicalId)} (${displayIdent(record.resourceType)}) left in AWS by an earlier rollback as ${displaySafe(record.physicalId)}`);
30529
+ this.logger.info(`Adopting ${displayIdent(logicalId)} (${displayIdent(record.resourceType)}) left in AWS by an earlier rollback as ${displaySafe(maskSecretsInText(record.physicalId, named))}`);
30379
30530
  }
30380
30531
  if (records.length > 0) currentState.orphans = plan.remaining;
30381
30532
  return plan;
30382
30533
  }
30534
+ function orphanReplayPrintingBag(engine, orphanOps, stateResources) {
30535
+ const read = /* @__PURE__ */ new Map();
30536
+ for (const op of orphanOps) {
30537
+ const names = secretNamesReadBy(op.logicalId, { properties: op.attemptedProperties }, stateResources, (otherId) => ({
30538
+ secrets: engine.namingSecretsFor(otherId),
30539
+ embedded: engine.perResourceSecrets.get(otherId)
30540
+ }));
30541
+ for (const needle of names) recordLogOnlyValue(read, needle);
30542
+ }
30543
+ const own = /* @__PURE__ */ new Map();
30544
+ for (const op of orphanOps) {
30545
+ const needles = secretNameNeedlesOf(op.logicalId, {
30546
+ resourceType: op.resourceType,
30547
+ physicalId: op.physicalId,
30548
+ properties: op.attemptedProperties
30549
+ }, engine.namingSecretsFor(op.logicalId), { embedded: engine.perResourceSecrets.get(op.logicalId) });
30550
+ for (const needle of needles ?? []) recordLogOnlyValue(own, needle);
30551
+ }
30552
+ return unionOfSecretBags([
30553
+ ...orphanOps.map((op) => engine.printingSecretsFor(op.logicalId)),
30554
+ own,
30555
+ read
30556
+ ]);
30557
+ }
30383
30558
  async function performRollback(completedOperations, stateResources, stackName, previousState, failedOperations = [], priorOrphans = []) {
30384
30559
  const orphanIndexes = [];
30385
30560
  const orphanOps = [];
@@ -30397,10 +30572,10 @@ async function performRollback(completedOperations, stateResources, stackName, p
30397
30572
  const runId = this.options.eventRecorder?.runId;
30398
30573
  const { result, failed, run } = await withNestedRevertRun(runId, async (scope) => {
30399
30574
  return {
30400
- failed: orphanOps.length > 0 ? await replayFailedOperations(orphanOps, stateResources, stackName, ctx, {
30575
+ failed: orphanOps.length > 0 ? await withPrintingSecrets(orphanReplayPrintingBag(this, orphanOps, stateResources), () => replayFailedOperations(orphanOps, stateResources, stackName, ctx, {
30401
30576
  emitEnvelope: completedOperations.length === 0,
30402
30577
  inlinePolicyWriters
30403
- }) : void 0,
30578
+ })) : void 0,
30404
30579
  result: await replayRollback(completedOperations, stateResources, stackName, ctx, { inlinePolicyWriters }),
30405
30580
  run: scope
30406
30581
  };
@@ -30547,7 +30722,7 @@ function rollbackExecutorContext(previousState, stackName) {
30547
30722
  providerRegistry: this.providerRegistry,
30548
30723
  region: this.stackRegion,
30549
30724
  logger: this.logger,
30550
- recordEvent: (event) => this.recordEvent(event),
30725
+ recordEvent: (event) => this.recordEvent(maskEventTextWithBoundBags(event)),
30551
30726
  finalSnapshotClients: this.options.finalSnapshotClients,
30552
30727
  skipFinalSnapshot: this.options.skipFinalSnapshot,
30553
30728
  ...this.options.parentStackInfo && { nestedChildStack: stackName },
@@ -30985,6 +31160,7 @@ function kickOffAutoRefreshObservedProperties(stateResources, crossStackReads) {
30985
31160
  const candidates = [];
30986
31161
  const masked = [];
30987
31162
  for (const [logicalId, resource] of Object.entries(stateResources)) {
31163
+ if (!hasAddressablePhysicalId(resource)) continue;
30988
31164
  if (resource.observedProperties !== void 0) {
30989
31165
  if (isMaskedBaselineRecaptureCandidate(resource)) masked.push({
30990
31166
  logicalId,
@@ -31080,76 +31256,6 @@ function kickOffMaskedBaselineRecapture(provider, logicalId, resource, producerR
31080
31256
  this.observedCaptureTasks.set(logicalId, task);
31081
31257
  }
31082
31258
 
31083
- //#endregion
31084
- //#region src/deployment/secret-name-needles.ts
31085
- function secretNameNeedlesOf(logicalId, record, secrets, options) {
31086
- const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
31087
- const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
31088
- const mask = (text) => bag === void 0 ? text : maskSecretsInText(text, bag);
31089
- const unresolved = (value) => value.includes("{{resolve:") || value === "***";
31090
- const named = {
31091
- resourceType: record?.resourceType,
31092
- properties: record?.properties,
31093
- logicalId
31094
- };
31095
- const needles = /* @__PURE__ */ new Set();
31096
- const add = (needle) => {
31097
- if (typeof needle === "string" && needle !== "") needles.add(needle);
31098
- };
31099
- for (const [raw, derived] of secretDerivedNamePairs({
31100
- ...named,
31101
- physicalIds: []
31102
- })) if (typeof raw === "string" && !unresolved(raw) && isSecretDerivedValue(raw, mask)) add(derived);
31103
- for (const [raw, spelling] of secretDerivedNamePairs({
31104
- ...named,
31105
- physicalIds: [physicalId ?? "cdkd-no-physical-id-yet"]
31106
- })) {
31107
- if (!isSecretDerivedValue(raw, mask)) continue;
31108
- if (unresolved(raw)) {
31109
- if (physicalId === void 0) continue;
31110
- add(spelling);
31111
- } else {
31112
- add(raw);
31113
- if (raw.toLowerCase() !== raw && raw.length >= 4) add(raw.toLowerCase());
31114
- }
31115
- }
31116
- const properties = record?.properties;
31117
- const path = properties !== null && typeof properties === "object" && Object.hasOwn(properties, "Path") ? properties["Path"] : void 0;
31118
- if (physicalId !== void 0 && isSecretDerivedValue(path, mask)) add(physicalId);
31119
- const embedded = options === void 0 ? secrets : options.embedded;
31120
- const embeddedBag = embedded !== void 0 && hasMaskableValues(embedded) ? embedded : void 0;
31121
- if (embeddedBag !== void 0 && physicalId !== void 0) {
31122
- for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
31123
- }
31124
- return needles.size > 0 ? needles : void 0;
31125
- }
31126
- function secretNamesReadBy(logicalId, record, resources, judge = () => ({
31127
- secrets: void 0,
31128
- embedded: void 0
31129
- })) {
31130
- const read = /* @__PURE__ */ new Set();
31131
- const leaves = [...wholeStringLeavesOf(record?.properties)].filter((leaf) => leaf !== "");
31132
- if (leaves.length === 0) return read;
31133
- for (const [otherId, other] of Object.entries(resources)) {
31134
- if (otherId === logicalId) continue;
31135
- const bags = judge(otherId);
31136
- const needles = secretNameNeedlesOf(otherId, other, bags.secrets, { embedded: bags.embedded });
31137
- if (needles === void 0) continue;
31138
- for (const needle of needles) if (leaves.some((leaf) => leaf === needle || needle.length >= 4 && leaf.includes(needle))) read.add(needle);
31139
- }
31140
- return read;
31141
- }
31142
- function stateSecretNameNeedles(resources, secrets) {
31143
- return (logicalId) => secretNameNeedlesOf(logicalId, Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0, secrets, { embedded: void 0 });
31144
- }
31145
- function secretNamePrintingBag(logicalId, resources) {
31146
- const bag = /* @__PURE__ */ new Map();
31147
- const record = Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0;
31148
- for (const needle of secretNameNeedlesOf(logicalId, record, void 0) ?? []) recordLogOnlyValue(bag, needle);
31149
- for (const needle of secretNamesReadBy(logicalId, record, resources)) recordLogOnlyValue(bag, needle);
31150
- return bag;
31151
- }
31152
-
31153
31259
  //#endregion
31154
31260
  //#region src/deployment/deploy-engine/masking.ts
31155
31261
  function diffLogMasker(diffSecrets, template, parameterValues) {
@@ -31541,6 +31647,7 @@ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentReso
31541
31647
  async function readRecordAttributes(input) {
31542
31648
  const { provider, logicalId, resource, stackName, region } = input;
31543
31649
  if (!provider.import) return { kind: "not-attempted" };
31650
+ if (!hasAddressablePhysicalId(resource)) return { kind: "not-attempted" };
31544
31651
  const found = await provider.import({
31545
31652
  logicalId,
31546
31653
  resourceType: resource.resourceType,
@@ -34837,6 +34944,7 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
34837
34944
  return;
34838
34945
  }
34839
34946
  this.refuseRedactedAttributeReads(logicalId, resourceType, context);
34947
+ if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(unaddressableUpdateRefusalMessage(stackName, this.stackRegion, logicalId, oldResourceType), STATE_RESOURCES_MALFORMED)));
34840
34948
  this.attemptedResolvedProps.set(logicalId, resolvedProps);
34841
34949
  const noEchoHeldPaths = /* @__PURE__ */ new Set();
34842
34950
  if (change.propertyChanges?.some((pc) => pc.requiresReplacement) === true) {
@@ -35483,6 +35591,46 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
35483
35591
  await noteRetainedResource(resourceType, logicalId);
35484
35592
  return;
35485
35593
  }
35594
+ if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) {
35595
+ const reason = "state record has no physical id";
35596
+ if (progress) progress.current++;
35597
+ const skipPrefix = progress ? `[${progress.current}/${progress.total}] ` : " ";
35598
+ renderer.removeTask(logicalId);
35599
+ const skipLine = formatResourceLine("skipped", logicalId, resourceType, `skipped (${reason})`);
35600
+ this.logger.info(safeMsg`${skipPrefix}${skipLine}`);
35601
+ const showCommand = pasteableCommand("cdkd state show", [{
35602
+ value: stackName,
35603
+ hole: "stack",
35604
+ opts: { plainIdent: true }
35605
+ }, {
35606
+ flag: "--stack-region",
35607
+ value: this.stackRegion,
35608
+ hole: "region"
35609
+ }]).command;
35610
+ const dropCommand = pasteableCommand("cdkd state orphan", [
35611
+ {
35612
+ value: stackName,
35613
+ hole: "stack",
35614
+ opts: { plainIdent: true }
35615
+ },
35616
+ {
35617
+ flag: "--stack-region",
35618
+ value: this.stackRegion,
35619
+ hole: "region"
35620
+ },
35621
+ {
35622
+ flag: "--resource",
35623
+ value: logicalId,
35624
+ hole: "logicalId",
35625
+ opts: { plainIdent: true }
35626
+ }
35627
+ ]).command;
35628
+ this.logger.warn(safeMsg`Resource ${displaySafe(logicalId)} (${displaySafe(resourceType)}) has no non-empty string 'physicalId' in its state record, so cdkd cannot address it in AWS and did not try to delete it while removing it from the template. Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record's 'physicalId', or delete the resource by hand and drop the record.
35629
+ Inspect it with: ${showCommand}
35630
+ Drop the record with: ${dropCommand}`);
35631
+ if (counts) counts.deleteSkipped++;
35632
+ return { deleteSkipped: reason };
35633
+ }
35486
35634
  const governingPolicy = effectiveDeletionPolicy(resourceType, deletionPolicy, currentResource.properties);
35487
35635
  const finalSnapshotIdentifier = await this.prepareFinalSnapshotForDelete(logicalId, resourceType, currentResource, governingPolicy);
35488
35636
  const deleteRoute = this.providerRegistry.getProviderFor({
@@ -35741,7 +35889,7 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
35741
35889
  logicalId,
35742
35890
  resourceType,
35743
35891
  ...stateResources[logicalId]?.provisionedBy ? { provisionedBy: stateResources[logicalId]?.provisionedBy } : labelRouting && { provisionedBy: labelRouting },
35744
- ...stateResources[logicalId]?.physicalId && { physicalId: stateResources[logicalId]?.physicalId },
35892
+ ...stateResources[logicalId] !== void 0 && hasAddressablePhysicalId(stateResources[logicalId]) && { physicalId: stateResources[logicalId].physicalId },
35745
35893
  reason: deleteSkipped,
35746
35894
  durationMs: Date.now() - resourceStartedAt
35747
35895
  });
@@ -36996,6 +37144,7 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
36996
37144
  refuseMalformedOutputs(currentState, stackName, this.stackRegion);
36997
37145
  refuseMalformedResourcesForDeploy(currentState, stackName, this.stackRegion);
36998
37146
  refuseMalformedResourceEntriesForDeploy(currentState, stackName, this.stackRegion);
37147
+ refuseMalformedResourceProperties(currentState, stackName, this.stackRegion);
36999
37148
  refuseMalformedOrphans(currentState, stackName, this.stackRegion);
37000
37149
  refuseMalformedOrphanRecords(currentState, stackName, this.stackRegion);
37001
37150
  const migrationPending = currentStateData?.migrationPending ?? false;
@@ -37772,5 +37921,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
37772
37921
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
37773
37922
 
37774
37923
  //#endregion
37775
- export { namesAnyDeclaredParameter as $, markSameGenerationBag as $a, unreadableOrphanRecords as $i, disableInstanceApiTermination as $n, readBootstrapMarkerBody as $o, hasReadableResources as $r, defineOwnKey as $s, DeploymentEventsReader as $t, resolveDynamoDbDeleteBudgetClock as A, describeTypeWithThrottleRetry as Aa, refuseMalformedOutputsForDestroy as Ai, readTagList as An, hasReasonlessBaselineRefusal as Ao, getAccountInfo as Ar, resolveAutoAssetStorage as As, isReplacementOrphan as At, getPriorAttempts as B, carryLogOnlyValues as Ba, refuseMalformedResourcePropertiesForExport as Bi, isCustomResourceType as Bn, stringifyValue as Bo, parseWebACLArn as Br, CFN_TEMPLATE_URL_LIMIT as Bs, buildFinalSnapshotIdentifier as Bt, perType as C, readConfigString as Ca, refuseMalformedNestedChildOutputs as Ci, ledgerForStack as Cn, S3StateBackend as Co, s3BucketDomainName as Cr, getDockerImageBySourceHash as Cs, awaitInFlightSibling as Ct, beginDeleteWait as D, requireConfigString as Da, refuseMalformedOrphansForDestroy as Di, DBPROXY_TAGS_WHAT as Dn, describeRegionValueKind as Do, coerceParameterTypedValue as Dr, getLegacyStateBucketName as Ds, recordAfterRollbackUpdate as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, requireConfigObject as Ea, refuseMalformedOrphans as Ei, acquireIdempotencyToken as En, acceptedCreateOnlyDropsOf as Eo, s3BucketWebsiteUrl as Er, getDefaultStateBucketName as Es, withStackRecords as Et, waitForIndexesSettled as F, DagBuilder as Fa, refuseMalformedResourceEntriesForImport as Fi, stringifyIfAssigned as Fn, orphansAfterRollback as Fo, keepsSecretReferenceToken as Fr, resolveUseCdkBootstrapAssets as Fs, findNestedStackTypeChanges as Ft, cyan as G, printingCorpusOf as Ga, refuseMalformedState as Gi, ccProtectionRegistryTypes as Gn, rewriteTemplateAssetReferences as Go, STATE_REGION_DIVERGED as Gr, decodeListingKey as Gs, refusesFinalSnapshot as Gt, formatResourceLine as H, hasMaskableValues as Ha, refuseMalformedResourcesForDeploy as Hi, withPrintingSecrets as Hn, buildAssetRedirectMap as Ho, parameterInputsFor as Hr, findLargeInlineResources as Hs, createPreDeleteFinalSnapshot as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, TemplateParser as Ia, refuseMalformedResourceEntriesForImportSave as Ii, CC_BROKEN_REASON as In, orphansCarriedFrom as Io, AWS_NO_VALUE as Ir, stateBucketExistenceConfirmed as Is, getCurrentProducerRegions as It, red as J, shareLogOnlyValues as Ja, repairMalformedOutputsForReadOnly as Ji, deleteIndeterminateGuards as Jn, assertAssetBucketRegion as Jo, UNREADABLE_RESOURCES_MAP_ROW as Jr, canonicalizeRegion as Js, isRedactedRecordedValue as Jt, gray as K, recordLogOnlyParameterValue as Ka, repairMalformedOrphanRecordsForReadOnly as Ki, unchangedBehindSecretReference as Kn, AssetModeResolver as Ko, STATE_RESOURCES_MALFORMED as Kr, expectedOwnerParam as Ks, unsupportedFinalSnapshotError as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, liveMatchesUnresolvedTokenFrame as La, refuseMalformedResourceEntriesForOrphan as Li, ProviderRegistry as Ln, shouldRetainResource as Lo, cfnRefValueFromPhysicalId as Lr, warnDeprecatedNoPrefixCliFlag as Ls, inheritProducerRegions as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, canonicalLambdaFunctionName as Ma, refuseMalformedResourceEntries as Mi, tagMapAsList as Mn, importableOutputKeys as Mo, carriesDynamicReference as Mr, resolveSkipPrefix as Ms, planRollback as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, lambdaFunctionNameForMask as Na, refuseMalformedResourceEntriesForDeploy as Ni, tagPlanWarning as Nn, importableOutputs as No, carriesFetchableDynamicReference as Nr, resolveStateBucketWithDefault as Ns, replacementNeverSwapped as Nt, compensateRemovedDeletionProtection as O, prefetchCreateOnlyPropertyPaths as Oa, refuseMalformedOrphansForOrphan as Oi, DBPROXY_TAG_OPTIONS as On, exportNamesCarriedFrom as Oo, isUnboundTemplateParameter as Or, loadCdkJson as Os, demoteSupersededOrphans as Ot, deleteTableWithIndexBusyRetry as P, sameLambdaFunctionAddress as Pa, refuseMalformedResourceEntriesForDestroy as Pi, definedAttributes as Pn, isReadableBag as Po, isNamelessDynamicReferenceError as Pr, resolveStateBucketWithDefaultAndSource as Ps, resolveReplacementOldType as Pt, computeParameterTaint as Q, maskSecretsInText as Qa, unpreviewableOrphanRecords as Qi, markWaitAbandoned as Qn, parseBootstrapMarker as Qo, hasReadableOutputs as Qr, processStackMessages as Qs, updatePartialReason as Qt, hasCdkAutoDeleteTag as R, inheritNestedStackParameterAssociations as Ra, refuseMalformedResourcePropertiesForDestroy as Ri, ccBrokenReason as Rn, AssetPublisher as Ro, isStalePlaceholderArnAttribute as Rr, ssmResolvedValueType as Rs, ATOMIC_FINAL_SNAPSHOT_TYPES as Rt, isProtectionValueActive as S, configStringRefusal as Sa, refuseDivergentRecordRegionForDestroy as Si, earliestDefined as Sn, isLockInfoExpired as So, s3BucketArn as Sr, AssetManifestLoader as Ss, replayRollback as St, DynamoDBGlobalTableProvider as T, requireConfigArray as Ta, refuseMalformedOrphanRecordsForDestroy as Ti, withCreateTokenLedger as Tn, splitImportedOps as To, s3BucketRegionalDomainName as Tr, synthesisStatusMessage as Ts, getStackRecords as Tt, createReadOnlyAttributeHealerFactory as U, literalSplitDelimitersOf as Ua, refuseMalformedResourcesForDestroy as Ui, CloudControlProvider as Un, createAssetRedirectResolver as Uo, passedParameterClassesOf as Ur, uploadCfnTemplate as Us, effectiveDeletionPolicy as Ut, markRefusedBeforeApplying as V, createUnionSecretMasker as Va, refuseMalformedResourcePropertiesForOrphan as Vi, getCurrentResourceSecrets as Vn, WorkGraph as Vo, withSharedDrainBudget as Vr, MIGRATE_TMP_PREFIX as Vs, ccRoutedFinalSnapshotError as Vt, bold as W, logOnlyValueCount as Wa, refuseMalformedResourcesForExport as Wi, slowCcOperationTimeoutMs as Wn, loadPublishableAssetManifest as Wo, JSON_LISTING_HOLE_VALUE as Wr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ws, isFinalSnapshotError as Wt, secretNamePrintingBag as X, errorCauseChain as Xa, repairMalformedResourcePropertiesForReadOnly as Xi, withIndeterminateGuard as Xn, getBootstrapMarkerKey as Xo, displayLogicalId as Xr, AssemblyReader as Xs, redactedDeleteAddressSkip as Xt, yellow as Y, createSecretMasker as Ya, repairMalformedResourceEntriesForReadOnly as Yi, deleteSkipReason as Yn, ensureAssetStorage as Yo, deployRefusesOrphanRowsReason as Yr, derivePartitionAndUrlSuffix as Ys, redactedDeleteAddressFields as Yt, stateSecretNameNeedles as Z, maskSecretsInError as Za, repairMalformedResourcesForReadOnly as Zi, isWaitAbandonedError as Zn, isCrossRegionRedirect as Zo, hasReadableOrphans as Zr, StageLoadError as Zs, updatePartialMessage as Zt, makeCanonicalizePropertiesFn as _, toFiniteNumber as _a, malformedResourcePropertiesWarning as _i, maskingRetryLogger as _n, STATE_SOURCED_READBACK_RULES as _o, AWS_CREDENTIAL_ENV_KEYS as _r, runDockerForeground as _s, revertedNestedRowIds as _t, findNestedTemplateTreeDefect as a, NO_CC_HANDLERS_REASON as aa, describeFileReadFailure as ac, malformedLocalOutputsWarning as ai, secretBearing as an, isUncertifiedBaselineMaskPosition as ao, DiffCalculator as ar, describeDockerCapturedOutput as as, loadJournaledOrphans as at, recordedProtectionNote as b, configBooleanRefusal as ba, malformedStateRefusalMessage as bi, formatDestructiveChange as bn, isSingleDynamicReferenceToken as bo, envCredentialsAreAssumedRole as br, escapeRegExp$3 as bs, withNestedStackContext as bt, renderNestedTemplateTreeDefect as c, shownType as ca, resolveAssemblyPath as cc, malformedOrphanRecordsRefusalMessage as ci, exportNameSecretExposure as cn, carriesSecretMask as co, classifyReplaySecretRegion as cr, dockerSpawnEnvWithSensitive as cs, planOrphanAdoption as ct, conditionInputsFrom as d, isStatefulRecreateTargetSync as da, malformedOrphansRefusalMessage as di, collectDeclaredOutputNames as dn, recordMaskOnlyValuesIn as do, applyRoleArnIfSet as dr, getDockerCmd as ds, displacedPhysicalIdShown as dt, unreadableResourceEntries as ea, hasOwnKey as ec, isReadableOrphanRecord as ei, DeploymentEventsStore as en, redactSecretsForState as eo, ec2InstanceProtectionSite as er, validateAssetBucketName as es, reachableDivergentParameters as et, parentSuppliedValues as f, renderStatefulReason as fa, malformedOrphansWarning as fi, collectPublishedOutputNames as fn, recordNoEchoAttributeValues as fo, assertFlagRoleArn as fr, isDockerClientEnvKey as fs, dropSettledNestedJournals as ft, mergeNoChangeOutputs as g, toCfnInteger as ga, malformedResourceEntriesWarning as gi, DEFAULT_RESOURCE_WARN_AFTER_MS as gn, STATE_SOURCED_CROSS_GENERATION_RULES as go, sendableAssumeRoleCommand as gr, redactedDockerCause as gs, revertNestedChildFromJournal as gt, keptWholeReasonText as h, isWarmThroughputDecrease as ha, malformedRenderedContainersWarning as hi, DEFAULT_RESOURCE_TIMEOUT_MS as hn, STATE_SOURCED_BASELINE_RULES as ho, isIamRoleArn as hr, redactDockerArgvValues as hs, recordDisplacedSkips as ht, childTemplateLoader as i, withoutSilentDropProperties as ia, absoluteAssemblyPathEscape as ic, malformedExportSourceWarning as ii, exportAliasCollisionScrubWarning as in, dynamicReferenceTokens as io, reEnableInstanceApiTermination as ir, resolveDockerContextDirectory as is, journaledOrphanLines as it, resolveDynamoDbDeleteBudgetMs as j, withRetry as ja, refuseMalformedResourceAttributesForOrphan as ji, refuseMalformedDesiredTags as jn, hasUnverifiableParameterRefusal as jo, isImpossibleEmptyStoredAttribute as jr, resolveCaptureObservedState as js, planFailedOps as jt, deleteBudgetKey as k, templateResourceTypes as ka, refuseMalformedOutputs as ki, planTagDiff as kn, hasReadableExportSet as ko, parameterTypeMayLoseSecretIdentity as kr, resolveApp as ks, isJournaledOrphan as kt, templateIdentity as l, MULTI_REGION_RECREATE_BLOCKED_TYPES as la, clearBucketRegionCache as lc, malformedOrphanRecordsWarning as li, isWholeDynamicReferenceValue as ln, provenPublicValue as lo, producerRegionsFromState as lr, finchSecretArgvRefusal as ls, NESTED_PENDING_PARENT_REASON as lt, isSecretBearingReferenceString as m, coerceWarmThroughput as ma, malformedOutputsWarning as mi, bindingSkippedOutputs as mn, wholeStringLeavesOf as mo, explicitRoleArnOrThrow as mr, partitionSensitiveEnv as ms, nestedChildStackName as mt, IMPLICIT_DELETE_DEPENDENCIES as n, findSilentDropProperties as na, nullPrototypeRecord as nc, malformedDriftResourcePropertiesWarning as ni, WITHHELD_NAME_DISPLAY as nn, recoverMaskedOutput as no, observeThenDisableInstanceApiTermination as nr, buildDenyExternalAccessPolicy as ns, deleteJournaledOrphans as nt, isAbsoluteAssetPath as o, hasNoCloudControlHandlers as oa, displayAssemblyPath as oc, malformedLocalResourceEntriesWarning as oi, secretBearingStateKeyWarning as on, pathCrossesDottedKey as oo, INTRINSIC_KEYS as or, describeDockerExecFailure as os, sameJournaledOrphans as ot, readRecordedConditionVerdicts as p, WARM_THROUGHPUT_MEMBERS as pa, malformedOutputsRefusalMessage as pi, isExportAliasCollision as pn, recordProvenPublicExpression as po, assertSendableRoleArn as pr, isMalformedEnvKey as ps, getNestedRevertRun as pt, green as q, recordLogOnlyValue as qa, repairMalformedOrphansForReadOnly as qi, UNSPECIFIED_SKIP_REASON as qn, BOOTSTRAP_MARKER_PREFIX as qo, UNREADABLE_ORPHANS_CONTAINER_ROW as qr, PARTITION_TABLE as qs, REDACTED_DELETE_ADDRESS_SKIP_REASON as qt, computeImplicitDeleteEdges as r, unwrittenCreateOnlyReplacement as ra, ownValue as rc, malformedExportNamesWarning as ri, displayTextOrWithheld as rn, DYNAMIC_REFERENCE_TOKEN_SCAN as ro, reDisableInstanceApiTermination as rr, buildDockerImage as rs, isHandledOrphan as rt, listNestedTemplateRows as s, findReplacedReadersOfRecreateTargets as sa, renderAssemblyPathEscape as sc, malformedLocalResourcesWarning as si, secretSafeKeyDisplay as sn, identityKeyFor as so, IntrinsicFunctionResolver as sr, describeDockerFailure as ss, makeSiblingClaimReader as st, DeployEngine as t, findActionableSilentDrops as ta, hasPlainPrototype$1 as tc, isReadableResourceEntry as ti, extractDeploymentEventError as tn, scrubResourceRecord as to, isTerminationProtectionPropagationError as tr, validateContainerRepoName as ts, resourcesNamingDeclaredParameter as tt, conditionFingerprint as u, isStatefulRecreateTargetForReplace as ua, resolveBucketRegion as uc, malformedOrphanRowsKeptWarning as ui, noEchoParameterValueSeed as un, recordMaskOnlyValue as uo, regionLessSecretName as ur, formatDockerLoginError as us, displacedOpClause as ut, withResourceDeadline as v, coerceCfnBoolean as va, malformedResourcesWarning as vi, constructPathOf as vn, TEMPLATE_SOURCED_RULES as vo, applyCallerIdentityCredentials as vr, runDockerStreaming as vs, withNestedRevertRun as vt, readProtection as w, replayWarn as wa, refuseMalformedOrphanRecords as wi, reserveStackCreateToken as wn, rebuildClientForBucketRegion as wo, s3BucketDualStackDomainName as wr, Synthesizer as ws, destroyStackRecordsView as wt, PROTECTION_PROPERTY_BY_TYPE as x, configIntegerRefusal as xa, previewableOrphanRecords as xi, RollbackInlinePolicyWriters as xn, LockManager as xo, isSettledInstanceState as xr, stripControlChars as xs, replayFailedOperations as xt, recordedProtectionEvidence as y, coerceCfnInteger as ya, malformedScrubResourceEntriesRefusalMessage as yi, findDestructiveChanges as yn, WHOLE_DYNAMIC_REFERENCE_PATTERN as yo, callerEnvCredentials as yr, warnFinchArgvExposure as ys, getCurrentNestedStackContext as yt, isTruthyCfnBoolean as z, recordNestedStackParameterExpressions as za, refuseMalformedResourcePropertiesForDrift as zi, wouldReturnToSdkProvider as zn, isSensitiveAttributeName as zo, refStateLookupFromResource as zr, CFN_TEMPLATE_BODY_LIMIT as zs, PRE_DELETE_SNAPSHOT_TYPES as zt };
37776
- //# sourceMappingURL=deploy-engine-HCnNEpdp.js.map
37924
+ export { resourcesNamingDeclaredParameter as $, maskSecretsInError as $a, repairMalformedResourcesForReadOnly as $i, isWaitAbandonedError as $n, isCrossRegionRedirect as $o, hasReadableOrphans as $r, StageLoadError as $s, updatePartialMessage as $t, resolveDynamoDbDeleteBudgetClock as A, prefetchCreateOnlyPropertyPaths as Aa, refuseMalformedOrphansForOrphan as Ai, DBPROXY_TAG_OPTIONS as An, exportNamesCarriedFrom as Ao, isUnboundTemplateParameter as Ar, loadCdkJson as As, demoteSupersededOrphans as At, getPriorAttempts as B, inheritNestedStackParameterAssociations as Ba, refuseMalformedResourcePropertiesForDestroy as Bi, ccBrokenReason as Bn, AssetPublisher as Bo, isStalePlaceholderArnAttribute as Br, ssmResolvedValueType as Bs, ATOMIC_FINAL_SNAPSHOT_TYPES as Bt, perType as C, configIntegerRefusal as Ca, previewableOrphanRecords as Ci, RollbackInlinePolicyWriters as Cn, LockManager as Co, isSettledInstanceState as Cr, stripControlChars as Cs, replayFailedOperations as Ct, beginDeleteWait as D, requireConfigArray as Da, refuseMalformedOrphanRecordsForDestroy as Di, withCreateTokenLedger as Dn, splitImportedOps as Do, s3BucketRegionalDomainName as Dr, synthesisStatusMessage as Ds, getStackRecords as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, replayWarn as Ea, refuseMalformedOrphanRecords as Ei, reserveStackCreateToken as En, rebuildClientForBucketRegion as Eo, s3BucketDualStackDomainName as Er, Synthesizer as Es, destroyStackRecordsView as Et, waitForIndexesSettled as F, lambdaFunctionNameForMask as Fa, refuseMalformedResourceEntriesForDeploy as Fi, tagPlanWarning as Fn, importableOutputs as Fo, carriesFetchableDynamicReference as Fr, resolveStateBucketWithDefault as Fs, replacementNeverSwapped as Ft, cyan as G, literalSplitDelimitersOf as Ga, refuseMalformedResourcesForDestroy as Gi, CloudControlProvider as Gn, createAssetRedirectResolver as Go, passedParameterClassesOf as Gr, uploadCfnTemplate as Gs, effectiveDeletionPolicy as Gt, formatResourceLine as H, carryLogOnlyValues as Ha, refuseMalformedResourcePropertiesForExport as Hi, isCustomResourceType as Hn, stringifyValue as Ho, parseWebACLArn as Hr, CFN_TEMPLATE_URL_LIMIT as Hs, buildFinalSnapshotIdentifier as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, sameLambdaFunctionAddress as Ia, refuseMalformedResourceEntriesForDestroy as Ii, definedAttributes as In, isReadableBag as Io, isNamelessDynamicReferenceError as Ir, resolveStateBucketWithDefaultAndSource as Is, resolveReplacementOldType as It, red as J, recordLogOnlyParameterValue as Ja, repairMalformedOrphanRecordsForReadOnly as Ji, unchangedBehindSecretReference as Jn, AssetModeResolver as Jo, STATE_RESOURCES_MALFORMED as Jr, expectedOwnerParam as Js, unsupportedFinalSnapshotError as Jt, gray as K, logOnlyValueCount as Ka, refuseMalformedResourcesForExport as Ki, slowCcOperationTimeoutMs as Kn, loadPublishableAssetManifest as Ko, JSON_LISTING_HOLE_VALUE as Kr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ks, isFinalSnapshotError as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, DagBuilder as La, refuseMalformedResourceEntriesForImport as Li, stringifyIfAssigned as Ln, orphansAfterRollback as Lo, keepsSecretReferenceToken as Lr, resolveUseCdkBootstrapAssets as Ls, findNestedStackTypeChanges as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, describeTypeWithThrottleRetry as Ma, refuseMalformedOutputsForDestroy as Mi, readTagList as Mn, hasReasonlessBaselineRefusal as Mo, getAccountInfo as Mr, resolveAutoAssetStorage as Ms, isReplacementOrphan as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, withRetry as Na, refuseMalformedResourceAttributesForOrphan as Ni, refuseMalformedDesiredTags as Nn, hasUnverifiableParameterRefusal as No, isImpossibleEmptyStoredAttribute as Nr, resolveCaptureObservedState as Ns, planFailedOps as Nt, compensateRemovedDeletionProtection as O, requireConfigObject as Oa, refuseMalformedOrphans as Oi, acquireIdempotencyToken as On, acceptedCreateOnlyDropsOf as Oo, s3BucketWebsiteUrl as Or, getDefaultStateBucketName as Os, withStackRecords as Ot, deleteTableWithIndexBusyRetry as P, canonicalLambdaFunctionName as Pa, refuseMalformedResourceEntries as Pi, tagMapAsList as Pn, importableOutputKeys as Po, carriesDynamicReference as Pr, resolveSkipPrefix as Ps, planRollback as Pt, reachableDivergentParameters as Q, errorCauseChain as Qa, repairMalformedResourcePropertiesForReadOnly as Qi, withIndeterminateGuard as Qn, getBootstrapMarkerKey as Qo, displayLogicalId as Qr, AssemblyReader as Qs, redactedDeleteAddressSkip as Qt, hasCdkAutoDeleteTag as R, TemplateParser as Ra, refuseMalformedResourceEntriesForImportSave as Ri, CC_BROKEN_REASON as Rn, orphansCarriedFrom as Ro, AWS_NO_VALUE as Rr, stateBucketExistenceConfirmed as Rs, getCurrentProducerRegions as Rt, isProtectionValueActive as S, configBooleanRefusal as Sa, malformedStateRefusalMessage as Si, formatDestructiveChange as Sn, isSingleDynamicReferenceToken as So, envCredentialsAreAssumedRole as Sr, escapeRegExp$3 as Ss, withNestedStackContext as St, DynamoDBGlobalTableProvider as T, readConfigString as Ta, refuseMalformedNestedChildOutputs as Ti, ledgerForStack as Tn, S3StateBackend as To, s3BucketDomainName as Tr, getDockerImageBySourceHash as Ts, awaitInFlightSibling as Tt, createReadOnlyAttributeHealerFactory as U, createUnionSecretMasker as Ua, refuseMalformedResourcePropertiesForOrphan as Ui, getCurrentResourceSecrets as Un, WorkGraph as Uo, withSharedDrainBudget as Ur, MIGRATE_TMP_PREFIX as Us, ccRoutedFinalSnapshotError as Ut, markRefusedBeforeApplying as V, recordNestedStackParameterExpressions as Va, refuseMalformedResourcePropertiesForDrift as Vi, wouldReturnToSdkProvider as Vn, isSensitiveAttributeName as Vo, refStateLookupFromResource as Vr, CFN_TEMPLATE_BODY_LIMIT as Vs, PRE_DELETE_SNAPSHOT_TYPES as Vt, bold as W, hasMaskableValues as Wa, refuseMalformedResourcesForDeploy as Wi, withPrintingSecrets as Wn, buildAssetRedirectMap as Wo, parameterInputsFor as Wr, findLargeInlineResources as Ws, createPreDeleteFinalSnapshot as Wt, computeParameterTaint as X, shareLogOnlyValues as Xa, repairMalformedOutputsForReadOnly as Xi, deleteIndeterminateGuards as Xn, assertAssetBucketRegion as Xo, UNREADABLE_RESOURCES_MAP_ROW as Xr, canonicalizeRegion as Xs, isRedactedRecordedValue as Xt, yellow as Y, recordLogOnlyValue as Ya, repairMalformedOrphansForReadOnly as Yi, UNSPECIFIED_SKIP_REASON as Yn, BOOTSTRAP_MARKER_PREFIX as Yo, UNREADABLE_ORPHANS_CONTAINER_ROW as Yr, PARTITION_TABLE as Ys, REDACTED_DELETE_ADDRESS_SKIP_REASON as Yt, namesAnyDeclaredParameter as Z, createSecretMasker as Za, repairMalformedResourceEntriesForReadOnly as Zi, deleteSkipReason as Zn, ensureAssetStorage as Zo, deployRefusesOrphanRowsReason as Zr, derivePartitionAndUrlSuffix as Zs, redactedDeleteAddressFields as Zt, makeCanonicalizePropertiesFn as _, isWarmThroughputDecrease as _a, malformedRenderedContainersWarning as _i, DEFAULT_RESOURCE_TIMEOUT_MS as _n, STATE_SOURCED_BASELINE_RULES as _o, isIamRoleArn as _r, redactDockerArgvValues as _s, recordDisplacedSkips as _t, findNestedTemplateTreeDefect as a, unwrittenCreateOnlyReplacement as aa, ownValue as ac, malformedExportNamesWarning as ai, displayTextOrWithheld as an, DYNAMIC_REFERENCE_TOKEN_SCAN as ao, reDisableInstanceApiTermination as ar, buildDockerImage as as, journaledOrphanPrintingBag as at, recordedProtectionNote as b, coerceCfnBoolean as ba, malformedResourcesWarning as bi, constructPathOf as bn, TEMPLATE_SOURCED_RULES as bo, applyCallerIdentityCredentials as br, runDockerStreaming as bs, withNestedRevertRun as bt, renderNestedTemplateTreeDefect as c, hasNoCloudControlHandlers as ca, displayAssemblyPath as cc, malformedLocalResourceEntriesWarning as ci, secretBearingStateKeyWarning as cn, pathCrossesDottedKey as co, INTRINSIC_KEYS as cr, describeDockerExecFailure as cs, stateSecretNameNeedles as ct, conditionInputsFrom as d, MULTI_REGION_RECREATE_BLOCKED_TYPES as da, clearBucketRegionCache as dc, malformedOrphanRecordsWarning as di, isWholeDynamicReferenceValue as dn, provenPublicValue as do, producerRegionsFromState as dr, finchSecretArgvRefusal as ds, NESTED_PENDING_PARENT_REASON as dt, unpreviewableOrphanRecords as ea, processStackMessages as ec, hasReadableOutputs as ei, updatePartialReason as en, maskSecretsInText as eo, markWaitAbandoned as er, parseBootstrapMarker as es, deleteJournaledOrphans as et, parentSuppliedValues as f, isStatefulRecreateTargetForReplace as fa, resolveBucketRegion as fc, malformedOrphanRowsKeptWarning as fi, noEchoParameterValueSeed as fn, recordMaskOnlyValue as fo, regionLessSecretName as fr, formatDockerLoginError as fs, displacedOpClause as ft, mergeNoChangeOutputs as g, coerceWarmThroughput as ga, malformedOutputsWarning as gi, bindingSkippedOutputs as gn, wholeStringLeavesOf as go, explicitRoleArnOrThrow as gr, partitionSensitiveEnv as gs, nestedChildStackName as gt, keptWholeReasonText as h, WARM_THROUGHPUT_MEMBERS as ha, malformedOutputsRefusalMessage as hi, isExportAliasCollision as hn, recordProvenPublicExpression as ho, assertSendableRoleArn as hr, isMalformedEnvKey as hs, getNestedRevertRun as ht, childTemplateLoader as i, findSilentDropProperties as ia, nullPrototypeRecord as ic, malformedDriftResourcePropertiesWarning as ii, WITHHELD_NAME_DISPLAY as in, recoverMaskedOutput as io, observeThenDisableInstanceApiTermination as ir, buildDenyExternalAccessPolicy as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, templateResourceTypes as ja, refuseMalformedOutputs as ji, planTagDiff as jn, hasReadableExportSet as jo, parameterTypeMayLoseSecretIdentity as jr, resolveApp as js, isJournaledOrphan as jt, deleteBudgetKey as k, requireConfigString as ka, refuseMalformedOrphansForDestroy as ki, DBPROXY_TAGS_WHAT as kn, describeRegionValueKind as ko, coerceParameterTypedValue as kr, getLegacyStateBucketName as ks, recordAfterRollbackUpdate as kt, templateIdentity as l, findReplacedReadersOfRecreateTargets as la, renderAssemblyPathEscape as lc, malformedLocalResourcesWarning as li, secretSafeKeyDisplay as ln, identityKeyFor as lo, IntrinsicFunctionResolver as lr, describeDockerFailure as ls, makeSiblingClaimReader as lt, isSecretBearingReferenceString as m, renderStatefulReason as ma, malformedOrphansWarning as mi, collectPublishedOutputNames as mn, recordNoEchoAttributeValues as mo, assertFlagRoleArn as mr, isDockerClientEnvKey as ms, dropSettledNestedJournals as mt, IMPLICIT_DELETE_DEPENDENCIES as n, unreadableResourceEntries as na, hasOwnKey as nc, isReadableOrphanRecord as ni, DeploymentEventsStore as nn, redactSecretsForState as no, ec2InstanceProtectionSite as nr, validateAssetBucketName as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, withoutSilentDropProperties as oa, absoluteAssemblyPathEscape as oc, malformedExportSourceWarning as oi, exportAliasCollisionScrubWarning as on, dynamicReferenceTokens as oo, reEnableInstanceApiTermination as or, resolveDockerContextDirectory as os, maskEventTextWithBoundBags as ot, readRecordedConditionVerdicts as p, isStatefulRecreateTargetSync as pa, malformedOrphansRefusalMessage as pi, collectDeclaredOutputNames as pn, recordMaskOnlyValuesIn as po, applyRoleArnIfSet as pr, getDockerCmd as ps, displacedPhysicalIdShown as pt, green as q, printingCorpusOf as qa, refuseMalformedState as qi, ccProtectionRegistryTypes as qn, rewriteTemplateAssetReferences as qo, STATE_REGION_DIVERGED as qr, decodeListingKey as qs, refusesFinalSnapshot as qt, computeImplicitDeleteEdges as r, findActionableSilentDrops as ra, hasPlainPrototype$1 as rc, isReadableResourceEntry as ri, extractDeploymentEventError as rn, scrubResourceRecord as ro, isTerminationProtectionPropagationError as rr, validateContainerRepoName as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, NO_CC_HANDLERS_REASON as sa, describeFileReadFailure as sc, malformedLocalOutputsWarning as si, secretBearing as sn, isUncertifiedBaselineMaskPosition as so, DiffCalculator as sr, describeDockerCapturedOutput as ss, secretNamePrintingBag as st, DeployEngine as t, unreadableOrphanRecords as ta, defineOwnKey as tc, hasReadableResources as ti, DeploymentEventsReader as tn, markSameGenerationBag as to, disableInstanceApiTermination as tr, readBootstrapMarkerBody as ts, isHandledOrphan as tt, conditionFingerprint as u, shownType as ua, resolveAssemblyPath as uc, malformedOrphanRecordsRefusalMessage as ui, exportNameSecretExposure as un, carriesSecretMask as uo, classifyReplaySecretRegion as ur, dockerSpawnEnvWithSensitive as us, planOrphanAdoption as ut, withResourceDeadline as v, toCfnInteger as va, malformedResourceEntriesWarning as vi, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, STATE_SOURCED_CROSS_GENERATION_RULES as vo, sendableAssumeRoleCommand as vr, redactedDockerCause as vs, revertNestedChildFromJournal as vt, readProtection as w, configStringRefusal as wa, refuseDivergentRecordRegionForDestroy as wi, earliestDefined as wn, isLockInfoExpired as wo, s3BucketArn as wr, AssetManifestLoader as ws, replayRollback as wt, PROTECTION_PROPERTY_BY_TYPE as x, coerceCfnInteger as xa, malformedScrubResourceEntriesRefusalMessage as xi, findDestructiveChanges as xn, WHOLE_DYNAMIC_REFERENCE_PATTERN as xo, callerEnvCredentials as xr, warnFinchArgvExposure as xs, getCurrentNestedStackContext as xt, recordedProtectionEvidence as y, toFiniteNumber as ya, malformedResourcePropertiesWarning as yi, maskingRetryLogger as yn, STATE_SOURCED_READBACK_RULES as yo, AWS_CREDENTIAL_ENV_KEYS as yr, runDockerForeground as ys, revertedNestedRowIds as yt, isTruthyCfnBoolean as z, liveMatchesUnresolvedTokenFrame as za, refuseMalformedResourceEntriesForOrphan as zi, ProviderRegistry as zn, shouldRetainResource as zo, cfnRefValueFromPhysicalId as zr, warnDeprecatedNoPrefixCliFlag as zs, inheritProducerRegions as zt };
37925
+ //# sourceMappingURL=deploy-engine-Cm7z6aQk.js.map