@go-to-k/cdkd 0.296.21 → 0.296.23

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 UNRENDERABLE, C as looksLikeCdkdGeneratedName, E as withoutGeneratedFallbackName, F as displayStackName, I as isPasteableIdent, M as displayAwsMessage, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, S as getCurrentStackName, T as withStackName, V as truncateCodePoints, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, k as STACK_REF_MAX_CODE_POINTS, o as isStdoutReservedForPayload, r as safeStringify$1, t as describeAwsFailure, u as currentLogLineMasker, v as explicitNamePropertyFor, w as withSkipPrefix, x as getCurrentSkipPrefix, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
3
3
  import { $ as protectedReplacementAdvice, $n as isIamPropagationError, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bt as sanitizeRecoveryValue, Ct as RETRY_AUXILIARY_OWNER, Dn as SHELL_ACTIVE, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, G as runDeleteAttempt, Gn as isNameCooldownError, H as observeThenDisableProtection, Hn as isUpdateUnsupportedError, Ht as DEFAULT_STATE_PREFIX, In as quotedOrDescribed, J as DELETION_PROTECTION_DOC_POINTER, Jt as withPasteableAwsProfile, Kn as isRecreateRetryableError, Kt as producerRecordKey, L as ProtectionFlipRegistry, Ln as shellBoundedDisplay, Lt as formatLockExpiry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, Nt as UNREPRODUCIBLE_LOCK_CLAUSE, On as SHELL_ACTIVE_WHY, Ot as hasCreatedBeforeFailure, Pn as physicalIdShownBesideCommand, Pt as buildForceUnlockCommand, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, R as compensateProtectionFlip, Rn as shellQuote, Rt as formatLockOperation, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Un as hasReplayMayCollide, Ut as injectiveKey, Vt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Wn as isNameCollisionErrorFrom, Xn as formatRetryClassificationSignals, Xt as ambientCredentialConfig, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Zn as isAmbiguousCcHandlerErrorCode, Zt as clientDefaultsFor, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, ar as isThrottlingError, at as startInterruptWatch, bn as StateError, bt as maskDeep, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dn as MacroExpansionError, en as AssetError, er as isRetryableTransientError, f as removalWarning, fn as MalformedProducerRecordRefusalError, ft as logicalIdShown, gn as ResourceTimeoutError, gt as stateOrphanRecordRemedy, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as DependencyError, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, kn as UNSHOWABLE_VALUE, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, m as withoutInjectedRemovals, mt as resourceTypeShown, nr as retryClassificationText, on as DynamicReferenceRegionAmbiguousError, or as markNonRetryable, ot as ElapsedBudgetRegistry, qn as isReplayedNameCollisionFrom, rn as CrossAccountSecretRefusalError, sn as IntrinsicResolutionRefusalError, sr as markRedactedCause, st as monotonicNowMs, tn as CdkdError, tr as isTransientServerError, un as LockError, ut as compositeIdSeparatorRefusal, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as normalizeAwsError, wt as carryCreatedBeforeFailure, xn as SynthesisError, xt as maskerOrIdentity, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause, zt as formatLockOwner } from "./iam-policy-targets-BoZuWtxK.js";
4
4
  import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { t as getCdkdVersion } from "./version-_h48bvqX.js";
5
+ import { t as getCdkdVersion } from "./version-DqZBOzXK.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";
@@ -22952,7 +22952,7 @@ var CloudControlProvider = class {
22952
22952
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
22953
22953
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
22954
22954
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
22955
- const { ASGProvider } = await import("./asg-provider-D5_Zlj5T.js");
22955
+ const { ASGProvider } = await import("./asg-provider-CJ_0sDJ0.js");
22956
22956
  const delegateRegion = ambientRegion();
22957
22957
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
22958
22958
  if (asgProvider === void 0) {
@@ -23058,7 +23058,7 @@ var CloudControlProvider = class {
23058
23058
  const family = SDK_DELETE_FAMILIES.get(resourceType);
23059
23059
  const cached = this.sdkDeleteDelegates.get(family);
23060
23060
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
23061
- const provider = family === "rds" ? new (await (import("./rds-provider-CE85wFCg.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DGI_r9C8.js"))).NeptuneProvider({ region: ccRegion });
23061
+ const provider = family === "rds" ? new (await (import("./rds-provider-B9-Nsiua.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-eboBIa2N.js"))).NeptuneProvider({ region: ccRegion });
23062
23062
  this.sdkDeleteDelegates.set(family, {
23063
23063
  region: ccRegion,
23064
23064
  provider
@@ -24259,7 +24259,7 @@ const CR_NO_SERVICE_TOKEN_SKIP_REASON = "no ServiceToken in state — Delete han
24259
24259
  const CR_MASKED_SERVICE_TOKEN_SKIP_REASON = "masked ServiceToken in state — Delete handler not invoked";
24260
24260
  const CR_NOECHO_PROPERTIES_SKIP_REASON = "NoEcho mask in recorded properties — Delete handler not invoked";
24261
24261
  const CR_MASKED_PROPERTIES_SKIP_REASON = "redaction mask in properties — Delete handler not invoked";
24262
- const NOECHO_RERESOLUTION_BOUND = "cdkd re-resolves such a coordinate only where it holds the template ('cdkd destroy' with the app), and only while today's template reads a NoEcho parameter there with the property's text and inputs unchanged; an attribute a producer declared NoEcho has no template value to re-resolve.";
24262
+ const NOECHO_RERESOLUTION_BOUND = "cdkd re-resolves such a coordinate only where it holds the template ('cdkd destroy' with the app, or 'cdkd deploy --recreate-via-cc-api' naming this resource), and only while today's template reads a NoEcho parameter there with the property's text and inputs unchanged; an attribute a producer declared NoEcho has no template value to re-resolve.";
24263
24263
  function noEchoPropertiesRemedy(context, logicalId) {
24264
24264
  return context?.stackDestroy === true ? `cdkd is KEEPING the state record and the run exits non-zero, and every re-run skips it again. Tear down what the handler manages by hand, then drop the record with ${stateOrphanRecordRemedy(context, logicalId)}.` : "This delete is not part of a stack destroy (a 'cdkd deploy' template removal, replacement or rollback, or a 'cdkd rollback'). For a resource removed from the template the record is KEPT and every 'cdkd deploy' skips it again: tear down what the handler manages by hand. " + crDeploySkipTail(logicalId);
24265
24265
  }
@@ -29788,6 +29788,93 @@ function renderNestedStackTypeChangeRefusal(typeChanges, stackName) {
29788
29788
  return `Refusing to deploy ${stackName}: ` + (typeChanges.length === 1 ? `a resource changes its Type ` : `${typeChanges.length} resources change their Type `) + `into or out of ${NESTED_STACK_RESOURCE_TYPE}, which cdkd does not replace in place (issue #2668).\n${rows.join("\n")}\n Deploy this as two changes instead: give the new resource a DIFFERENT logical id (in CDK, rename the construct) so the existing row is deleted through its own type's provider and the new one is created under its own — or remove the resource in one deploy and add its replacement in the next. There is no flag that overrides this refusal.`;
29789
29789
  }
29790
29790
 
29791
+ //#endregion
29792
+ //#region src/deployment/rollback-executor/orphan-identity.ts
29793
+ const UNIQUE_PHYSICAL_ID_TYPES = /* @__PURE__ */ new Set([
29794
+ "AWS::EC2::VPC",
29795
+ "AWS::EC2::Subnet",
29796
+ "AWS::EC2::EIP",
29797
+ "AWS::EC2::NatGateway",
29798
+ "AWS::EC2::SecurityGroup",
29799
+ "AWS::EC2::Instance",
29800
+ "AWS::EFS::FileSystem",
29801
+ "AWS::EFS::MountTarget",
29802
+ "AWS::FSx::FileSystem",
29803
+ "AWS::KMS::Key",
29804
+ "AWS::CertificateManager::Certificate",
29805
+ "AWS::ElasticLoadBalancingV2::LoadBalancer",
29806
+ "AWS::ElasticLoadBalancingV2::TargetGroup",
29807
+ "AWS::ElasticLoadBalancingV2::Listener",
29808
+ "AWS::EMR::Cluster",
29809
+ "AWS::EMR::InstanceGroupConfig",
29810
+ "AWS::EMR::InstanceFleetConfig",
29811
+ "AWS::Cognito::UserPool",
29812
+ "AWS::Route53::HostedZone",
29813
+ "AWS::ServiceDiscovery::PrivateDnsNamespace",
29814
+ "AWS::ServiceDiscovery::PublicDnsNamespace",
29815
+ "AWS::ServiceDiscovery::HttpNamespace",
29816
+ "AWS::ServiceDiscovery::Service",
29817
+ "AWS::AppSync::GraphQLApi",
29818
+ "AWS::IAM::AccessKey",
29819
+ "AWS::Kinesis::StreamConsumer"
29820
+ ]);
29821
+ const CONTENT_COMPARED_DELETE_TYPES = /* @__PURE__ */ new Set(["AWS::SQS::QueuePolicy", "AWS::SNS::TopicPolicy"]);
29822
+ const CDKD_NAMESPACE_ID_TYPES = /* @__PURE__ */ new Set(["AWS::CloudFormation::Stack"]);
29823
+ function orphanDeleteNeedsIdentity(resourceType) {
29824
+ return !UNIQUE_PHYSICAL_ID_TYPES.has(resourceType) && !CONTENT_COMPARED_DELETE_TYPES.has(resourceType) && !CDKD_NAMESPACE_ID_TYPES.has(resourceType);
29825
+ }
29826
+ const RESOURCE_IDENTITY_TIMEOUT_MS = 1e4;
29827
+ async function readResourceIdentity(providerRegistry, target, region, timeoutMs = RESOURCE_IDENTITY_TIMEOUT_MS) {
29828
+ let timer;
29829
+ const timedOut = new Promise((resolve) => {
29830
+ timer = setTimeout(() => resolve(void 0), timeoutMs);
29831
+ });
29832
+ try {
29833
+ return await Promise.race([askResourceIdentity(providerRegistry, target, region), timedOut]);
29834
+ } finally {
29835
+ clearTimeout(timer);
29836
+ }
29837
+ }
29838
+ async function askResourceIdentity(providerRegistry, target, region) {
29839
+ try {
29840
+ const { provider } = providerRegistry.getProviderFor({
29841
+ resourceType: target.resourceType,
29842
+ provisionedBy: target.provisionedBy
29843
+ });
29844
+ if (typeof provider.resourceIdentity !== "function") return void 0;
29845
+ const identity = await provider.resourceIdentity(target.physicalId, target.resourceType, { expectedRegion: region });
29846
+ if (identity === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
29847
+ return typeof identity === "string" && identity !== "" ? identity : void 0;
29848
+ } catch {
29849
+ return;
29850
+ }
29851
+ }
29852
+ async function createdResourceStillThere(op, ctx) {
29853
+ if (op.deletionPolicy === "Retain") return "proven";
29854
+ if (!orphanDeleteNeedsIdentity(op.resourceType)) return "proven";
29855
+ const physicalId = op.physicalId;
29856
+ if (!physicalId) return "unproven";
29857
+ const live = await readResourceIdentity(ctx.providerRegistry, {
29858
+ resourceType: op.resourceType,
29859
+ physicalId,
29860
+ provisionedBy: op.provisionedBy
29861
+ }, ctx.region);
29862
+ if (live === RESOURCE_NOT_FOUND) return "gone";
29863
+ const journaled = op.createdResourceIdentity;
29864
+ if (typeof journaled !== "string" || journaled === "" || typeof live !== "string") return "unproven";
29865
+ return live === journaled ? "proven" : "mismatch";
29866
+ }
29867
+ async function askForeignHolder(foreignHolder, op) {
29868
+ try {
29869
+ return await foreignHolder(op.resourceType, op.physicalId);
29870
+ } catch {
29871
+ return {
29872
+ kind: "unreadable",
29873
+ what: "the other stacks' state records (the scan failed)"
29874
+ };
29875
+ }
29876
+ }
29877
+
29791
29878
  //#endregion
29792
29879
  //#region src/deployment/rollback-executor/plan.ts
29793
29880
  function journaledOldTypes(op) {
@@ -29989,6 +30076,61 @@ function planFailedOps(failedOps, stateResources) {
29989
30076
  effectiveProvisionedBy: effectiveProvisionedBy(failedOpOwnRecord(op, stateResources), op.provisionedBy)
29990
30077
  }));
29991
30078
  }
30079
+ const undecidedAtPreview = /* @__PURE__ */ new WeakSet();
30080
+ async function recheckMismatchedFailedCreate(op, action, stateResources, siblings, ctx, timeoutMs = RESOURCE_IDENTITY_TIMEOUT_MS, preview = false) {
30081
+ if (preview && action === "skip-failed-mismatch") {
30082
+ const rechecked = await recheckMismatchedFailedCreate(op, action, stateResources, siblings, ctx, timeoutMs);
30083
+ if (rechecked === action) undecidedAtPreview.add(op);
30084
+ return rechecked;
30085
+ }
30086
+ if (action !== "skip-failed-mismatch" || op.changeType !== "CREATE" || op.physicalIdRecoveredFromError !== true || typeof op.physicalId !== "string" || op.physicalId === "") return action;
30087
+ const record = Object.hasOwn(stateResources, op.logicalId) ? stateResources[op.logicalId] : void 0;
30088
+ if (record === void 0 || record.resourceType !== op.resourceType || typeof record.physicalId !== "string" || record.physicalId === "") return action;
30089
+ if (undecidedAtPreview.has(op)) return action;
30090
+ const journaledId = op.physicalId;
30091
+ const ask = async () => {
30092
+ try {
30093
+ const { provider } = ctx.providerRegistry.getProviderFor({
30094
+ resourceType: op.resourceType,
30095
+ provisionedBy: op.provisionedBy
30096
+ });
30097
+ if (typeof provider.isSameResource !== "function") return "unknown";
30098
+ return await provider.isSameResource(journaledId, {
30099
+ physicalId: record.physicalId,
30100
+ ...record.provisionedBy !== void 0 && { provisionedBy: record.provisionedBy }
30101
+ }, op.resourceType, { expectedRegion: ctx.region });
30102
+ } catch (error) {
30103
+ ctx.logger?.debug(safeMsg`Re-check of the kept orphan ${shownLogicalId(op.logicalId)} failed (${error instanceof Error ? error.name : typeof error}); keeping the skip`);
30104
+ return "unknown";
30105
+ }
30106
+ };
30107
+ let timer;
30108
+ const timedOut = new Promise((resolve) => {
30109
+ timer = setTimeout(() => resolve("unknown"), timeoutMs);
30110
+ });
30111
+ let verdict;
30112
+ try {
30113
+ verdict = await Promise.race([ask(), timedOut]);
30114
+ } finally {
30115
+ clearTimeout(timer);
30116
+ }
30117
+ if (verdict !== "different") return action;
30118
+ markProvenDistinctFromRecord(op, record);
30119
+ return classifyFailedOp(op, stateResources, siblings);
30120
+ }
30121
+ async function recheckFailedPlan(plan, stateResources, ctx, timeoutMs = RESOURCE_IDENTITY_TIMEOUT_MS) {
30122
+ const failedOps = plan.map((item) => item.op);
30123
+ const out = [];
30124
+ for (const item of plan) {
30125
+ const action = await recheckMismatchedFailedCreate(item.op, item.action, stateResources, failedOps, ctx, timeoutMs, true);
30126
+ out.push(action === item.action ? item : {
30127
+ ...item,
30128
+ action,
30129
+ effectiveProvisionedBy: effectiveProvisionedBy(failedOpOwnRecord(item.op, stateResources), item.op.provisionedBy)
30130
+ });
30131
+ }
30132
+ return out;
30133
+ }
29992
30134
  function planRollback(operations, stateResources, orphanLogicalIds = /* @__PURE__ */ new Set()) {
29993
30135
  const { createOps, otherOps } = partitionOps(operations);
29994
30136
  return [...[...otherOps].reverse(), ...sortRollbackCreates(createOps, stateResources)].map((op) => {
@@ -30667,93 +30809,6 @@ async function deleteMarkedRecreate(error, s) {
30667
30809
  return false;
30668
30810
  }
30669
30811
 
30670
- //#endregion
30671
- //#region src/deployment/rollback-executor/orphan-identity.ts
30672
- const UNIQUE_PHYSICAL_ID_TYPES = /* @__PURE__ */ new Set([
30673
- "AWS::EC2::VPC",
30674
- "AWS::EC2::Subnet",
30675
- "AWS::EC2::EIP",
30676
- "AWS::EC2::NatGateway",
30677
- "AWS::EC2::SecurityGroup",
30678
- "AWS::EC2::Instance",
30679
- "AWS::EFS::FileSystem",
30680
- "AWS::EFS::MountTarget",
30681
- "AWS::FSx::FileSystem",
30682
- "AWS::KMS::Key",
30683
- "AWS::CertificateManager::Certificate",
30684
- "AWS::ElasticLoadBalancingV2::LoadBalancer",
30685
- "AWS::ElasticLoadBalancingV2::TargetGroup",
30686
- "AWS::ElasticLoadBalancingV2::Listener",
30687
- "AWS::EMR::Cluster",
30688
- "AWS::EMR::InstanceGroupConfig",
30689
- "AWS::EMR::InstanceFleetConfig",
30690
- "AWS::Cognito::UserPool",
30691
- "AWS::Route53::HostedZone",
30692
- "AWS::ServiceDiscovery::PrivateDnsNamespace",
30693
- "AWS::ServiceDiscovery::PublicDnsNamespace",
30694
- "AWS::ServiceDiscovery::HttpNamespace",
30695
- "AWS::ServiceDiscovery::Service",
30696
- "AWS::AppSync::GraphQLApi",
30697
- "AWS::IAM::AccessKey",
30698
- "AWS::Kinesis::StreamConsumer"
30699
- ]);
30700
- const CONTENT_COMPARED_DELETE_TYPES = /* @__PURE__ */ new Set(["AWS::SQS::QueuePolicy", "AWS::SNS::TopicPolicy"]);
30701
- const CDKD_NAMESPACE_ID_TYPES = /* @__PURE__ */ new Set(["AWS::CloudFormation::Stack"]);
30702
- function orphanDeleteNeedsIdentity(resourceType) {
30703
- return !UNIQUE_PHYSICAL_ID_TYPES.has(resourceType) && !CONTENT_COMPARED_DELETE_TYPES.has(resourceType) && !CDKD_NAMESPACE_ID_TYPES.has(resourceType);
30704
- }
30705
- const RESOURCE_IDENTITY_TIMEOUT_MS = 1e4;
30706
- async function readResourceIdentity(providerRegistry, target, region, timeoutMs = RESOURCE_IDENTITY_TIMEOUT_MS) {
30707
- let timer;
30708
- const timedOut = new Promise((resolve) => {
30709
- timer = setTimeout(() => resolve(void 0), timeoutMs);
30710
- });
30711
- try {
30712
- return await Promise.race([askResourceIdentity(providerRegistry, target, region), timedOut]);
30713
- } finally {
30714
- clearTimeout(timer);
30715
- }
30716
- }
30717
- async function askResourceIdentity(providerRegistry, target, region) {
30718
- try {
30719
- const { provider } = providerRegistry.getProviderFor({
30720
- resourceType: target.resourceType,
30721
- provisionedBy: target.provisionedBy
30722
- });
30723
- if (typeof provider.resourceIdentity !== "function") return void 0;
30724
- const identity = await provider.resourceIdentity(target.physicalId, target.resourceType, { expectedRegion: region });
30725
- if (identity === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
30726
- return typeof identity === "string" && identity !== "" ? identity : void 0;
30727
- } catch {
30728
- return;
30729
- }
30730
- }
30731
- async function createdResourceStillThere(op, ctx) {
30732
- if (op.deletionPolicy === "Retain") return "proven";
30733
- if (!orphanDeleteNeedsIdentity(op.resourceType)) return "proven";
30734
- const physicalId = op.physicalId;
30735
- if (!physicalId) return "unproven";
30736
- const live = await readResourceIdentity(ctx.providerRegistry, {
30737
- resourceType: op.resourceType,
30738
- physicalId,
30739
- provisionedBy: op.provisionedBy
30740
- }, ctx.region);
30741
- if (live === RESOURCE_NOT_FOUND) return "gone";
30742
- const journaled = op.createdResourceIdentity;
30743
- if (typeof journaled !== "string" || journaled === "" || typeof live !== "string") return "unproven";
30744
- return live === journaled ? "proven" : "mismatch";
30745
- }
30746
- async function askForeignHolder(foreignHolder, op) {
30747
- try {
30748
- return await foreignHolder(op.resourceType, op.physicalId);
30749
- } catch {
30750
- return {
30751
- kind: "unreadable",
30752
- what: "the other stacks' state records (the scan failed)"
30753
- };
30754
- }
30755
- }
30756
-
30757
30812
  //#endregion
30758
30813
  //#region src/provisioning/remove-protection-types.ts
30759
30814
  const SDK_REMOVE_PROTECTION_TYPES = [
@@ -31002,7 +31057,13 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
31002
31057
  break;
31003
31058
  }
31004
31059
  const op = failedOps[i];
31005
- const action = classifyFailedOp(op, stateResources, failedOps);
31060
+ const classified = classifyFailedOp(op, stateResources, failedOps);
31061
+ const action = ctx.foreignHolder === void 0 ? classified : await recheckMismatchedFailedCreate(op, classified, stateResources, failedOps, ctx);
31062
+ if (classified === "skip-failed-mismatch" && options.isInterrupted?.()) {
31063
+ result.interrupted = true;
31064
+ for (let j = i; j >= 0; j--) pending.add(failedOps[j]);
31065
+ break;
31066
+ }
31006
31067
  const secrets = /* @__PURE__ */ new Map();
31007
31068
  const opMasker = createOpMasker(logger, secrets);
31008
31069
  const mask = opMasker.mask;
@@ -37136,6 +37197,115 @@ function isNoEchoPromotionOnly(change) {
37136
37197
  return change.changeType === "UPDATE" && (change.attributeChanges?.length ?? 0) === 0 && (change.propertyChanges?.length ?? 0) > 0 && change.propertyChanges.every((pc) => pc.noEchoPromoted === true);
37137
37198
  }
37138
37199
 
37200
+ //#endregion
37201
+ //#region src/deployment/custom-resource-service-token.ts
37202
+ const SERVICE_TOKEN_CHANGE_REFUSED = "CUSTOM_RESOURCE_SERVICE_TOKEN_CHANGED";
37203
+ function uncomparableToken(value) {
37204
+ if (value === void 0 || value === null || value === "") return "absent";
37205
+ if (typeof value !== "string") return "not-a-string";
37206
+ if (value.includes("***")) return "masked";
37207
+ if (dynamicReferenceTokens(value).length > 0) return "reference";
37208
+ }
37209
+ const SERVICE_TOKEN = "ServiceToken";
37210
+ function serviceTokenChange(change) {
37211
+ return change.propertyChanges?.find((pc) => pc.path === SERVICE_TOKEN);
37212
+ }
37213
+ function isSynthetic(pc) {
37214
+ return pc.replacementPropagated === true || pc.inPlacePropagated === true || pc.noEchoPromoted === true;
37215
+ }
37216
+ function isUnmovedPromotion(pc) {
37217
+ return pc.noEchoPromoted === true || pc.inPlacePropagated === true;
37218
+ }
37219
+ function diffMovedServiceToken(change) {
37220
+ const pc = serviceTokenChange(change);
37221
+ return pc !== void 0 && !isUnmovedPromotion(pc);
37222
+ }
37223
+ function findServiceTokenRefusals(input) {
37224
+ const refused = [];
37225
+ const deferred = [];
37226
+ for (const [logicalId, change] of input.changes) {
37227
+ if (change.changeType !== "UPDATE" || !isCustomResourceType(change.resourceType)) continue;
37228
+ if (!Object.hasOwn(input.stateResources, logicalId)) continue;
37229
+ const record = input.stateResources[logicalId];
37230
+ if (record === void 0 || record.resourceType !== change.resourceType) continue;
37231
+ if (input.recreateTargetIds?.has(logicalId) === true) continue;
37232
+ const pc = serviceTokenChange(change);
37233
+ if (pc === void 0) continue;
37234
+ const recordedToken = record.properties?.[SERVICE_TOKEN];
37235
+ const recordedProblem = uncomparableToken(recordedToken);
37236
+ if (recordedProblem !== void 0) {
37237
+ if (isUnmovedPromotion(pc)) continue;
37238
+ refused.push({
37239
+ logicalId,
37240
+ resourceType: change.resourceType,
37241
+ kind: "unjudgeable",
37242
+ recorded: recordedProblem
37243
+ });
37244
+ continue;
37245
+ }
37246
+ const desired = pc.newValue;
37247
+ if (!isSynthetic(pc) && uncomparableToken(desired) === void 0) {
37248
+ if (desired !== recordedToken) refused.push({
37249
+ logicalId,
37250
+ resourceType: change.resourceType,
37251
+ kind: "changed",
37252
+ desired
37253
+ });
37254
+ continue;
37255
+ }
37256
+ if (pc.replacementPropagated === true || pc.inPlacePropagated === true && pc.noEchoPromoted !== true || desired !== null && typeof desired === "object" && !isSynthetic(pc)) deferred.push({
37257
+ logicalId,
37258
+ resourceType: change.resourceType
37259
+ });
37260
+ }
37261
+ return {
37262
+ refused,
37263
+ deferred
37264
+ };
37265
+ }
37266
+ function serviceTokenUpdateRefusal(input) {
37267
+ if (!isCustomResourceType(input.resourceType) || input.recordedType !== input.resourceType) return;
37268
+ const recordedProblem = uncomparableToken(input.recorded);
37269
+ if (recordedProblem !== void 0) return input.diffSawTokenChange ? {
37270
+ logicalId: input.logicalId,
37271
+ resourceType: input.resourceType,
37272
+ kind: "unjudgeable",
37273
+ recorded: recordedProblem
37274
+ } : void 0;
37275
+ if (uncomparableToken(input.desired) !== void 0) return void 0;
37276
+ if (input.desired === input.recorded) return void 0;
37277
+ return {
37278
+ logicalId: input.logicalId,
37279
+ resourceType: input.resourceType,
37280
+ kind: "changed",
37281
+ desired: input.desired
37282
+ };
37283
+ }
37284
+ const UNCOMPARABLE_TEXT = {
37285
+ absent: "missing",
37286
+ masked: `the redaction mask '${"***"}'`,
37287
+ reference: "a '{{resolve:...}}' dynamic reference",
37288
+ "not-a-string": "not a string"
37289
+ };
37290
+ function rowText(refusal, mask) {
37291
+ const id = displayIdent(refusal.logicalId);
37292
+ if (refusal.kind === "changed") return `${id}: ServiceToken changes to ${displayIdent(mask(refusal.desired))}, away from the handler its record names.`;
37293
+ return `${id}: its recorded ServiceToken is ${UNCOMPARABLE_TEXT[refusal.recorded]}, so cdkd cannot tell whether this deploy changes it.`;
37294
+ }
37295
+ const REMEDY = "To move a custom resource to a different handler, give it a new logical id (in CDK, a new construct id, or overrideLogicalId on its CfnResource): the deploy then creates the new resource through the new handler and deletes the old one through its old handler. To keep the existing resource, deploy its previous ServiceToken.";
37296
+ const UNJUDGEABLE_REMEDY = `Where the recorded ServiceToken is unreadable and the handler did not change, put the ARN of the handler that created this resource (the one it was last deployed with, not the one the template names now) back as ServiceToken in state.json (a ServiceToken fed by a NoEcho parameter is recorded only as '${"***"}': feed it from a plain value) and re-deploy.`;
37297
+ function renderServiceTokenRefusal(refusals, stackName, mask = (text) => text) {
37298
+ const rows = refusals.map((refusal) => ` - ${rowText(refusal, mask)}`);
37299
+ return `Refusing to deploy ${stackName}: ` + (refusals.length === 1 ? `a custom resource's ServiceToken changes` : `${refusals.length} custom resources' ServiceTokens change`) + `, which CloudFormation does not allow ("Modifying service token is not allowed") (issue #4749). Nothing was sent to either handler.
37300
+ ${rows.join("\n")}\n ${REMEDY}` + (refusals.some((refusal) => refusal.kind === "unjudgeable") ? `\n ${UNJUDGEABLE_REMEDY}` : "");
37301
+ }
37302
+ function serviceTokenBlockingReason(refusal, mask) {
37303
+ return `${rowText(refusal, mask)} cdkd deploy refuses a changed custom-resource ServiceToken, as CloudFormation does (issue #4749); give the custom resource a new logical id to move it to another handler.`;
37304
+ }
37305
+ function deferredServiceTokenWarning(row) {
37306
+ return `${displayIdent(row.logicalId)}: its ServiceToken reads a resource this deploy replaces, creates or updates, or a value this preview cannot resolve. If it resolves to a different ARN than the one recorded, cdkd deploy refuses the update before invoking any handler and rolls back (issue #4749). A replaced backing function is already deleted by then and the rollback re-creates it; if that fails, the record names a function that no longer exists.`;
37307
+ }
37308
+
37139
37309
  //#endregion
37140
37310
  //#region src/deployment/deploy-engine/update.ts
37141
37311
  function isWhollyMask(value) {
@@ -37587,6 +37757,15 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
37587
37757
  updateSecrets,
37588
37758
  lostWithParent
37589
37759
  }));
37760
+ const serviceTokenRefusal = serviceTokenUpdateRefusal({
37761
+ logicalId,
37762
+ resourceType,
37763
+ recordedType: currentResource.resourceType,
37764
+ recorded: currentResource.properties?.["ServiceToken"],
37765
+ desired: resolvedProps["ServiceToken"],
37766
+ diffSawTokenChange: diffMovedServiceToken(change)
37767
+ });
37768
+ if (serviceTokenRefusal !== void 0) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(renderServiceTokenRefusal([serviceTokenRefusal], stackName, createSecretMasker(updateSecrets)), SERVICE_TOKEN_CHANGE_REFUSED)));
37590
37769
  return markRestored(await this.updateInPlace({
37591
37770
  conditions,
37592
37771
  counts,
@@ -39733,6 +39912,15 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
39733
39912
  stateResources: currentState.resources
39734
39913
  });
39735
39914
  if (nestedStackTypeChanges.length > 0) throw markNonRetryable(new CdkdError(renderNestedStackTypeChangeRefusal(nestedStackTypeChanges, stackName), "TYPE_CHANGE_NESTED_STACK"));
39915
+ const serviceTokenRefusals = findServiceTokenRefusals({
39916
+ changes,
39917
+ stateResources: currentState.resources,
39918
+ recreateTargetIds: recreateTargetIdsFor(this.options.recreateTargets, stackName)
39919
+ }).refused;
39920
+ if (serviceTokenRefusals.length > 0) {
39921
+ const mask = this.diffLogMasker(diffResolverContext.recordedSecretValues, effectiveTemplate, parameterValues);
39922
+ throw markNonRetryable(new CdkdError(renderServiceTokenRefusal(serviceTokenRefusals, stackName, mask), SERVICE_TOKEN_CHANGE_REFUSED));
39923
+ }
39736
39924
  const recreatePromotion = promoteRecreateTargets(changes, this.options.recreateTargets, stackName);
39737
39925
  for (const id of recreatePromotion.promoted) this.logger.debug(safeMsg`UPDATE (recreate target): ${id} has no template change; recreating it as requested`);
39738
39926
  for (const { logicalId, flag, changeType } of recreatePromotion.unreached) this.logger.warn(changeType === void 0 ? safeMsg`${flag} ${logicalId}: not recreated, this deploy has no such resource.` : safeMsg`${flag} ${logicalId}: not recreated, this deploy will ${changeType.toLowerCase()} it instead.`);
@@ -40433,5 +40621,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
40433
40621
  DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
40434
40622
 
40435
40623
  //#endregion
40436
- export { computeParameterTaint as $, DagBuilder as $a, refuseMalformedResourceEntriesForImportSave as $i, wouldReturnToSdkProvider as $n, describeRegionValueKind as $o, cfnRefValueFromPhysicalId as $r, getLegacyStateBucketName as $s, secretNamePrintingBag as $t, beginDeleteWait as A, renderStatefulReason as Aa, absoluteAssemblyPathEscape as Ac, malformedOutputsRefusalMessage as Ai, maskingRetryLogger as An, identityKeyFor as Ao, explicitRoleArnOrThrow as Ar, resolveDockerContextDirectory as As, removeProtectionTypeList as At, S3_AUTO_DELETE_OBJECTS_TAG as B, configStringRefusal as Ba, refuseMalformedNestedChildOutputs as Bi, DBPROXY_TAGS_WHAT as Bn, wholeStringLeavesOf as Bo, s3BucketDualStackDomainName as Br, partitionSensitiveEnv as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, NO_CC_HANDLERS_REASON as Ca, StageLoadError as Cc, malformedLocalResourceEntriesWarning as Ci, noEchoParameterValueSeed as Cn, markSameGenerationBag as Co, poisonRenderedSpellingsCollidingIn as Cr, isCrossRegionRedirect as Cs, sameJournaledOrphans as Ct, readProtection as D, MULTI_REGION_RECREATE_BLOCKED_TYPES as Da, hasPlainPrototype$1 as Dc, malformedOrphanRowsKeptWarning as Di, bindingSkippedOutputs as Dn, dynamicReferenceTokens as Do, applyRoleArnIfSet as Dr, validateContainerRepoName as Ds, destroyStackRecordsView as Dt, perType as E, shownType as Ea, hasOwnKey as Ec, malformedOrphanRecordsWarning as Ei, isExportAliasCollision as En, DYNAMIC_REFERENCE_TOKEN_SCAN as Eo, regionLessSecretName as Er, validateAssetBucketName as Es, awaitInFlightSibling as Et, DELETE_INDEX_WAIT_PROCEED_NOTE as F, toFiniteNumber as Fa, clearBucketRegionCache as Fc, malformedResourcesWarning as Fi, earliestDefined as Fn, provenPublicValue as Fo, callerEnvCredentials as Fr, finchSecretArgvRefusal as Fs, isReplacementOrphan as Ft, formatResourceLine as G, requireConfigString as Ga, refuseMalformedOrphansForOrphan as Gi, tagMapAsList as Gn, WHOLE_DYNAMIC_REFERENCE_PATTERN as Go, parameterTypeMayLoseSecretIdentity as Gr, warnFinchArgvExposure as Gs, redactedDeleteAddressFields as Gt, isTruthyCfnBoolean as H, replayWarn as Ha, refuseMalformedOrphanRecordsForDestroy as Hi, planTagDiff as Hn, STATE_SOURCED_CROSS_GENERATION_RULES as Ho, s3BucketWebsiteUrl as Hr, redactedDockerCause as Hs, inheritProducerRegions as Ht, INDEX_SETTLE_POLL_INTERVAL_MS as I, coerceCfnBoolean as Ia, resolveBucketRegion as Ic, malformedScrubResourceEntriesRefusalMessage as Ii, ledgerForStack as In, recordMaskOnlyValue as Io, envCredentialsAreAssumedRole as Ir, formatDockerLoginError as Is, planFailedOps as It, cyan as J, describeTypeWithThrottleRetry as Ja, refuseMalformedResourceAttributesForOrphan as Ji, stringifyIfAssigned as Jn, isLockInfoExpired as Jo, carriesDynamicReference as Jr, AssetManifestLoader as Js, updatePartialReason as Jt, createReadOnlyAttributeHealerFactory as K, prefetchCreateOnlyPropertyPaths as Ka, refuseMalformedOutputs as Ki, tagPlanWarning as Kn, isSingleDynamicReferenceToken as Ko, getAccountInfo as Kr, escapeRegExp$3 as Ks, redactedDeleteAddressSkip as Kt, deleteTableWithIndexBusyRetry as L, coerceCfnInteger as La, malformedStateRefusalMessage as Li, reserveStackCreateToken as Ln, recordMaskOnlyValuesIn as Lo, isSettledInstanceState as Lr, getDockerCmd as Ls, planRollback as Lt, deleteBudgetKey as M, coerceWarmThroughput as Ma, displayAssemblyPath as Mc, malformedRenderedContainersWarning as Mi, findDestructiveChanges as Mn, recordNestedStackParameterExpressions as Mo, sendableAssumeRoleCommand as Mr, describeDockerExecFailure as Ms, recordAfterRollbackUpdate as Mt, resolveDynamoDbDeleteBudgetClock as N, isWarmThroughputDecrease as Na, renderAssemblyPathEscape as Nc, malformedResourceEntriesWarning as Ni, formatDestructiveChange as Nn, recoverMaskedOutput as No, AWS_CREDENTIAL_ENV_KEYS as Nr, describeDockerFailure as Ns, demoteSupersededOrphans as Nt, DynamoDBGlobalTableProvider as O, isStatefulRecreateTargetForReplace as Oa, nullPrototypeRecord as Oc, malformedOrphansRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, isUncertifiedBaselineMaskPosition as Oo, assertFlagRoleArn as Or, buildDenyExternalAccessPolicy as Os, getStackRecords as Ot, resolveDynamoDbDeleteBudgetMs as P, toCfnInteger as Pa, resolveAssemblyPath as Pc, malformedResourcePropertiesWarning as Pi, RollbackInlinePolicyWriters as Pn, carriesSecretMask as Po, applyCallerIdentityCredentials as Pr, dockerSpawnEnvWithSensitive as Ps, isJournaledOrphan as Pt, yellow as Q, sameLambdaFunctionAddress as Qa, refuseMalformedResourceEntriesForImport as Qi, isCustomResource as Qn, acceptedCreateOnlyDropsOf as Qo, AWS_NO_VALUE as Qr, getDefaultStateBucketName as Qs, orphanRecordsPrintingBag as Qt, waitForIndexesSettled as R, configBooleanRefusal as Ra, previewableOrphanRecords as Ri, withCreateTokenLedger as Rn, recordNoEchoAttributeValues as Ro, s3BucketArn as Rr, isDockerClientEnvKey as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, withoutSilentDropProperties as Sa, AssemblyReader as Sc, malformedLocalOutputsWarning as Si, isWholeDynamicReferenceValue as Sn, maskSecretsInText as So, IntrinsicFunctionResolver as Sr, getBootstrapMarkerKey as Ss, makeForeignHolderScan as St, isProtectionValueActive as T, findReplacedReadersOfRecreateTargets as Ta, defineOwnKey as Tc, malformedOrphanRecordsRefusalMessage as Ti, collectPublishedOutputNames as Tn, scrubResourceRecord as To, producerRegionsFromState as Tr, readBootstrapMarkerBody as Ts, replayRollback as Tt, getPriorAttempts as U, requireConfigArray as Ua, refuseMalformedOrphans as Ui, readTagList as Un, STATE_SOURCED_READBACK_RULES as Uo, coerceParameterTypedValue as Ur, runDockerForeground as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, hasCdkAutoDeleteTag as V, readConfigString as Va, refuseMalformedOrphanRecords as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_BASELINE_RULES as Vo, s3BucketRegionalDomainName as Vr, redactDockerArgvValues as Vs, getCurrentProducerRegions as Vt, markRefusedBeforeApplying as W, requireConfigObject as Wa, refuseMalformedOrphansForDestroy as Wi, refuseMalformedDesiredTags as Wn, TEMPLATE_SOURCED_RULES as Wo, isUnboundTemplateParameter as Wr, runDockerStreaming as Ws, isRedactedRecordedValue as Wt, green as X, canonicalLambdaFunctionName as Xa, refuseMalformedResourceEntriesForDeploy as Xi, ProviderRegistry as Xn, rebuildClientForBucketRegion as Xo, isNamelessDynamicReferenceError as Xr, Synthesizer as Xs, journaledOrphanPrintingBag as Xt, gray as Y, withRetry as Ya, refuseMalformedResourceEntries as Yi, CC_BROKEN_REASON as Yn, S3StateBackend as Yo, carriesFetchableDynamicReference as Yr, getDockerImageBySourceHash as Ys, completedReplayEntries as Yt, red as Z, lambdaFunctionNameForMask as Za, refuseMalformedResourceEntriesForDestroy as Zi, ccBrokenReason as Zn, splitImportedOps as Zo, keepsSecretReferenceToken as Zr, synthesisStatusMessage as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, unreadableResourceEntries as _a, decodeListingKey as _c, isReadableOrphanRecord as _i, secretBearingStateKeyWarning as _n, recordLogOnlyValue as _o, observeThenDisableInstanceApiTermination as _r, rewriteTemplateAssetReferences as _s, deleteJournaledOrphans as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForDeploy as aa, resolveStateBucketWithDefault as ac, passedParameterClassesOf as ai, createPreDeleteFinalSnapshot as an, noEchoLeavesOf as ao, CloudControlProvider as ar, importableOutputs as as, NESTED_PENDING_PARENT_REASON as at, noEchoComparisonForTemplate as b, findSilentDropProperties as ba, canonicalizeRegion as bc, malformedExportNamesWarning as bi, exportNameNoEchoParameters as bn, errorCauseChain as bo, DiffCalculator as br, assertAssetBucketRegion as bs, journaledOrphanLines as bt, renderNestedTemplateTreeDefect as c, refuseMalformedState as ca, stateBucketExistenceConfirmed as cc, STATE_RESOURCES_MALFORMED as ci, refusesFinalSnapshot as cn, readsNoEchoSource as co, UNSPECIFIED_SKIP_REASON as cr, orphansCarriedFrom as cs, dropSettledNestedJournals as ct, conditionInputsFrom as d, repairMalformedOutputsForReadOnly as da, CFN_TEMPLATE_BODY_LIMIT as dc, accountArgs as di, DeploymentEventsStore as dn, createUnionSecretMasker as do, withIndeterminateGuard as dr, isSensitiveAttributeName as ds, recordDisplacedSkips as dt, refuseMalformedResourceEntriesForOrphan as ea, loadCdkJson as ec, isStalePlaceholderArnAttribute as ei, stateSecretNameNeedles as en, TemplateParser as eo, TemplateNoEchoReresolver as er, exportNamesCarriedFrom as es, namesAnyDeclaredParameter as et, parentSuppliedValues as f, repairMalformedResourceEntriesForReadOnly as fa, CFN_TEMPLATE_URL_LIMIT as fc, deployRefusesOrphanRowsReason as fi, extractDeploymentEventError as fn, hasMaskableValues as fo, isWaitAbandonedError as fr, stringifyValue as fs, revertNestedChildFromJournal as ft, mergeNoChangeOutputs as g, unreadableOrphanRecords as ga, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as gc, hasReadableResources as gi, secretBearing as gn, recordLogOnlyParameterValue as go, isTerminationProtectionPropagationError as gr, loadPublishableAssetManifest as gs, withNestedStackContext as gt, keptWholeReasonText as h, unpreviewableOrphanRecords as ha, uploadCfnTemplate as hc, hasReadableOutputs as hi, exportAliasCollisionScrubWarning as hn, printingCorpusOf as ho, ec2InstanceProtectionSite as hr, createAssetRedirectResolver as hs, getCurrentNestedStackContext as ht, childTemplateLoader as i, refuseMalformedResourcePropertiesForOrphan as ia, resolveSkipPrefix as ic, parameterInputsFor as ii, ccRoutedFinalSnapshotError as in, maskedLeafCoordinatesOf as io, withPrintingSecrets as ir, importableOutputKeys as is, planOrphanAdoption as it, compensateRemovedDeletionProtection as j, WARM_THROUGHPUT_MEMBERS as ja, describeFileReadFailure as jc, malformedOutputsWarning as ji, constructPathOf as jn, inheritNestedStackParameterAssociations as jo, isIamRoleArn as jr, describeDockerCapturedOutput as js, orphanDeleteNeedsIdentity as jt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, isStatefulRecreateTargetSync as ka, ownValue as kc, malformedOrphansWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, pathCrossesDottedKey as ko, assertSendableRoleArn as kr, buildDockerImage as ks, withStackRecords as kt, templateIdentity as l, repairMalformedOrphanRecordsForReadOnly as la, warnDeprecatedNoPrefixCliFlag as lc, UNREADABLE_ORPHANS_CONTAINER_ROW as li, unsupportedFinalSnapshotError as ln, liveMatchesUnresolvedTokenFrame as lo, deleteIndeterminateGuards as lr, shouldRetainResource as ls, getNestedRevertRun as lt, isSecretBearingReferenceString as m, repairMalformedResourcesForReadOnly as ma, findLargeInlineResources as mc, hasReadableOrphans as mi, displayTextOrWithheld as mn, logOnlyValueCount as mo, disableInstanceApiTermination as mr, buildAssetRedirectMap as ms, withNestedRevertRun as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForDrift as na, resolveAutoAssetStorage as nc, parseWebACLArn as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskReadbackAtCoordinates as no, isCustomResourceType as nr, hasReasonlessBaselineRefusal as ns, resourcesNamingDeclaredParameter as nt, isAbsoluteAssetPath as o, refuseMalformedResourcesForDestroy as oa, resolveStateBucketWithDefaultAndSource as oc, JSON_LISTING_HOLE_VALUE as oi, effectiveDeletionPolicy as on, noEchoOutputsComparison as oo, slowCcOperationTimeoutMs as or, isReadableBag as os, displacedOpClause as ot, readRecordedConditionVerdicts as p, repairMalformedResourcePropertiesForReadOnly as pa, MIGRATE_TMP_PREFIX as pc, displayLogicalId as pi, WITHHELD_NAME_DISPLAY as pn, literalSplitDelimitersOf as po, markWaitAbandoned as pr, WorkGraph as ps, revertedNestedRowIds as pt, bold as q, templateResourceTypes as qa, refuseMalformedOutputsForDestroy as qi, definedAttributes as qn, LockManager as qo, isImpossibleEmptyStoredAttribute as qr, stripControlChars as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcePropertiesForExport as ra, resolveCaptureObservedState as rc, withSharedDrainBudget as ri, buildFinalSnapshotIdentifier as rn, maskWholeValue as ro, getCurrentResourceSecrets as rr, hasUnverifiableParameterRefusal as rs, makeSiblingClaimReader as rt, listNestedTemplateRows as s, refuseMalformedResourcesForExport as sa, resolveUseCdkBootstrapAssets as sc, STATE_REGION_DIVERGED as si, isFinalSnapshotError as sn, passedNoEchoParametersOf as so, unchangedBehindSecretReference as sr, orphansAfterRollback as ss, displacedPhysicalIdShown as st, DeployEngine as t, refuseMalformedResourcePropertiesForDestroy as ta, resolveApp as tc, refStateLookupFromResource as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, isMarkedCoordinate as to, readsNoEchoDeleteValues as tr, hasReadableExportSet as ts, reachableDivergentParameters as tt, conditionFingerprint as u, repairMalformedOrphansForReadOnly as ua, ssmResolvedValueType as uc, UNREADABLE_RESOURCES_MAP_ROW as ui, DeploymentEventsReader as un, carryLogOnlyValues as uo, deleteSkipReason as ur, AssetPublisher as us, nestedChildStackName as ut, withResourceDeadline as v, withheldAccountClause as va, expectedOwnerParam as vc, isReadableResourceEntry as vi, secretSafeKeyDisplay as vn, shareLogOnlyValues as vo, reDisableInstanceApiTermination as vr, AssetModeResolver as vs, dropFailedHint as vt, PROTECTION_PROPERTY_BY_TYPE as w, hasNoCloudControlHandlers as wa, processStackMessages as wc, malformedLocalResourcesWarning as wi, collectDeclaredOutputNames as wn, redactSecretsForState as wo, classifyReplaySecretRegion as wr, parseBootstrapMarker as ws, replayFailedOperations as wt, noEchoParameterNamesOf as x, unwrittenCreateOnlyReplacement as xa, derivePartitionAndUrlSuffix as xc, malformedExportSourceWarning as xi, exportNameSecretExposure as xn, maskSecretsInError as xo, INTRINSIC_KEYS as xr, ensureAssetStorage as xs, loadJournaledOrphans as xt, noEchoAttributeNamesOf as y, findActionableSilentDrops as ya, PARTITION_TABLE as yc, malformedDriftResourcePropertiesWarning as yi, carriedExportAliasExposure as yn, createSecretMasker as yo, reEnableInstanceApiTermination as yr, BOOTSTRAP_MARKER_PREFIX as ys, isHandledOrphan as yt, ECR_AUTO_DELETE_IMAGES_TAG as z, configIntegerRefusal as za, refuseDivergentRecordRegionForDestroy as zi, acquireIdempotencyToken as zn, recordProvenPublicExpression as zo, s3BucketDomainName as zr, isMalformedEnvKey as zs, resolveReplacementOldType as zt };
40437
- //# sourceMappingURL=deploy-engine-CFgNpsEy.js.map
40624
+ export { green as $, describeTypeWithThrottleRetry as $a, refuseMalformedResourceAttributesForOrphan as $i, stringifyIfAssigned as $n, isLockInfoExpired as $o, carriesDynamicReference as $r, AssetManifestLoader as $s, updatePartialReason as $t, readProtection as A, findReplacedReadersOfRecreateTargets as Aa, defineOwnKey as Ac, malformedOrphanRecordsRefusalMessage as Ai, collectPublishedOutputNames as An, scrubResourceRecord as Ao, producerRegionsFromState as Ar, readBootstrapMarkerBody as As, destroyStackRecordsView as At, deleteTableWithIndexBusyRetry as B, toFiniteNumber as Ba, clearBucketRegionCache as Bc, malformedResourcesWarning as Bi, earliestDefined as Bn, provenPublicValue as Bo, callerEnvCredentials as Br, finchSecretArgvRefusal as Bs, recheckFailedPlan as Bt, noEchoComparisonForTemplate as C, withheldAccountClause as Ca, expectedOwnerParam as Cc, isReadableResourceEntry as Ci, secretSafeKeyDisplay as Cn, shareLogOnlyValues as Co, reDisableInstanceApiTermination as Cr, AssetModeResolver as Cs, journaledOrphanLines as Ct, PROTECTION_PROPERTY_BY_TYPE as D, withoutSilentDropProperties as Da, AssemblyReader as Dc, malformedLocalOutputsWarning as Di, isWholeDynamicReferenceValue as Dn, maskSecretsInText as Do, IntrinsicFunctionResolver as Dr, getBootstrapMarkerKey as Ds, replayFailedOperations as Dt, recordedProtectionNote as E, unwrittenCreateOnlyReplacement as Ea, derivePartitionAndUrlSuffix as Ec, malformedExportSourceWarning as Ei, exportNameSecretExposure as En, maskSecretsInError as Eo, INTRINSIC_KEYS as Er, ensureAssetStorage as Es, sameJournaledOrphans as Et, deleteBudgetKey as F, renderStatefulReason as Fa, absoluteAssemblyPathEscape as Fc, malformedOutputsRefusalMessage as Fi, maskingRetryLogger as Fn, identityKeyFor as Fo, explicitRoleArnOrThrow as Fr, resolveDockerContextDirectory as Fs, demoteSupersededOrphans as Ft, isTruthyCfnBoolean as G, configStringRefusal as Ga, refuseMalformedNestedChildOutputs as Gi, DBPROXY_TAGS_WHAT as Gn, wholeStringLeavesOf as Go, s3BucketDualStackDomainName as Gr, partitionSensitiveEnv as Gs, findNestedStackTypeChanges as Gt, ECR_AUTO_DELETE_IMAGES_TAG as H, coerceCfnInteger as Ha, malformedStateRefusalMessage as Hi, reserveStackCreateToken as Hn, recordMaskOnlyValuesIn as Ho, isSettledInstanceState as Hr, getDockerCmd as Hs, replacementNeverSwapped as Ht, resolveDynamoDbDeleteBudgetClock as I, WARM_THROUGHPUT_MEMBERS as Ia, describeFileReadFailure as Ic, malformedOutputsWarning as Ii, constructPathOf as In, inheritNestedStackParameterAssociations as Io, isIamRoleArn as Ir, describeDockerCapturedOutput as Is, isJournaledOrphan as It, formatResourceLine as J, requireConfigArray as Ja, refuseMalformedOrphans as Ji, readTagList as Jn, STATE_SOURCED_READBACK_RULES as Jo, coerceParameterTypedValue as Jr, runDockerForeground as Js, REDACTED_DELETE_ADDRESS_SKIP_REASON as Jt, getPriorAttempts as K, readConfigString as Ka, refuseMalformedOrphanRecords as Ki, DBPROXY_TAG_OPTIONS as Kn, STATE_SOURCED_BASELINE_RULES as Ko, s3BucketRegionalDomainName as Kr, redactDockerArgvValues as Ks, getCurrentProducerRegions as Kt, resolveDynamoDbDeleteBudgetMs as L, coerceWarmThroughput as La, displayAssemblyPath as Lc, malformedRenderedContainersWarning as Li, findDestructiveChanges as Ln, recordNestedStackParameterExpressions as Lo, sendableAssumeRoleCommand as Lr, describeDockerExecFailure as Ls, isReplacementOrphan as Lt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as M, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ma, hasPlainPrototype$1 as Mc, malformedOrphanRowsKeptWarning as Mi, bindingSkippedOutputs as Mn, dynamicReferenceTokens as Mo, applyRoleArnIfSet as Mr, validateContainerRepoName as Ms, withStackRecords as Mt, beginDeleteWait as N, isStatefulRecreateTargetForReplace as Na, nullPrototypeRecord as Nc, malformedOrphansRefusalMessage as Ni, DEFAULT_RESOURCE_TIMEOUT_MS as Nn, isUncertifiedBaselineMaskPosition as No, assertFlagRoleArn as Nr, buildDenyExternalAccessPolicy as Ns, removeProtectionTypeList as Nt, isProtectionValueActive as O, NO_CC_HANDLERS_REASON as Oa, StageLoadError as Oc, malformedLocalResourceEntriesWarning as Oi, noEchoParameterValueSeed as On, markSameGenerationBag as Oo, poisonRenderedSpellingsCollidingIn as Or, isCrossRegionRedirect as Os, replayRollback as Ot, compensateRemovedDeletionProtection as P, isStatefulRecreateTargetSync as Pa, ownValue as Pc, malformedOrphansWarning as Pi, DEFAULT_RESOURCE_WARN_AFTER_MS as Pn, pathCrossesDottedKey as Po, assertSendableRoleArn as Pr, buildDockerImage as Ps, recordAfterRollbackUpdate as Pt, gray as Q, templateResourceTypes as Qa, refuseMalformedOutputsForDestroy as Qi, definedAttributes as Qn, LockManager as Qo, isImpossibleEmptyStoredAttribute as Qr, stripControlChars as Qs, updatePartialMessage as Qt, DELETE_INDEX_WAIT_PROCEED_NOTE as R, isWarmThroughputDecrease as Ra, renderAssemblyPathEscape as Rc, malformedResourceEntriesWarning as Ri, formatDestructiveChange as Rn, recoverMaskedOutput as Ro, AWS_CREDENTIAL_ENV_KEYS as Rr, describeDockerFailure as Rs, planFailedOps as Rt, noEchoAttributeNamesOf as S, unreadableResourceEntries as Sa, decodeListingKey as Sc, isReadableOrphanRecord as Si, secretBearingStateKeyWarning as Sn, recordLogOnlyValue as So, observeThenDisableInstanceApiTermination as Sr, rewriteTemplateAssetReferences as Ss, isHandledOrphan as St, recordedProtectionEvidence as T, findSilentDropProperties as Ta, canonicalizeRegion as Tc, malformedExportNamesWarning as Ti, exportNameNoEchoParameters as Tn, errorCauseChain as To, DiffCalculator as Tr, assertAssetBucketRegion as Ts, makeForeignHolderScan as Tt, S3_AUTO_DELETE_OBJECTS_TAG as U, configBooleanRefusal as Ua, previewableOrphanRecords as Ui, withCreateTokenLedger as Un, recordNoEchoAttributeValues as Uo, s3BucketArn as Ur, isDockerClientEnvKey as Us, resolveReplacementOldType as Ut, waitForIndexesSettled as V, coerceCfnBoolean as Va, resolveBucketRegion as Vc, malformedScrubResourceEntriesRefusalMessage as Vi, ledgerForStack as Vn, recordMaskOnlyValue as Vo, envCredentialsAreAssumedRole as Vr, formatDockerLoginError as Vs, recordUnderIdIsNotOwn as Vt, hasCdkAutoDeleteTag as W, configIntegerRefusal as Wa, refuseDivergentRecordRegionForDestroy as Wi, acquireIdempotencyToken as Wn, recordProvenPublicExpression as Wo, s3BucketDomainName as Wr, isMalformedEnvKey as Ws, orphanDeleteNeedsIdentity as Wt, bold as X, requireConfigString as Xa, refuseMalformedOrphansForOrphan as Xi, tagMapAsList as Xn, WHOLE_DYNAMIC_REFERENCE_PATTERN as Xo, parameterTypeMayLoseSecretIdentity as Xr, warnFinchArgvExposure as Xs, redactedDeleteAddressFields as Xt, createReadOnlyAttributeHealerFactory as Y, requireConfigObject as Ya, refuseMalformedOrphansForDestroy as Yi, refuseMalformedDesiredTags as Yn, TEMPLATE_SOURCED_RULES as Yo, isUnboundTemplateParameter as Yr, runDockerStreaming as Ys, isRedactedRecordedValue as Yt, cyan as Z, prefetchCreateOnlyPropertyPaths as Za, refuseMalformedOutputs as Zi, tagPlanWarning as Zn, isSingleDynamicReferenceToken as Zo, getAccountInfo as Zr, escapeRegExp$3 as Zs, redactedDeleteAddressSkip as Zt, makeCanonicalizePropertiesFn as _, repairMalformedResourceEntriesForReadOnly as _a, CFN_TEMPLATE_URL_LIMIT as _c, deployRefusesOrphanRowsReason as _i, extractDeploymentEventError as _n, hasMaskableValues as _o, isWaitAbandonedError as _r, stringifyValue as _s, withNestedRevertRun as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourceEntriesForOrphan as aa, loadCdkJson as ac, isStalePlaceholderArnAttribute as ai, stateSecretNameNeedles as an, TemplateParser as ao, TemplateNoEchoReresolver as ar, exportNamesCarriedFrom as as, resourcesNamingDeclaredParameter as at, serviceTokenBlockingReason as b, unpreviewableOrphanRecords as ba, uploadCfnTemplate as bc, hasReadableOutputs as bi, exportAliasCollisionScrubWarning as bn, printingCorpusOf as bo, ec2InstanceProtectionSite as br, createAssetRedirectResolver as bs, deleteJournaledOrphans as bt, renderNestedTemplateTreeDefect as c, refuseMalformedResourcePropertiesForExport as ca, resolveCaptureObservedState as cc, withSharedDrainBudget as ci, buildFinalSnapshotIdentifier as cn, maskWholeValue as co, getCurrentResourceSecrets as cr, hasUnverifiableParameterRefusal as cs, NESTED_PENDING_PARENT_REASON as ct, conditionInputsFrom as d, refuseMalformedResourcesForDestroy as da, resolveStateBucketWithDefaultAndSource as dc, JSON_LISTING_HOLE_VALUE as di, effectiveDeletionPolicy as dn, noEchoOutputsComparison as do, slowCcOperationTimeoutMs as dr, isReadableBag as ds, dropSettledNestedJournals as dt, refuseMalformedResourceEntries as ea, getDockerImageBySourceHash as ec, carriesFetchableDynamicReference as ei, completedReplayEntries as en, withRetry as eo, CC_BROKEN_REASON as er, S3StateBackend as es, red as et, parentSuppliedValues as f, refuseMalformedResourcesForExport as fa, resolveUseCdkBootstrapAssets as fc, STATE_REGION_DIVERGED as fi, isFinalSnapshotError as fn, passedNoEchoParametersOf as fo, unchangedBehindSecretReference as fr, orphansAfterRollback as fs, getNestedRevertRun as ft, mergeNoChangeOutputs as g, repairMalformedOutputsForReadOnly as ga, CFN_TEMPLATE_BODY_LIMIT as gc, accountArgs as gi, DeploymentEventsStore as gn, createUnionSecretMasker as go, withIndeterminateGuard as gr, isSensitiveAttributeName as gs, revertedNestedRowIds as gt, keptWholeReasonText as h, repairMalformedOrphansForReadOnly as ha, ssmResolvedValueType as hc, UNREADABLE_RESOURCES_MAP_ROW as hi, DeploymentEventsReader as hn, carryLogOnlyValues as ho, deleteSkipReason as hr, AssetPublisher as hs, revertNestedChildFromJournal as ht, childTemplateLoader as i, refuseMalformedResourceEntriesForImportSave as ia, getLegacyStateBucketName as ic, cfnRefValueFromPhysicalId as ii, secretNamePrintingBag as in, DagBuilder as io, wouldReturnToSdkProvider as ir, describeRegionValueKind as is, reachableDivergentParameters as it, DynamoDBGlobalTableProvider as j, shownType as ja, hasOwnKey as jc, malformedOrphanRecordsWarning as ji, isExportAliasCollision as jn, DYNAMIC_REFERENCE_TOKEN_SCAN as jo, regionLessSecretName as jr, validateAssetBucketName as js, getStackRecords as jt, perType as k, hasNoCloudControlHandlers as ka, processStackMessages as kc, malformedLocalResourcesWarning as ki, collectDeclaredOutputNames as kn, redactSecretsForState as ko, classifyReplaySecretRegion as kr, parseBootstrapMarker as ks, awaitInFlightSibling as kt, templateIdentity as l, refuseMalformedResourcePropertiesForOrphan as la, resolveSkipPrefix as lc, parameterInputsFor as li, ccRoutedFinalSnapshotError as ln, maskedLeafCoordinatesOf as lo, withPrintingSecrets as lr, importableOutputKeys as ls, displacedOpClause as lt, isSecretBearingReferenceString as m, repairMalformedOrphanRecordsForReadOnly as ma, warnDeprecatedNoPrefixCliFlag as mc, UNREADABLE_ORPHANS_CONTAINER_ROW as mi, unsupportedFinalSnapshotError as mn, liveMatchesUnresolvedTokenFrame as mo, deleteIndeterminateGuards as mr, shouldRetainResource as ms, recordDisplacedSkips as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourceEntriesForDestroy as na, synthesisStatusMessage as nc, keepsSecretReferenceToken as ni, maskEventTextWithBoundBags as nn, lambdaFunctionNameForMask as no, ccBrokenReason as nr, splitImportedOps as ns, computeParameterTaint as nt, isAbsoluteAssetPath as o, refuseMalformedResourcePropertiesForDestroy as oa, resolveApp as oc, refStateLookupFromResource as oi, ATOMIC_FINAL_SNAPSHOT_TYPES as on, isMarkedCoordinate as oo, readsNoEchoDeleteValues as or, hasReadableExportSet as os, makeSiblingClaimReader as ot, readRecordedConditionVerdicts as p, refuseMalformedState as pa, stateBucketExistenceConfirmed as pc, STATE_RESOURCES_MALFORMED as pi, refusesFinalSnapshot as pn, readsNoEchoSource as po, UNSPECIFIED_SKIP_REASON as pr, orphansCarriedFrom as ps, nestedChildStackName as pt, markRefusedBeforeApplying as q, replayWarn as qa, refuseMalformedOrphanRecordsForDestroy as qi, planTagDiff as qn, STATE_SOURCED_CROSS_GENERATION_RULES as qo, s3BucketWebsiteUrl as qr, redactedDockerCause as qs, inheritProducerRegions as qt, computeImplicitDeleteEdges as r, refuseMalformedResourceEntriesForImport as ra, getDefaultStateBucketName as rc, AWS_NO_VALUE as ri, orphanRecordsPrintingBag as rn, sameLambdaFunctionAddress as ro, isCustomResource as rr, acceptedCreateOnlyDropsOf as rs, namesAnyDeclaredParameter as rt, listNestedTemplateRows as s, refuseMalformedResourcePropertiesForDrift as sa, resolveAutoAssetStorage as sc, parseWebACLArn as si, PRE_DELETE_SNAPSHOT_TYPES as sn, maskReadbackAtCoordinates as so, isCustomResourceType as sr, hasReasonlessBaselineRefusal as ss, planOrphanAdoption as st, DeployEngine as t, refuseMalformedResourceEntriesForDeploy as ta, Synthesizer as tc, isNamelessDynamicReferenceError as ti, journaledOrphanPrintingBag as tn, canonicalLambdaFunctionName as to, ProviderRegistry as tr, rebuildClientForBucketRegion as ts, yellow as tt, conditionFingerprint as u, refuseMalformedResourcesForDeploy as ua, resolveStateBucketWithDefault as uc, passedParameterClassesOf as ui, createPreDeleteFinalSnapshot as un, noEchoLeavesOf as uo, CloudControlProvider as ur, importableOutputs as us, displacedPhysicalIdShown as ut, deferredServiceTokenWarning as v, repairMalformedResourcePropertiesForReadOnly as va, MIGRATE_TMP_PREFIX as vc, displayLogicalId as vi, WITHHELD_NAME_DISPLAY as vn, literalSplitDelimitersOf as vo, markWaitAbandoned as vr, WorkGraph as vs, getCurrentNestedStackContext as vt, noEchoParameterNamesOf as w, findActionableSilentDrops as wa, PARTITION_TABLE as wc, malformedDriftResourcePropertiesWarning as wi, carriedExportAliasExposure as wn, createSecretMasker as wo, reEnableInstanceApiTermination as wr, BOOTSTRAP_MARKER_PREFIX as ws, loadJournaledOrphans as wt, withResourceDeadline as x, unreadableOrphanRecords as xa, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as xc, hasReadableResources as xi, secretBearing as xn, recordLogOnlyParameterValue as xo, isTerminationProtectionPropagationError as xr, loadPublishableAssetManifest as xs, dropFailedHint as xt, findServiceTokenRefusals as y, repairMalformedResourcesForReadOnly as ya, findLargeInlineResources as yc, hasReadableOrphans as yi, displayTextOrWithheld as yn, logOnlyValueCount as yo, disableInstanceApiTermination as yr, buildAssetRedirectMap as ys, withNestedStackContext as yt, INDEX_SETTLE_POLL_INTERVAL_MS as z, toCfnInteger as za, resolveAssemblyPath as zc, malformedResourcePropertiesWarning as zi, RollbackInlinePolicyWriters as zn, carriesSecretMask as zo, applyCallerIdentityCredentials as zr, dockerSpawnEnvWithSensitive as zs, planRollback as zt };
40625
+ //# sourceMappingURL=deploy-engine-B0TGnXSs.js.map