@go-to-k/cdkd 0.315.0 → 0.316.0

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 (41) hide show
  1. package/dist/{asg-provider-DpNkEibf.js → asg-provider-DOLuhiky.js} +6 -7
  2. package/dist/{asg-provider-DpNkEibf.js.map → asg-provider-DOLuhiky.js.map} +1 -1
  3. package/dist/{aws-client-defaults-BX9Y_fKp.js → aws-client-defaults-BLXFsfMa.js} +6 -11
  4. package/dist/aws-client-defaults-BLXFsfMa.js.map +1 -0
  5. package/dist/{aws-clients-Bu9EMILF.js → aws-clients-CGZAQ1gS.js} +5 -8
  6. package/dist/aws-clients-CGZAQ1gS.js.map +1 -0
  7. package/dist/{aws-failure-text-agWtoyga.js → aws-failure-text-DiHodi76.js} +8 -15
  8. package/dist/aws-failure-text-DiHodi76.js.map +1 -0
  9. package/dist/cli.js +6 -10
  10. package/dist/cli.js.map +1 -1
  11. package/dist/{created-resource-sink-QECX8C-Z.js → created-resource-sink-B9OCHRr_.js} +35 -66
  12. package/dist/created-resource-sink-B9OCHRr_.js.map +1 -0
  13. package/dist/{db-instance-modify-retry-B1NRKBSQ.js → db-instance-modify-retry-DQTozL4b.js} +4 -5
  14. package/dist/{db-instance-modify-retry-B1NRKBSQ.js.map → db-instance-modify-retry-DQTozL4b.js.map} +1 -1
  15. package/dist/{deploy-engine--bCIMkkk.js → deploy-engine-NYjdxQWe.js} +408 -625
  16. package/dist/deploy-engine-NYjdxQWe.js.map +1 -0
  17. package/dist/{iam-role-provider-s5--ZmBZ.js → iam-role-provider-Ddo7WwEs.js} +7 -9
  18. package/dist/iam-role-provider-Ddo7WwEs.js.map +1 -0
  19. package/dist/index.d.ts +0 -102
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +5 -5
  22. package/dist/{neptune-provider-BNxotnbp.js → neptune-provider-CuZbMn9R.js} +8 -9
  23. package/dist/{neptune-provider-BNxotnbp.js.map → neptune-provider-CuZbMn9R.js.map} +1 -1
  24. package/dist/{program-CMtAmRyw.js → program-DSq5150i.js} +118 -228
  25. package/dist/program-DSq5150i.js.map +1 -0
  26. package/dist/{provider-classes-B8kkAZqJ.js → provider-classes-ushrO6ri.js} +102 -192
  27. package/dist/provider-classes-ushrO6ri.js.map +1 -0
  28. package/dist/{rds-provider-Cm3dsmFW.js → rds-provider-VigGKsxO.js} +35 -18
  29. package/dist/rds-provider-VigGKsxO.js.map +1 -0
  30. package/dist/{version-Caty7J3x.js → version-9_dvIw-h.js} +3 -4
  31. package/dist/{version-Caty7J3x.js.map → version-9_dvIw-h.js.map} +1 -1
  32. package/package.json +8 -8
  33. package/dist/aws-client-defaults-BX9Y_fKp.js.map +0 -1
  34. package/dist/aws-clients-Bu9EMILF.js.map +0 -1
  35. package/dist/aws-failure-text-agWtoyga.js.map +0 -1
  36. package/dist/created-resource-sink-QECX8C-Z.js.map +0 -1
  37. package/dist/deploy-engine--bCIMkkk.js.map +0 -1
  38. package/dist/iam-role-provider-s5--ZmBZ.js.map +0 -1
  39. package/dist/program-CMtAmRyw.js.map +0 -1
  40. package/dist/provider-classes-B8kkAZqJ.js.map +0 -1
  41. package/dist/rds-provider-Cm3dsmFW.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
2
- import { $ as safeMsg, B as SAFE_MSG_ALTERED_CHAR, C as fallbackNamePropertyFor, D as getCurrentSkipPrefix, E as generatedNameFor, F as withNameGeneration, H as STACK_REF_MAX_CODE_POINTS, I as withSkipPrefix, J as displaySafe, K as displayAwsMessage, L as withStackScope, M as looksLikeCdkdGeneratedName, O as getCurrentStackInstanceId, P as stackInstanceNameSuffix, Q as plainIdentOr, R as withStackScopeBeforeStateRead, S as explicitNamePropertyFor, T as generateResourceNameWithFallback, U as UNRENDERABLE, V as SECRET_REF_MAX_CODE_POINTS, W as asIsMessage, X as isPasteableIdent, Y as displayStackName, a as safeStringify$1, b as currentNameGeneration, c as isStdoutReservedForPayload, f as currentLogLineMasker, j as isNameGeneration, k as getCurrentStackName, m as getLiveRenderer, n as describeAwsFailure, nt as truncateCodePoints, p as installLogLineMaskerSource, q as displayIdent, s as getLogger, t as VERBOSE_POINTER, tt as terminalSafe, v as alternateNamePropertiesFor, y as applyDefaultNameForFallback, z as withoutGeneratedFallbackName } from "./aws-failure-text-agWtoyga.js";
3
- import { $n as plainOrDescribed, $t as formatLockOperation, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, Bt as createdResourceIdentityBeforeFailure, Cn as DynamicReferenceRegionAmbiguousError, Cr as isIamPropagationError, Ct as compositeIdSeparatorRefusal, Dn as LockError, Dt as resourceTypeShown, Er as retryClassificationText, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gn as SHELL_ACTIVE, Gt as markCreatedBeforeFailure, Hn as normalizeAwsError, Ht as isAuxiliaryFailure, It as RETRY_AUXILIARY_OWNER, J as deleteWithProtectionCompensation, Jn as commandHole, Jt as UNREPRODUCIBLE_LOCK_CLAUSE, K as compensateProtectionFlip, Kn as SHELL_ACTIVE_WHY, Ln as StateError, Lt as carryCreatedBeforeFailure, M as isMarkedNotGone, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nn as ResourceTimeoutError, Nt as maskDeep, On as MacroExpansionError, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, Qn as physicalIdShownBesideCommand, Qt as formatLockExpiry, R as isQuotableImportValue, Rn as SynthesisError, Sn as DeploymentNotApprovedError, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, Ut as isAuxiliaryMarkOf, V as refusalTypeShown, Vn as isSoftAbort, Vt as hasCreatedBeforeFailure, Wt as markAuxiliaryFailure, Xn as isInertUnquoted, Yt as buildForceUnlockCommand, Zn as pasteableCommand, _ as removalWarning, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, b as withoutInjectedRemovals, bn as DependencyError, br as isAmbiguousCcHandlerErrorCode, bt as startInterruptWatch, cn as producerRecordKey, cr as isNameCollisionErrorFrom, dn as ambientClientDefaults, dr as isReplayedNameCollisionFrom, dt as protectedReplacementAdvice, en as formatLockOwner, er as quotedOrDescribed, et as observeThenDisableProtection, fn as ambientCredentialConfig, g as prepareRemovalForUpdate, gn as AssetError, gr as stripControlChars, hn as AccountIdUnavailableError, hr as escapeRegExp$3, ht as monotonicNowMs, i as reportCreatedResource, in as DEFAULT_STATE_PREFIX, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, kn as MalformedProducerRecordRefusalError, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lr as isNameCooldownError, m as withUnchangedSecretPrincipalLists, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, n as clearCreatedReport, nn as sanitizeRecoveryValue, nr as shellQuote, or as isUpdateUnsupportedError, ot as DELETION_PROTECTION_DOC_POINTER, pn as clientDefaultsFor, pr as markReplayMayCollide, pt as ElapsedBudget, qn as UNSHOWABLE_VALUE, qt as replayMadeAnotherResource, r as collectCreatedResources, rn as CUSTOM_RESOURCE_RESPONSE_PREFIX, rr as withheldTargetClause, rt as runDeleteAttempt, sr as hasReplayMayCollide, t as CreatedResourceSink, tn as recoveryCommandFlags, tr as shellBoundedDisplay, tt as protectionFlipKey, un as withPasteableAwsProfile, ur as isRecreateRetryableError, ut as pasteableAwsCommand, wn as IntrinsicResolutionRefusalError, wr as isRetryableTransientError, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, yn as CrossAccountSecretRefusalError, yr as formatRetryClassificationSignals, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn, zt as createdBeforeFailure } from "./created-resource-sink-QECX8C-Z.js";
4
- import { a as setAssumedRoleCredentials, c as ambientRegion, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as quietS3Logger, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-BX9Y_fKp.js";
5
- import { t as getCdkdVersion } from "./version-Caty7J3x.js";
1
+ import { c as __exportAll, r as getAwsClients } from "./aws-clients-CGZAQ1gS.js";
2
+ import { $ as safeMsg, B as SAFE_MSG_ALTERED_CHAR, C as fallbackNamePropertyFor, D as getCurrentSkipPrefix, E as generatedNameFor, F as withNameGeneration, H as STACK_REF_MAX_CODE_POINTS, I as withSkipPrefix, J as displaySafe, K as displayAwsMessage, L as withStackScope, M as looksLikeCdkdGeneratedName, O as getCurrentStackInstanceId, P as stackInstanceNameSuffix, Q as plainIdentOr, R as withStackScopeBeforeStateRead, S as explicitNamePropertyFor, T as generateResourceNameWithFallback, U as UNRENDERABLE, V as SECRET_REF_MAX_CODE_POINTS, W as asIsMessage, X as isPasteableIdent, Y as displayStackName, a as safeStringify$1, b as currentNameGeneration, c as isStdoutReservedForPayload, f as currentLogLineMasker, j as isNameGeneration, k as getCurrentStackName, m as getLiveRenderer, n as describeAwsFailure, nt as truncateCodePoints, p as installLogLineMaskerSource, q as displayIdent, s as getLogger, t as VERBOSE_POINTER, tt as terminalSafe, v as alternateNamePropertiesFor, y as applyDefaultNameForFallback, z as withoutGeneratedFallbackName } from "./aws-failure-text-DiHodi76.js";
3
+ import { $n as plainOrDescribed, $t as formatLockOperation, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, Bt as createdResourceIdentityBeforeFailure, Cn as DynamicReferenceRegionAmbiguousError, Cr as isIamPropagationError, Ct as compositeIdSeparatorRefusal, Dn as LockError, Dt as resourceTypeShown, Er as retryClassificationText, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gn as SHELL_ACTIVE, Gt as markCreatedBeforeFailure, Hn as normalizeAwsError, Ht as isAuxiliaryFailure, It as RETRY_AUXILIARY_OWNER, J as deleteWithProtectionCompensation, Jn as commandHole, Jt as UNREPRODUCIBLE_LOCK_CLAUSE, K as compensateProtectionFlip, Kn as SHELL_ACTIVE_WHY, Ln as StateError, Lt as carryCreatedBeforeFailure, M as isMarkedNotGone, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nn as ResourceTimeoutError, Nt as maskDeep, On as MacroExpansionError, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, Qn as physicalIdShownBesideCommand, Qt as formatLockExpiry, R as isQuotableImportValue, Rn as SynthesisError, Sn as DeploymentNotApprovedError, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, Ut as isAuxiliaryMarkOf, V as refusalTypeShown, Vn as isSoftAbort, Vt as hasCreatedBeforeFailure, Wt as markAuxiliaryFailure, Xn as isInertUnquoted, Yt as buildForceUnlockCommand, Zn as pasteableCommand, _ as removalWarning, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, b as withoutInjectedRemovals, bn as DependencyError, br as isAmbiguousCcHandlerErrorCode, bt as startInterruptWatch, cn as producerRecordKey, cr as isNameCollisionErrorFrom, dn as ambientClientDefaults, dr as isReplayedNameCollisionFrom, dt as protectedReplacementAdvice, en as formatLockOwner, er as quotedOrDescribed, et as observeThenDisableProtection, fn as ambientCredentialConfig, g as prepareRemovalForUpdate, gn as AssetError, gr as stripControlChars, hn as AccountIdUnavailableError, hr as escapeRegExp$3, ht as monotonicNowMs, i as reportCreatedResource, in as DEFAULT_STATE_PREFIX, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, kn as MalformedProducerRecordRefusalError, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lr as isNameCooldownError, m as withUnchangedSecretPrincipalLists, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, n as clearCreatedReport, nn as sanitizeRecoveryValue, nr as shellQuote, or as isUpdateUnsupportedError, ot as DELETION_PROTECTION_DOC_POINTER, pn as clientDefaultsFor, pr as markReplayMayCollide, pt as ElapsedBudget, qn as UNSHOWABLE_VALUE, qt as replayMadeAnotherResource, r as collectCreatedResources, rn as CUSTOM_RESOURCE_RESPONSE_PREFIX, rr as withheldTargetClause, rt as runDeleteAttempt, sr as hasReplayMayCollide, t as CreatedResourceSink, tn as recoveryCommandFlags, tr as shellBoundedDisplay, tt as protectionFlipKey, un as withPasteableAwsProfile, ur as isRecreateRetryableError, ut as pasteableAwsCommand, wn as IntrinsicResolutionRefusalError, wr as isRetryableTransientError, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, yn as CrossAccountSecretRefusalError, yr as formatRetryClassificationSignals, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn, zt as createdBeforeFailure } from "./created-resource-sink-B9OCHRr_.js";
4
+ import { a as setAssumedRoleCredentials, c as ambientRegion, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as quietS3Logger, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-BLXFsfMa.js";
5
+ import { t as getCdkdVersion } from "./version-9_dvIw-h.js";
6
6
  import { createHash, randomUUID } from "node:crypto";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -40,7 +40,7 @@ import { DescribeDomainCommand, OpenSearchClient } from "@aws-sdk/client-opensea
40
40
  import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
41
41
  import { ApplicationAutoScalingClient, DeleteScalingPolicyCommand, DeregisterScalableTargetCommand, DescribeScalableTargetsCommand, DescribeScalingPoliciesCommand, PutScalingPolicyCommand, RegisterScalableTargetCommand } from "@aws-sdk/client-application-auto-scaling";
42
42
 
43
- //#region src/utils/aws-region-resolver.ts
43
+ // src/utils/aws-region-resolver.ts
44
44
  const cache = /* @__PURE__ */ new Map();
45
45
  async function readClientRegion(client) {
46
46
  try {
@@ -106,8 +106,7 @@ async function resolveCrossAccountStateBucket(accountId, credentials) {
106
106
  };
107
107
  }
108
108
 
109
- //#endregion
110
- //#region src/utils/injected-aws-region.ts
109
+ // src/utils/injected-aws-region.ts
111
110
  let injected;
112
111
  function injectAwsRegion(region) {
113
112
  injected ??= {
@@ -132,8 +131,7 @@ function injectedAwsRegionOverride() {
132
131
  return { AWS_REGION: injected.original };
133
132
  }
134
133
 
135
- //#endregion
136
- //#region src/synthesis/app-executor.ts
134
+ // src/synthesis/app-executor.ts
137
135
  const CDK_ASM_VERSION = "38.0.0";
138
136
  const CONTEXT_OVERFLOW_LIMIT = 32768;
139
137
  function stripSurroundingQuotes(token) {
@@ -228,8 +226,7 @@ var AppExecutor = class {
228
226
  }
229
227
  };
230
228
 
231
- //#endregion
232
- //#region src/types/assembly.ts
229
+ // src/types/assembly.ts
233
230
  const ASSEMBLY_REGION_PREFIX = /^[a-z0-9-]+/;
234
231
  const CDK_ENVIRONMENT_PATTERN = /aws:\/\/([a-zA-Z0-9@._-]+)\/([a-z0-9-]+)/;
235
232
  const CANONICAL_ASSEMBLY_REGION = /^[a-z0-9-]+$/;
@@ -262,8 +259,7 @@ function unparsableRegionMessage(region, stackName) {
262
259
  return `${head}\nIf an earlier cdkd version deployed this stack from such an assembly, it recorded the stack's state under that raw region spelling, and a deploy using the canonical spelling will not find that state: it starts the stack from no state at all. 'cdkd state show' and 'cdkd state orphan' still reach that record when '--stack-region' is given the exact raw spelling; 'state orphan' removes the record and leaves its AWS resources in place, unmanaged by cdkd.`;
263
260
  }
264
261
 
265
- //#endregion
266
- //#region src/utils/assembly-path.ts
262
+ // src/utils/assembly-path.ts
267
263
  function isInside(base, candidate) {
268
264
  const rel = path.relative(base, candidate);
269
265
  if (rel === "" || rel === "..") return false;
@@ -408,8 +404,7 @@ function renderAssemblyPathEscape(escape, dir, action = "load", provenanceOverri
408
404
  return `resolves to ${shownPath}, outside ${shownBase}. ${provenance}`;
409
405
  }
410
406
 
411
- //#endregion
412
- //#region src/utils/own-keys.ts
407
+ // src/utils/own-keys.ts
413
408
  function hasOwnKey(target, key) {
414
409
  return Object.prototype.hasOwnProperty.call(target, key);
415
410
  }
@@ -432,8 +427,7 @@ function nullPrototypeRecord() {
432
427
  return Object.create(null);
433
428
  }
434
429
 
435
- //#endregion
436
- //#region src/utils/json-parse-failure.ts
430
+ // src/utils/json-parse-failure.ts
437
431
  function describeJsonParseFailure(err, bytes) {
438
432
  const raw = describeAwsFailure(err).detail;
439
433
  const at = / (?:in|after) JSON at position (\d+)(?: \(line \d+ column \d+\))?$/.exec(raw);
@@ -457,8 +451,7 @@ function parseJsonNamingNoBody(body, subject, debug) {
457
451
  }
458
452
  }
459
453
 
460
- //#endregion
461
- //#region src/synthesis/stack-messages.ts
454
+ // src/synthesis/stack-messages.ts
462
455
  const MESSAGE_ENTRY_TYPES = {
463
456
  "aws:cdk:error": "error",
464
457
  "aws:cdk:warning": "warning",
@@ -518,8 +511,7 @@ function processStackMessages(stacks, logger, options = {}) {
518
511
  if (hasWarnings && failAt === "warn") throw new SynthesisError("Found warnings (--strict mode)");
519
512
  }
520
513
 
521
- //#endregion
522
- //#region src/synthesis/failed-stages.ts
514
+ // src/synthesis/failed-stages.ts
523
515
  var StageLoadError = class StageLoadError extends SynthesisError {
524
516
  constructor(message) {
525
517
  super(message);
@@ -557,8 +549,7 @@ function renderStagePath(stagePath) {
557
549
  return displayIdent(stagePath, { maxCodePoints: STACK_REF_MAX_CODE_POINTS });
558
550
  }
559
551
 
560
- //#endregion
561
- //#region src/synthesis/assembly-reader.ts
552
+ // src/synthesis/assembly-reader.ts
562
553
  function manifestReadFailureText(error) {
563
554
  const cause = error instanceof CdkdError ? error.cause : error;
564
555
  const code = cause?.code;
@@ -716,8 +707,7 @@ var AssemblyReader = class {
716
707
  }
717
708
  };
718
709
 
719
- //#endregion
720
- //#region src/synthesis/context-store.ts
710
+ // src/synthesis/context-store.ts
721
711
  const CDK_CONTEXT_FILE = "cdk.context.json";
722
712
  var ContextStore = class {
723
713
  logger = getLogger().child("ContextStore");
@@ -762,8 +752,7 @@ var ContextStore = class {
762
752
  }
763
753
  };
764
754
 
765
- //#endregion
766
- //#region src/synthesis/context-providers/az-provider.ts
755
+ // src/synthesis/context-providers/az-provider.ts
767
756
  var AZContextProvider = class {
768
757
  logger = getLogger().child("AZContextProvider");
769
758
  awsConfig;
@@ -787,8 +776,7 @@ var AZContextProvider = class {
787
776
  }
788
777
  };
789
778
 
790
- //#endregion
791
- //#region src/synthesis/context-providers/ssm-provider.ts
779
+ // src/synthesis/context-providers/ssm-provider.ts
792
780
  var SSMContextProvider = class {
793
781
  logger = getLogger().child("SSMContextProvider");
794
782
  awsConfig;
@@ -821,8 +809,7 @@ var SSMContextProvider = class {
821
809
  }
822
810
  };
823
811
 
824
- //#endregion
825
- //#region src/synthesis/context-providers/hosted-zone-provider.ts
812
+ // src/synthesis/context-providers/hosted-zone-provider.ts
826
813
  var HostedZoneContextProvider = class {
827
814
  logger = getLogger().child("HostedZoneContextProvider");
828
815
  awsConfig;
@@ -869,8 +856,7 @@ var HostedZoneContextProvider = class {
869
856
  }
870
857
  };
871
858
 
872
- //#endregion
873
- //#region src/synthesis/context-providers/vpc-provider.ts
859
+ // src/synthesis/context-providers/vpc-provider.ts
874
860
  var VpcContextProvider = class {
875
861
  logger = getLogger().child("VpcContextProvider");
876
862
  awsConfig;
@@ -1017,8 +1003,7 @@ var VpcContextProvider = class {
1017
1003
  }
1018
1004
  };
1019
1005
 
1020
- //#endregion
1021
- //#region src/synthesis/context-providers/cc-api-provider.ts
1006
+ // src/synthesis/context-providers/cc-api-provider.ts
1022
1007
  function parseResourceModel(body, typeName) {
1023
1008
  try {
1024
1009
  return JSON.parse(body);
@@ -1134,8 +1119,7 @@ var CcApiContextProvider = class {
1134
1119
  }
1135
1120
  };
1136
1121
 
1137
- //#endregion
1138
- //#region src/synthesis/context-providers/ami-provider.ts
1122
+ // src/synthesis/context-providers/ami-provider.ts
1139
1123
  var AmiContextProvider = class {
1140
1124
  logger = getLogger().child("AmiContextProvider");
1141
1125
  awsConfig;
@@ -1170,8 +1154,7 @@ var AmiContextProvider = class {
1170
1154
  }
1171
1155
  };
1172
1156
 
1173
- //#endregion
1174
- //#region src/synthesis/context-providers/security-group-provider.ts
1157
+ // src/synthesis/context-providers/security-group-provider.ts
1175
1158
  var SecurityGroupContextProvider = class {
1176
1159
  logger = getLogger().child("SecurityGroupContextProvider");
1177
1160
  awsConfig;
@@ -1219,8 +1202,7 @@ var SecurityGroupContextProvider = class {
1219
1202
  }
1220
1203
  };
1221
1204
 
1222
- //#endregion
1223
- //#region src/synthesis/context-providers/load-balancer-provider.ts
1205
+ // src/synthesis/context-providers/load-balancer-provider.ts
1224
1206
  var LoadBalancerContextProvider = class {
1225
1207
  logger = getLogger().child("LoadBalancerContextProvider");
1226
1208
  awsConfig;
@@ -1293,8 +1275,7 @@ var LoadBalancerListenerContextProvider = class {
1293
1275
  }
1294
1276
  };
1295
1277
 
1296
- //#endregion
1297
- //#region src/synthesis/context-providers/key-provider.ts
1278
+ // src/synthesis/context-providers/key-provider.ts
1298
1279
  var KeyContextProvider = class {
1299
1280
  logger = getLogger().child("KeyContextProvider");
1300
1281
  awsConfig;
@@ -1330,8 +1311,7 @@ var KeyContextProvider = class {
1330
1311
  }
1331
1312
  };
1332
1313
 
1333
- //#endregion
1334
- //#region src/synthesis/context-providers/index.ts
1314
+ // src/synthesis/context-providers/index.ts
1335
1315
  const PROVIDER_ERROR_KEY = "$providerError";
1336
1316
  const TRANSIENT_CONTEXT_KEY = "$dontSaveContext";
1337
1317
  var ContextProviderRegistry = class {
@@ -1384,8 +1364,7 @@ var ContextProviderRegistry = class {
1384
1364
  }
1385
1365
  };
1386
1366
 
1387
- //#endregion
1388
- //#region src/synthesis/macro-detector.ts
1367
+ // src/synthesis/macro-detector.ts
1389
1368
  function containsMacro(template) {
1390
1369
  if (!template || typeof template !== "object" || Array.isArray(template)) return false;
1391
1370
  const t = template;
@@ -1474,8 +1453,7 @@ function collectFnTransformNames(value, seen, out) {
1474
1453
  }
1475
1454
  }
1476
1455
 
1477
- //#endregion
1478
- //#region src/utils/aws-partition.ts
1456
+ // src/utils/aws-partition.ts
1479
1457
  const PARTITION_TABLE = [
1480
1458
  {
1481
1459
  prefix: "cn-",
@@ -1531,8 +1509,7 @@ function derivePartitionAndUrlSuffix(region) {
1531
1509
  };
1532
1510
  }
1533
1511
 
1534
- //#endregion
1535
- //#region src/utils/expected-bucket-owner.ts
1512
+ // src/utils/expected-bucket-owner.ts
1536
1513
  var expected_bucket_owner_exports = /* @__PURE__ */ __exportAll({
1537
1514
  expectedOwnerParam: () => expectedOwnerParam,
1538
1515
  recordResolvedAccountId: () => recordResolvedAccountId,
@@ -1614,8 +1591,7 @@ async function expectedOwnerParam(client) {
1614
1591
  return owner ? { ExpectedBucketOwner: owner } : {};
1615
1592
  }
1616
1593
 
1617
- //#endregion
1618
- //#region src/utils/s3-listing-keys.ts
1594
+ // src/utils/s3-listing-keys.ts
1619
1595
  function decodeListingKey(value) {
1620
1596
  if (value === void 0) return void 0;
1621
1597
  try {
@@ -1625,8 +1601,7 @@ function decodeListingKey(value) {
1625
1601
  }
1626
1602
  }
1627
1603
 
1628
- //#endregion
1629
- //#region src/state/s3-replication-purge-gap.ts
1604
+ // src/state/s3-replication-purge-gap.ts
1630
1605
  const DEFAULT_PURGED_OBJECT_DESCRIPTION = "the body of an object cdkd has just reported as removed";
1631
1606
  const replicationProbeCache = /* @__PURE__ */ new Map();
1632
1607
  const warnedWarnings = /* @__PURE__ */ new Set();
@@ -1758,8 +1733,7 @@ async function warnIfPurgeIsReplicated(s3Client, bucket, keys, options = {}) {
1758
1733
  } catch {}
1759
1734
  }
1760
1735
 
1761
- //#endregion
1762
- //#region src/state/s3-noncurrent-version-purge.ts
1736
+ // src/state/s3-noncurrent-version-purge.ts
1763
1737
  const CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION = "a custom-resource response object, which is the handler's full cfn-response body including `Data`";
1764
1738
  const DELETE_BATCH_SIZE = 1e3;
1765
1739
  const MAX_NAMED_FAILURES = 5;
@@ -1933,8 +1907,7 @@ async function purgeUnderPrefix(s3Client, bucket, prefix, scope, requestFields,
1933
1907
  } while (keyMarker !== void 0);
1934
1908
  }
1935
1909
 
1936
- //#endregion
1937
- //#region src/cli/upload-cfn-template.ts
1910
+ // src/cli/upload-cfn-template.ts
1938
1911
  const CFN_TEMPLATE_BODY_LIMIT = 51200;
1939
1912
  const CFN_TEMPLATE_URL_LIMIT = 1048576;
1940
1913
  const MIGRATE_TMP_PREFIX = "cdkd-migrate-tmp";
@@ -2020,8 +1993,7 @@ function findLargeInlineResources(template, threshold = LARGE_INLINE_RESOURCE_TH
2020
1993
  return result;
2021
1994
  }
2022
1995
 
2023
- //#endregion
2024
- //#region src/utils/parameter-types.ts
1996
+ // src/utils/parameter-types.ts
2025
1997
  function isListParameterType(type) {
2026
1998
  if (type === "CommaDelimitedList") return true;
2027
1999
  return type.length > 6 && type.startsWith("List<") && type.endsWith(">");
@@ -2033,8 +2005,7 @@ function ssmResolvedValueType(type) {
2033
2005
  return inner.length > 0 ? inner : void 0;
2034
2006
  }
2035
2007
 
2036
- //#endregion
2037
- //#region src/synthesis/macro-expander.ts
2008
+ // src/synthesis/macro-expander.ts
2038
2009
  function displaySafeTransforms(names) {
2039
2010
  return names.map((name) => displaySafe(name)).join(", ");
2040
2011
  }
@@ -2259,8 +2230,7 @@ function formatErr(err) {
2259
2230
  return displayAwsMessage(describeAwsFailure(err).detail);
2260
2231
  }
2261
2232
 
2262
- //#endregion
2263
- //#region src/cli/config-loader.ts
2233
+ // src/cli/config-loader.ts
2264
2234
  function loadJsonConfig(filePath) {
2265
2235
  const logger = getLogger();
2266
2236
  if (!existsSync(filePath)) return null;
@@ -2360,7 +2330,7 @@ async function resolveStateBucketWithDefaultAndSource(cliBucket, region, legacyF
2360
2330
  logger.debug("No state bucket specified, resolving default from account...");
2361
2331
  const { GetCallerIdentityCommand } = await import("@aws-sdk/client-sts");
2362
2332
  const { S3Client, HeadBucketCommand, ListObjectsV2Command } = await import("@aws-sdk/client-s3");
2363
- const { getAwsClients } = await import("./aws-clients-Bu9EMILF.js").then((n) => n.n);
2333
+ const { getAwsClients } = await import("./aws-clients-CGZAQ1gS.js").then((n) => n.n);
2364
2334
  const { expectedOwnerParam, recordResolvedAccountId } = await Promise.resolve().then(() => expected_bucket_owner_exports);
2365
2335
  const probeDeps = {
2366
2336
  HeadBucketCommand,
@@ -2471,8 +2441,7 @@ async function probeBucket(client, bucketName, deps) {
2471
2441
  }
2472
2442
  }
2473
2443
 
2474
- //#endregion
2475
- //#region src/synthesis/synthesizer.ts
2444
+ // src/synthesis/synthesizer.ts
2476
2445
  function isPreSynthesizedAssembly(app) {
2477
2446
  const appPath = resolve(app);
2478
2447
  return existsSync(appPath) && statSync(appPath).isDirectory();
@@ -2634,8 +2603,7 @@ function setsEqual(a, b) {
2634
2603
  return true;
2635
2604
  }
2636
2605
 
2637
- //#endregion
2638
- //#region src/assets/absolute-asset-path-warning.ts
2606
+ // src/assets/absolute-asset-path-warning.ts
2639
2607
  function warnWholeAssemblyAsSource(w) {
2640
2608
  getLogger().child("assets").warn(`${w.subject} has ${w.field} naming the output directory ITSELF: ${displayAssemblyPath(w.outdir)}. cdkd will ${w.sink} — that is the WHOLE assembly, every template and every staged asset, not one asset directory. No CDK synth emits this, so treat this assembly as untrusted unless you wrote that path yourself.`);
2641
2609
  }
@@ -2643,8 +2611,7 @@ function warnAbsoluteAssetPath(w) {
2643
2611
  getLogger().child("assets").warn(`${w.subject} has an absolute ${w.field} pointing outside the assembly: ${displayAssemblyPath(w.absolute)}` + (w.escape.escape === "symlink" ? ` (through a symbolic link to ${displayAssemblyPath(w.escape.realPath)})` : "") + `. cdkd will ${w.sink}. This is what cdk synth --no-staging emits, and is expected for it; if you did not synthesize with that flag, treat this assembly as untrusted: an absolute source path is honoured as written, so nothing but this line stands between it and that step.`);
2644
2612
  }
2645
2613
 
2646
- //#endregion
2647
- //#region src/assets/asset-manifest-loader.ts
2614
+ // src/assets/asset-manifest-loader.ts
2648
2615
  function resolveFileAssetSourcePath(manifestDir, asset, opts) {
2649
2616
  const { assetOutdir, sink } = opts;
2650
2617
  if (isAbsolute$1(asset.source.path)) {
@@ -2758,8 +2725,7 @@ function extractHashFromImageUri(imageUri) {
2758
2725
  return /:([a-f0-9]{8,})$/.exec(imageUri)?.[1];
2759
2726
  }
2760
2727
 
2761
- //#endregion
2762
- //#region src/assets/file-asset-publisher.ts
2728
+ // src/assets/file-asset-publisher.ts
2763
2729
  var FileAssetPublisher = class {
2764
2730
  logger = getLogger().child("FileAssetPublisher");
2765
2731
  async publish(assetHash, asset, cdkOutputDir, accountId, region, assetOutdir) {
@@ -2838,8 +2804,7 @@ var FileAssetPublisher = class {
2838
2804
  }
2839
2805
  };
2840
2806
 
2841
- //#endregion
2842
- //#region src/utils/docker-cmd.ts
2807
+ // src/utils/docker-cmd.ts
2843
2808
  function getDockerCmd() {
2844
2809
  const override = process.env["CDK_DOCKER"];
2845
2810
  return override && override.length > 0 ? override : "docker";
@@ -3477,16 +3442,14 @@ function describeDockerCapturedOutput(error, args, fallback) {
3477
3442
  return redactDockerArgvInText(capturedStreamText(error, "stderr") || capturedStreamText(error, "stdout") || fallback, args);
3478
3443
  }
3479
3444
 
3480
- //#endregion
3481
- //#region src/assets/docker-cache-option.ts
3445
+ // src/assets/docker-cache-option.ts
3482
3446
  function cacheOptionToFlag(option) {
3483
3447
  let flag = `type=${option.type}`;
3484
3448
  if (option.params) for (const [k, v] of Object.entries(option.params)) flag += `,${k}=${v}`;
3485
3449
  return flag;
3486
3450
  }
3487
3451
 
3488
- //#endregion
3489
- //#region src/assets/manifest-passthrough-warnings.ts
3452
+ // src/assets/manifest-passthrough-warnings.ts
3490
3453
  function candidateHostPaths(value, opts) {
3491
3454
  const out = [];
3492
3455
  for (const part of value.split(",")) {
@@ -3599,8 +3562,7 @@ function warnUnrecognizedAssetDestination(opts) {
3599
3562
  getLogger().child("assets").warn(`Asset destination ${opts.kind} ${displayIdent(opts.name)} is not a CDK-bootstrap or cdkd-managed name, so cdkd uploads there exactly as this asset manifest wrote it, with your credentials. That is what a custom bootstrap looks like and is expected for one; if you did not configure it, the manifest chose where your assets go.`);
3600
3563
  }
3601
3564
 
3602
- //#endregion
3603
- //#region src/assets/docker-build.ts
3565
+ // src/assets/docker-build.ts
3604
3566
  function resolveDockerContextDirectory(opts) {
3605
3567
  const { manifestDir, directory, wrapError, assetOutdir, sink, assetId } = opts;
3606
3568
  if (isAbsolute$1(directory)) {
@@ -3722,8 +3684,7 @@ function buildDockerBuildCommand(source, tag, platformOverride) {
3722
3684
  return args;
3723
3685
  }
3724
3686
 
3725
- //#endregion
3726
- //#region src/assets/docker-asset-publisher.ts
3687
+ // src/assets/docker-asset-publisher.ts
3727
3688
  function ecrUrlSuffix(region) {
3728
3689
  return derivePartitionAndUrlSuffix(region).urlSuffix;
3729
3690
  }
@@ -3881,8 +3842,7 @@ var DockerAssetPublisher = class {
3881
3842
  }
3882
3843
  };
3883
3844
 
3884
- //#endregion
3885
- //#region src/utils/deny-external-access-policy.ts
3845
+ // src/utils/deny-external-access-policy.ts
3886
3846
  function buildDenyExternalAccessPolicy(bucketName, accountId, region) {
3887
3847
  const { partition } = derivePartitionAndUrlSuffix(region);
3888
3848
  return {
@@ -3898,8 +3858,7 @@ function buildDenyExternalAccessPolicy(bucketName, accountId, region) {
3898
3858
  };
3899
3859
  }
3900
3860
 
3901
- //#endregion
3902
- //#region src/assets/asset-storage.ts
3861
+ // src/assets/asset-storage.ts
3903
3862
  const ASSET_SUPPORT_VERSION = 1;
3904
3863
  const BOOTSTRAP_MARKER_PREFIX = "cdkd-bootstrap/";
3905
3864
  function getCdkdAssetBucketName(accountId, region) {
@@ -4325,8 +4284,7 @@ var AssetModeResolver = class {
4325
4284
  }
4326
4285
  };
4327
4286
 
4328
- //#endregion
4329
- //#region src/assets/asset-redirect.ts
4287
+ // src/assets/asset-redirect.ts
4330
4288
  function flattenAssetPlaceholders(value, accountId, region, partition = "aws") {
4331
4289
  return value.replace(/\$\{AWS::AccountId\}/g, accountId).replace(/\$\{AWS::Region\}/g, region).replace(/\$\{AWS::Partition\}/g, partition);
4332
4290
  }
@@ -4596,8 +4554,7 @@ function createAssetRedirectResolver(opts) {
4596
4554
  };
4597
4555
  }
4598
4556
 
4599
- //#endregion
4600
- //#region src/deployment/work-graph.ts
4557
+ // src/deployment/work-graph.ts
4601
4558
  var WorkGraph = class {
4602
4559
  nodes = /* @__PURE__ */ new Map();
4603
4560
  logger = getLogger().child("WorkGraph");
@@ -4688,8 +4645,7 @@ var WorkGraph = class {
4688
4645
  }
4689
4646
  };
4690
4647
 
4691
- //#endregion
4692
- //#region src/utils/stringify.ts
4648
+ // src/utils/stringify.ts
4693
4649
  const SENSITIVE_ATTRIBUTE_NAME = /secret|password|credential/i;
4694
4650
  const NON_SENSITIVE_SUFFIX = /(arn|id|name|url|alias|status)$/i;
4695
4651
  function isSensitiveAttributeName(attributeName) {
@@ -4718,8 +4674,7 @@ function stringifyValue(value) {
4718
4674
  }
4719
4675
  }
4720
4676
 
4721
- //#endregion
4722
- //#region src/assets/asset-publisher.ts
4677
+ // src/assets/asset-publisher.ts
4723
4678
  var AssetPublisher = class {
4724
4679
  logger = getLogger().child("AssetPublisher");
4725
4680
  filePublisher = new FileAssetPublisher();
@@ -4865,8 +4820,7 @@ var AssetPublisher = class {
4865
4820
  }
4866
4821
  };
4867
4822
 
4868
- //#endregion
4869
- //#region src/utils/phase-timings.ts
4823
+ // src/utils/phase-timings.ts
4870
4824
  const now = () => globalThis.performance.now();
4871
4825
  const PHASE_TIMINGS_ENV = "CDKD_PHASE_TIMINGS";
4872
4826
  function phaseTimingsEnabled() {
@@ -4971,8 +4925,7 @@ function renderPhaseTimings() {
4971
4925
  return lines;
4972
4926
  }
4973
4927
 
4974
- //#endregion
4975
- //#region src/types/state.ts
4928
+ // src/types/state.ts
4976
4929
  const STATE_SCHEMA_VERSIONS_READABLE = [
4977
4930
  1,
4978
4931
  2,
@@ -5059,8 +5012,7 @@ function orphansAfterRollback(previous, newlyOrphaned) {
5059
5012
  return { orphans: [...byLogicalId.values()] };
5060
5013
  }
5061
5014
 
5062
- //#endregion
5063
- //#region src/types/rollback-journal.ts
5015
+ // src/types/rollback-journal.ts
5064
5016
  const ROLLBACK_JOURNAL_VERSION = 1;
5065
5017
  function splitImportedOps(ops, segment, except = /* @__PURE__ */ new Set()) {
5066
5018
  const marks = segment.importedResources ?? [];
@@ -5242,8 +5194,7 @@ function parseRollbackJournal(bodyString, stackName) {
5242
5194
  };
5243
5195
  }
5244
5196
 
5245
- //#endregion
5246
- //#region src/state/create-token-ledger.ts
5197
+ // src/state/create-token-ledger.ts
5247
5198
  const CREATE_TOKEN_LEDGER_VERSION = 1;
5248
5199
  function emptyCreateTokenLedger(nonce) {
5249
5200
  return {
@@ -5294,8 +5245,7 @@ async function notifyStateSaved(stackName, region) {
5294
5245
  await stateSavedObserver.getStore()?.(stackName, region);
5295
5246
  }
5296
5247
 
5297
- //#endregion
5298
- //#region src/state/stack-instance-id.ts
5248
+ // src/state/stack-instance-id.ts
5299
5249
  const STACK_INSTANCE_SIBLING_VERSION = 1;
5300
5250
  const STACK_INSTANCE_SIBLING_FILE = "stack-instance.json";
5301
5251
  const STACK_INSTANCE_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
@@ -5341,8 +5291,7 @@ function withStackInstanceIdWithheld(state) {
5341
5291
  };
5342
5292
  }
5343
5293
 
5344
- //#endregion
5345
- //#region src/state/cross-prefix-stack-scan.ts
5294
+ // src/state/cross-prefix-stack-scan.ts
5346
5295
  function journalCanOwnResources(journal) {
5347
5296
  return recordCanOwnResources({ resources: {} }, journal);
5348
5297
  }
@@ -5704,8 +5653,7 @@ function applyCrossPrefixScan(result, s, action, warn, info) {
5704
5653
  }
5705
5654
  }
5706
5655
 
5707
- //#endregion
5708
- //#region src/state/earlier-state-versions.ts
5656
+ // src/state/earlier-state-versions.ts
5709
5657
  async function readEarlierStateResources(s3, bucket, owner, key, max) {
5710
5658
  const versions = ((await s3.send(new ListObjectVersionsCommand({
5711
5659
  Bucket: bucket,
@@ -5775,8 +5723,7 @@ async function listVersionedSubdirectories(s3, bucket, owner, prefix) {
5775
5723
  }
5776
5724
  }
5777
5725
 
5778
- //#endregion
5779
- //#region src/state/retained-time.ts
5726
+ // src/state/retained-time.ts
5780
5727
  var RetainedTimeUnconfirmedError = class extends Error {
5781
5728
  cause;
5782
5729
  constructor(cause) {
@@ -5786,8 +5733,7 @@ var RetainedTimeUnconfirmedError = class extends Error {
5786
5733
  }
5787
5734
  };
5788
5735
 
5789
- //#endregion
5790
- //#region src/utils/bucket-region-client.ts
5736
+ // src/utils/bucket-region-client.ts
5791
5737
  async function rebuildClientForBucketRegion(client, bucket, opts = {}) {
5792
5738
  const config = client.config;
5793
5739
  if (!config || typeof config.region !== "function") {
@@ -5825,8 +5771,7 @@ async function rebuildClientForBucketRegion(client, bucket, opts = {}) {
5825
5771
  return replacement;
5826
5772
  }
5827
5773
 
5828
- //#endregion
5829
- //#region src/state/token-free-state.ts
5774
+ // src/state/token-free-state.ts
5830
5775
  const tokenFreeStates = /* @__PURE__ */ new WeakSet();
5831
5776
  function bodyMayCarryReferences(body) {
5832
5777
  return body.includes("{{resolve:") || body.includes("\"referenceProvenance\"") || body.includes("\"outputReferenceProvenance\"");
@@ -5838,8 +5783,7 @@ function isKnownTokenFreeState(state) {
5838
5783
  return state !== void 0 && tokenFreeStates.has(state);
5839
5784
  }
5840
5785
 
5841
- //#endregion
5842
- //#region src/state/s3-state-backend.ts
5786
+ // src/state/s3-state-backend.ts
5843
5787
  function errorDetail$2(error) {
5844
5788
  return displaySafe(error instanceof Error ? error.message : error, { asciiOnly: true }) || "<unrenderable>";
5845
5789
  }
@@ -7240,8 +7184,7 @@ function addSupersededIds(segment, ids) {
7240
7184
  if (merged.size > 0) segment.supersededLogicalIds = [...merged];
7241
7185
  }
7242
7186
 
7243
- //#endregion
7244
- //#region src/state/lock-manager.ts
7187
+ // src/state/lock-manager.ts
7245
7188
  const MAX_RENEWAL_INTERVAL_MS = 12e4;
7246
7189
  const RENEWAL_TTL_FRACTION = 4;
7247
7190
  const MIN_RENEWAL_INTERVAL_MS = 1e3;
@@ -7755,8 +7698,7 @@ function nanIfUncoercible(value) {
7755
7698
  }
7756
7699
  }
7757
7700
 
7758
- //#endregion
7759
- //#region src/deployment/secret-redaction/rules.ts
7701
+ // src/deployment/secret-redaction/rules.ts
7760
7702
  const MIN_NEEDLE_LENGTH = 4;
7761
7703
  function printingNeedles(values) {
7762
7704
  const out = /* @__PURE__ */ new Set();
@@ -7851,8 +7793,7 @@ function isPlainObject$11(value) {
7851
7793
  return value !== null && typeof value === "object" && !Array.isArray(value);
7852
7794
  }
7853
7795
 
7854
- //#endregion
7855
- //#region src/deployment/secret-redaction/mask-only.ts
7796
+ // src/deployment/secret-redaction/mask-only.ts
7856
7797
  const recordedSecretExpressions = /* @__PURE__ */ new Set();
7857
7798
  const secretVerdictScopes = /* @__PURE__ */ new Map();
7858
7799
  function pinScopedSecretVerdict(scope, expression, secret) {
@@ -8076,8 +8017,7 @@ function isSecretExpressionByVerdictOrSpelling(expression) {
8076
8017
  return expression.startsWith("{{resolve:secretsmanager:") || expression.startsWith("{{resolve:ssm-secure:") || isRecordedSecretExpression(expression);
8077
8018
  }
8078
8019
 
8079
- //#endregion
8080
- //#region src/deployment/secret-redaction/cross-stack.ts
8020
+ // src/deployment/secret-redaction/cross-stack.ts
8081
8021
  const crossStackAssociations = /* @__PURE__ */ new WeakMap();
8082
8022
  const CONFLICTING_CROSS_STACK = Symbol("conflicting cross-stack association");
8083
8023
  const CROSS_STACK_KEY_SEPARATOR = "\0";
@@ -8195,8 +8135,7 @@ function storeAssociation(associations, key, expression, plaintext) {
8195
8135
  if (seen.expression !== expression || seen.plaintext !== plaintext) associations.set(key, CONFLICTING_CROSS_STACK);
8196
8136
  }
8197
8137
 
8198
- //#endregion
8199
- //#region src/deployment/secret-redaction/certified-positions.ts
8138
+ // src/deployment/secret-redaction/certified-positions.ts
8200
8139
  function plaintextIndexOf(secrets) {
8201
8140
  const plaintextOf = /* @__PURE__ */ new Map();
8202
8141
  for (const [plaintext, expression] of secrets) plaintextOf.set(expression, plaintextOf.has(expression) ? CONFLICTING_PLAINTEXT : plaintext);
@@ -8233,8 +8172,7 @@ function positionByCrossStackSource(bag, source, secrets) {
8233
8172
  return certifiedExpressionForLeaf(secrets, association, bag);
8234
8173
  }
8235
8174
 
8236
- //#endregion
8237
- //#region src/deployment/secret-redaction/resolver-outcomes.ts
8175
+ // src/deployment/secret-redaction/resolver-outcomes.ts
8238
8176
  const CONFLICTING = Symbol("cdkd.resolver-outcome.conflicting");
8239
8177
  const takenBranches = /* @__PURE__ */ new WeakMap();
8240
8178
  function recordTakenIfBranch(secrets, source, tookTrueBranch) {
@@ -8267,8 +8205,7 @@ function droppedArrayElementsOf(secrets, source) {
8267
8205
  return dropped === CONFLICTING ? void 0 : dropped;
8268
8206
  }
8269
8207
 
8270
- //#endregion
8271
- //#region src/deployment/secret-redaction/physical-name-copies.ts
8208
+ // src/deployment/secret-redaction/physical-name-copies.ts
8272
8209
  const physicalNameCopiesOf = /* @__PURE__ */ new WeakMap();
8273
8210
  function recordPhysicalNameCopy(secrets, physicalId) {
8274
8211
  if (physicalId === "") return;
@@ -8289,8 +8226,7 @@ function physicalNameSpans(names, value) {
8289
8226
  return spans;
8290
8227
  }
8291
8228
 
8292
- //#endregion
8293
- //#region src/deployment/secret-redaction/fresh-noecho.ts
8229
+ // src/deployment/secret-redaction/fresh-noecho.ts
8294
8230
  function embedsFreshNoEchoValue(text, secrets, freshClass) {
8295
8231
  const fresh = freshNoEchoValuesOf.get(secrets);
8296
8232
  if (fresh === void 0) return false;
@@ -8434,8 +8370,7 @@ function recoverMaskedOutput(identity, stackName, region, outputKey) {
8434
8370
  return recoverableMaskedOutputs.get(maskedOutputKey(identity, stackName, region, outputKey));
8435
8371
  }
8436
8372
 
8437
- //#endregion
8438
- //#region src/deployment/secret-redaction/nested-stack.ts
8373
+ // src/deployment/secret-redaction/nested-stack.ts
8439
8374
  const NESTED_STACK_RESOURCE_TYPE$4 = "AWS::CloudFormation::Stack";
8440
8375
  const nestedStackParameterExpressions = /* @__PURE__ */ new WeakMap();
8441
8376
  const renderedParameterSpellings = /* @__PURE__ */ new WeakMap();
@@ -9056,8 +8991,7 @@ function carriesChildOnlyPlaintext(value, childSecrets, parentSecrets) {
9056
8991
  return visit(value);
9057
8992
  }
9058
8993
 
9059
- //#endregion
9060
- //#region src/deployment/secret-redaction/placeholder-positions.ts
8994
+ // src/deployment/secret-redaction/placeholder-positions.ts
9061
8995
  function keyedPart(source) {
9062
8996
  const key = crossStackSourceKey(source);
9063
8997
  return key === void 0 ? UNKNOWN_PART : { key };
@@ -9263,8 +9197,7 @@ function positionByRecordedParameterSpans(bag, source, secrets, associations) {
9263
9197
  return acceptedPlaceholderRendering(bag, persisted, certified, secrets);
9264
9198
  }
9265
9199
 
9266
- //#endregion
9267
- //#region src/deployment/secret-redaction/identity-keys.ts
9200
+ // src/deployment/secret-redaction/identity-keys.ts
9268
9201
  const ARRAY_IDENTITY_KEYS = ["Name", "Key"];
9269
9202
  function isUniquelyKeyedBy(items, key) {
9270
9203
  if (items.length === 0) return false;
@@ -9287,8 +9220,7 @@ function positionListByCrossStackSource(bag, source, secrets) {
9287
9220
  return certifiedListForLeaf(secrets, association, bag);
9288
9221
  }
9289
9222
 
9290
- //#endregion
9291
- //#region src/deployment/secret-redaction/redact-path.ts
9223
+ // src/deployment/secret-redaction/redact-path.ts
9292
9224
  const NEVER_DROPPING_INTRINSICS = /* @__PURE__ */ new Set([
9293
9225
  "Fn::Join",
9294
9226
  "Fn::Sub",
@@ -9740,8 +9672,7 @@ function deepEqualJsonValue(a, b) {
9740
9672
  return false;
9741
9673
  }
9742
9674
 
9743
- //#endregion
9744
- //#region src/deployment/secret-redaction/readback-certification.ts
9675
+ // src/deployment/secret-redaction/readback-certification.ts
9745
9676
  function renderedDefinitionLiterals(source) {
9746
9677
  const keep = /* @__PURE__ */ new Set();
9747
9678
  const scalarKeep = /* @__PURE__ */ new Set();
@@ -9912,8 +9843,7 @@ function refuseUncertifiedReadbackPositions(bag, source, secrets, failClosed, le
9912
9843
  return refuseAgainstSource(bag, source, failClosed, mark);
9913
9844
  }
9914
9845
 
9915
- //#endregion
9916
- //#region src/deployment/secret-redaction/anchors.ts
9846
+ // src/deployment/secret-redaction/anchors.ts
9917
9847
  function isDistinguishingAnchor(value) {
9918
9848
  if (typeof value === "string") return value !== "";
9919
9849
  if (Array.isArray(value)) return value.some(isDistinguishingAnchor);
@@ -10063,8 +9993,7 @@ function deriveReadbackNeedles(bag, source, secrets, rules) {
10063
9993
  };
10064
9994
  }
10065
9995
 
10066
- //#endregion
10067
- //#region src/deployment/secret-redaction/redact-state.ts
9996
+ // src/deployment/secret-redaction/redact-state.ts
10068
9997
  function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RULES, bagIsSameGeneration = false) {
10069
9998
  return flattenEmbeddedNoEchoLeaves(redactSecretsForStatePasses(bag, secrets, source, rules, bagIsSameGeneration), secrets);
10070
9999
  }
@@ -10418,8 +10347,7 @@ function repairEmbeddedPhysicalNamesTowards(stored, target, pairs) {
10418
10347
  return stored;
10419
10348
  }
10420
10349
 
10421
- //#endregion
10422
- //#region src/deployment/secret-redaction/mask-errors.ts
10350
+ // src/deployment/secret-redaction/mask-errors.ts
10423
10351
  function maskSecretsInText(text, secrets) {
10424
10352
  const logOnly = logOnlyValuesOf.get(secrets);
10425
10353
  const noLogOnly = logOnly === void 0 || logOnly.size === 0;
@@ -10620,8 +10548,7 @@ function createSecretMasker(secrets) {
10620
10548
  return (text) => maskSecretsInText(text, secrets);
10621
10549
  }
10622
10550
 
10623
- //#endregion
10624
- //#region src/deployment/secret-redaction/log-only.ts
10551
+ // src/deployment/secret-redaction/log-only.ts
10625
10552
  const logOnlyValuesOf = /* @__PURE__ */ new WeakMap();
10626
10553
  function recordLogOnlyValue(secrets, plaintext) {
10627
10554
  if (plaintext === "") return;
@@ -10810,8 +10737,7 @@ function hasMaskableValues(secrets) {
10810
10737
  return logOnly !== void 0 && logOnly.size > 0;
10811
10738
  }
10812
10739
 
10813
- //#endregion
10814
- //#region src/deployment/secret-redaction/reference-provenance.ts
10740
+ // src/deployment/secret-redaction/reference-provenance.ts
10815
10741
  const passProvenanceOf = /* @__PURE__ */ new WeakMap();
10816
10742
  const MAX_REFERENCE_VERSIONS = 8;
10817
10743
  function provenanceTableFor(secrets) {
@@ -10911,8 +10837,7 @@ function snapshotPassProvenance(secrets) {
10911
10837
  return out;
10912
10838
  }
10913
10839
 
10914
- //#endregion
10915
- //#region src/deployment/secret-redaction/recording.ts
10840
+ // src/deployment/secret-redaction/recording.ts
10916
10841
  const scopeMaps = /* @__PURE__ */ new WeakSet();
10917
10842
  var WriteThroughSecrets = class extends Map {
10918
10843
  pass;
@@ -10974,8 +10899,7 @@ function recordSecretResolution(secrets, expression, plaintext, options) {
10974
10899
  if (options.pairEvidence) recordResolvedPair(secrets, expression, plaintext);
10975
10900
  }
10976
10901
 
10977
- //#endregion
10978
- //#region src/deployment/secret-redaction/context.ts
10902
+ // src/deployment/secret-redaction/context.ts
10979
10903
  const RULES_BY_PROVENANCE = {
10980
10904
  "template-derived": TEMPLATE_DERIVED_RULES,
10981
10905
  "template-sourced": TEMPLATE_SOURCED_RULES,
@@ -11010,8 +10934,7 @@ function shallowCopy(bag) {
11010
10934
  return Array.isArray(bag) ? [...bag] : { ...bag };
11011
10935
  }
11012
10936
 
11013
- //#endregion
11014
- //#region src/deployment/secret-redaction/positions.ts
10937
+ // src/deployment/secret-redaction/positions.ts
11015
10938
  const SKELETON_WILDCARD = `${DYNAMIC_REFERENCE_INNER_CHAR}*`;
11016
10939
  const MAX_SKELETON_WILDCARDS = 3;
11017
10940
  const MAX_SKELETON_CANDIDATE_LENGTH = 512;
@@ -11303,8 +11226,7 @@ function positionByIntrinsicFrame(bag, source, secrets, secretExpressions, bagIs
11303
11226
  }, bagIsSameGeneration);
11304
11227
  }
11305
11228
 
11306
- //#endregion
11307
- //#region src/deployment/secret-redaction/pairs.ts
11229
+ // src/deployment/secret-redaction/pairs.ts
11308
11230
  const resolvedPairsOf = /* @__PURE__ */ new WeakMap();
11309
11231
  const CONFLICTING_PLAINTEXT = Symbol("conflicting plaintext");
11310
11232
  function pairsFor(secrets) {
@@ -11435,8 +11357,7 @@ function carryRedactionMarks(from, to) {
11435
11357
  return to;
11436
11358
  }
11437
11359
 
11438
- //#endregion
11439
- //#region src/deployment/secret-redaction/unresolved-token-frame.ts
11360
+ // src/deployment/secret-redaction/unresolved-token-frame.ts
11440
11361
  function liveMatchesUnresolvedTokenFrame(send, live, unresolvedTokens, secrets) {
11441
11362
  const wildcards = dynamicReferenceSpans(send).filter((span) => unresolvedTokens.has(send.slice(span.start, span.end)));
11442
11363
  if (wildcards.length === 0) return false;
@@ -11473,8 +11394,7 @@ function wildcardOverlapsResolvedPlaintext(send, wildcards, secrets) {
11473
11394
  return false;
11474
11395
  }
11475
11396
 
11476
- //#endregion
11477
- //#region src/deployment/secret-redaction/noecho-leaves.ts
11397
+ // src/deployment/secret-redaction/noecho-leaves.ts
11478
11398
  const SUB_VARIABLE$2 = /\$\{([^}!][^}]*)\}/g;
11479
11399
  function intrinsicKeyOf(node) {
11480
11400
  const keys = Object.keys(node);
@@ -12004,8 +11924,7 @@ function passedNoEchoParametersOf(bag) {
12004
11924
  return bag === void 0 ? void 0 : passedNoEchoParameters.get(bag);
12005
11925
  }
12006
11926
 
12007
- //#endregion
12008
- //#region src/analyzer/template-parser.ts
11927
+ // src/analyzer/template-parser.ts
12009
11928
  var TemplateParser = class {
12010
11929
  logger = getLogger().child("TemplateParser");
12011
11930
  getResourceIds(template) {
@@ -12179,8 +12098,7 @@ var TemplateParser = class {
12179
12098
  }
12180
12099
  };
12181
12100
 
12182
- //#endregion
12183
- //#region src/analyzer/lambda-vpc-deps.ts
12101
+ // src/analyzer/lambda-vpc-deps.ts
12184
12102
  function extractLambdaVpcDeleteDeps(resources) {
12185
12103
  const edges = [];
12186
12104
  const seen = /* @__PURE__ */ new Set();
@@ -12227,8 +12145,7 @@ function collectRefIds(value, out) {
12227
12145
  }
12228
12146
  }
12229
12147
 
12230
- //#endregion
12231
- //#region src/analyzer/cdk-defensive-deps.ts
12148
+ // src/analyzer/cdk-defensive-deps.ts
12232
12149
  const DEFENSIVE_DEPENDS_ON_TYPE_PAIRS = [
12233
12150
  {
12234
12151
  fromType: "AWS::IAM::Role",
@@ -12287,8 +12204,7 @@ function defensiveDependsOnToSkip(resource, template) {
12287
12204
  return skip;
12288
12205
  }
12289
12206
 
12290
- //#endregion
12291
- //#region src/analyzer/dag-builder.ts
12207
+ // src/analyzer/dag-builder.ts
12292
12208
  const { Graph, alg } = graphlib;
12293
12209
  const IAM_ROLE_POLICY_TYPES = /* @__PURE__ */ new Set([
12294
12210
  "AWS::IAM::Policy",
@@ -12531,8 +12447,7 @@ var DagBuilder = class {
12531
12447
  }
12532
12448
  };
12533
12449
 
12534
- //#endregion
12535
- //#region src/utils/lambda-function-name.ts
12450
+ // src/utils/lambda-function-name.ts
12536
12451
  function parseLambdaFunctionAddress(value) {
12537
12452
  const full = /^arn:([^:]+):lambda:([^:]+):(\d{12}):function:([^:]+)$/.exec(value);
12538
12453
  if (full) return {
@@ -12562,8 +12477,7 @@ function lambdaFunctionNameForMask(value) {
12562
12477
  return /^(?:arn:[^:]+:lambda:[^:]+:\d{12}:function:|\d{12}:function:)?([A-Za-z0-9_-]+)(?::[^:]+)?$/.exec(value)?.[1] ?? canonicalLambdaFunctionName(value);
12563
12478
  }
12564
12479
 
12565
- //#endregion
12566
- //#region src/analyzer/replacement-rules.ts
12480
+ // src/analyzer/replacement-rules.ts
12567
12481
  function vpcInstanceTenancyChangeReplaces(oldValue, newValue) {
12568
12482
  const tenancyOf = (v) => v == null ? "default" : String(v);
12569
12483
  return tenancyOf(newValue) !== "default" && tenancyOf(newValue) !== tenancyOf(oldValue);
@@ -13156,8 +13070,7 @@ var ReplacementRulesRegistry = class {
13156
13070
  }
13157
13071
  };
13158
13072
 
13159
- //#endregion
13160
- //#region src/deployment/retry.ts
13073
+ // src/deployment/retry.ts
13161
13074
  const IAM_PROPAGATION_INITIAL_DELAY_MS = 250;
13162
13075
  const IAM_PROPAGATION_MAX_DELAY_MS = 2e3;
13163
13076
  const IAM_PROPAGATION_MAX_RETRIES = 26;
@@ -13253,8 +13166,7 @@ function retryErrorClass(error) {
13253
13166
  return parts.length > 0 ? `${name} (${parts.join(", ")})` : name;
13254
13167
  }
13255
13168
 
13256
- //#endregion
13257
- //#region src/utils/concurrency-limiter.ts
13169
+ // src/utils/concurrency-limiter.ts
13258
13170
  var BackgroundTaskCancelledError = class extends Error {
13259
13171
  constructor() {
13260
13172
  super("Background task cancelled");
@@ -13378,8 +13290,7 @@ function createConcurrencyLimiter(limit) {
13378
13290
  };
13379
13291
  }
13380
13292
 
13381
- //#endregion
13382
- //#region src/provisioning/describe-type.ts
13293
+ // src/provisioning/describe-type.ts
13383
13294
  const describeTypeRetryDelays = {};
13384
13295
  const MAX_THROTTLE_RETRIES = 4;
13385
13296
  const DESCRIBE_TYPE_MAX_IN_FLIGHT = 20;
@@ -13436,8 +13347,7 @@ function hasNoRegistrySchema(resourceType) {
13436
13347
  return resourceType === "AWS::CDK::Metadata" || resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::");
13437
13348
  }
13438
13349
 
13439
- //#endregion
13440
- //#region src/provisioning/create-only-paths.ts
13350
+ // src/provisioning/create-only-paths.ts
13441
13351
  function parseCreateOnlyPropertyPointers(createOnly) {
13442
13352
  const result = [];
13443
13353
  if (!Array.isArray(createOnly)) return result;
@@ -13453,8 +13363,7 @@ function unescapeJsonPointerSegment$2(segment) {
13453
13363
  return segment.replace(/~1/g, "/").replace(/~0/g, "~");
13454
13364
  }
13455
13365
 
13456
- //#endregion
13457
- //#region src/provisioning/create-only-snapshot.generated.ts
13366
+ // src/provisioning/create-only-snapshot.generated.ts
13458
13367
  const CREATE_ONLY_PATHS_SNAPSHOT = /* @__PURE__ */ new Map([
13459
13368
  ["AWS::ApiGateway::Account", []],
13460
13369
  ["AWS::ApiGateway::Authorizer", [["RestApiId"]]],
@@ -14047,8 +13956,7 @@ const CREATE_ONLY_PATHS_SNAPSHOT = /* @__PURE__ */ new Map([
14047
13956
  ["AWS::WAFv2::WebACL", [["Name"], ["Scope"]]]
14048
13957
  ]);
14049
13958
 
14050
- //#endregion
14051
- //#region src/provisioning/create-only-properties.ts
13959
+ // src/provisioning/create-only-properties.ts
14052
13960
  const createOnlyPropertiesCache = /* @__PURE__ */ new Map();
14053
13961
  const inFlightLookups = /* @__PURE__ */ new Map();
14054
13962
  function getCreateOnlyPropertyPaths(resourceType) {
@@ -14168,8 +14076,7 @@ function parseCreateOnlyResponse(resourceType, schema) {
14168
14076
  return result;
14169
14077
  }
14170
14078
 
14171
- //#endregion
14172
- //#region src/provisioning/write-only-properties.ts
14079
+ // src/provisioning/write-only-properties.ts
14173
14080
  const writeOnlyPropertiesCache = /* @__PURE__ */ new Map();
14174
14081
  const settledWriteOnlyProperties = /* @__PURE__ */ new Map();
14175
14082
  const settledUnreadableCreateOnlyPaths = /* @__PURE__ */ new Map();
@@ -14248,8 +14155,7 @@ function parseRegistrySchema(resourceType, schema) {
14248
14155
  return parseJsonNamingNoBody(schema, "the DescribeType schema", (line) => getLogger().child("WriteOnlyProperties").debug(safeMsg`${resourceType}: ${line}`));
14249
14156
  }
14250
14157
 
14251
- //#endregion
14252
- //#region src/deployment/replacement-name-holder/name-keys.ts
14158
+ // src/deployment/replacement-name-holder/name-keys.ts
14253
14159
  const flat = (property) => ({ name: [[property]] });
14254
14160
  function ownEntry$1(table, key) {
14255
14161
  return Object.hasOwn(table, key) ? table[key] : void 0;
@@ -14446,8 +14352,7 @@ const SENT_NAME_REWRITTEN = {
14446
14352
  }
14447
14353
  };
14448
14354
 
14449
- //#endregion
14450
- //#region src/deployment/replacement-name-holder/holder-probe.ts
14355
+ // src/deployment/replacement-name-holder/holder-probe.ts
14451
14356
  const SHARED_NAME_SPACES = [
14452
14357
  /* @__PURE__ */ new Set(["AWS::DynamoDB::Table", "AWS::DynamoDB::GlobalTable"]),
14453
14358
  /* @__PURE__ */ new Set([
@@ -14585,8 +14490,7 @@ const DERIVED_GENERATED_NAMES = {
14585
14490
  "AWS::SSM::Parameter": derivedEntry("AWS::SSM::Parameter", "ssm-parameter-provider.ts")
14586
14491
  };
14587
14492
 
14588
- //#endregion
14589
- //#region src/deployment/replacement-name-holder/rewritten.ts
14493
+ // src/deployment/replacement-name-holder/rewritten.ts
14590
14494
  function replayPrefixChoice(input) {
14591
14495
  const rewrite = ownEntry$1(SENT_NAME_REWRITTEN, input.resourceType);
14592
14496
  if (rewrite === void 0 || input.via === "cc-api") return { kind: "not-applicable" };
@@ -14739,8 +14643,7 @@ function reverseReplacementTrustsGeneratedName(resourceType) {
14739
14643
  return GENERATED_NAME_VERBATIM.has(resourceType);
14740
14644
  }
14741
14645
 
14742
- //#endregion
14743
- //#region src/deployment/replacement-name-holder/holder.ts
14646
+ // src/deployment/replacement-name-holder/holder.ts
14744
14647
  function recordSetHolds(requested, recorded, observed, newPhysicalId, r, v) {
14745
14648
  const newRecord = `${v.holderRecord} (${r.shown(newPhysicalId)})`;
14746
14649
  const wantName = valueAt(requested, ["Name"]);
@@ -14879,8 +14782,7 @@ function isPlainName(value) {
14879
14782
  return !/\s/.test(value) && displayIdent(value, { maxCodePoints: 1152 }) === value;
14880
14783
  }
14881
14784
 
14882
- //#endregion
14883
- //#region src/deployment/replacement-name-holder/deploy-name.ts
14785
+ // src/deployment/replacement-name-holder/deploy-name.ts
14884
14786
  function nameValue(bag, property) {
14885
14787
  const value = bag?.[property];
14886
14788
  if (typeof value !== "string" || value === "" || value === "***") return void 0;
@@ -15028,8 +14930,7 @@ function probeFoundSameId(resourceType, a, b) {
15028
14930
  return pa !== void 0 && pa === path(b);
15029
14931
  }
15030
14932
 
15031
- //#endregion
15032
- //#region src/provisioning/config-shape.ts
14933
+ // src/provisioning/config-shape.ts
15033
14934
  function readConfigString(container, key, fallback, containerPath, options) {
15034
14935
  if (container === void 0 || container === null) return fallback;
15035
14936
  if (!isPlainObject$10(container) || isUnresolvedIntrinsicContainer(container)) {
@@ -15162,8 +15063,7 @@ function describe(value) {
15162
15063
  return typeof value === "object" ? "an object" : `a ${typeof value}`;
15163
15064
  }
15164
15065
 
15165
- //#endregion
15166
- //#region src/provisioning/dynamodb-warm-throughput.ts
15066
+ // src/provisioning/dynamodb-warm-throughput.ts
15167
15067
  const WARM_THROUGHPUT_MEMBERS = ["ReadUnitsPerSecond", "WriteUnitsPerSecond"];
15168
15068
  function toFiniteNumber(value) {
15169
15069
  if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
@@ -15209,8 +15109,7 @@ function isWarmThroughputDecrease(desired, live) {
15209
15109
  return sawDecrease;
15210
15110
  }
15211
15111
 
15212
- //#endregion
15213
- //#region src/provisioning/stateful-types.ts
15112
+ // src/provisioning/stateful-types.ts
15214
15113
  const STATEFUL_TYPES = /* @__PURE__ */ new Set([
15215
15114
  "AWS::RDS::DBInstance",
15216
15115
  "AWS::RDS::DBCluster",
@@ -15372,8 +15271,7 @@ function renderStatefulReason(reason) {
15372
15271
  }
15373
15272
  }
15374
15273
 
15375
- //#endregion
15376
- //#region src/deployment/recreate-target-readers.ts
15274
+ // src/deployment/recreate-target-readers.ts
15377
15275
  async function findReplacedReadersOfRecreateTargets(input) {
15378
15276
  const conditions = input.conditions;
15379
15277
  const resources = Object.create(null);
@@ -15584,8 +15482,7 @@ function readsOnlyId(value, id) {
15584
15482
  return !other && ids > 0;
15585
15483
  }
15586
15484
 
15587
- //#endregion
15588
- //#region src/deployment/child-of-recreated-parent.ts
15485
+ // src/deployment/child-of-recreated-parent.ts
15589
15486
  const LAMBDA_FUNCTION = "AWS::Lambda::Function";
15590
15487
  const IAM_ROLE = "AWS::IAM::Role";
15591
15488
  const IAM_USER = "AWS::IAM::User";
@@ -15910,8 +15807,7 @@ function withRecreatedAttachmentsDropped(input) {
15910
15807
  } : void 0;
15911
15808
  }
15912
15809
 
15913
- //#endregion
15914
- //#region src/provisioning/property-coverage.generated.ts
15810
+ // src/provisioning/property-coverage.generated.ts
15915
15811
  const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
15916
15812
  ["AWS::ApiGateway::Account", {
15917
15813
  handled: /* @__PURE__ */ new Set(["CloudWatchRoleArn"]),
@@ -18234,14 +18130,18 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18234
18130
  ["AWS::RDS::DBInstance", {
18235
18131
  handled: /* @__PURE__ */ new Set([
18236
18132
  "AllocatedStorage",
18133
+ "AllowMajorVersionUpgrade",
18237
18134
  "AutoMinorVersionUpgrade",
18238
18135
  "BackupRetentionPeriod",
18239
18136
  "CACertificateIdentifier",
18137
+ "CertificateRotationRestart",
18240
18138
  "CopyTagsToSnapshot",
18139
+ "DatabaseInsightsMode",
18241
18140
  "DBClusterIdentifier",
18242
18141
  "DBInstanceClass",
18243
18142
  "DBInstanceIdentifier",
18244
18143
  "DBSubnetGroupName",
18144
+ "DedicatedLogVolume",
18245
18145
  "DeletionProtection",
18246
18146
  "EnableIAMDatabaseAuthentication",
18247
18147
  "EnablePerformanceInsights",
@@ -18249,6 +18149,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18249
18149
  "EngineVersion",
18250
18150
  "Iops",
18251
18151
  "KmsKeyId",
18152
+ "LicenseModel",
18252
18153
  "ManageMasterUserPassword",
18253
18154
  "MasterUsername",
18254
18155
  "MasterUserPassword",
@@ -18257,12 +18158,14 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18257
18158
  "MonitoringInterval",
18258
18159
  "MonitoringRoleArn",
18259
18160
  "MultiAZ",
18161
+ "NetworkType",
18260
18162
  "OptionGroupName",
18261
18163
  "PerformanceInsightsKMSKeyId",
18262
18164
  "PerformanceInsightsRetentionPeriod",
18263
18165
  "Port",
18264
18166
  "PreferredBackupWindow",
18265
18167
  "PreferredMaintenanceWindow",
18168
+ "PromotionTier",
18266
18169
  "PubliclyAccessible",
18267
18170
  "StorageEncrypted",
18268
18171
  "StorageThroughput",
@@ -18272,7 +18175,6 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18272
18175
  ]),
18273
18176
  silentDrop: /* @__PURE__ */ new Map([
18274
18177
  ["AdditionalStorageVolumes", "not yet implemented by cdkd"],
18275
- ["AllowMajorVersionUpgrade", "not yet implemented by cdkd"],
18276
18178
  ["ApplyImmediately", "cdkd always applies modifications immediately (rds:ModifyDBInstance.ApplyImmediately=true is hardcoded); users wanting maintenance-window deferral should run aws rds modify-db-instance directly"],
18277
18179
  ["AssociatedRoles", "not yet implemented by cdkd"],
18278
18180
  ["AutomaticBackupReplicationKmsKeyId", "not yet implemented by cdkd"],
@@ -18280,17 +18182,14 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18280
18182
  ["AutomaticBackupReplicationRetentionPeriod", "not yet implemented by cdkd"],
18281
18183
  ["AvailabilityZone", "not yet implemented by cdkd"],
18282
18184
  ["BackupTarget", "not yet implemented by cdkd"],
18283
- ["CertificateRotationRestart", "not yet implemented by cdkd"],
18284
18185
  ["CharacterSetName", "not yet implemented by cdkd"],
18285
18186
  ["CustomIAMInstanceProfile", "not yet implemented by cdkd"],
18286
- ["DatabaseInsightsMode", "not yet implemented by cdkd"],
18287
18187
  ["DBClusterSnapshotIdentifier", "not yet implemented by cdkd"],
18288
18188
  ["DBName", "not yet implemented by cdkd"],
18289
18189
  ["DBParameterGroupName", "not yet implemented by cdkd"],
18290
18190
  ["DBSecurityGroups", "EC2-Classic-only feature retired by AWS (2022-08-15); new accounts cannot use this — use VPCSecurityGroups instead"],
18291
18191
  ["DBSnapshotIdentifier", "not yet implemented by cdkd"],
18292
18192
  ["DBSystemId", "not yet implemented by cdkd"],
18293
- ["DedicatedLogVolume", "not yet implemented by cdkd"],
18294
18193
  ["DeleteAutomatedBackups", "delete-time flag, sent on the delete when the record carries it; kept unhandled so a template declaring it keeps its Cloud Control route. Final snapshots are governed by DeletionPolicy: Snapshot, which this flag does not control"],
18295
18194
  ["Domain", "not yet implemented by cdkd"],
18296
18195
  ["DomainAuthSecretArn", "not yet implemented by cdkd"],
@@ -18300,12 +18199,9 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18300
18199
  ["DomainOu", "not yet implemented by cdkd"],
18301
18200
  ["EnableCloudwatchLogsExports", "not yet implemented by cdkd"],
18302
18201
  ["EngineLifecycleSupport", "not yet implemented by cdkd"],
18303
- ["LicenseModel", "not yet implemented by cdkd"],
18304
18202
  ["MasterUserAuthenticationType", "not yet implemented by cdkd"],
18305
18203
  ["NcharCharacterSetName", "not yet implemented by cdkd"],
18306
- ["NetworkType", "not yet implemented by cdkd"],
18307
18204
  ["ProcessorFeatures", "not yet implemented by cdkd"],
18308
- ["PromotionTier", "not yet implemented by cdkd"],
18309
18205
  ["ReplicaMode", "not yet implemented by cdkd"],
18310
18206
  ["RestoreTime", "not yet implemented by cdkd"],
18311
18207
  ["SourceDBClusterIdentifier", "not yet implemented by cdkd"],
@@ -18824,8 +18720,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18824
18720
  }]
18825
18721
  ]);
18826
18722
 
18827
- //#endregion
18828
- //#region src/provisioning/unsupported-types.generated.ts
18723
+ // src/provisioning/unsupported-types.generated.ts
18829
18724
  const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
18830
18725
  "Alexa::ASK::Skill",
18831
18726
  "AWS::AmazonMQ::ConfigurationAssociation",
@@ -19158,8 +19053,7 @@ const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
19158
19053
  "AWS::WorkSpaces::WorkspaceImage"
19159
19054
  ]);
19160
19055
 
19161
- //#endregion
19162
- //#region src/provisioning/unsupported-types.ts
19056
+ // src/provisioning/unsupported-types.ts
19163
19057
  function isNonProvisionable(resourceType) {
19164
19058
  return NON_PROVISIONABLE_TYPES.has(resourceType);
19165
19059
  }
@@ -19192,8 +19086,7 @@ function unsupportedTypeIssueUrl(resourceType) {
19192
19086
  return `https://github.com/go-to-k/cdkd/issues/new?title=${encodeURIComponent(`Support resource type ${resourceType}`)}&labels=resource-support`;
19193
19087
  }
19194
19088
 
19195
- //#endregion
19196
- //#region src/provisioning/property-coverage.ts
19089
+ // src/provisioning/property-coverage.ts
19197
19090
  function getPropertyCoverage(resourceType) {
19198
19091
  return PROPERTY_COVERAGE_BY_TYPE.get(resourceType);
19199
19092
  }
@@ -19335,8 +19228,7 @@ function findUnrecognizedProperties(resourceType, templateProperties) {
19335
19228
  return unrecognized.sort((a, b) => a.localeCompare(b));
19336
19229
  }
19337
19230
 
19338
- //#endregion
19339
- //#region src/state/malformed-resources-bag.ts
19231
+ // src/state/malformed-resources-bag.ts
19340
19232
  const UNREADABLE_RESOURCES_MAP_ROW = "(resources map)";
19341
19233
  const STATE_RESOURCES_MALFORMED = "STATE_RESOURCES_MALFORMED";
19342
19234
  function hasReadableResources(state) {
@@ -20145,8 +20037,7 @@ function malformedOrphansForOrphanRefusalMessage(rawStackName, rawRegion, logica
20145
20037
  return orphanRefusal(stackName, region, recovery, `${stackClause(stackName, region)} holds ${logicalIds.length} rollback-orphan record(s) in 'orphans' that cannot be read — ${namedOrphanRows(logicalIds)} — because the record has no string 'logicalId' or shares it with another row, or its 'state' is not an object, names no resource type, has no non-empty string 'physicalId', or holds a 'properties' or 'attributes' map that is not an object. The record is malformed or truncated. ${verbatim} Those records are not inert: they are what the next 'cdkd deploy' may re-adopt into 'resources' and what 'cdkd diff' previews for adoption, so continuing would report success over damage the next command meets.`, "'cdkd orphan' cannot remove such a record itself: it is not in 'resources', so it has no construct path. Repair the record by hand rather than deleting it — it is the only record that an earlier failed deploy left its resource live in AWS.", ORPHANS_DROP_CAVEAT);
20146
20038
  }
20147
20039
 
20148
- //#endregion
20149
- //#region src/deployment/assumed-conditions.ts
20040
+ // src/deployment/assumed-conditions.ts
20150
20041
  const assumedConditionNames = /* @__PURE__ */ new WeakMap();
20151
20042
  function recordAssumedConditions(conditions, assumed) {
20152
20043
  assumedConditionNames.set(conditions, assumed);
@@ -20155,8 +20046,7 @@ function conditionsAssumedFalse(conditions) {
20155
20046
  return assumedConditionNames.get(conditions) ?? /* @__PURE__ */ new Set();
20156
20047
  }
20157
20048
 
20158
- //#endregion
20159
- //#region src/deployment/noecho-declared.ts
20049
+ // src/deployment/noecho-declared.ts
20160
20050
  function isNoEchoDeclared(noEcho) {
20161
20051
  return noEcho === true || noEcho === "true";
20162
20052
  }
@@ -20164,8 +20054,7 @@ function declaresNoEcho(definition) {
20164
20054
  return definition !== null && typeof definition === "object" && isNoEchoDeclared(definition.NoEcho);
20165
20055
  }
20166
20056
 
20167
- //#endregion
20168
- //#region src/deployment/masked-property-fingerprints.ts
20057
+ // src/deployment/masked-property-fingerprints.ts
20169
20058
  const FINGERPRINT_LAYOUT$1 = 1;
20170
20059
  const INPUT_FINGERPRINT_LAYOUT = 2;
20171
20060
  function canonicalJson$4(value) {
@@ -21078,8 +20967,7 @@ function backfillMaskedPropertyFingerprints(resources, template, noEchoParameter
21078
20967
  return stamped;
21079
20968
  }
21080
20969
 
21081
- //#endregion
21082
- //#region src/deployment/drain-budget.ts
20970
+ // src/deployment/drain-budget.ts
21083
20971
  const drainDeadlines = new AsyncLocalStorage();
21084
20972
  async function withSharedDrainBudget(fn) {
21085
20973
  if (drainDeadlines.getStore() !== void 0) return await fn();
@@ -21090,8 +20978,7 @@ async function withSharedDrainBudget(fn) {
21090
20978
  }, fn);
21091
20979
  }
21092
20980
 
21093
- //#endregion
21094
- //#region src/provisioning/providers/wafv2-arn.ts
20981
+ // src/provisioning/providers/wafv2-arn.ts
21095
20982
  function parseWebACLArn(arn) {
21096
20983
  const segments = arn.split(":").slice(5).join(":").split("/");
21097
20984
  const scopeRaw = segments[0];
@@ -21103,8 +20990,7 @@ function parseWebACLArn(arn) {
21103
20990
  };
21104
20991
  }
21105
20992
 
21106
- //#endregion
21107
- //#region src/deployment/intrinsic-resolver/ref-values.ts
20993
+ // src/deployment/intrinsic-resolver/ref-values.ts
21108
20994
  const AWS_NO_VALUE = Symbol("AWS::NoValue");
21109
20995
  const REF_RETURNS_SEGMENT_AFTER_PIPE = /* @__PURE__ */ new Set([
21110
20996
  "AWS::ApiGateway::Model",
@@ -21327,8 +21213,7 @@ function buildUnknownIntrinsicError(key) {
21327
21213
  return /* @__PURE__ */ new Error(`Unsupported CloudFormation intrinsic function ${shown}: cdkd does not support resolving it yet. Deploying this template would produce a broken value. Please request support by opening an issue: ${issueUrl}`);
21328
21214
  }
21329
21215
 
21330
- //#endregion
21331
- //#region src/deployment/stale-attribute-heal.ts
21216
+ // src/deployment/stale-attribute-heal.ts
21332
21217
  var StaleAttributeMissSignal = class StaleAttributeMissSignal extends Error {
21333
21218
  constructor() {
21334
21219
  super("stale attribute miss (internal control flow — must not escape resolveGetAtt)");
@@ -21373,8 +21258,7 @@ function mergeHealedAttributes(recorded, healed, isStaleValue) {
21373
21258
  return merged ?? recorded;
21374
21259
  }
21375
21260
 
21376
- //#endregion
21377
- //#region src/deployment/intrinsic-resolver/context.ts
21261
+ // src/deployment/intrinsic-resolver/context.ts
21378
21262
  function withoutProducerRegions(context) {
21379
21263
  if (context?.producerRegions === void 0) return context;
21380
21264
  const { producerRegions: _stripped, ...rest } = context;
@@ -21473,8 +21357,7 @@ const cachedVpcDefaultSecurityGroups = Object.create(null);
21473
21357
  const cachedCloudFrontDomainNames = Object.create(null);
21474
21358
  const cachedSecurityGroupVpcIds = Object.create(null);
21475
21359
 
21476
- //#endregion
21477
- //#region src/deployment/intrinsic-resolver/account-drain.ts
21360
+ // src/deployment/intrinsic-resolver/account-drain.ts
21478
21361
  function effectiveAccountInfoRegion(overrideRegion) {
21479
21362
  return canonicalizeRegion(overrideRegion || process.env["AWS_REGION"]) || "us-east-1";
21480
21363
  }
@@ -21657,8 +21540,7 @@ function embedsAccountId(value, accountId) {
21657
21540
  return false;
21658
21541
  }
21659
21542
 
21660
- //#endregion
21661
- //#region src/deployment/intrinsic-resolver/support.ts
21543
+ // src/deployment/intrinsic-resolver/support.ts
21662
21544
  function collectReferencedParameterNames(template) {
21663
21545
  const parser = new TemplateParser();
21664
21546
  const referenced = /* @__PURE__ */ new Set();
@@ -21744,8 +21626,7 @@ function quotedRender(rendered, quote, described = "(not shown: it is not a plai
21744
21626
  return QUOTABLE_RENDER.test(rendered) ? `${quote}${rendered}${quote}` : described;
21745
21627
  }
21746
21628
 
21747
- //#endregion
21748
- //#region src/deployment/intrinsic-resolver/masking.ts
21629
+ // src/deployment/intrinsic-resolver/masking.ts
21749
21630
  function maskSecretsRaw(resolver, text, context) {
21750
21631
  const registered = registeredLogTwin(resolver, text, context);
21751
21632
  const needled = maskNeedlesForLog(resolver, text, context);
@@ -21915,8 +21796,7 @@ function rememberLogTwin(resolver, context, result, twin) {
21915
21796
  twins.set(result, existing === void 0 || existing === twin ? twin : "***");
21916
21797
  }
21917
21798
 
21918
- //#endregion
21919
- //#region src/deployment/intrinsic-resolver/masking-display.ts
21799
+ // src/deployment/intrinsic-resolver/masking-display.ts
21920
21800
  function maskValueLeaves(masker, value, context) {
21921
21801
  const done = /* @__PURE__ */ new Map();
21922
21802
  const walk = (node) => {
@@ -21960,8 +21840,7 @@ function displayLeaf(resolver, value, context) {
21960
21840
  return displayMasked(resolver, logTextOfLeaf(resolver, value, context), context);
21961
21841
  }
21962
21842
 
21963
- //#endregion
21964
- //#region src/deployment/secret-region-classification.ts
21843
+ // src/deployment/secret-region-classification.ts
21965
21844
  const REPLAY_SECRET_SERVICES = /* @__PURE__ */ new Set([
21966
21845
  "secretsmanager",
21967
21846
  "ssm",
@@ -22042,8 +21921,7 @@ function classifyRecordedSecretRegion(expression, consumerRegion, importedProduc
22042
21921
  };
22043
21922
  }
22044
21923
 
22045
- //#endregion
22046
- //#region src/deployment/intrinsic-resolver/cfn-fallback.ts
21924
+ // src/deployment/intrinsic-resolver/cfn-fallback.ts
22047
21925
  var CfnFallbackCache = class {
22048
21926
  cfnExportsPromises = /* @__PURE__ */ new Map();
22049
21927
  cfnStackOutputsCache = /* @__PURE__ */ new Map();
@@ -22126,8 +22004,7 @@ function describeAvailableOutputs(masker, keys, context) {
22126
22004
  return hidden > 0 ? `${rendered} (+${hidden} more)` : rendered;
22127
22005
  }
22128
22006
 
22129
- //#endregion
22130
- //#region src/utils/caller-credentials.ts
22007
+ // src/utils/caller-credentials.ts
22131
22008
  const AWS_CREDENTIAL_ENV_KEYS = [
22132
22009
  "AWS_ACCESS_KEY_ID",
22133
22010
  "AWS_SECRET_ACCESS_KEY",
@@ -22164,8 +22041,7 @@ function applyCallerIdentityCredentials(env) {
22164
22041
  else delete env["AWS_SESSION_TOKEN"];
22165
22042
  }
22166
22043
 
22167
- //#endregion
22168
- //#region src/utils/role-arn.ts
22044
+ // src/utils/role-arn.ts
22169
22045
  const crossAccountCredentialsCache = /* @__PURE__ */ new Map();
22170
22046
  const CRED_EXPIRY_SAFETY_MS = 6e4;
22171
22047
  const IAM_ROLE_ARN_RE = /^arn:(aws[a-z0-9-]*):iam::(\d{12}):role\/[\w+=,.@-]+(?:\/[\w+=,.@-]+)*$/;
@@ -22298,8 +22174,7 @@ async function applyRoleArnIfSet(opts) {
22298
22174
  }
22299
22175
  }
22300
22176
 
22301
- //#endregion
22302
- //#region src/deployment/intrinsic-resolver/stack-state.ts
22177
+ // src/deployment/intrinsic-resolver/stack-state.ts
22303
22178
  async function getSameAccountStackState(stackName, region, context) {
22304
22179
  if (!context.stateBackend) throw markNonRetryable(/* @__PURE__ */ new Error("Fn::GetStackOutput: state backend is required for cross-stack references"));
22305
22180
  return context.stateBackend.getState(stackName, region);
@@ -22338,8 +22213,7 @@ async function getCrossAccountStackState(roleArn, stackName, region, context) {
22338
22213
  }).getState(stackName, region);
22339
22214
  }
22340
22215
 
22341
- //#endregion
22342
- //#region src/deployment/reference-provenance-record.ts
22216
+ // src/deployment/reference-provenance-record.ts
22343
22217
  const SSM_VERSION = /^[0-9]{1,10}$/;
22344
22218
  const SECRETS_MANAGER_VERSION = /^[A-Za-z0-9_+=.@/-]{32,64}$/;
22345
22219
  function referenceTokensIn(value, into = /* @__PURE__ */ new Set()) {
@@ -22538,8 +22412,7 @@ function withReferenceProvenance(record, field) {
22538
22412
  };
22539
22413
  }
22540
22414
 
22541
- //#endregion
22542
- //#region src/deployment/intrinsic-resolver/recorded-reference-routes.ts
22415
+ // src/deployment/intrinsic-resolver/recorded-reference-routes.ts
22543
22416
  function tokensOf(value) {
22544
22417
  const out = /* @__PURE__ */ new Set();
22545
22418
  for (const leaf of wholeStringLeavesOf(value)) for (const token of dynamicReferenceTokens(leaf)) out.add(token);
@@ -22687,8 +22560,7 @@ async function rebuildByToken(value, resolveToken) {
22687
22560
  return value;
22688
22561
  }
22689
22562
 
22690
- //#endregion
22691
- //#region src/deployment/intrinsic-resolver/cross-stack.ts
22563
+ // src/deployment/intrinsic-resolver/cross-stack.ts
22692
22564
  async function reresolveCrossStackValue(resolver, value, producerRegion, context, origin, sourceKey, producerOutput, producerRegionLogText) {
22693
22565
  if (context.crossStackReads !== void 0 && producerOutput !== void 0 && producerOutput.crossAccount !== true && sourceKey !== void 0) context.crossStackReads.set(sourceKey, {
22694
22566
  stackName: producerOutput.stackName,
@@ -22926,8 +22798,7 @@ function physicalIdsOf(state) {
22926
22798
  return ids;
22927
22799
  }
22928
22800
 
22929
- //#endregion
22930
- //#region src/deployment/intrinsic-resolver/cdk-cross-account-ref.ts
22801
+ // src/deployment/intrinsic-resolver/cdk-cross-account-ref.ts
22931
22802
  function producerLookupOver(stacks) {
22932
22803
  return (stackName, account, region) => stacks.find((s) => s.stackName === stackName && s.account === account && sameRegion(s.region, region));
22933
22804
  }
@@ -23097,8 +22968,7 @@ function refuseUnreadableCdkCrossAccountRefs(refs, deployed, consumerOf, lookup)
23097
22968
  }
23098
22969
  }
23099
22970
 
23100
- //#endregion
23101
- //#region src/deployment/intrinsic-resolver/stack-output.ts
22971
+ // src/deployment/intrinsic-resolver/stack-output.ts
23102
22972
  async function resolveGetStackOutput(resolver, arg, context) {
23103
22973
  if (!arg || typeof arg !== "object" || Array.isArray(arg)) throw markNonRetryable(/* @__PURE__ */ new Error(`Fn::GetStackOutput: argument must be an object with StackName/OutputName/Region/RoleArn, got ${arg === null ? "null" : Array.isArray(arg) ? "array" : typeof arg}`));
23104
22974
  const args = arg;
@@ -23285,8 +23155,7 @@ function namedRequestMasks(resolver, pairs, context) {
23285
23155
  };
23286
23156
  }
23287
23157
 
23288
- //#endregion
23289
- //#region src/deployment/intrinsic-resolver/dynamic-ref-lookups.ts
23158
+ // src/deployment/intrinsic-resolver/dynamic-ref-lookups.ts
23290
23159
  async function resolveSecretsManagerReference(resolver, inner, context, nameLogText, versionOut, pinVersion) {
23291
23160
  const afterService = inner.substring(15);
23292
23161
  let secretId;
@@ -23395,8 +23264,7 @@ function withoutSsmSelector(parameterName) {
23395
23264
  return selector < 0 ? parameterName : parameterName.slice(0, selector);
23396
23265
  }
23397
23266
 
23398
- //#endregion
23399
- //#region src/deployment/intrinsic-resolver/dynamic-refs.ts
23267
+ // src/deployment/intrinsic-resolver/dynamic-refs.ts
23400
23268
  var DynamicReferenceCache = class {
23401
23269
  cachedDynamicReferences = /* @__PURE__ */ new Map();
23402
23270
  warnedUnrecognizedSsmTypes = /* @__PURE__ */ new Set();
@@ -23596,8 +23464,7 @@ async function resolveDynamicReferencesWithLogTwin(resolver, value, logTwin, con
23596
23464
  };
23597
23465
  }
23598
23466
 
23599
- //#endregion
23600
- //#region src/utils/s3-endpoints.ts
23467
+ // src/utils/s3-endpoints.ts
23601
23468
  const S3_WEBSITE_ENDPOINT_LEGACY_DASH_REGIONS = /* @__PURE__ */ new Set([
23602
23469
  "ap-northeast-1",
23603
23470
  "ap-southeast-1",
@@ -23629,8 +23496,7 @@ function s3BucketWebsiteUrl(bucketName, region) {
23629
23496
  return `http://${bucketName}.s3-website${S3_WEBSITE_ENDPOINT_LEGACY_DASH_REGIONS.has(folded) ? "-" : "."}${folded}.${urlSuffix}`;
23630
23497
  }
23631
23498
 
23632
- //#endregion
23633
- //#region src/deployment/intrinsic-resolver/getatt-heal.ts
23499
+ // src/deployment/intrinsic-resolver/getatt-heal.ts
23634
23500
  function staleRecordRemedy(resolver, outcome, context) {
23635
23501
  const touch = "change any property of the resource so its next update re-records the attributes, or re-import it with 'cdkd import'";
23636
23502
  if (outcome === void 0) return `Run 'cdkd deploy': it re-reads a stale record's attributes from AWS and heals the record. Otherwise ${touch}.`;
@@ -23761,8 +23627,7 @@ function healMaskedOwnIdAttribute(resolver, logicalId, resource, attributeName,
23761
23627
  })();
23762
23628
  }
23763
23629
 
23764
- //#endregion
23765
- //#region src/deployment/intrinsic-resolver/getatt-refusals.ts
23630
+ // src/deployment/intrinsic-resolver/getatt-refusals.ts
23766
23631
  function refuseUnservedAttribute(resolver, site) {
23767
23632
  const { logicalId, attributeName, resourceType, physicalId, context, observed, remedy } = site;
23768
23633
  throw new IntrinsicResolutionRefusalError(`Cannot resolve Fn::GetAtt [${displayMasked(resolver, logicalId, context)}, ${displayMasked(resolver, attributeName, context)}] for ${displayMasked(resolver, resourceType, context)}: ${observed}. The physical id ${quotedRender(displayMasked(resolver, physicalId, context), "\"")} is not a usable ${displayMasked(resolver, attributeName, context)}, so cdkd refuses to substitute it. ${remedy}`);
@@ -23807,8 +23672,7 @@ function guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceT
23807
23672
  return physicalId;
23808
23673
  }
23809
23674
 
23810
- //#endregion
23811
- //#region src/deployment/intrinsic-resolver/getatt-construct-core.ts
23675
+ // src/deployment/intrinsic-resolver/getatt-construct-core.ts
23812
23676
  const NOT_CONSTRUCTED = Symbol("NOT_CONSTRUCTED");
23813
23677
  async function constructAttributeForCoreTypes(resolver, resource, attributeName, context, logicalId, resourceType, physicalId, accountId, partition, region) {
23814
23678
  if (resourceType === "AWS::DynamoDB::Table" || resourceType === "AWS::DynamoDB::GlobalTable") switch (attributeName) {
@@ -23961,8 +23825,7 @@ async function constructAttributeForCoreTypes(resolver, resource, attributeName,
23961
23825
  return NOT_CONSTRUCTED;
23962
23826
  }
23963
23827
 
23964
- //#endregion
23965
- //#region src/deployment/intrinsic-resolver/getatt-construct-app.ts
23828
+ // src/deployment/intrinsic-resolver/getatt-construct-app.ts
23966
23829
  async function constructAttributeForAppTypes(resolver, resource, attributeName, context, logicalId, resourceType, physicalId, accountId, partition, region) {
23967
23830
  if (resourceType === "AWS::Events::Rule") switch (attributeName) {
23968
23831
  case "Arn": {
@@ -24100,14 +23963,12 @@ async function constructAttributeForAppTypes(resolver, resource, attributeName,
24100
23963
  return NOT_CONSTRUCTED;
24101
23964
  }
24102
23965
 
24103
- //#endregion
24104
- //#region src/provisioning/ec2-instance-state.ts
23966
+ // src/provisioning/ec2-instance-state.ts
24105
23967
  function isSettledInstanceState(stateName) {
24106
23968
  return stateName !== void 0 && stateName !== "pending";
24107
23969
  }
24108
23970
 
24109
- //#endregion
24110
- //#region src/deployment/intrinsic-resolver/getatt-construct-compute.ts
23971
+ // src/deployment/intrinsic-resolver/getatt-construct-compute.ts
24111
23972
  async function constructAttributeForComputeTypes(resolver, attributeName, context, logicalId, resourceType, physicalId, accountId, partition, region) {
24112
23973
  if (resourceType === "AWS::Logs::LogGroup") switch (attributeName) {
24113
23974
  case "Arn": return `arn:${partition}:logs:${region}:${accountId}:log-group:${physicalId}:*`;
@@ -24377,8 +24238,7 @@ const natGatewayAttributeWait = {
24377
24238
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms))
24378
24239
  };
24379
24240
 
24380
- //#endregion
24381
- //#region src/deployment/intrinsic-resolver/functions.ts
24241
+ // src/deployment/intrinsic-resolver/functions.ts
24382
24242
  async function resolveIf(resolver, ifArgs, context, source) {
24383
24243
  const [conditionName, valueIfTrue, valueIfFalse] = ifArgs;
24384
24244
  const resolveBranch = async (branch) => {
@@ -24637,8 +24497,7 @@ function bigIntToIPv6(_resolver, n) {
24637
24497
  return parts.join(":");
24638
24498
  }
24639
24499
 
24640
- //#endregion
24641
- //#region src/deployment/intrinsic-resolver/parameter-secrets.ts
24500
+ // src/deployment/intrinsic-resolver/parameter-secrets.ts
24642
24501
  function recordInheritedParameterSecrets(resolver, parameterName, value, context) {
24643
24502
  const inherited = context.inheritedSecrets;
24644
24503
  const recorded = context.recordedSecretValues;
@@ -24917,8 +24776,7 @@ function refuseCoercedInheritedSecret(resolver, name, paramDef, userValue, inher
24917
24776
  throw markNonRetryable(new IntrinsicResolutionRefusalError(`Nested-stack parameter ${quotedRender(loggedName, "'")} is declared ${QUOTABLE_RENDER.test(loggedType) ? `'Type: ${loggedType}'` : "with a Type that is not a plain identifier"}, but the parent stack resolved a SECRET dynamic reference into it. cdkd keeps a resolved secret out of persisted state by rewriting STRING leaves back to their {{resolve:...}} expression; coercing this value to ${quotedRender(loggedType, "'", "that Type")} destroys the plaintext cdkd would have matched on, so the DECRYPTED secret would be left in the child stack's state.json with nothing to redact it back to. Declare ${quotedRender(loggedName, "'", "the parameter")} as 'Type: String' in the nested stack's template (CDK does this by default for cross-stack references), or stop passing a secret reference into it.`, void 0, "NESTED_STACK_SECRET_PARAMETER_TYPE"));
24918
24777
  }
24919
24778
 
24920
- //#endregion
24921
- //#region src/deployment/intrinsic-resolver/refs.ts
24779
+ // src/deployment/intrinsic-resolver/refs.ts
24922
24780
  function nameIsNeverAResource(_resolver, logicalId, context) {
24923
24781
  if (logicalId.startsWith("AWS::")) return true;
24924
24782
  const declared = context.template?.Parameters;
@@ -24994,8 +24852,7 @@ function noteRefStateMask(resolver, logicalId, key, context) {
24994
24852
  });
24995
24853
  }
24996
24854
 
24997
- //#endregion
24998
- //#region src/deployment/intrinsic-resolver/getatt.ts
24855
+ // src/deployment/intrinsic-resolver/getatt.ts
24999
24856
  function pushRedactedAttributeRead(_resolver, context, read) {
25000
24857
  const bag = context.redactedAttributeReads;
25001
24858
  if (bag === void 0) return;
@@ -25282,8 +25139,7 @@ async function constructAttribute(resolver, resource, attributeName, context, lo
25282
25139
  return guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context);
25283
25140
  }
25284
25141
 
25285
- //#endregion
25286
- //#region src/deployment/intrinsic-resolver/string-functions.ts
25142
+ // src/deployment/intrinsic-resolver/string-functions.ts
25287
25143
  function partParameterSpans(context, part, resolved) {
25288
25144
  if (context.recordedSecretValues === void 0) return [];
25289
25145
  if (typeof part !== "object" || part === null) return [];
@@ -25493,8 +25349,7 @@ async function resolveSplit(resolver, splitArgs, context) {
25493
25349
  return result;
25494
25350
  }
25495
25351
 
25496
- //#endregion
25497
- //#region src/deployment/intrinsic-resolver/params-conditions.ts
25352
+ // src/deployment/intrinsic-resolver/params-conditions.ts
25498
25353
  async function resolveParameters(resolver, template, userParameters, options) {
25499
25354
  const inheritedSecrets = options?.inheritedSecrets;
25500
25355
  if (inheritedSecrets && options?.recordPseudoParameters !== false) await recordInheritedPseudoParameterValues(resolver, inheritedSecrets, template);
@@ -25605,8 +25460,7 @@ async function resolveKeyUnit(resolver, key, val, context, abandoned) {
25605
25460
  }
25606
25461
  }
25607
25462
 
25608
- //#endregion
25609
- //#region src/deployment/intrinsic-resolver/sub.ts
25463
+ // src/deployment/intrinsic-resolver/sub.ts
25610
25464
  function subPlaceholderWarning(_resolver, varName, error) {
25611
25465
  return `Fn::Sub variable ${varName} could not be resolved (${describeAwsFailure(error).detail}), keeping placeholder`;
25612
25466
  }
@@ -25805,8 +25659,7 @@ async function resolveSub(resolver, subArgs, context, source) {
25805
25659
  return result;
25806
25660
  }
25807
25661
 
25808
- //#endregion
25809
- //#region src/deployment/intrinsic-resolver/clients.ts
25662
+ // src/deployment/intrinsic-resolver/clients.ts
25810
25663
  var ResolverClients = class {
25811
25664
  regionScopedClients = /* @__PURE__ */ new Map();
25812
25665
  serviceDiscoveryClients = /* @__PURE__ */ new Map();
@@ -25867,8 +25720,7 @@ var ResolverClients = class {
25867
25720
  }
25868
25721
  };
25869
25722
 
25870
- //#endregion
25871
- //#region src/deployment/intrinsic-function-resolver.ts
25723
+ // src/deployment/intrinsic-function-resolver.ts
25872
25724
  var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
25873
25725
  logger = getLogger().child("IntrinsicFunctionResolver");
25874
25726
  resolverRegion;
@@ -26034,8 +25886,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
26034
25886
  }
26035
25887
  };
26036
25888
 
26037
- //#endregion
26038
- //#region src/state/unsettled-properties.ts
25889
+ // src/state/unsettled-properties.ts
26039
25890
  function unsettledPropertiesOf(record) {
26040
25891
  if (record === null || typeof record !== "object") return /* @__PURE__ */ new Set();
26041
25892
  const value = record.unsettledProperties;
@@ -26130,8 +25981,7 @@ function unsettledContextOf(...records) {
26130
25981
  };
26131
25982
  }
26132
25983
 
26133
- //#endregion
26134
- //#region src/analyzer/read-provenance-promotion.ts
25984
+ // src/analyzer/read-provenance-promotion.ts
26135
25985
  function isPlainObject$7(value) {
26136
25986
  return value !== null && typeof value === "object" && !Array.isArray(value);
26137
25987
  }
@@ -26225,8 +26075,7 @@ async function readProvenancePromotions(args) {
26225
26075
  return out;
26226
26076
  }
26227
26077
 
26228
- //#endregion
26229
- //#region src/analyzer/diff-calculator.ts
26078
+ // src/analyzer/diff-calculator.ts
26230
26079
  const INTRINSIC_KEYS = /* @__PURE__ */ new Set([
26231
26080
  "Ref",
26232
26081
  "Fn::Sub",
@@ -26879,8 +26728,7 @@ var DiffCalculator = class DiffCalculator {
26879
26728
  }
26880
26729
  };
26881
26730
 
26882
- //#endregion
26883
- //#region src/provisioning/ec2-termination-protection.ts
26731
+ // src/provisioning/ec2-termination-protection.ts
26884
26732
  async function disableInstanceApiTermination(client, instanceId, logger) {
26885
26733
  try {
26886
26734
  await client.send(new ModifyInstanceAttributeCommand({
@@ -26948,8 +26796,7 @@ function ec2InstanceProtectionSite(instanceId, region) {
26948
26796
  };
26949
26797
  }
26950
26798
 
26951
- //#endregion
26952
- //#region src/provisioning/wait-abandoned.ts
26799
+ // src/provisioning/wait-abandoned.ts
26953
26800
  const WAIT_ABANDONED_MARKER = Symbol.for("cdkd.waitAbandoned");
26954
26801
  const ABANDONED_REQUEST = Symbol.for("cdkd.waitAbandoned.request");
26955
26802
  const MAX_CAUSE_CHAIN_DEPTH = 5;
@@ -26986,8 +26833,7 @@ function abandonedRequestOf(error) {
26986
26833
  }
26987
26834
  }
26988
26835
 
26989
- //#endregion
26990
- //#region src/provisioning/ec2-volume-delete.ts
26836
+ // src/provisioning/ec2-volume-delete.ts
26991
26837
  async function deleteEc2VolumeDirect(client, volumeId, logicalId, opts) {
26992
26838
  const now = opts.now ?? Date.now;
26993
26839
  try {
@@ -27053,8 +26899,7 @@ function errorName(error) {
27053
26899
  return typeof name === "string" ? name : "";
27054
26900
  }
27055
26901
 
27056
- //#endregion
27057
- //#region src/deployment/delete-outcome.ts
26902
+ // src/deployment/delete-outcome.ts
27058
26903
  function deleteSkipReason(result) {
27059
26904
  if (!result || result.outcome !== "skipped") return void 0;
27060
26905
  if (typeof result.reason !== "string") return UNSPECIFIED_SKIP_REASON;
@@ -27109,8 +26954,7 @@ function deleteIndeterminateGuards(result) {
27109
26954
  return out;
27110
26955
  }
27111
26956
 
27112
- //#endregion
27113
- //#region src/deployment/inline-policy-claims.ts
26957
+ // src/deployment/inline-policy-claims.ts
27114
26958
  function isInlinePolicyClaimedByCompletedWriter(args, kind, principal, policyName) {
27115
26959
  const { selfLogicalId, writers, changes, stateResources } = args;
27116
26960
  for (const [lid, write] of writers) {
@@ -27614,8 +27458,7 @@ function ownPoliciesChange(change) {
27614
27458
  return (change?.propertyChanges ?? []).some((c) => c.path === "Policies" && c.inPlacePropagated !== true && c.replacementPropagated !== true);
27615
27459
  }
27616
27460
 
27617
- //#endregion
27618
- //#region src/provisioning/json-patch-generator.ts
27461
+ // src/provisioning/json-patch-generator.ts
27619
27462
  var JsonPatchGenerator = class {
27620
27463
  logger = getLogger().child("JsonPatchGenerator");
27621
27464
  generatePatch(previousProperties, desiredProperties) {
@@ -27670,8 +27513,7 @@ var JsonPatchGenerator = class {
27670
27513
  }
27671
27514
  };
27672
27515
 
27673
- //#endregion
27674
- //#region src/provisioning/guardduty-detector-patch.ts
27516
+ // src/provisioning/guardduty-detector-patch.ts
27675
27517
  const DETECTOR_TYPE = "AWS::GuardDuty::Detector";
27676
27518
  const READ_BACK_KEYS = ["Features", "DataSources"];
27677
27519
  function withGuardDutyDetectorReadBackOps(resourceType, patch, desired, readback) {
@@ -27726,8 +27568,7 @@ function featureName(entry) {
27726
27568
  return typeof name === "string" ? name : void 0;
27727
27569
  }
27728
27570
 
27729
- //#endregion
27730
- //#region src/provisioning/apigwv2-body-import-patch.ts
27571
+ // src/provisioning/apigwv2-body-import-patch.ts
27731
27572
  const API_TYPE = "AWS::ApiGatewayV2::Api";
27732
27573
  const DEFINITION_KEYS = ["Body", "BodyS3Location"];
27733
27574
  const IMPORT_KEYS = [
@@ -27778,8 +27619,7 @@ function apiGatewayV2DefinitionObject(location) {
27778
27619
  };
27779
27620
  }
27780
27621
 
27781
- //#endregion
27782
- //#region src/provisioning/secret-reference-immutable.ts
27622
+ // src/provisioning/secret-reference-immutable.ts
27783
27623
  const IDENTITY = maskerOrIdentity(void 0);
27784
27624
  async function unchangedBehindSecretReference(evidence) {
27785
27625
  const { resourceType, key, desired, previous, physicalName, maskSecrets } = evidence;
@@ -27839,8 +27679,7 @@ function escapeRegExp$1(text) {
27839
27679
  return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
27840
27680
  }
27841
27681
 
27842
- //#endregion
27843
- //#region src/provisioning/getatt-attributes.generated.ts
27682
+ // src/provisioning/getatt-attributes.generated.ts
27844
27683
  const WRITABLE_GETATT_ATTRIBUTES = {
27845
27684
  "AWS::Amplify::Branch": ["BranchName"],
27846
27685
  "AWS::Amplify::Domain": [
@@ -27994,8 +27833,7 @@ const SHAPE_MISMATCHED_GETATT_ATTRIBUTES = {
27994
27833
  "AWS::MediaLive::Input": ["Destinations", "Sources"]
27995
27834
  };
27996
27835
 
27997
- //#endregion
27998
- //#region src/provisioning/read-only-properties.ts
27836
+ // src/provisioning/read-only-properties.ts
27999
27837
  function isDefinitiveRefusal(error) {
28000
27838
  if (isThrottlingError(error)) return false;
28001
27839
  let current = error;
@@ -28062,8 +27900,7 @@ function unescapeJsonPointerSegment(segment) {
28062
27900
  return segment.replace(/~1/g, "/").replace(/~0/g, "~");
28063
27901
  }
28064
27902
 
28065
- //#endregion
28066
- //#region src/provisioning/cc-import-identifier.ts
27903
+ // src/provisioning/cc-import-identifier.ts
28067
27904
  const primaryIdentifierCache = /* @__PURE__ */ new Map();
28068
27905
  function getPrimaryIdentifierFields(resourceType) {
28069
27906
  if (hasNoRegistrySchema(resourceType)) return Promise.resolve(void 0);
@@ -28124,8 +27961,7 @@ function toCloudControlIdentifier(input) {
28124
27961
  return identifier;
28125
27962
  }
28126
27963
 
28127
- //#endregion
28128
- //#region src/provisioning/cc-protection-properties.ts
27964
+ // src/provisioning/cc-protection-properties.ts
28129
27965
  const CC_PROTECTION_PROPERTIES = {
28130
27966
  "AWS::DSQL::Cluster": {
28131
27967
  property: "DeletionProtectionEnabled",
@@ -28200,8 +28036,7 @@ function ccProtectionSite(resourceType, physicalId, entry, region) {
28200
28036
  };
28201
28037
  }
28202
28038
 
28203
- //#endregion
28204
- //#region src/provisioning/slow-cc-operation-timeouts.ts
28039
+ // src/provisioning/slow-cc-operation-timeouts.ts
28205
28040
  const MINUTE_MS = 6e4;
28206
28041
  const SLOW_CC_OPERATION_TIMEOUTS = {
28207
28042
  "AWS::OpenSearchService::Domain": {
@@ -28252,8 +28087,7 @@ function slowCcOperationTimeoutMs(resourceType, operation) {
28252
28087
  }
28253
28088
  }
28254
28089
 
28255
- //#endregion
28256
- //#region src/provisioning/cloud-control-provider.ts
28090
+ // src/provisioning/cloud-control-provider.ts
28257
28091
  const JSON_STRING_PROPERTIES = { "AWS::Events::Rule": /* @__PURE__ */ new Set(["EventPattern"]) };
28258
28092
  function stringifyJsonProperties(resourceType, properties) {
28259
28093
  const jsonProps = JSON_STRING_PROPERTIES[resourceType];
@@ -28785,7 +28619,7 @@ var CloudControlProvider = class {
28785
28619
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
28786
28620
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
28787
28621
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
28788
- const { ASGProvider } = await import("./asg-provider-DpNkEibf.js");
28622
+ const { ASGProvider } = await import("./asg-provider-DOLuhiky.js");
28789
28623
  const delegateRegion = ambientRegion();
28790
28624
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
28791
28625
  if (asgProvider === void 0) {
@@ -28894,7 +28728,7 @@ var CloudControlProvider = class {
28894
28728
  const family = SDK_DELETE_FAMILIES.get(resourceType);
28895
28729
  const cached = this.sdkDeleteDelegates.get(family);
28896
28730
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
28897
- const provider = family === "rds" ? new (await (import("./rds-provider-Cm3dsmFW.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-BNxotnbp.js"))).NeptuneProvider({ region: ccRegion });
28731
+ const provider = family === "rds" ? new (await (import("./rds-provider-VigGKsxO.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CuZbMn9R.js"))).NeptuneProvider({ region: ccRegion });
28898
28732
  this.sdkDeleteDelegates.set(family, {
28899
28733
  region: ccRegion,
28900
28734
  provider
@@ -29831,8 +29665,7 @@ function maskLeavesDeep(value) {
29831
29665
  return "***";
29832
29666
  }
29833
29667
 
29834
- //#endregion
29835
- //#region src/state/state-bucket-lifecycle.ts
29668
+ // src/state/state-bucket-lifecycle.ts
29836
29669
  const CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID = "cdkd-custom-resource-responses-expiration";
29837
29670
  const CUSTOM_RESOURCE_RESPONSE_EXPIRATION_DAYS = 1;
29838
29671
  const CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_PREFIX = `${CUSTOM_RESOURCE_RESPONSE_PREFIX}/cdkd-1`;
@@ -29949,8 +29782,7 @@ function ensureCustomResourceResponseExpirationOnce(s3, bucket, log) {
29949
29782
  return run;
29950
29783
  }
29951
29784
 
29952
- //#endregion
29953
- //#region src/deployment/resource-secrets-scope.ts
29785
+ // src/deployment/resource-secrets-scope.ts
29954
29786
  const currentResourceSecretsStore = new AsyncLocalStorage();
29955
29787
  const boundSecretBagsStore = new AsyncLocalStorage();
29956
29788
  installLogLineMaskerSource(() => {
@@ -29970,8 +29802,7 @@ function getCurrentResourceSecrets() {
29970
29802
  return currentResourceSecretsStore.getStore();
29971
29803
  }
29972
29804
 
29973
- //#endregion
29974
- //#region src/provisioning/custom-resource-secure-references.ts
29805
+ // src/provisioning/custom-resource-secure-references.ts
29975
29806
  function isCustomResourceType(resourceType) {
29976
29807
  return resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::");
29977
29808
  }
@@ -30033,8 +29864,7 @@ function findResolvedSecretPaths(properties, secrets) {
30033
29864
  return paths;
30034
29865
  }
30035
29866
 
30036
- //#endregion
30037
- //#region src/deployment/noecho-delete-reresolution.ts
29867
+ // src/deployment/noecho-delete-reresolution.ts
30038
29868
  function readsNoEchoDeleteValues(resourceType) {
30039
29869
  return resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::") || resourceType === "AWS::CloudFormation::Stack";
30040
29870
  }
@@ -30362,8 +30192,7 @@ var TemplateNoEchoReresolver = class TemplateNoEchoReresolver {
30362
30192
  }
30363
30193
  };
30364
30194
 
30365
- //#endregion
30366
- //#region src/provisioning/providers/custom-resource-provider.ts
30195
+ // src/provisioning/providers/custom-resource-provider.ts
30367
30196
  function deletePathMasker(callerMask, noEchoMask) {
30368
30197
  if (callerMask === void 0) return noEchoMask;
30369
30198
  if (noEchoMask === void 0) return callerMask;
@@ -31406,8 +31235,7 @@ var CustomResourceProvider = class CustomResourceProvider {
31406
31235
  }
31407
31236
  };
31408
31237
 
31409
- //#endregion
31410
- //#region src/provisioning/mutually-exclusive-properties.ts
31238
+ // src/provisioning/mutually-exclusive-properties.ts
31411
31239
  const MUTUALLY_EXCLUSIVE_PROPERTIES = /* @__PURE__ */ new Map([["AWS::EC2::Route", [{
31412
31240
  properties: [
31413
31241
  "DestinationCidrBlock",
@@ -31453,8 +31281,7 @@ function buildMutuallyExclusiveMessage(logicalId, violation) {
31453
31281
  return ` - ${logicalId} (${resourceType}) declares ${declared.join(" and ")}\n ${rule.rationale}${winnerNote}\n Declare at most one of: ${rule.properties.join(" / ")}`;
31454
31282
  }
31455
31283
 
31456
- //#endregion
31457
- //#region src/provisioning/nested-required.generated.ts
31284
+ // src/provisioning/nested-required.generated.ts
31458
31285
  const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31459
31286
  ["AWS::ApiGateway::Deployment", /* @__PURE__ */ new Map([["StageDescription.Tags", ["Key", "Value"]]])],
31460
31287
  ["AWS::ApiGateway::Method", /* @__PURE__ */ new Map([
@@ -32838,8 +32665,7 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
32838
32665
  ])]
32839
32666
  ]);
32840
32667
 
32841
- //#endregion
32842
- //#region src/provisioning/nested-required.ts
32668
+ // src/provisioning/nested-required.ts
32843
32669
  const CFN_ENFORCED_TYPES = /* @__PURE__ */ new Set([
32844
32670
  "AWS::ApiGateway::Deployment",
32845
32671
  "AWS::ApiGateway::Method",
@@ -32968,8 +32794,7 @@ function buildNestedRequiredMessage(logicalId, violation) {
32968
32794
  return ` - ${logicalId} (${violation.resourceType}): ${violation.path} is missing required ${violation.missing.length === 1 ? "member" : "members"} ${violation.missing.join(", ")}`;
32969
32795
  }
32970
32796
 
32971
- //#endregion
32972
- //#region src/provisioning/property-shape.generated.ts
32797
+ // src/provisioning/property-shape.generated.ts
32973
32798
  const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
32974
32799
  ["AWS::ApiGateway::Authorizer", "{\"ProviderARNs\":\"array\"}"],
32975
32800
  ["AWS::ApiGateway::Deployment", "{\"DeploymentCanarySettings\":\"object\",\"DeploymentCanarySettings.StageVariableOverrides\":\"object\",\"StageDescription\":\"object\",\"StageDescription.AccessLogSetting\":\"object\",\"StageDescription.CanarySetting\":\"object\",\"StageDescription.CanarySetting.StageVariableOverrides\":\"object\",\"StageDescription.MethodSettings\":\"array\",\"StageDescription.MethodSettings[]\":\"object\",\"StageDescription.Tags\":\"array\",\"StageDescription.Tags[]\":\"object\",\"StageDescription.Variables\":\"object\"}"],
@@ -33087,8 +32912,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
33087
32912
  ["AWS::WAFv2::WebACL", "{\"ApplicationConfig\":\"object\",\"ApplicationConfig.Attributes\":\"array\",\"ApplicationConfig.Attributes[]\":\"object\",\"ApplicationConfig.Attributes[].Values\":\"array\",\"AssociationConfig\":\"object\",\"AssociationConfig.RequestBody\":\"object\",\"CaptchaConfig\":\"object\",\"CaptchaConfig.ImmunityTimeProperty\":\"object\",\"ChallengeConfig\":\"object\",\"ChallengeConfig.ImmunityTimeProperty\":\"object\",\"CustomResponseBodies\":\"object\",\"DataProtectionConfig\":\"object\",\"DataProtectionConfig.DataProtections\":\"array\",\"DataProtectionConfig.DataProtections[]\":\"object\",\"DataProtectionConfig.DataProtections[].Field\":\"object\",\"DataProtectionConfig.DataProtections[].Field.FieldKeys\":\"array\",\"DefaultAction\":\"object\",\"DefaultAction.Allow\":\"object\",\"DefaultAction.Allow.CustomRequestHandling\":\"object\",\"DefaultAction.Allow.CustomRequestHandling.InsertHeaders\":\"array\",\"DefaultAction.Allow.CustomRequestHandling.InsertHeaders[]\":\"object\",\"DefaultAction.Block\":\"object\",\"DefaultAction.Block.CustomResponse\":\"object\",\"DefaultAction.Block.CustomResponse.ResponseHeaders\":\"array\",\"DefaultAction.Block.CustomResponse.ResponseHeaders[]\":\"object\",\"MonetizationConfig\":\"object\",\"MonetizationConfig.CryptoConfig\":\"object\",\"MonetizationConfig.CryptoConfig.PaymentNetworks\":\"array\",\"MonetizationConfig.CryptoConfig.PaymentNetworks[]\":\"object\",\"MonetizationConfig.CryptoConfig.PaymentNetworks[].Prices\":\"array\",\"MonetizationConfig.CryptoConfig.PaymentNetworks[].Prices[]\":\"object\",\"OnSourceDDoSProtectionConfig\":\"object\",\"Rules\":\"array\",\"Rules[]\":\"object\",\"Rules[].Action\":\"object\",\"Rules[].Action.Allow\":\"object\",\"Rules[].Action.Allow.CustomRequestHandling\":\"object\",\"Rules[].Action.Allow.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Action.Allow.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Action.Block\":\"object\",\"Rules[].Action.Block.CustomResponse\":\"object\",\"Rules[].Action.Block.CustomResponse.ResponseHeaders\":\"array\",\"Rules[].Action.Block.CustomResponse.ResponseHeaders[]\":\"object\",\"Rules[].Action.Captcha\":\"object\",\"Rules[].Action.Captcha.CustomRequestHandling\":\"object\",\"Rules[].Action.Captcha.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Action.Captcha.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Action.Challenge\":\"object\",\"Rules[].Action.Challenge.CustomRequestHandling\":\"object\",\"Rules[].Action.Challenge.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Action.Challenge.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Action.Count\":\"object\",\"Rules[].Action.Count.CustomRequestHandling\":\"object\",\"Rules[].Action.Count.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Action.Count.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Action.Monetize\":\"object\",\"Rules[].CaptchaConfig\":\"object\",\"Rules[].CaptchaConfig.ImmunityTimeProperty\":\"object\",\"Rules[].ChallengeConfig\":\"object\",\"Rules[].ChallengeConfig.ImmunityTimeProperty\":\"object\",\"Rules[].OverrideAction\":\"object\",\"Rules[].OverrideAction.Count\":\"object\",\"Rules[].OverrideAction.None\":\"object\",\"Rules[].RuleLabels\":\"array\",\"Rules[].RuleLabels[]\":\"object\",\"Rules[].Statement\":\"object\",\"Rules[].Statement.AndStatement\":\"object\",\"Rules[].Statement.AndStatement.Statements\":\"array\",\"Rules[].Statement.AsnMatchStatement\":\"object\",\"Rules[].Statement.AsnMatchStatement.AsnList\":\"array\",\"Rules[].Statement.AsnMatchStatement.ForwardedIPConfig\":\"object\",\"Rules[].Statement.ByteMatchStatement\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.ByteMatchStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.ByteMatchStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.ByteMatchStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.ByteMatchStatement.TextTransformations\":\"array\",\"Rules[].Statement.ByteMatchStatement.TextTransformations[]\":\"object\",\"Rules[].Statement.GeoMatchStatement\":\"object\",\"Rules[].Statement.GeoMatchStatement.CountryCodes\":\"array\",\"Rules[].Statement.GeoMatchStatement.ForwardedIPConfig\":\"object\",\"Rules[].Statement.IPSetReferenceStatement\":\"object\",\"Rules[].Statement.IPSetReferenceStatement.IPSetForwardedIPConfig\":\"object\",\"Rules[].Statement.LabelMatchStatement\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ExcludedRules\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ExcludedRules[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.AddressFields\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.AddressFields[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.EmailField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.PasswordField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.PhoneNumberFields\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.PhoneNumberFields[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.RequestInspection.UsernameField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.BodyContains\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.BodyContains.FailureStrings\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.BodyContains.SuccessStrings\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Header\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Header.FailureValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Header.SuccessValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Json\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Json.FailureValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.Json.SuccessValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.StatusCode\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.StatusCode.FailureCodes\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesACFPRuleSet.ResponseInspection.StatusCode.SuccessCodes\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.RequestInspection\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.RequestInspection.PasswordField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.RequestInspection.UsernameField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.BodyContains\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.BodyContains.FailureStrings\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.BodyContains.SuccessStrings\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Header\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Header.FailureValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Header.SuccessValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Json\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Json.FailureValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.Json.SuccessValues\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.StatusCode\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.StatusCode.FailureCodes\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesATPRuleSet.ResponseInspection.StatusCode.SuccessCodes\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesAntiDDoSRuleSet\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesAntiDDoSRuleSet.ClientSideActionConfig\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesAntiDDoSRuleSet.ClientSideActionConfig.Challenge\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesAntiDDoSRuleSet.ClientSideActionConfig.Challenge.ExemptUriRegularExpressions\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesAntiDDoSRuleSet.ClientSideActionConfig.Challenge.ExemptUriRegularExpressions[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].AWSManagedRulesBotControlRuleSet\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].PasswordField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[].UsernameField\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Allow\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Block\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse.ResponseHeaders\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse.ResponseHeaders[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Captcha\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Challenge\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Count\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.ManagedRuleGroupStatement.RuleActionOverrides[].ActionToUse.Monetize\":\"object\",\"Rules[].Statement.NotStatement\":\"object\",\"Rules[].Statement.OrStatement\":\"object\",\"Rules[].Statement.OrStatement.Statements\":\"array\",\"Rules[].Statement.RateBasedStatement\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[]\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].ASN\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Cookie\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Cookie.TextTransformations\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Cookie.TextTransformations[]\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].ForwardedIP\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].HTTPMethod\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Header\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Header.TextTransformations\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].Header.TextTransformations[]\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].IP\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].JA3Fingerprint\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].JA4Fingerprint\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].LabelNamespace\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryArgument\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryArgument.TextTransformations\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryArgument.TextTransformations[]\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryString\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryString.TextTransformations\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].QueryString.TextTransformations[]\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].UriPath\":\"object\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].UriPath.TextTransformations\":\"array\",\"Rules[].Statement.RateBasedStatement.CustomKeys[].UriPath.TextTransformations[]\":\"object\",\"Rules[].Statement.RateBasedStatement.ForwardedIPConfig\":\"object\",\"Rules[].Statement.RegexMatchStatement\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.RegexMatchStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.RegexMatchStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.RegexMatchStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.RegexMatchStatement.TextTransformations\":\"array\",\"Rules[].Statement.RegexMatchStatement.TextTransformations[]\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.RegexPatternSetReferenceStatement.TextTransformations\":\"array\",\"Rules[].Statement.RegexPatternSetReferenceStatement.TextTransformations[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.ExcludedRules\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.ExcludedRules[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Allow\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Allow.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Block\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse.ResponseHeaders\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Block.CustomResponse.ResponseHeaders[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Captcha\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Captcha.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Challenge\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Challenge.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Count\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling.InsertHeaders\":\"array\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Count.CustomRequestHandling.InsertHeaders[]\":\"object\",\"Rules[].Statement.RuleGroupReferenceStatement.RuleActionOverrides[].ActionToUse.Monetize\":\"object\",\"Rules[].Statement.SizeConstraintStatement\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.SizeConstraintStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.SizeConstraintStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.SizeConstraintStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.SizeConstraintStatement.TextTransformations\":\"array\",\"Rules[].Statement.SizeConstraintStatement.TextTransformations[]\":\"object\",\"Rules[].Statement.SqliMatchStatement\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.SqliMatchStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.SqliMatchStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.SqliMatchStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.SqliMatchStatement.TextTransformations\":\"array\",\"Rules[].Statement.SqliMatchStatement.TextTransformations[]\":\"object\",\"Rules[].Statement.XssMatchStatement\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.AllQueryArguments\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Body\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Cookies\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.All\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies\":\"array\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies\":\"array\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.HeaderOrder\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Headers\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.All\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders\":\"array\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders\":\"array\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JA3Fingerprint\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JA4Fingerprint\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JsonBody\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.All\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths\":\"array\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.Method\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.QueryString\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.SingleHeader\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.SingleQueryArgument\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.UriFragment\":\"object\",\"Rules[].Statement.XssMatchStatement.FieldToMatch.UriPath\":\"object\",\"Rules[].Statement.XssMatchStatement.PreParseTextTransformations\":\"array\",\"Rules[].Statement.XssMatchStatement.PreParseTextTransformations[]\":\"object\",\"Rules[].Statement.XssMatchStatement.TextTransformations\":\"array\",\"Rules[].Statement.XssMatchStatement.TextTransformations[]\":\"object\",\"Rules[].VisibilityConfig\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"TokenDomains\":\"array\",\"VisibilityConfig\":\"object\"}"]
33088
32913
  ]);
33089
32914
 
33090
- //#endregion
33091
- //#region src/provisioning/property-shape.ts
32915
+ // src/provisioning/property-shape.ts
33092
32916
  const treeCache = /* @__PURE__ */ new Map();
33093
32917
  function buildShapeTree(rows) {
33094
32918
  const root = { props: /* @__PURE__ */ new Map() };
@@ -33182,8 +33006,7 @@ function validatePropertyShapes(resources) {
33182
33006
  throw new Error("Properties validation failed: the following resources declare a property whose kind contradicts the resource type's schema:\n" + lines.join("\n") + "\n\nCloudFormation rejects these templates too. Give each property a list where its schema expects a list and an object where it expects an object.");
33183
33007
  }
33184
33008
 
33185
- //#endregion
33186
- //#region src/provisioning/provider-registry.ts
33009
+ // src/provisioning/provider-registry.ts
33187
33010
  const STICKY_CC_MIGRATION_EXEMPT = /* @__PURE__ */ new Map([
33188
33011
  ["AWS::Scheduler::Schedule", {
33189
33012
  mode: "cc-broken",
@@ -33523,8 +33346,7 @@ function isCustomResource(resourceType) {
33523
33346
  return resourceType.startsWith("Custom::") || resourceType === "AWS::CloudFormation::CustomResource";
33524
33347
  }
33525
33348
 
33526
- //#endregion
33527
- //#region src/provisioning/attribute-map.ts
33349
+ // src/provisioning/attribute-map.ts
33528
33350
  function definedAttributes(entries) {
33529
33351
  const out = {};
33530
33352
  for (const [key, value] of Object.entries(entries)) {
@@ -33538,8 +33360,7 @@ function stringifyIfAssigned(value) {
33538
33360
  return String(value);
33539
33361
  }
33540
33362
 
33541
- //#endregion
33542
- //#region src/provisioning/tag-list.ts
33363
+ // src/provisioning/tag-list.ts
33543
33364
  function isScalar(value) {
33544
33365
  return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
33545
33366
  }
@@ -33633,8 +33454,7 @@ function recordedTagsUnreadableWarning(resourceType, id, applied) {
33633
33454
  return safeMsg`The recorded Tags of ${resourceType} ${id} is not a list cdkd can read, so cdkd removed no tag and applied the ${applied} desired tag(s) only. Untag any key the template no longer names yourself.`;
33634
33455
  }
33635
33456
 
33636
- //#endregion
33637
- //#region src/provisioning/delete-started.ts
33457
+ // src/provisioning/delete-started.ts
33638
33458
  const DELETE_STARTED = Symbol.for("cdkd.deleteStarted");
33639
33459
  const MAX_DEPTH = 10;
33640
33460
  function markDeleteStarted(error) {
@@ -33685,8 +33505,7 @@ function isRefusedByName(error) {
33685
33505
  return false;
33686
33506
  }
33687
33507
 
33688
- //#endregion
33689
- //#region src/types/deployment-events.ts
33508
+ // src/types/deployment-events.ts
33690
33509
  function extractDeploymentEventError(err) {
33691
33510
  if (!(err instanceof Error)) return {
33692
33511
  name: "UnknownError",
@@ -33709,8 +33528,7 @@ function extractDeploymentEventError(err) {
33709
33528
  return result;
33710
33529
  }
33711
33530
 
33712
- //#endregion
33713
- //#region src/state/deployment-events-store.ts
33531
+ // src/state/deployment-events-store.ts
33714
33532
  const DEPLOYMENT_EVENTS_MAX_INDEX_RUNS = 20;
33715
33533
  const FLUSH_INTERVAL_MS = 2e3;
33716
33534
  const FLUSH_EVENT_THRESHOLD = 50;
@@ -34048,8 +33866,7 @@ var DeploymentEventsReader = class {
34048
33866
  }
34049
33867
  };
34050
33868
 
34051
- //#endregion
34052
- //#region src/deployment/kept-in-history.ts
33869
+ // src/deployment/kept-in-history.ts
34053
33870
  function keptInEarlierRecords(records) {
34054
33871
  const out = [];
34055
33872
  for (const record of records) for (const [logicalId, raw] of Object.entries(record.resources)) {
@@ -34122,8 +33939,7 @@ async function loadRollbackRetainedCopies(sources, stackName, region) {
34122
33939
  return rollbackRetainedInEventHistory(await readRecentRuns(sources, stackName, region), stackName);
34123
33940
  }
34124
33941
 
34125
- //#endregion
34126
- //#region src/provisioning/providers/idempotency-token.ts
33942
+ // src/provisioning/providers/idempotency-token.ts
34127
33943
  const PROCESS_NONCE = randomUUID();
34128
33944
  const inFlight$1 = /* @__PURE__ */ new Map();
34129
33945
  const generations = /* @__PURE__ */ new Map();
@@ -34164,8 +33980,7 @@ function stackScopedCreateToken(options) {
34164
33980
  return `cdkd-${logicalId.slice(0, prefixLength)}-${digest}`;
34165
33981
  }
34166
33982
 
34167
- //#endregion
34168
- //#region src/provisioning/providers/create-token-ledger.ts
33983
+ // src/provisioning/providers/create-token-ledger.ts
34169
33984
  var CreateTokenLedger = class {
34170
33985
  doc;
34171
33986
  loadedAbsent = false;
@@ -34494,8 +34309,7 @@ async function reserveStackCreateToken(options) {
34494
34309
  };
34495
34310
  }
34496
34311
 
34497
- //#endregion
34498
- //#region src/deployment/deploy-value-equality.ts
34312
+ // src/deployment/deploy-value-equality.ts
34499
34313
  function isReplacementCeiling(pc) {
34500
34314
  return pc.requiresReplacement && (pc.inPlacePropagated === true || pc.replacementPropagated === true);
34501
34315
  }
@@ -34549,8 +34363,7 @@ function deepEqualValue(a, b) {
34549
34363
  return true;
34550
34364
  }
34551
34365
 
34552
- //#endregion
34553
- //#region src/deployment/deploy-engine/provenance-capture.ts
34366
+ // src/deployment/deploy-engine/provenance-capture.ts
34554
34367
  var ProvenanceCapture = class {
34555
34368
  tasks = /* @__PURE__ */ new Map();
34556
34369
  deps;
@@ -34656,8 +34469,7 @@ function provenanceBaselineOf(state, tokenFree) {
34656
34469
  };
34657
34470
  }
34658
34471
 
34659
- //#endregion
34660
- //#region src/provisioning/final-snapshot.ts
34472
+ // src/provisioning/final-snapshot.ts
34661
34473
  const ATOMIC_FINAL_SNAPSHOT_TYPES = /* @__PURE__ */ new Set([
34662
34474
  "AWS::RDS::DBInstance",
34663
34475
  "AWS::RDS::DBCluster",
@@ -35008,13 +34820,11 @@ async function createReplicationGroupFinalSnapshot(client, replicationGroupId, l
35008
34820
  });
35009
34821
  }
35010
34822
 
35011
- //#endregion
35012
- //#region src/deployment/rollback-executor/types.ts
34823
+ // src/deployment/rollback-executor/types.ts
35013
34824
  const NESTED_STACK_RESOURCE_TYPE$1 = "AWS::CloudFormation::Stack";
35014
34825
  const nonEmptyString = (v) => typeof v === "string" && v.length > 0;
35015
34826
 
35016
- //#endregion
35017
- //#region src/deployment/rollback-executor/messages.ts
34827
+ // src/deployment/rollback-executor/messages.ts
35018
34828
  function throwIfDeleteSkipped(result, logicalId, physicalId, duringClause, guardScope) {
35019
34829
  recordRollbackDeleteGuards(result, logicalId, physicalId, guardScope);
35020
34830
  const reason = deleteSkipReason(result);
@@ -35209,8 +35019,7 @@ function retainedSurvivorMessages(logicalId, resourceType, survivorPhysicalId, s
35209
35019
  };
35210
35020
  }
35211
35021
 
35212
- //#endregion
35213
- //#region src/deployment/rollback-executor/names.ts
35022
+ // src/deployment/rollback-executor/names.ts
35214
35023
  function replayPrefixScope(input, logger, mask, restoring) {
35215
35024
  const generation = input.nameGeneration;
35216
35025
  const inGeneration = (fn) => generation === void 0 ? fn() : withNameGeneration({
@@ -35376,8 +35185,7 @@ async function prepareCreateRollbackFinalSnapshot(op, provisionedBy, ctx, mask)
35376
35185
  }
35377
35186
  }
35378
35187
 
35379
- //#endregion
35380
- //#region src/deployment/secret-name-needles.ts
35188
+ // src/deployment/secret-name-needles.ts
35381
35189
  function secretNameNeedlesOf(logicalId, record, secrets, options) {
35382
35190
  const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
35383
35191
  const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
@@ -35647,8 +35455,7 @@ function maskEventTextWithBoundBags(event) {
35647
35455
  return masked;
35648
35456
  }
35649
35457
 
35650
- //#endregion
35651
- //#region src/deployment/read-only-attribute-healer.ts
35458
+ // src/deployment/read-only-attribute-healer.ts
35652
35459
  async function readRecordAttributes(input) {
35653
35460
  const { provider, logicalId, resource, stackName, region } = input;
35654
35461
  if (!provider.import) return { kind: "not-attempted" };
@@ -35709,8 +35516,7 @@ function createReadOnlyAttributeHealerFactory(options) {
35709
35516
  return (stackName, region) => Object.assign((logicalId, resource) => readOnce(stackName, region, logicalId, resource), { readOnly: true });
35710
35517
  }
35711
35518
 
35712
- //#endregion
35713
- //#region src/deployment/deploy-engine/noecho.ts
35519
+ // src/deployment/deploy-engine/noecho.ts
35714
35520
  var NoEchoRunState = class {
35715
35521
  noEchoAttributeResources = /* @__PURE__ */ new Map();
35716
35522
  persistedNoEchoAttributes = /* @__PURE__ */ new Map();
@@ -36091,8 +35897,7 @@ function noEchoComparisonForTemplate(template, knownConditions, values, resource
36091
35897
  return (input) => compare(input);
36092
35898
  }
36093
35899
 
36094
- //#endregion
36095
- //#region src/deployment/deploy-engine/masking.ts
35900
+ // src/deployment/deploy-engine/masking.ts
36096
35901
  var SecretsRunState = class {
36097
35902
  perResourceSecrets = /* @__PURE__ */ new Map();
36098
35903
  secretNameNeedles = /* @__PURE__ */ new Map();
@@ -36378,8 +36183,7 @@ function maskedRecordRemedyFor(reads, resources, causeScoped = false) {
36378
36183
  return [parts.join(" "), ...commandLines].join("\n");
36379
36184
  }
36380
36185
 
36381
- //#endregion
36382
- //#region src/deployment/delete-guard-scope.ts
36186
+ // src/deployment/delete-guard-scope.ts
36383
36187
  const storage$1 = new AsyncLocalStorage();
36384
36188
  function collectDeleteGuards(sink, fn) {
36385
36189
  return storage$1.run(sink, fn);
@@ -36396,8 +36200,7 @@ function reportDeleteGuards(result, target) {
36396
36200
  });
36397
36201
  }
36398
36202
 
36399
- //#endregion
36400
- //#region src/deployment/superseded-resources.ts
36203
+ // src/deployment/superseded-resources.ts
36401
36204
  function supersededResourcesOf(state) {
36402
36205
  const rows = state?.supersededResources;
36403
36206
  if (!Array.isArray(rows)) return [];
@@ -36521,8 +36324,7 @@ function holdsSupersededResources(record) {
36521
36324
  return rows !== void 0 && (!Array.isArray(rows) || rows.length > 0);
36522
36325
  }
36523
36326
 
36524
- //#endregion
36525
- //#region src/utils/colors.ts
36327
+ // src/utils/colors.ts
36526
36328
  const codes = {
36527
36329
  reset: "\x1B[0m",
36528
36330
  bright: "\x1B[1m",
@@ -36541,8 +36343,7 @@ const cyan = (s) => `${codes.cyan}${s}${codes.reset}`;
36541
36343
  const gray = (s) => `${codes.gray}${s}${codes.reset}`;
36542
36344
  const bold = (s) => `${codes.bright}${s}${codes.reset}`;
36543
36345
 
36544
- //#endregion
36545
- //#region src/deployment/rollback-executor/replay-scope.ts
36346
+ // src/deployment/rollback-executor/replay-scope.ts
36546
36347
  function withReplayDeletePrinting(scope, fn) {
36547
36348
  const deployBag = scope.ctx.logOnlyNeedlesFor?.(scope.op.logicalId);
36548
36349
  return withPrintingSecrets(scope.secrets, () => deployBag === void 0 ? fn() : withPrintingSecrets(deployBag, fn));
@@ -36558,8 +36359,7 @@ function noteRolledBackCreate(scope, op, record) {
36558
36359
  scope.onRolledBackCreate?.(create);
36559
36360
  }
36560
36361
 
36561
- //#endregion
36562
- //#region src/deployment/rollback-executor/replaced-survivor.ts
36362
+ // src/deployment/rollback-executor/replaced-survivor.ts
36563
36363
  function replacedDeleteFailureVerdict(error) {
36564
36364
  if (isDeleteStarted(error)) return "unconfirmed";
36565
36365
  return isRefusedByName(error) ? "kept" : "unconfirmed";
@@ -36606,8 +36406,7 @@ async function readSurvivor(s, oldType) {
36606
36406
  }
36607
36407
  }
36608
36408
 
36609
- //#endregion
36610
- //#region src/deployment/stack-records-scope.ts
36409
+ // src/deployment/stack-records-scope.ts
36611
36410
  async function awaitInFlightSibling(view, self, sibling) {
36612
36411
  const waiting = view.waiting;
36613
36412
  if (waiting === void 0 || waiting.has(sibling.logicalId)) return void 0;
@@ -36650,8 +36449,7 @@ function replayStackRecordsView(records, orphanLogicalIds = /* @__PURE__ */ new
36650
36449
  };
36651
36450
  }
36652
36451
 
36653
- //#endregion
36654
- //#region src/deployment/deploy-engine/name-collision.ts
36452
+ // src/deployment/deploy-engine/name-collision.ts
36655
36453
  function replacementNameOrigin(logicalId, physicalId) {
36656
36454
  if (looksLikeCdkdGeneratedName(physicalId, logicalId, getCurrentStackName(), getCurrentStackInstanceId())) return {
36657
36455
  descriptor: `The physical name (${physicalId}) was GENERATED by cdkd from the construct's logical id rather than declared in your template, and that derivation has no random component — so the new resource asks for exactly the name the existing one still holds`,
@@ -36729,8 +36527,7 @@ function isReplacementNameRefusal(error, logicalId) {
36729
36527
  return false;
36730
36528
  }
36731
36529
 
36732
- //#endregion
36733
- //#region src/deployment/deploy-engine/replacement.ts
36530
+ // src/deployment/deploy-engine/replacement.ts
36734
36531
  var ReplacementRunState = class {
36735
36532
  replacedDeleteSkips = /* @__PURE__ */ new Map();
36736
36533
  deferredReplacedDeletes = void 0;
@@ -37085,8 +36882,7 @@ function warnUnretriedReplacedDeletes(run, deps, why) {
37085
36882
  for (const [logicalId, entry] of deferred ?? []) withPrintingSecrets(secretNameBagFor(deps.secretsRun(), logicalId), () => deps.logger.warn(safeMsg` ⚠ Failed to delete old resource ${logicalId} (${entry.physicalId}): ${entry.failureMessage} (${noteFor(logicalId)})`));
37086
36883
  }
37087
36884
 
37088
- //#endregion
37089
- //#region src/analyzer/refactor-pairing.ts
36885
+ // src/analyzer/refactor-pairing.ts
37090
36886
  const UNPAIRABLE_TYPES = /* @__PURE__ */ new Set(["AWS::CDK::Metadata", "AWS::CloudFormation::Stack"]);
37091
36887
  function isPairableType(resourceType) {
37092
36888
  return !UNPAIRABLE_TYPES.has(resourceType);
@@ -37256,8 +37052,7 @@ function splitLocation(location) {
37256
37052
  };
37257
37053
  }
37258
37054
 
37259
- //#endregion
37260
- //#region src/analyzer/refactor-hints.ts
37055
+ // src/analyzer/refactor-hints.ts
37261
37056
  function findRefactorHints(stacks) {
37262
37057
  const hints = /* @__PURE__ */ new Map();
37263
37058
  for (const env of new Set(stacks.map((s) => s.env))) {
@@ -37332,8 +37127,7 @@ function withMovedTo(changes, hints) {
37332
37127
  });
37333
37128
  }
37334
37129
 
37335
- //#endregion
37336
- //#region src/analyzer/destructive-changes.ts
37130
+ // src/analyzer/destructive-changes.ts
37337
37131
  const IGNORED_RESOURCE_TYPES = /* @__PURE__ */ new Set(["AWS::CDK::Metadata"]);
37338
37132
  const PATH_METADATA_KEY = "aws:cdk:path";
37339
37133
  function findDestructiveChanges(stackName, changes, records, template, recreateTargets = /* @__PURE__ */ new Set()) {
@@ -37408,8 +37202,7 @@ function withConstructPath(record, path) {
37408
37202
  };
37409
37203
  }
37410
37204
 
37411
- //#endregion
37412
- //#region src/deployment/masking-retry-logger.ts
37205
+ // src/deployment/masking-retry-logger.ts
37413
37206
  function maskingRetryLogger(logger, secrets) {
37414
37207
  return {
37415
37208
  debug: (msg) => logger.debug(maskSecretsInText(msg, secrets)),
@@ -37417,8 +37210,7 @@ function maskingRetryLogger(logger, secrets) {
37417
37210
  };
37418
37211
  }
37419
37212
 
37420
- //#endregion
37421
- //#region src/deployment/deploy-engine/options.ts
37213
+ // src/deployment/deploy-engine/options.ts
37422
37214
  const DEFAULT_RESOURCE_WARN_AFTER_MS = 3e5;
37423
37215
  const DEFAULT_RESOURCE_TIMEOUT_MS = 18e5;
37424
37216
  const DEFAULT_UNSETTLED_REVERT_WAIT = {
@@ -37426,8 +37218,7 @@ const DEFAULT_UNSETTLED_REVERT_WAIT = {
37426
37218
  pollMs: 1e4
37427
37219
  };
37428
37220
 
37429
- //#endregion
37430
- //#region src/analyzer/skipped-outputs.ts
37221
+ // src/analyzer/skipped-outputs.ts
37431
37222
  function canonicalJson$3(value) {
37432
37223
  return JSON.stringify(value, (_key, v) => {
37433
37224
  if (v !== null && typeof v === "object" && !Array.isArray(v)) {
@@ -37541,8 +37332,7 @@ function skippedOutputsEqual(a, b) {
37541
37332
  return aKeys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && a?.[k] === b?.[k]);
37542
37333
  }
37543
37334
 
37544
- //#endregion
37545
- //#region src/deployment/outputs-export-alias/names.ts
37335
+ // src/deployment/outputs-export-alias/names.ts
37546
37336
  function isOutputSuppressedByCondition(output, conditions) {
37547
37337
  return output.Condition !== void 0 && conditions?.[output.Condition] === false;
37548
37338
  }
@@ -37558,8 +37348,7 @@ function isExportAliasCollision(exportName, outputKey, ownedOutputNames) {
37558
37348
  return exportName !== outputKey && ownedOutputNames.has(exportName);
37559
37349
  }
37560
37350
 
37561
- //#endregion
37562
- //#region src/deployment/outputs-export-alias/secret-scan.ts
37351
+ // src/deployment/outputs-export-alias/secret-scan.ts
37563
37352
  const MIN_SECRET_NEEDLE = 4;
37564
37353
  const SECRET_SCAN_INVISIBLES = /[\p{Cc}\p{Cf}\p{Me}\p{Zl}\p{Zp}\p{Default_Ignorable_Code_Point}]/gu;
37565
37354
  const SECRET_DETECTION_ONLY = /\p{Mn}/gu;
@@ -37678,8 +37467,7 @@ function maskEveryOccurrence(text, exposure) {
37678
37467
  return maskMatchSpans(text, Array.from(exposure.keys()).filter((value) => value !== ""), "***");
37679
37468
  }
37680
37469
 
37681
- //#endregion
37682
- //#region src/deployment/outputs-export-alias/warnings.ts
37470
+ // src/deployment/outputs-export-alias/warnings.ts
37683
37471
  function secretBearingExportNameWarning(outputKey, exportName, exposure, secrets, noEchoOnly = false) {
37684
37472
  const corpus = printingCorpusOf(secrets ?? exposure);
37685
37473
  const name = secretSafeKeyDisplay(exportName, corpus, exposure);
@@ -37757,8 +37545,7 @@ function exportAliasCollisionScrubWarning(outputKey, exportName, secrets) {
37757
37545
  return `Output ${ownerDisplay.kind === "withheld" && exportDisplay.kind === "withheld" ? "<the owning output, name withheld: contains a secret>" : displayTextOrWithheld(ownerDisplay)} exports as ${exportDisplay.kind === "withheld" ? shown : `"${shown}"`}, which is also the name of another output in this stack — state cannot say which of the two ${storedUnder} came from, so that key is redacted by value match instead of by template position, and two references resolving to the same value could still collapse there. Rename the export, or the colliding output, and redeploy.`;
37758
37546
  }
37759
37547
 
37760
- //#endregion
37761
- //#region src/deployment/deploy-engine/outputs.ts
37548
+ // src/deployment/deploy-engine/outputs.ts
37762
37549
  var OutputsRunState = class {
37763
37550
  outputSecrets = /* @__PURE__ */ new Map();
37764
37551
  outputsPassSecretMaps = [];
@@ -37925,8 +37712,7 @@ function seedOnlyAliasRefusal(seed) {
37925
37712
  };
37926
37713
  }
37927
37714
 
37928
- //#endregion
37929
- //#region src/analyzer/parameter-dependence.ts
37715
+ // src/analyzer/parameter-dependence.ts
37930
37716
  const KNOWN_INTRINSICS = /* @__PURE__ */ new Set([
37931
37717
  "Fn::GetAtt",
37932
37718
  "Fn::Join",
@@ -38113,8 +37899,7 @@ function resourcesNamingDeclaredParameter(template) {
38113
37899
  }
38114
37900
  }
38115
37901
 
38116
- //#endregion
38117
- //#region src/deployment/masked-baseline-recapture.ts
37902
+ // src/deployment/masked-baseline-recapture.ts
38118
37903
  function isMaskedBaselineRecaptureCandidate(record) {
38119
37904
  if (record.observedBaselineRefused === true) return false;
38120
37905
  const observed = record.observedProperties;
@@ -38230,8 +38015,7 @@ function recaptureMaskedBaseline(args) {
38230
38015
  return changed ? result : void 0;
38231
38016
  }
38232
38017
 
38233
- //#endregion
38234
- //#region src/state/name-generation.ts
38018
+ // src/state/name-generation.ts
38235
38019
  var MalformedNameGenerationError = class extends Error {
38236
38020
  constructor(where, reason = "malformed") {
38237
38021
  super(`The state record holds a name generation for ${displayIdent(where)} that is ` + (reason === "exhausted" ? "too large to derive the next one from (the next is not a safe integer). " : "not a non-negative integer. ") + "cdkd does not guess which name the resource was given, since the next replacement's name derives from it; restore the field from an earlier version of state.json.");
@@ -38360,8 +38144,7 @@ function retiredNameGenerationsLeaving(state, remaining) {
38360
38144
  }
38361
38145
  }
38362
38146
 
38363
- //#endregion
38364
- //#region src/deployment/update-outcome.ts
38147
+ // src/deployment/update-outcome.ts
38365
38148
  function updatePartialReason(result) {
38366
38149
  if (!result || result.outcome !== "partial") return void 0;
38367
38150
  if (typeof result.reason !== "string") return UNSPECIFIED_PARTIAL_REASON;
@@ -38373,8 +38156,7 @@ function updatePartialMessage(reason) {
38373
38156
  return `partial (${reason})`;
38374
38157
  }
38375
38158
 
38376
- //#endregion
38377
- //#region src/provisioning/redacted-delete-address.ts
38159
+ // src/provisioning/redacted-delete-address.ts
38378
38160
  function isRedactedRecordedValue(value) {
38379
38161
  if (carriesSecretMask(value)) return true;
38380
38162
  let text;
@@ -38398,8 +38180,7 @@ function redactedDeleteAddressSkip(logger, logicalId, what, redactedFields, cont
38398
38180
  };
38399
38181
  }
38400
38182
 
38401
- //#endregion
38402
- //#region src/deployment/rollback-executor/replay-inline-policy-restore.ts
38183
+ // src/deployment/rollback-executor/replay-inline-policy-restore.ts
38403
38184
  async function restoreHeldInlinePolicies(writers, stateResources, stackName, ctx, result, options = {}) {
38404
38185
  for (const removal of writers.takeHeldRemovals(stateResources)) await restoreOne(removal, stateResources, stackName, ctx, result, options.refuseAll === true);
38405
38186
  }
@@ -38478,8 +38259,7 @@ function serializedDocument(document) {
38478
38259
  return isRedactedRecordedValue(document) ? void 0 : JSON.stringify(document);
38479
38260
  }
38480
38261
 
38481
- //#endregion
38482
- //#region src/deployment/producer-regions-scope.ts
38262
+ // src/deployment/producer-regions-scope.ts
38483
38263
  const producerRegionsStore = new AsyncLocalStorage();
38484
38264
  function withProducerRegions(evidence, fn) {
38485
38265
  return producerRegionsStore.run(evidence, fn);
@@ -38502,8 +38282,7 @@ function inheritProducerRegions(own, inherited) {
38502
38282
  };
38503
38283
  }
38504
38284
 
38505
- //#endregion
38506
- //#region src/deployment/rollback-executor/replay-secrets.ts
38285
+ // src/deployment/rollback-executor/replay-secrets.ts
38507
38286
  function replayProducerRegionEvidence(ctx) {
38508
38287
  return {
38509
38288
  regions: ctx.importedProducerRegions ?? [],
@@ -38617,8 +38396,7 @@ function isPlainRecord$1(value) {
38617
38396
  return typeof value === "object" && value !== null && !Array.isArray(value) && hasPlainPrototype$1(value);
38618
38397
  }
38619
38398
 
38620
- //#endregion
38621
- //#region src/deployment/type-change-guard.ts
38399
+ // src/deployment/type-change-guard.ts
38622
38400
  function equalIdNamesDifferentResources(input) {
38623
38401
  if (input.resourceType === "AWS::Lambda::Permission") return permissionsOnDifferentFunctions(input.oldProperties, input.newProperties);
38624
38402
  if (input.resourceType !== "AWS::Glue::Table" || input.physicalId === void 0) return false;
@@ -38676,8 +38454,7 @@ function renderNestedStackTypeChangeRefusal(typeChanges, stackName) {
38676
38454
  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.\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.`;
38677
38455
  }
38678
38456
 
38679
- //#endregion
38680
- //#region src/deployment/rollback-executor/orphan-identity.ts
38457
+ // src/deployment/rollback-executor/orphan-identity.ts
38681
38458
  const UNIQUE_PHYSICAL_ID_TYPES = /* @__PURE__ */ new Set([
38682
38459
  "AWS::EC2::VPC",
38683
38460
  "AWS::EC2::Subnet",
@@ -38767,8 +38544,7 @@ async function askForeignHolder(foreignHolder, op) {
38767
38544
  }
38768
38545
  }
38769
38546
 
38770
- //#endregion
38771
- //#region src/deployment/rollback-executor/plan.ts
38547
+ // src/deployment/rollback-executor/plan.ts
38772
38548
  function journaledOldTypes(op) {
38773
38549
  return {
38774
38550
  stamped: nonEmptyString(op.previousResourceType) ? op.previousResourceType : void 0,
@@ -39190,8 +38966,7 @@ function someStringLeaf(value, test, depth = 0) {
39190
38966
  return (Array.isArray(value) ? value : Object.values(value)).some((child) => someStringLeaf(child, test, depth + 1));
39191
38967
  }
39192
38968
 
39193
- //#endregion
39194
- //#region src/deployment/rollback-executor/replay-noecho.ts
38969
+ // src/deployment/rollback-executor/replay-noecho.ts
39195
38970
  const NOECHO_REPLAY_READBACK_TIMEOUT_MS = 3e4;
39196
38971
  const NESTED_STACK_TYPE$3 = "AWS::CloudFormation::Stack";
39197
38972
  function coordinatePath(coordinate) {
@@ -39355,8 +39130,7 @@ function maskRestoredNoEchoRecord(record, baseline, substituted = []) {
39355
39130
  };
39356
39131
  }
39357
39132
 
39358
- //#endregion
39359
- //#region src/deployment/rollback-executor/replay-props.ts
39133
+ // src/deployment/rollback-executor/replay-props.ts
39360
39134
  async function resolveReplayProps(props, resolvers, secrets, execCtx, logicalId, record) {
39361
39135
  if (props === void 0) return void 0;
39362
39136
  const recordedRegions = recordedReferenceRegions(record);
@@ -39456,8 +39230,7 @@ function refuseMaskedReplayBaseline(props, logicalId, inert = []) {
39456
39230
  throw new CdkdError(`Cannot roll ${shownLogicalId(logicalId)} back: its recorded baseline holds the redaction mask ('${"***"}'), so cdkd would write that literal to the live resource. There are five ways a baseline comes to hold it. (1) A NoEcho custom-resource value was resolved there: restore the property with 'cdkd deploy' AFTER forcing that custom resource to update (change one of its properties, e.g. a nonce), so its handler runs again and supplies the real value — an ordinary re-deploy leaves the resource unchanged, so the handler does not run and the mask stays. (2) The Fn::Base64 encoding of a secret value (a {{resolve:...}} dynamic reference under Fn::Base64, such as EC2 UserData), which cdkd never records: restore the property with a 'cdkd deploy' that changes this resource, which sends it the encoded value again — a re-deploy that leaves this resource unchanged sends it nothing. Every rollback to such a baseline refuses, so to end this, stop encoding the secret into the property (have the resource read the secret at run time instead — not by writing the secret's plaintext into the template, which cdkd would then record in state in the clear). (3) The value was SPLICED from a masked record of ANOTHER resource — by 'cdkd orphan --force', or by 'cdkd import' resolving an Fn::GetAtt or a Ref over a value the Cloud Control fallback had masked. Repair the record that HOLDS the mask ('cdkd import <stack> --resource <logicalId>=<physicalId> --force', granting cloudformation:DescribeType first if the import warned that it could not read the schema), then re-run whichever command wrote this property. (4) A NoEcho template parameter's value, which cdkd stores only as the mask: restore the property with 'cdkd deploy', which sends the parameter's value again. (5) Two secret values cdkd resolved overlap inside the value, so no single {{resolve:...}} reference renders it and cdkd stored the mask rather than part of a secret: restore the property with a 'cdkd deploy' that changes this resource, which sends it the value again. Every rollback to such a baseline refuses while the two values still overlap there, so to end this, change the property (or rotate one of the secrets) so that they no longer overlap. See https://github.com/go-to-k/cdkd/issues/2449.`, "ROLLBACK_REDACTED_BASELINE");
39457
39231
  }
39458
39232
 
39459
- //#endregion
39460
- //#region src/analyzer/drift-normalize.ts
39233
+ // src/analyzer/drift-normalize.ts
39461
39234
  function canonicalizeTagListsDeep(v) {
39462
39235
  if (Array.isArray(v)) {
39463
39236
  const mapped = v.map(canonicalizeTagListsDeep);
@@ -39544,8 +39317,7 @@ function walkUnordered(v, path, paths) {
39544
39317
  return v;
39545
39318
  }
39546
39319
 
39547
- //#endregion
39548
- //#region src/analyzer/drift-calculator.ts
39320
+ // src/analyzer/drift-calculator.ts
39549
39321
  function calculateResourceDrift(stateProperties, awsProperties, options) {
39550
39322
  const drifts = [];
39551
39323
  const ignore = options?.ignorePaths ?? [];
@@ -39694,8 +39466,7 @@ function isPlainObject$5(value) {
39694
39466
  return typeof value === "object" && value !== null;
39695
39467
  }
39696
39468
 
39697
- //#endregion
39698
- //#region src/deployment/unsettled-convergence.ts
39469
+ // src/deployment/unsettled-convergence.ts
39699
39470
  const MERGE_SEMANTICS_KEYS = /* @__PURE__ */ new Set(["Tags"]);
39700
39471
  async function readLive(args, names) {
39701
39472
  const { provider, physicalId, logicalId, resourceType, recordedProperties } = args;
@@ -39873,8 +39644,7 @@ function addedByFailedUpdateWarning(logicalId, resourceType, names) {
39873
39644
  return safeMsg`${logicalId} (${resourceType}): ${one ? "property" : "properties"} ${names.join(", ")} ${one ? "is" : "are"} set on the resource but in no template: an earlier failed update applied ${one ? "it" : "them"}. cdkd has no default to reset ${one ? "it" : "them"} to, so the value stays; remove it by hand if it should not be there.`;
39874
39645
  }
39875
39646
 
39876
- //#endregion
39877
- //#region src/deployment/rollback-executor/replay-retry.ts
39647
+ // src/deployment/rollback-executor/replay-retry.ts
39878
39648
  const RECREATE_RETRY_SCHEDULE = {
39879
39649
  maxRetries: 8,
39880
39650
  initialDelayMs: 2e3,
@@ -39968,8 +39738,7 @@ function copyClaimingProviderBag(properties) {
39968
39738
  return isSameGenerationBag(properties) ? markSameGenerationBag(copy) : copy;
39969
39739
  }
39970
39740
 
39971
- //#endregion
39972
- //#region src/deployment/rollback-executor/replay-orphan-delete.ts
39741
+ // src/deployment/rollback-executor/replay-orphan-delete.ts
39973
39742
  async function replayOrphanFlag(s) {
39974
39743
  const { op, stateResources, stackName, ctx, afterOp, logger, mask } = s;
39975
39744
  if (op.changeType === "CREATE") {
@@ -40087,8 +39856,7 @@ async function replayDelete(s) {
40087
39856
  });
40088
39857
  }
40089
39858
 
40090
- //#endregion
40091
- //#region src/deployment/rollback-executor/replay-revert.ts
39859
+ // src/deployment/rollback-executor/replay-revert.ts
40092
39860
  async function replayReadopt(s, survivor) {
40093
39861
  const { op, stateResources, stackName, ctx, result, inlinePolicyWriters, afterOp, logger, mask } = s;
40094
39862
  const oldKind = survivor === void 0 ? "retained" : "surviving";
@@ -40267,8 +40035,7 @@ async function replayRevert(s) {
40267
40035
  });
40268
40036
  }
40269
40037
 
40270
- //#endregion
40271
- //#region src/deployment/rollback-executor/replay-reverse-replacement.ts
40038
+ // src/deployment/rollback-executor/replay-reverse-replacement.ts
40272
40039
  function refuseSameIdParentReversal(s) {
40273
40040
  const { op, stateResources, ctx, createdInSegment, orphanLogicalIds } = s;
40274
40041
  const children = Object.entries(stateResources).filter(([logicalId, record]) => logicalId !== op.logicalId && !createdInSegment.has(logicalId) && !orphanLogicalIds.has(logicalId) && mayBeStoredIn(record.resourceType, op.resourceType) && (!Array.isArray(record.dependencies) || record.dependencies.includes(op.logicalId))).map(([logicalId]) => logicalId).sort();
@@ -40666,8 +40433,7 @@ function survivorUnprovenRefusal(s, oldType, verdict) {
40666
40433
  return ownRemedyError(markNonRetryable(new CdkdError(`Cannot reverse the replacement of ${refusalLogicalId(op.logicalId)} (${refusalResourceType(oldType)}): the deploy did not confirm that it deleted the old resource (${oldShown}), so it may still exist, and ${why}. Nothing was sent and the journal is kept.` + (remedy.offered ? " To keep the new resource in its place instead, re-run with the command below, then delete the old resource by hand if it still exists." : "") + `${remedy.clause}${describedPhysicalIdPointer(oldShown)}` + remedy.line, "REPLACED_SURVIVOR_UNPROVEN")));
40667
40434
  }
40668
40435
 
40669
- //#endregion
40670
- //#region src/provisioning/remove-protection-types.ts
40436
+ // src/provisioning/remove-protection-types.ts
40671
40437
  const SDK_REMOVE_PROTECTION_TYPES = [
40672
40438
  "AWS::Logs::LogGroup",
40673
40439
  "AWS::RDS::DBInstance",
@@ -40692,8 +40458,7 @@ function removeProtectionTypeList() {
40692
40458
  return `${types.slice(0, -1).join(", ")}, and ${types[types.length - 1]}`;
40693
40459
  }
40694
40460
 
40695
- //#endregion
40696
- //#region src/deployment/rollback-executor.ts
40461
+ // src/deployment/rollback-executor.ts
40697
40462
  function nonEmptyOrUndefined(items) {
40698
40463
  return items.length > 0 ? items : void 0;
40699
40464
  }
@@ -41281,8 +41046,7 @@ async function replayFailedOperations(...args) {
41281
41046
  return await withProducerRegions(() => replayProducerRegionEvidence(args[3]), () => withStackRecords(replayStackRecordsView(args[1]), () => replayFailedOperationsUnbound(...args)));
41282
41047
  }
41283
41048
 
41284
- //#endregion
41285
- //#region src/deployment/deploy-engine/observed-capture.ts
41049
+ // src/deployment/deploy-engine/observed-capture.ts
41286
41050
  var ObservedCapture = class {
41287
41051
  observedCaptureTasks = /* @__PURE__ */ new Map();
41288
41052
  recapturedBaselines = /* @__PURE__ */ new WeakMap();
@@ -41508,8 +41272,7 @@ function stampReasonlessParameterRefusals(logger, stateResources, template) {
41508
41272
  if (stamped > 0) logger.debug(safeMsg`${stamped} resource(s) carry an observed-baseline refusal recorded without a reason by an older cdkd, and their template definition reads a template parameter: treated as an unverifiable-parameter refusal (kept until the resource is replaced or re-imported against a CloudFormation stack that proves the parameter).`);
41509
41273
  }
41510
41274
 
41511
- //#endregion
41512
- //#region src/deployment/deploy-engine/attribute-healer.ts
41275
+ // src/deployment/deploy-engine/attribute-healer.ts
41513
41276
  var AttributeHealer = class {
41514
41277
  heals = /* @__PURE__ */ new Map();
41515
41278
  healed = /* @__PURE__ */ new Map();
@@ -41595,8 +41358,7 @@ function healPrintingBag(baseline, logicalId, resource, namingSecrets) {
41595
41358
  return hit.judge(logicalId);
41596
41359
  }
41597
41360
 
41598
- //#endregion
41599
- //#region src/state/pending-moves.ts
41361
+ // src/state/pending-moves.ts
41600
41362
  function pendingMovesOutOf(state) {
41601
41363
  const raw = state.pendingMovesOut;
41602
41364
  if (raw === void 0) return {
@@ -41630,8 +41392,7 @@ function refusePendingMovesOut(state, stackName, region, command) {
41630
41392
  throw markNonRetryable(new CdkdError(pendingMovesRefusalMessage(state, stackName, region, command), "REFACTOR_UNFINISHED"));
41631
41393
  }
41632
41394
 
41633
- //#endregion
41634
- //#region src/state/refactor-marker.ts
41395
+ // src/state/refactor-marker.ts
41635
41396
  function refactorMarkerMovesOf(body) {
41636
41397
  const raw = body?.moves;
41637
41398
  if (body === null || typeof body !== "object" || !Array.isArray(raw)) return {
@@ -41725,8 +41486,7 @@ function sameMove(a, b) {
41725
41486
  return a.fromStack === b.fromStack && a.fromRegion === b.fromRegion && a.from === b.from;
41726
41487
  }
41727
41488
 
41728
- //#endregion
41729
- //#region src/deployment/deploy-engine/superseded-retry.ts
41489
+ // src/deployment/deploy-engine/superseded-retry.ts
41730
41490
  async function retryCarriedSupersededResources(engine, host, carried, resources, options = {}) {
41731
41491
  let changed = false;
41732
41492
  if (carried.length === 0) return changed;
@@ -41788,8 +41548,7 @@ async function retryCarriedSupersededResources(engine, host, carried, resources,
41788
41548
  return changed;
41789
41549
  }
41790
41550
 
41791
- //#endregion
41792
- //#region src/provisioning/name-lookup.ts
41551
+ // src/provisioning/name-lookup.ts
41793
41552
  const inFlight = /* @__PURE__ */ new Map();
41794
41553
  const waiting = /* @__PURE__ */ new Map();
41795
41554
  async function withApiLimit(api, max, fn) {
@@ -41826,8 +41585,7 @@ function isAccessDeniedError(error) {
41826
41585
  return name === "AccessDenied" || name === "AccessDeniedException" || name === "AuthorizationError" || name === "UnauthorizedOperation" || status === 403;
41827
41586
  }
41828
41587
 
41829
- //#endregion
41830
- //#region src/deployment/generated-name-guard.ts
41588
+ // src/deployment/generated-name-guard.ts
41831
41589
  const GROUP_WINDOW_MS = 15;
41832
41590
  const DEFAULT_TIMING = {
41833
41591
  now: () => Date.now(),
@@ -42443,8 +42201,7 @@ async function lookupType(input, resourceType, group) {
42443
42201
  });
42444
42202
  }
42445
42203
 
42446
- //#endregion
42447
- //#region src/utils/resource-line.ts
42204
+ // src/utils/resource-line.ts
42448
42205
  function formatResourceLine(op, logicalId, resourceType, verbOverride) {
42449
42206
  const body = `${bold(displaySafe(logicalId))} ${gray(`(${displaySafe(resourceType)})`)}`;
42450
42207
  const verb = verbOverride === void 0 ? void 0 : displaySafe(verbOverride);
@@ -42456,8 +42213,7 @@ function formatResourceLine(op, logicalId, resourceType, verbOverride) {
42456
42213
  }
42457
42214
  }
42458
42215
 
42459
- //#endregion
42460
- //#region src/deployment/rollback-executor/journaled-orphans.ts
42216
+ // src/deployment/rollback-executor/journaled-orphans.ts
42461
42217
  const NONE = {
42462
42218
  segments: [],
42463
42219
  count: 0
@@ -42907,8 +42663,7 @@ function sameJournaledOrphans(a, b) {
42907
42663
  return ka.length === kb.length && ka.every((k, i) => k === kb[i]);
42908
42664
  }
42909
42665
 
42910
- //#endregion
42911
- //#region src/provisioning/nested-stack-context.ts
42666
+ // src/provisioning/nested-stack-context.ts
42912
42667
  const storage = new AsyncLocalStorage();
42913
42668
  function withNestedStackContext(ctx, fn) {
42914
42669
  return storage.run(ctx, fn);
@@ -42932,8 +42687,7 @@ async function collectNestedChildUnaddressed(fn) {
42932
42687
  };
42933
42688
  }
42934
42689
 
42935
- //#endregion
42936
- //#region src/deployment/nested-child-journal.ts
42690
+ // src/deployment/nested-child-journal.ts
42937
42691
  const NESTED_PENDING_PARENT_REASON = "nested-pending-parent";
42938
42692
  const NESTED_STACK_TYPE$2 = "AWS::CloudFormation::Stack";
42939
42693
  const MAX_NESTED_WALK_DEPTH = 32;
@@ -43254,8 +43008,7 @@ async function revertNestedChildFromJournal(args) {
43254
43008
  }
43255
43009
  }
43256
43010
 
43257
- //#endregion
43258
- //#region src/deployment/retained-readoption.ts
43011
+ // src/deployment/retained-readoption.ts
43259
43012
  function keptUnderGeneratedName(resource) {
43260
43013
  if (typeof resource.physicalId !== "string" || resource.physicalId === "") return false;
43261
43014
  const property = explicitNamePropertyFor(resource.resourceType);
@@ -43331,8 +43084,7 @@ var KeptForReadoption = class {
43331
43084
  }
43332
43085
  };
43333
43086
 
43334
- //#endregion
43335
- //#region src/deployment/deploy-engine/delete.ts
43087
+ // src/deployment/deploy-engine/delete.ts
43336
43088
  const keptByEngine = /* @__PURE__ */ new WeakMap();
43337
43089
  async function flushKeptForReadoption(engine) {
43338
43090
  await keptByEngine.get(engine)?.flush();
@@ -43492,8 +43244,7 @@ Drop the record with: ${dropCommand}`);
43492
43244
  deps.logger.info(safeMsg`${deletePrefix}${formatResourceLine("deleted", logicalId, resourceType)}`);
43493
43245
  }
43494
43246
 
43495
- //#endregion
43496
- //#region src/deployment/cc-pending-requests.ts
43247
+ // src/deployment/cc-pending-requests.ts
43497
43248
  function hasPendingCloudControlRequest(op) {
43498
43249
  return op.pendingCloudControlRequest !== void 0;
43499
43250
  }
@@ -43656,8 +43407,7 @@ function withoutPendingRequest(op) {
43656
43407
  return rest;
43657
43408
  }
43658
43409
 
43659
- //#endregion
43660
- //#region src/deployment/orphan-adoption.ts
43410
+ // src/deployment/orphan-adoption.ts
43661
43411
  function templateStillDeclares(template, record, nameProperties) {
43662
43412
  const declared = template.Resources?.[record.logicalId];
43663
43413
  if (!declared) return false;
@@ -43805,8 +43555,7 @@ function makeSiblingClaimReader(params) {
43805
43555
  };
43806
43556
  }
43807
43557
 
43808
- //#endregion
43809
- //#region src/deployment/deploy-engine/rollback.ts
43558
+ // src/deployment/deploy-engine/rollback.ts
43810
43559
  function redactOperationsForJournal(deps, operations) {
43811
43560
  return operations.map((op) => {
43812
43561
  const secrets = deps.secretsRun().perResourceSecrets.get(op.logicalId);
@@ -44351,8 +44100,7 @@ async function orphanUntakenResumes(deps, stackName, finalResources) {
44351
44100
  }
44352
44101
  }
44353
44102
 
44354
- //#endregion
44355
- //#region src/provisioning/canonicalize-properties.ts
44103
+ // src/provisioning/canonicalize-properties.ts
44356
44104
  function makeCanonicalizePropertiesFn(registry) {
44357
44105
  const logger = getLogger().child("canonicalize-properties");
44358
44106
  return (resourceType, properties) => {
@@ -44366,8 +44114,7 @@ function makeCanonicalizePropertiesFn(registry) {
44366
44114
  };
44367
44115
  }
44368
44116
 
44369
- //#endregion
44370
- //#region src/deployment/no-change-outputs-merge.ts
44117
+ // src/deployment/no-change-outputs-merge.ts
44371
44118
  function isSecretBearingReferenceString(value) {
44372
44119
  if (typeof value !== "string") return false;
44373
44120
  return value.includes("{{resolve:secretsmanager:") || value.includes("{{resolve:ssm-secure:");
@@ -44441,8 +44188,7 @@ function keptWholeReasonText(reason) {
44441
44188
  }
44442
44189
  }
44443
44190
 
44444
- //#endregion
44445
- //#region src/deployment/output-value-preflight.ts
44191
+ // src/deployment/output-value-preflight.ts
44446
44192
  function selectsNoValue(value, conditions, assumed, depth = 0) {
44447
44193
  if (depth > 64 || value === null || typeof value !== "object" || Array.isArray(value)) return false;
44448
44194
  const keys = Object.keys(value);
@@ -44463,8 +44209,7 @@ function refuseNoValueOutputs(outputs, conditions) {
44463
44209
  throw markNonRetryable(/* @__PURE__ */ new Error(`Output ${offending.join(", ")} evaluates to AWS::NoValue, and CloudFormation rejects the template for it ("The Value field of every Outputs member must evaluate to a String") before creating anything. To publish an Output only sometimes, give it a Condition instead of selecting AWS::NoValue in its Value.`));
44464
44210
  }
44465
44211
 
44466
- //#endregion
44467
- //#region src/analyzer/security-changes.ts
44212
+ // src/analyzer/security-changes.ts
44468
44213
  const RESOURCE_SCRUTINY = {
44469
44214
  "AWS::Bedrock::KnowledgeBasePolicy": "ResourcePolicyResource",
44470
44215
  "AWS::Bedrock::ResourcePolicy": "ResourcePolicyResource",
@@ -45438,8 +45183,7 @@ function stdoutSupportsColor(env = process.env, argv = process.argv, isTTY = pro
45438
45183
  return min > 0;
45439
45184
  }
45440
45185
 
45441
- //#endregion
45442
- //#region src/analyzer/security-diff.ts
45186
+ // src/analyzer/security-diff.ts
45443
45187
  function isSyntheticChange(pc) {
45444
45188
  return pc.replacementPropagated === true || pc.inPlacePropagated === true || pc.noEchoPromoted === true || pc.unsettled === true;
45445
45189
  }
@@ -45597,8 +45341,7 @@ function logicalIdToPath(records, template) {
45597
45341
  return map;
45598
45342
  }
45599
45343
 
45600
- //#endregion
45601
- //#region src/deployment/resource-deadline.ts
45344
+ // src/deployment/resource-deadline.ts
45602
45345
  var InvalidResourceDeadlineError = class extends Error {
45603
45346
  constructor(message) {
45604
45347
  super(message);
@@ -45698,8 +45441,7 @@ function enclosingDeadlineRemainingMs() {
45698
45441
  return deadlineScope.getStore()?.remainingMs() ?? Number.POSITIVE_INFINITY;
45699
45442
  }
45700
45443
 
45701
- //#endregion
45702
- //#region src/deployment/deployment-approval.ts
45444
+ // src/deployment/deployment-approval.ts
45703
45445
  const NESTED_STACK_TYPE$1 = "AWS::CloudFormation::Stack";
45704
45446
  async function requireDeploymentApproval(args) {
45705
45447
  const level = args.options.requireApproval ?? "never";
@@ -45805,8 +45547,7 @@ function isNoEchoPromotionOnly(change) {
45805
45547
  return change.changeType === "UPDATE" && (change.attributeChanges?.length ?? 0) === 0 && (change.propertyChanges?.length ?? 0) > 0 && change.propertyChanges.every((pc) => pc.noEchoPromoted === true);
45806
45548
  }
45807
45549
 
45808
- //#endregion
45809
- //#region src/deployment/condition-verdicts.ts
45550
+ // src/deployment/condition-verdicts.ts
45810
45551
  function conditionInputsFrom(args) {
45811
45552
  return (parameter) => {
45812
45553
  if (args.unavailable?.has(parameter)) return void 0;
@@ -46023,8 +45764,7 @@ function conditionVerdictRecordsEqual(a, b) {
46023
45764
  return names.every((name) => Object.hasOwn(right, name) && left[name].verdict === right[name].verdict && left[name].fingerprint === right[name].fingerprint);
46024
45765
  }
46025
45766
 
46026
- //#endregion
46027
- //#region src/utils/nested-template-cycle.ts
45767
+ // src/utils/nested-template-cycle.ts
46028
45768
  const NESTED_STACK_TYPE = "AWS::CloudFormation::Stack";
46029
45769
  function isAbsoluteAssetPath(p) {
46030
45770
  return path.isAbsolute(p) || p.startsWith("/");
@@ -46164,8 +45904,7 @@ function renderNestedTemplateTreeDefect(defect, stackName, action) {
46164
45904
  return `The nested template tree under stack ${displayStackName(stackName)} has nested stack ${displayIdent(defect.logicalId)} (reached through ${renderChain(defect.chain)}) with Metadata['aws:asset:path']=${displayAssemblyPath(defect.assetPath)} which is absolute. ${provenance}`;
46165
45905
  }
46166
45906
 
46167
- //#endregion
46168
- //#region src/deployment/nested-output-templates.ts
45907
+ // src/deployment/nested-output-templates.ts
46169
45908
  function childTemplateLoader(nestedTemplates) {
46170
45909
  if (nestedTemplates === void 0) return void 0;
46171
45910
  const read = /* @__PURE__ */ new Map();
@@ -46201,8 +45940,7 @@ function childIndex(template, templatePath) {
46201
45940
  return index;
46202
45941
  }
46203
45942
 
46204
- //#endregion
46205
- //#region src/deployment/recreate-target-promotion.ts
45943
+ // src/deployment/recreate-target-promotion.ts
46206
45944
  function recreateTargetIdsFor(recreateTargets, stackName) {
46207
45945
  if (recreateTargets === void 0 || recreateTargets.stackName !== stackName) return void 0;
46208
45946
  const ids = /* @__PURE__ */ new Set([...recreateTargets.viaCcApi, ...recreateTargets.viaSdkProvider]);
@@ -46234,8 +45972,7 @@ function promoteRecreateTargets(changes, recreateTargets, stackName) {
46234
45972
  };
46235
45973
  }
46236
45974
 
46237
- //#endregion
46238
- //#region src/deployment/custom-resource-service-token.ts
45975
+ // src/deployment/custom-resource-service-token.ts
46239
45976
  const SERVICE_TOKEN_CHANGE_REFUSED = "CUSTOM_RESOURCE_SERVICE_TOKEN_CHANGED";
46240
45977
  function uncomparableToken(value) {
46241
45978
  if (value === void 0 || value === null || value === "") return "absent";
@@ -46343,8 +46080,7 @@ function deferredServiceTokenWarning(row) {
46343
46080
  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. 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.`;
46344
46081
  }
46345
46082
 
46346
- //#endregion
46347
- //#region src/deployment/read-provenance-sources.ts
46083
+ // src/deployment/read-provenance-sources.ts
46348
46084
  function isPlainObject$3(value) {
46349
46085
  return value !== null && typeof value === "object" && !Array.isArray(value);
46350
46086
  }
@@ -46404,8 +46140,7 @@ function inheritedProvenanceForChildDiff(args) {
46404
46140
  return out.size === 0 ? void 0 : out;
46405
46141
  }
46406
46142
 
46407
- //#endregion
46408
- //#region src/deployment/dag-executor.ts
46143
+ // src/deployment/dag-executor.ts
46409
46144
  var DagExecutor = class {
46410
46145
  nodes = /* @__PURE__ */ new Map();
46411
46146
  logger = getLogger().child("DagExecutor");
@@ -46531,8 +46266,7 @@ var DagExecutor = class {
46531
46266
  }
46532
46267
  };
46533
46268
 
46534
- //#endregion
46535
- //#region src/analyzer/implicit-delete-deps.ts
46269
+ // src/analyzer/implicit-delete-deps.ts
46536
46270
  const IMPLICIT_DELETE_DEPENDENCIES = {
46537
46271
  "AWS::EC2::InternetGateway": ["AWS::EC2::VPCGatewayAttachment", "AWS::EC2::NatGateway"],
46538
46272
  "AWS::EC2::VPCGatewayAttachment": ["AWS::EC2::NatGateway"],
@@ -46596,8 +46330,7 @@ function computeImplicitDeleteEdges(resources) {
46596
46330
  return edges;
46597
46331
  }
46598
46332
 
46599
- //#endregion
46600
- //#region src/deployment/deploy-engine/dependencies.ts
46333
+ // src/deployment/deploy-engine/dependencies.ts
46601
46334
  function hasPending(executor) {
46602
46335
  for (const node of executor.values()) if (node.state === "pending") return true;
46603
46336
  return false;
@@ -46656,8 +46389,7 @@ function addImplicitDeleteDependencies(deleteIds, state, dependedBy, logger) {
46656
46389
  }
46657
46390
  }
46658
46391
 
46659
- //#endregion
46660
- //#region src/deployment/deploy-engine/record-shape.ts
46392
+ // src/deployment/deploy-engine/record-shape.ts
46661
46393
  function auditResolvedAssetReferences(options, logicalId, resourceType, resolvedProps) {
46662
46394
  const redirect = options.assetRedirect;
46663
46395
  if (!redirect) return;
@@ -46701,8 +46433,7 @@ function secretNamedAttributesField(result, previous) {
46701
46433
  return names.length > 0 ? { secretNamedAttributes: names } : {};
46702
46434
  }
46703
46435
 
46704
- //#endregion
46705
- //#region src/deployment/prior-attempt-scope.ts
46436
+ // src/deployment/prior-attempt-scope.ts
46706
46437
  const priorAttemptStore = new AsyncLocalStorage();
46707
46438
  function withPriorAttempts(lookup, fn) {
46708
46439
  return priorAttemptStore.run(lookup, fn);
@@ -46785,8 +46516,7 @@ function isRefusedBeforeApplying(error, logicalId) {
46785
46516
  return false;
46786
46517
  }
46787
46518
 
46788
- //#endregion
46789
- //#region src/deployment/label-routing.ts
46519
+ // src/deployment/label-routing.ts
46790
46520
  function deriveLabelRouting(change, existingState, registry, forceCcApi = false) {
46791
46521
  try {
46792
46522
  if (change.changeType === "DELETE") return existingState?.provisionedBy;
@@ -46802,8 +46532,7 @@ function deriveLabelRouting(change, existingState, registry, forceCcApi = false)
46802
46532
  }
46803
46533
  }
46804
46534
 
46805
- //#endregion
46806
- //#region src/deployment/deploy-engine/routing.ts
46535
+ // src/deployment/deploy-engine/routing.ts
46807
46536
  function isPinnedToCcApi(options, stackName, logicalId) {
46808
46537
  return options.pinCcApi?.stackName === stackName && options.pinCcApi.logicalIds.has(logicalId);
46809
46538
  }
@@ -46829,8 +46558,7 @@ function preparePropertiesForCcApi(providerRegistry, resourceType, resolvedProps
46829
46558
  return applyDefaultNameForFallback(logicalId, resourceType, resolvedProps, underivable);
46830
46559
  }
46831
46560
 
46832
- //#endregion
46833
- //#region src/deployment/deploy-engine/resolver-context.ts
46561
+ // src/deployment/deploy-engine/resolver-context.ts
46834
46562
  function buildResolverContext(deps, base, stackName) {
46835
46563
  const recordedSecretValues = /* @__PURE__ */ new Map();
46836
46564
  if (deps.options.inheritedSecrets && deps.options.inheritedSecrets.size > 0) inheritNestedStackParameterAssociations(recordedSecretValues, deps.options.inheritedSecrets);
@@ -46913,8 +46641,7 @@ function maskedInputSources(deps, template, resources, conditions, stackName) {
46913
46641
  };
46914
46642
  }
46915
46643
 
46916
- //#endregion
46917
- //#region src/deployment/deploy-engine/create.ts
46644
+ // src/deployment/deploy-engine/create.ts
46918
46645
  async function provisionCreate(engine, logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress) {
46919
46646
  const resourceType = change.resourceType;
46920
46647
  const renderer = getLiveRenderer();
@@ -47192,8 +46919,7 @@ async function resumeAbandonedCreate(engine, args) {
47192
46919
  return result;
47193
46920
  }
47194
46921
 
47195
- //#endregion
47196
- //#region src/provisioning/data-delete-intent.ts
46922
+ // src/provisioning/data-delete-intent.ts
47197
46923
  const S3_AUTO_DELETE_OBJECTS_TAG = "aws-cdk:auto-delete-objects";
47198
46924
  const ECR_AUTO_DELETE_IMAGES_TAG = "aws-cdk:auto-delete-images";
47199
46925
  function hasCdkAutoDeleteTag(properties, tagKey) {
@@ -47209,8 +46935,7 @@ function isTruthyCfnBoolean(value) {
47209
46935
  return value === true || value === "true";
47210
46936
  }
47211
46937
 
47212
- //#endregion
47213
- //#region src/provisioning/dynamodb-ttl.ts
46938
+ // src/provisioning/dynamodb-ttl.ts
47214
46939
  function readTtlSpec(spec) {
47215
46940
  if (spec === void 0 || spec === null) return {
47216
46941
  enabled: false,
@@ -47276,8 +47001,7 @@ async function sendTtlWaitingOutRateLimit(send, options) {
47276
47001
  }
47277
47002
  }
47278
47003
 
47279
- //#endregion
47280
- //#region src/provisioning/dynamodb-vector-indexes.ts
47004
+ // src/provisioning/dynamodb-vector-indexes.ts
47281
47005
  function vectorIndexesByName(value) {
47282
47006
  const out = /* @__PURE__ */ new Map();
47283
47007
  if (!Array.isArray(value)) return out;
@@ -47395,8 +47119,7 @@ function vectorIndexesSettled(live) {
47395
47119
  return (live ?? []).every((d) => d.IndexStatus === void 0 || d.IndexStatus === "ACTIVE");
47396
47120
  }
47397
47121
 
47398
- //#endregion
47399
- //#region src/provisioning/dynamodb-index-busy-delete.ts
47122
+ // src/provisioning/dynamodb-index-busy-delete.ts
47400
47123
  function maskedLogger(logger, maskSecrets, name) {
47401
47124
  if (maskSecrets === void 0) return logger;
47402
47125
  const maskedName = name === void 0 || name === "" ? name : maskSecrets(name);
@@ -47529,8 +47252,7 @@ async function deleteTableWithIndexBusyRetry(opts) {
47529
47252
  }
47530
47253
  }
47531
47254
 
47532
- //#endregion
47533
- //#region src/provisioning/providers/dynamodb-delete-budget.ts
47255
+ // src/provisioning/providers/dynamodb-delete-budget.ts
47534
47256
  const DYNAMODB_DELETE_POLL_RTT_MS = 200;
47535
47257
  const DYNAMODB_DELETE_POLL_COST_MS = INDEX_SETTLE_POLL_INTERVAL_MS + 200;
47536
47258
  const DYNAMODB_DELETE_BUDGET_MS = 156e4;
@@ -47643,8 +47365,7 @@ function isResourceNotFoundError(error) {
47643
47365
  return typeof error === "object" && error !== null && error.name === "ResourceNotFoundException";
47644
47366
  }
47645
47367
 
47646
- //#endregion
47647
- //#region src/provisioning/dynamodb-contributor-insights.ts
47368
+ // src/provisioning/dynamodb-contributor-insights.ts
47648
47369
  const CONTRIBUTOR_INSIGHTS_KEY = "ContributorInsightsSpecification";
47649
47370
  function readContributorInsightsSpec(value, path) {
47650
47371
  if (value === void 0 || value === null) return { kind: "absent" };
@@ -47748,8 +47469,7 @@ function reverseMapIndexContributorInsights(status, mode, declaredBlock) {
47748
47469
  return block;
47749
47470
  }
47750
47471
 
47751
- //#endregion
47752
- //#region src/provisioning/dynamodb-replica-settings.ts
47472
+ // src/provisioning/dynamodb-replica-settings.ts
47753
47473
  const PITR_KEY = "PointInTimeRecoverySpecification";
47754
47474
  const KINESIS_KEY = "KinesisStreamSpecification";
47755
47475
  const TABLE_POLICY_KEY = "ResourcePolicy";
@@ -48278,8 +47998,7 @@ function keepUnreadReplicaMembers(desired, previous) {
48278
47998
  } : desired;
48279
47999
  }
48280
48000
 
48281
- //#endregion
48282
- //#region src/provisioning/dynamodb-stream-members.ts
48001
+ // src/provisioning/dynamodb-stream-members.ts
48283
48002
  const STREAM_SPECIFICATION_KEY$1 = "StreamSpecification";
48284
48003
  const STREAM_POLICY_KEY = "ResourcePolicy";
48285
48004
  const STREAM_TAGS_KEY = "Tags";
@@ -48476,8 +48195,7 @@ function canonicalJson(value) {
48476
48195
  return JSON.stringify(value) ?? "null";
48477
48196
  }
48478
48197
 
48479
- //#endregion
48480
- //#region src/provisioning/providers/dynamodb-globaltable-provider.ts
48198
+ // src/provisioning/providers/dynamodb-globaltable-provider.ts
48481
48199
  function isTableName(id) {
48482
48200
  return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
48483
48201
  }
@@ -49083,6 +48801,19 @@ var DynamoDBGlobalTableProvider = class {
49083
48801
  await new Promise((resolve) => setTimeout(resolve, REPLICA_COPY_RELEASE_POLL_MS));
49084
48802
  }
49085
48803
  await this.waitForReplicaActive(tableName, region, logicalId, void 0, maskSecrets);
48804
+ const provisionedIndexes = replicaIndexes?.filter((i) => i.ProvisionedThroughputOverride);
48805
+ if (create.ProvisionedThroughputOverride || provisionedIndexes?.length) {
48806
+ await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
48807
+ await this.dynamoDBClient.send(new UpdateTableCommand({
48808
+ TableName: tableName,
48809
+ ReplicaUpdates: [{ Update: {
48810
+ RegionName: region,
48811
+ ...create.ProvisionedThroughputOverride && { ProvisionedThroughputOverride: create.ProvisionedThroughputOverride },
48812
+ ...provisionedIndexes?.length && { GlobalSecondaryIndexes: provisionedIndexes }
48813
+ } }]
48814
+ }));
48815
+ await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
48816
+ }
49086
48817
  if (readReplicaDeletionProtection(replica, region, (message) => this.logger.warn(maskSecrets(message))) === true) await this.setReplicaDeletionProtection(tableName, region, true, logicalId, maskSecrets);
49087
48818
  }
49088
48819
  async setReplicaDeletionProtection(tableName, region, enabled, logicalId, maskSecrets, budget) {
@@ -49875,6 +49606,17 @@ var DynamoDBGlobalTableProvider = class {
49875
49606
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49876
49607
  const describeResp = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
49877
49608
  const tableArn = describeResp.Table?.TableArn;
49609
+ const liveHasCrossRegionReplica = (describeResp.Table?.Replicas ?? []).some((r) => r.RegionName !== void 0 && r.RegionName !== currentRegion);
49610
+ const declaredRegions = declaredCrossRegions(properties, currentRegion);
49611
+ const staysReplicated = liveHasCrossRegionReplica && declaredRegions.length > 0;
49612
+ const literalWriteMoves = staysReplicated && literalWriteSideMoves(properties, previousProperties, currentRegion, describeResp.Table);
49613
+ const statePath = context?.replayingState === true || context?.desiredFromAwsReadback === true;
49614
+ const addsRegionToLiteral = !statePath && properties["BillingMode"] === "PROVISIONED" && !writeSideScaled(properties) && declaredRegions.some((region) => !describeResp.Table?.Replicas?.some((r) => r.RegionName === region));
49615
+ if (literalWriteMoves || addsRegionToLiteral) {
49616
+ const refusal = `AWS::DynamoDB::GlobalTable ${logicalId}: a table with a cross-region replica needs an auto-scaled write side, and this update declares none: CloudFormation refuses a literal WriteCapacityUnits, and DynamoDB refuses every replica update without auto-scaling`;
49617
+ if (statePath) warn(`${refusal}${refusal}. No capacity beyond what a billing flip carries was sent.`);
49618
+ else throw new ProvisioningError(maskSecrets(`${refusal}. Nothing was applied to the table; declare WriteProvisionedThroughputSettings.WriteCapacityAutoScalingSettings`), resourceType, logicalId, physicalId);
49619
+ }
49878
49620
  const vectorIndexesChanged = !deepEqual(properties["VectorIndexes"], previousProperties["VectorIndexes"]);
49879
49621
  const vectorIndexShape = vectorIndexesShapeDetail(properties["VectorIndexes"]);
49880
49622
  if (vectorIndexShape !== void 0 && vectorIndexesChanged) warn(`${vectorIndexShape}; the VectorIndexes change was not applied`);
@@ -49924,6 +49666,7 @@ var DynamoDBGlobalTableProvider = class {
49924
49666
  const desiredCeilings = collectTableOnDemandCeilings(properties, currentRegion, diagnostics, maskSecrets);
49925
49667
  const flippingToProvisioned = oldBilling !== newBilling && newBilling === "PROVISIONED";
49926
49668
  if (flippingToProvisioned) derivePerCallProvisionedThroughput(properties, currentRegion, "seed", diagnostics, maskSecrets);
49669
+ const tableCapacityChange = !literalWriteMoves && oldBilling === "PROVISIONED" && newBilling === "PROVISIONED" && liveBillingMode === "PROVISIONED" ? readTableCapacityChange(properties, previousProperties, currentRegion, diagnostics, maskSecrets) : void 0;
49927
49670
  let desiredGsiUnusable = false;
49928
49671
  const onUnusableGsiBlock = (message) => {
49929
49672
  desiredGsiUnusable = true;
@@ -50046,7 +49789,6 @@ var DynamoDBGlobalTableProvider = class {
50046
49789
  TableName: physicalId,
50047
49790
  TableClass: tableClassUpdate
50048
49791
  }, tableClassFromTemplate, "TableClass", physicalId, logicalId, maskSecrets);
50049
- const liveHasCrossRegionReplica = (describeResp.Table?.Replicas ?? []).some((r) => r.RegionName !== void 0 && r.RegionName !== currentRegion);
50050
49792
  if (sseUpdate?.KMSMasterKeyId !== void 0 && liveHasCrossRegionReplica) {
50051
49793
  deferredSseUpdate = sseUpdate;
50052
49794
  deferredSseFromTemplate = sseFromTemplate;
@@ -50110,33 +49852,47 @@ var DynamoDBGlobalTableProvider = class {
50110
49852
  }));
50111
49853
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50112
49854
  }
50113
- const readBlockOf = (bag) => localReplicaEntry(bag, currentRegion)?.[TABLE_READ_PROVISIONED_KEY] ?? bag[TABLE_READ_PROVISIONED_KEY];
50114
- if (oldBilling === "PROVISIONED" && newBilling === "PROVISIONED" && liveBillingMode === "PROVISIONED" && (properties[TABLE_READ_PROVISIONED_KEY] !== void 0 || previousProperties[TABLE_READ_PROVISIONED_KEY] !== void 0) && !deepEqual(readBlockOf(properties), readBlockOf(previousProperties))) {
50115
- const wantRead = coerceCfnInteger(asRecord(readBlockOf(properties))?.["ReadCapacityUnits"]);
50116
- const liveThroughput = describeResp.Table?.ProvisionedThroughput;
50117
- if (wantRead !== void 0 && liveThroughput?.WriteCapacityUnits !== void 0 && wantRead !== liveThroughput.ReadCapacityUnits) {
50118
- markUnsettled(TABLE_READ_PROVISIONED_KEY);
50119
- await this.dynamoDBClient.send(new UpdateTableCommand({
50120
- TableName: physicalId,
50121
- ProvisionedThroughput: {
50122
- ReadCapacityUnits: wantRead,
50123
- WriteCapacityUnits: liveThroughput.WriteCapacityUnits
50124
- }
50125
- }));
50126
- await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50127
- }
50128
- }
50129
49855
  const writeAutoScalingOld = (previousProperties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
50130
49856
  const writeAutoScalingNew = (properties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
50131
49857
  const effectiveNewAutoScaling = oldBilling === "PROVISIONED" && newBilling === "PAY_PER_REQUEST" ? void 0 : writeAutoScalingNew;
50132
49858
  const autoScalingApplied = /* @__PURE__ */ new Set();
50133
- if ((newBilling === "PROVISIONED" || oldBilling === "PROVISIONED") && !deepEqual(writeAutoScalingOld, effectiveNewAutoScaling)) {
49859
+ const autoScalingMeaningful = newBilling === "PROVISIONED" || oldBilling === "PROVISIONED";
49860
+ if (literalWriteMoves) autoScalingApplied.add(autoScalingTargetKey({
49861
+ dimension: "dynamodb:table:WriteCapacityUnits",
49862
+ region: currentRegion
49863
+ }));
49864
+ if (autoScalingMeaningful && !literalWriteMoves && !deepEqual(writeAutoScalingOld, effectiveNewAutoScaling)) {
50134
49865
  await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", writeAutoScalingOld, effectiveNewAutoScaling, void 0, void 0, void 0, maskSecrets);
50135
49866
  autoScalingApplied.add(autoScalingTargetKey({
50136
49867
  dimension: "dynamodb:table:WriteCapacityUnits",
50137
49868
  region: currentRegion
50138
49869
  }));
50139
49870
  }
49871
+ if (tableCapacityChange) {
49872
+ const liveThroughput = describeResp.Table?.ProvisionedThroughput;
49873
+ const sendRead = tableCapacityChange.read ?? liveThroughput?.ReadCapacityUnits;
49874
+ const sendWrite = tableCapacityChange.write ?? liveThroughput?.WriteCapacityUnits;
49875
+ const readMoves = sendRead !== liveThroughput?.ReadCapacityUnits;
49876
+ const writeMoves = sendWrite !== liveThroughput?.WriteCapacityUnits;
49877
+ if (sendRead !== void 0 && sendWrite !== void 0 && (readMoves || writeMoves)) {
49878
+ markUnsettled(...readMoves ? tableCapacityChange.readKeys : [], ...writeMoves ? [TABLE_WRITE_PROVISIONED_KEY] : []);
49879
+ await this.dynamoDBClient.send(new UpdateTableCommand(staysReplicated ? {
49880
+ TableName: physicalId,
49881
+ ReplicaUpdates: [{ Update: {
49882
+ RegionName: currentRegion,
49883
+ ProvisionedThroughputOverride: { ReadCapacityUnits: sendRead }
49884
+ } }]
49885
+ } : {
49886
+ TableName: physicalId,
49887
+ ProvisionedThroughput: {
49888
+ ReadCapacityUnits: sendRead,
49889
+ WriteCapacityUnits: sendWrite
49890
+ }
49891
+ }));
49892
+ if (liveHasCrossRegionReplica) await this.waitForGlobalTableSettled(physicalId, logicalId, maskSecrets);
49893
+ else await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49894
+ }
49895
+ }
50140
49896
  const modeUpdate = replicationModeUpdate(properties, previousProperties);
50141
49897
  if (modeUpdate === "DISABLED" && readReplicationMode(properties).kind === "absent") await this.sendReplicationMode(physicalId, logicalId, modeUpdate, maskSecrets);
50142
49898
  const replicaDiff = diffReplicas(previousProperties["Replicas"] ?? [], properties["Replicas"] ?? []);
@@ -50218,7 +49974,7 @@ var DynamoDBGlobalTableProvider = class {
50218
49974
  TableName: physicalId,
50219
49975
  ReplicaUpdates: [{ Update: updateAction }]
50220
49976
  }));
50221
- await this.waitForReplicaActive(physicalId, region, logicalId, void 0, maskSecrets);
49977
+ await this.waitForGlobalTableSettled(physicalId, logicalId, maskSecrets, { region });
50222
49978
  }
50223
49979
  const addedReplicaRegions = new Set(replicaDiff.added.map((r) => r["Region"]));
50224
49980
  if (modeUpdate !== void 0 && readReplicationMode(properties).kind === "usable") await this.sendReplicationMode(physicalId, logicalId, modeUpdate, maskSecrets);
@@ -50983,12 +50739,15 @@ var DynamoDBGlobalTableProvider = class {
50983
50739
  let protection;
50984
50740
  let disassociationProtection;
50985
50741
  let streamArn;
50742
+ let regionalRead;
50986
50743
  if (isLocal) {
50744
+ regionalRead = table.ProvisionedThroughput?.ReadCapacityUnits;
50987
50745
  protection = table.DeletionProtectionEnabled;
50988
50746
  disassociationProtection = table.DisassociationProtectionEnabled;
50989
50747
  streamArn = table.LatestStreamArn;
50990
50748
  } else try {
50991
50749
  const regional = await client.send(new DescribeTableCommand({ TableName: tableNameForSubs }));
50750
+ regionalRead = regional.Table?.ProvisionedThroughput?.ReadCapacityUnits;
50992
50751
  protection = regional.Table?.DeletionProtectionEnabled;
50993
50752
  disassociationProtection = regional.Table?.DisassociationProtectionEnabled;
50994
50753
  streamArn = regional.Table?.LatestStreamArn;
@@ -51019,6 +50778,7 @@ var DynamoDBGlobalTableProvider = class {
51019
50778
  const replicaAutoScalingClient = isLocal ? void 0 : this.getRegionalAutoScalingClient(regionLabel);
51020
50779
  const readAutoScaling = await this.readAutoScalingSettings(tableNameForSubs, "dynamodb:table:ReadCapacityUnits", replicaAutoScalingClient);
51021
50780
  if (readAutoScaling) entry["ReadProvisionedThroughputSettings"] = { ReadCapacityAutoScalingSettings: readAutoScaling };
50781
+ else if (strictFor("Replicas") && regionalRead !== void 0) entry["ReadProvisionedThroughputSettings"] = { ReadCapacityUnits: regionalRead };
51022
50782
  }
51023
50783
  return entry;
51024
50784
  })));
@@ -51566,6 +51326,7 @@ const REPLICA_SETTING_MEMBERS = [
51566
51326
  const REPLICATION_MODE_KEY = "GlobalTableSettingsReplicationMode";
51567
51327
  const TABLE_READ_ON_DEMAND_KEY = "ReadOnDemandThroughputSettings";
51568
51328
  const TABLE_READ_PROVISIONED_KEY = "ReadProvisionedThroughputSettings";
51329
+ const TABLE_WRITE_PROVISIONED_KEY = "WriteProvisionedThroughputSettings";
51569
51330
  function readReplicationMode(properties) {
51570
51331
  const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51571
51332
  const declared = replicas.map((entry) => asRecord(entry)?.[REPLICATION_MODE_KEY]).filter((value) => value !== void 0 && value !== null);
@@ -51712,6 +51473,41 @@ function derivePerCallProvisionedThroughput(properties, region, source = "min",
51712
51473
  WriteCapacityUnits: write ?? DEFAULT_CAPACITY_UNITS
51713
51474
  };
51714
51475
  }
51476
+ function declaredCrossRegions(properties, region) {
51477
+ const replicas = properties["Replicas"];
51478
+ return (Array.isArray(replicas) ? replicas : []).map((replica) => asRecord(replica)?.["Region"]).filter((name) => typeof name === "string" && name !== region);
51479
+ }
51480
+ function writeSideScaled(bag) {
51481
+ return asRecord(bag[TABLE_WRITE_PROVISIONED_KEY])?.["WriteCapacityAutoScalingSettings"] !== void 0;
51482
+ }
51483
+ function literalWriteSideMoves(properties, previousProperties, region, live) {
51484
+ if (properties["BillingMode"] !== "PROVISIONED" || writeSideScaled(properties)) return false;
51485
+ if (writeSideScaled(previousProperties)) return true;
51486
+ if (live?.BillingModeSummary?.BillingMode === "PAY_PER_REQUEST") return true;
51487
+ const change = readTableCapacityChange(properties, previousProperties, region, [], (t) => t);
51488
+ return change.write !== void 0 && change.write !== live?.ProvisionedThroughput?.WriteCapacityUnits || change.read !== void 0 && change.read !== live?.ProvisionedThroughput?.ReadCapacityUnits;
51489
+ }
51490
+ function readTableCapacityChange(properties, previousProperties, region, diagnostics, maskSecrets) {
51491
+ const localBlockOf = (bag) => localReplicaEntry(bag, region)?.[TABLE_READ_PROVISIONED_KEY];
51492
+ const readBlockOf = (bag) => localBlockOf(bag) ?? bag[TABLE_READ_PROVISIONED_KEY];
51493
+ const literal = (block, previousBlock, side, blockName) => {
51494
+ if (deepEqual(block, previousBlock)) return void 0;
51495
+ const settings = asRecord(block);
51496
+ if (settings?.[`${side}CapacityAutoScalingSettings`] !== void 0) return void 0;
51497
+ const units = coerceCfnInteger(settings?.[`${side}CapacityUnits`]);
51498
+ if (units === void 0) reportUnresolvedProvisionedCapacity(block, side, "min", { suppressed: "so cdkd sent no capacity for it and the old value stays on AWS" }, diagnostics, { blockName }, maskSecrets);
51499
+ return units;
51500
+ };
51501
+ const read = literal(readBlockOf(properties), readBlockOf(previousProperties), "Read", localBlockOf(properties) !== void 0 ? `Replicas[local].${TABLE_READ_PROVISIONED_KEY}` : TABLE_READ_PROVISIONED_KEY);
51502
+ const write = literal(properties[TABLE_WRITE_PROVISIONED_KEY], previousProperties[TABLE_WRITE_PROVISIONED_KEY], "Write", TABLE_WRITE_PROVISIONED_KEY);
51503
+ const declaredOnReplica = localBlockOf(properties) !== void 0 || localBlockOf(previousProperties) !== void 0;
51504
+ const declaredOnTable = properties[TABLE_READ_PROVISIONED_KEY] !== void 0 || previousProperties[TABLE_READ_PROVISIONED_KEY] !== void 0;
51505
+ return {
51506
+ ...read !== void 0 && { read },
51507
+ ...write !== void 0 && { write },
51508
+ readKeys: [...declaredOnTable ? [TABLE_READ_PROVISIONED_KEY] : [], ...declaredOnReplica ? ["Replicas"] : []]
51509
+ };
51510
+ }
51715
51511
  const DEFAULT_CAPACITY_UNITS = 5;
51716
51512
  const DYNAMODB_SCALABLE_DIMENSIONS = /* @__PURE__ */ new Set([
51717
51513
  "dynamodb:table:WriteCapacityUnits",
@@ -52454,8 +52250,7 @@ function lsiListOrEmpty(value) {
52454
52250
  return value;
52455
52251
  }
52456
52252
 
52457
- //#endregion
52458
- //#region src/provisioning/protection-flags.ts
52253
+ // src/provisioning/protection-flags.ts
52459
52254
  const PROTECTION_PROPERTY_BY_TYPE = {
52460
52255
  "AWS::Logs::LogGroup": "DeletionProtectionEnabled",
52461
52256
  "AWS::RDS::DBInstance": "DeletionProtection",
@@ -52510,8 +52305,7 @@ function isProtectionValueActive(resourceType, value) {
52510
52305
  return isTruthyCfnBoolean(value);
52511
52306
  }
52512
52307
 
52513
- //#endregion
52514
- //#region src/provisioning/recorded-protection.ts
52308
+ // src/provisioning/recorded-protection.ts
52515
52309
  const READER_LABELS = {
52516
52310
  "AWS::DynamoDB::GlobalTable": "DeletionProtectionEnabled on the table or a replica",
52517
52311
  "AWS::ElasticLoadBalancingV2::LoadBalancer": "LoadBalancerAttributes deletion_protection.enabled"
@@ -52545,8 +52339,7 @@ function recordedProtectionNote(evidence, flags) {
52545
52339
  return `${evidence}. AWS refuses to delete the resource while that protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one), so ${flags} alone does not remove the old resource: depending on the replacement order, the deploy either fails at that delete or completes leaving the old resource, and its data, in AWS and no longer tracked by cdkd. Read ${DELETION_PROTECTION_DOC_POINTER} before you disable anything, then turn the protection off out of band (the console, or the service's own API) and re-run with ${flags}.`;
52546
52340
  }
52547
52341
 
52548
- //#endregion
52549
- //#region src/deployment/deploy-engine/update-replace.ts
52342
+ // src/deployment/deploy-engine/update-replace.ts
52550
52343
  async function updateByReplacement(engine, { change, counts, currentProps, currentResource, dependencies, logicalId, oldResourceType, progress, propertyDrivenReplacement, recreateFlagged, recreateViaCcApi, recreateViaSdkProvider, renderer, resolvedProps, resourceType, stackName, stateResources, template, typeChanged, updateReplacePolicy, updateSecrets, lostWithParent, nameGenerationFields }) {
52551
52344
  const noEchoDeleteValues = await noEchoDeleteValuesFromResolved({
52552
52345
  record: currentResource,
@@ -52823,8 +52616,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
52823
52616
  engine.logger.info(replacedLine);
52824
52617
  }
52825
52618
 
52826
- //#endregion
52827
- //#region src/provisioning/cc-autoroute-update-remedy.ts
52619
+ // src/provisioning/cc-autoroute-update-remedy.ts
52828
52620
  const TYPE_FORMAT = /^[A-Z][A-Za-z0-9]+(::[A-Z][A-Za-z0-9]+)+$/;
52829
52621
  const PROPERTY_FORMAT = /^[A-Z][A-Za-z0-9]*$/;
52830
52622
  const LOGICAL_ID_FORMAT = /^[A-Za-z][A-Za-z0-9]{0,254}$/;
@@ -52839,8 +52631,7 @@ function ccAutoRouteUpdateFailureRemedy(logicalId, resourceType, autoRoutedPrope
52839
52631
  return `\nThis update moved the resource from its SDK provider to Cloud Control API, because the SDK provider does not handle ${shown}. Cloud Control addresses it by the physical id the SDK provider recorded, and for some types that is not an identifier Cloud Control accepts. ` + (nestedChild ? `It is in a nested stack, which --recreate-via-cc-api cannot address: ${preferSdk}, or remove ${them} from the template.` : `Two ways through: re-create the resource on Cloud Control with --recreate-via-cc-api ${id} (destroys and re-creates it), or ${preferSdk}.`);
52840
52632
  }
52841
52633
 
52842
- //#endregion
52843
- //#region src/deployment/deploy-engine/update-in-place.ts
52634
+ // src/deployment/deploy-engine/update-in-place.ts
52844
52635
  async function updateInPlace(engine, { changedProperties, conditions, counts, currentProps, currentPropsAsWritten, currentResource, dependencies, desiredForSkipCheckAsWritten, logicalId, noEchoHeldPaths, parameterValues, progress, renderer, resolvedProps, resourceType, stackName, stateResources, template, updateReplacePolicy, updateSecrets, reattach }) {
52845
52636
  engine.logger.debug(safeMsg`Updating ${logicalId} (${resourceType})`);
52846
52637
  const updateDecision = engine.providerRegistry.getProviderFor({
@@ -53238,12 +53029,10 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
53238
53029
  engine.logger.info(safeMsg`${updatePrefix}${formatResourceLine("updated", logicalId, resourceType)}`);
53239
53030
  }
53240
53031
 
53241
- //#endregion
53242
- //#region src/provisioning/changed-properties-consumers.ts
53032
+ // src/provisioning/changed-properties-consumers.ts
53243
53033
  const CHANGED_PROPERTIES_CONSUMER_TYPES = /* @__PURE__ */ new Set(["AWS::ServiceDiscovery::Service"]);
53244
53034
 
53245
- //#endregion
53246
- //#region src/deployment/deploy-engine/read-provenance-moved.ts
53035
+ // src/deployment/deploy-engine/read-provenance-moved.ts
53247
53036
  function occurrences(value, token) {
53248
53037
  if (typeof value === "string") return value.includes(token) ? value.split(token).length - 1 : 0;
53249
53038
  if (Array.isArray(value)) {
@@ -53354,8 +53143,7 @@ function withRefreshedReadVersions(record, unchanged) {
53354
53143
  return withReferenceProvenance(record, out);
53355
53144
  }
53356
53145
 
53357
- //#endregion
53358
- //#region src/deployment/deploy-engine/update.ts
53146
+ // src/deployment/deploy-engine/update.ts
53359
53147
  function isWhollyMask(value) {
53360
53148
  if (value === "***") return true;
53361
53149
  if (Array.isArray(value)) return value.length > 0 && value.every(isWhollyMask);
@@ -54039,8 +53827,7 @@ function readsProducerReplacedThisRun(engine, template, logicalId, stateResource
54039
53827
  });
54040
53828
  }
54041
53829
 
54042
- //#endregion
54043
- //#region src/deployment/deploy-engine/provision.ts
53830
+ // src/deployment/deploy-engine/provision.ts
54044
53831
  const NESTED_STACK_ROW_TYPE = "AWS::CloudFormation::Stack";
54045
53832
  async function provisionResource(engine, logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress) {
54046
53833
  const resourceType = change.resourceType;
@@ -54221,8 +54008,7 @@ async function provisionResourceBody(engine, logicalId, change, stateResources,
54221
54008
  });
54222
54009
  }
54223
54010
 
54224
- //#endregion
54225
- //#region src/deployment/deploy-engine/execute.ts
54011
+ // src/deployment/deploy-engine/execute.ts
54226
54012
  const NO_REPLACEMENT_ORPHAN_TYPES = /* @__PURE__ */ new Set([
54227
54013
  "AWS::CloudFormation::Stack",
54228
54014
  "AWS::SQS::QueuePolicy",
@@ -54863,8 +54649,7 @@ async function journalOrphanIdentity(engine, orphanOp, carried) {
54863
54649
  }
54864
54650
  }
54865
54651
 
54866
- //#endregion
54867
- //#region src/deployment/deploy-engine/deploy-flow.ts
54652
+ // src/deployment/deploy-engine/deploy-flow.ts
54868
54653
  const TAIL_WARM_CONNECTIONS = 3;
54869
54654
  async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefetch) {
54870
54655
  const startTime = Date.now();
@@ -55439,8 +55224,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
55439
55224
  }
55440
55225
  }
55441
55226
 
55442
- //#endregion
55443
- //#region src/deployment/deploy-engine.ts
55227
+ // src/deployment/deploy-engine.ts
55444
55228
  const EMPTY_SECRETS = /* @__PURE__ */ new Map();
55445
55229
  var InterruptedError = class extends Error {
55446
55230
  constructor(reason = "user") {
@@ -55894,6 +55678,5 @@ function sameGenerationClaimsOf(record) {
55894
55678
  };
55895
55679
  }
55896
55680
 
55897
- //#endregion
55898
55681
  export { sendTtlWaitingOutRateLimit as $, assertSendableRoleArn as $a, logOnlyValueCount as $c, isCustomResource as $i, hasUnverifiableParameterRefusal as $l, retiredAfterRollback as $n, malformedOrphansWarning as $o, removeSuperseded as $r, isStatefulRecreateTargetForReplace as $s, isHandledOrphan as $t, loadCdkJson as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, isUsableAttemptedName as Aa, canonicalCoordinates as Ac, nullPrototypeRecord as Ad, unsupportedFinalSnapshotError as Ai, recordNoEchoParameterFreshValue as Al, demoteSupersededOrphans as An, JSON_LISTING_HOLE_VALUE as Ao, movedToHint as Ar, refuseMalformedResourcesForDestroy as As, makeCanonicalizePropertiesFn as At, resolveDockerContextDirectory as Au, deleteTableWithIndexBusyRetry as B, s3BucketDomainName as Ba, readbackPathFor as Bc, resolveBucketRegion as Bd, markDeleteStarted as Bi, CrossPrefixScanCache as Bl, orphanNeedsIdentity as Bn, hasReadableResources as Bo, getStackRecords as Br, unreadableOrphanRecords as Bs, dropSettledNestedJournals as Bt, partitionSensitiveEnv as Bu, planContributorInsightsOp as C, ec2InstanceProtectionSite as Ca, ecsServiceLaunchTypeSetOrChanged as Cc, processStackMessages as Cd, PRE_DELETE_SNAPSHOT_TYPES as Ci, recordPhysicalNameCopy as Cl, recordAfterRollbackUpdate as Cn, lacksRecordedTableArn as Co, DEFAULT_RESOURCE_WARN_AFTER_MS as Cr, refuseMalformedResourceEntriesForImportSave as Cs, enclosingDeadlineExpired as Ct, isCrossRegionRedirect as Cu, reverseMapTableContributorInsights as D, reEnableInstanceApiTermination as Da, sameLambdaFunctionAddress as Dc, defineOwnKey as Dd, effectiveDeletionPolicy as Di, recordMaskOnlyValue as Dl, equalModuloMarkedMask as Dn, parameterInputsFor as Do, formatDestructiveChange as Dr, refuseMalformedResourcePropertiesForExport as Ds, isSecretBearingReferenceString as Dt, validateContainerRepoName as Du, reverseMapIndexContributorInsights as E, reDisableInstanceApiTermination as Ea, lambdaFunctionNameForMask as Ec, utf8ByteLength as Ed, createPreDeleteFinalSnapshot as Ei, provenPublicValue as El, calculateResourceDrift as En, withSharedDrainBudget as Eo, findDestructiveChanges as Er, refuseMalformedResourcePropertiesForDrift as Es, diffSecurity as Et, validateAssetBucketName as Eu, resolveDynamoDbDeleteBudgetClock as F, withoutUnsettledProperties as Fa, maskedLeafCoordinatesOf as Fc, renderAssemblyPathEscape as Fd, acquireIdempotencyToken as Fi, LockManager as Fl, recheckFailedPlan as Fn, accountArgs as Fo, mappingPairs as Fr, repairMalformedOutputsForReadOnly as Fs, keptForRetainedRecord as Ft, finchSecretArgvRefusal as Fu, readbackVectorIndexes as G, producerLookupOver as Ga, markSameGenerationBag as Gc, refuseMalformedDesiredTags as Gi, stackInstanceIdOf as Gl, isRedactedRecordedValue as Gn, malformedExportSourceWarning as Go, gray as Gr, findSilentDropProperties as Gs, revertedNestedRowIds as Gt, runDockerStreaming as Gu, relayedIndexBusyDelete as H, s3BucketRegionalDomainName as Ha, recordedNoEchoValuesOf as Hc, DBPROXY_TAG_OPTIONS as Hi, crossPrefixDeniedWarning as Hl, getCurrentProducerRegions as Hn, isReadableResourceEntry as Ho, replacedDeleteFailureVerdict as Hr, withheldAccountClause as Hs, nestedChildStackName as Ht, redactedCause as Hu, resolveDynamoDbDeleteBudgetMs as I, IntrinsicFunctionResolver as Ia, noEchoCoordinatesOf as Ic, resolveAssemblyPath as Id, DeploymentEventsReader as Ii, isLockInfoExpired as Il, recordUnderIdIsNotOwn as In, deployRefusesOrphanRowsReason as Io, parseMappingFile as Ir, repairMalformedResourceEntriesForReadOnly as Is, recordRetainedForReadoption as It, formatDockerLoginError as Iu, vectorIndexesShapeDetail as J, outputReferenceProvenanceOf as Ja, snapshotPassProvenance as Jc, definedAttributes as Ji, acceptedCreateOnlyDropsOf as Jl, updatePartialMessage as Jn, malformedLocalResourcesWarning as Jo, yellow as Jr, NO_CC_HANDLERS_REASON as Js, getCurrentNestedStackContext as Jt, getDockerImageBySourceHash as Ju, vectorIndexesForCreate as K, refuseUnreadableCdkCrossAccountRefs as Ka, redactForState as Kc, tagMapAsList as Ki, withStackInstanceIdWithheld as Kl, redactedDeleteAddressFields as Kn, malformedLocalOutputsWarning as Ko, green as Kr, unwrittenCreateOnlyReplacement as Ks, withNestedRevertRun as Kt, warnFinchArgvExposure as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, poisonRenderedSpellingsCollidingIn as La, noEchoLeavesOf as Lc, injectAwsRegion as Ld, DeploymentEventsStore as Li, S3StateBackend as Ll, replacementNeverSwapped as Ln, displayLogicalId as Lo, proposeRenames as Lr, repairMalformedResourcePropertiesForReadOnly as Ls, NESTED_PENDING_PARENT_REASON as Lt, getDockerCmd as Lu, beginDeleteWait as M, unsettledItemsOf as Ma, maskAtCoordinates as Mc, absoluteAssemblyPathEscape as Md, ledgerForStack as Mi, wholeStringLeavesOf as Ml, isReplacementOrphan as Mn, STATE_RESOURCES_MALFORMED as Mo, withMovedTo as Mr, refuseMalformedState as Ms, planOrphanAdoption as Mt, describeDockerExecFailure as Mu, compensateRemovedDeletionProtection as N, unsettledPropertiesOf as Na, maskReadbackAtCoordinates as Nc, describeFileReadFailure as Nd, reserveStackCreateToken as Ni, WHOLE_DYNAMIC_REFERENCE_PATTERN as Nl, planFailedOps as Nn, UNREADABLE_ORPHANS_CONTAINER_ROW as No, isPairableType as Nr, repairMalformedOrphanRecordsForReadOnly as Ns, pendingRequestCount as Nt, describeDockerFailure as Nu, stripIndexContributorInsights as O, DiffCalculator as Oa, DagBuilder as Oc, hasOwnKey as Od, isFinalSnapshotError as Oi, recordMaskOnlyValuesIn as Ol, equalModuloMask as On, passedParameterClassesOf as Oo, findRefactorHints as Or, refuseMalformedResourcePropertiesForOrphan as Os, keptWholeReasonText as Ot, buildDenyExternalAccessPolicy as Ou, deleteBudgetKey as P, withUnsettledProperties as Pa, maskWholeValue as Pc, displayAssemblyPath as Pd, withCreateTokenLedger as Pi, isSingleDynamicReferenceToken as Pl, planRollback as Pn, UNREADABLE_RESOURCES_MAP_ROW as Po, looselyEqual as Pr, repairMalformedOrphansForReadOnly as Ps, resolvePendingCloudControlRequests as Pt, dockerSpawnEnvWithSensitive as Pu, readTtlSpec as Q, assertFlagRoleArn as Qa, literalSplitDelimitersOf as Qc, ccBrokenReason as Qi, hasReasonlessBaselineRefusal as Ql, nameScopeOf as Qn, malformedOrphansRefusalMessage as Qo, isSupersededResourceRecord as Qr, MULTI_REGION_RECREATE_BLOCKED_TYPES as Qs, dropFailedHint as Qt, getLegacyStateBucketName as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, isSettledInstanceState as Ra, noEchoOutputsComparison as Rc, injectedAwsRegionValue as Rd, extractDeploymentEventError as Ri, rebuildClientForBucketRegion as Rl, resolveReplacementOldType as Rn, hasReadableOrphans as Ro, awaitInFlightSibling as Rr, repairMalformedResourcesForReadOnly as Rs, displacedOpClause as Rt, isDockerClientEnvKey as Ru, indexDeclaresContributorInsights as S, disableInstanceApiTermination as Sa, dbInstanceEngineChangeIsInPlace as Sc, StageLoadError as Sd, ATOMIC_FINAL_SNAPSHOT_TYPES as Si, recordAttributeIdCopy as Sl, removeProtectionTypeList as Sn, isStalePlaceholderArnAttribute as So, DEFAULT_RESOURCE_TIMEOUT_MS as Sr, refuseMalformedResourceEntriesForImport as Ss, readRecordedConditionVerdicts as St, getBootstrapMarkerKey as Su, readContributorInsightsSpec as T, observeThenDisableInstanceApiTermination as Ta, canonicalLambdaFunctionName as Tc, parseFailureDebugDetail as Td, ccRoutedFinalSnapshotError as Ti, carriesSecretMask as Tl, withUnprovenUnsettled as Tn, parseWebACLArn as To, constructPathOf as Tr, refuseMalformedResourcePropertiesForDestroy as Ts, withResourceDeadline as Tt, readBootstrapMarkerBody as Tu, waitForIndexesSettled as U, s3BucketWebsiteUrl as Ua, valueAtCoordinate as Uc, planTagDiff as Ui, isAccessDenied$1 as Ul, inheritProducerRegions as Un, malformedDriftResourcePropertiesWarning as Uo, bold as Ur, findActionableSilentDrops as Us, recordDisplacedSkips as Ut, redactedDockerCause as Uu, maskedLogger as V, s3BucketDualStackDomainName as Va, readsNoEchoSource as Vc, DBPROXY_TAGS_WHAT as Vi, applyCrossPrefixScan as Vl, findNestedStackTypeChanges as Vn, isReadableOrphanRecord as Vo, withStackRecords as Vr, unreadableResourceEntries as Vs, getNestedRevertRun as Vt, redactDockerArgvValues as Vu, planVectorIndexUpdates as W, resolveDynamicReferences as Wa, liveMatchesUnresolvedTokenFrame as Wc, readTagList as Wi, isNotImplemented as Wl, REDACTED_DELETE_ADDRESS_SKIP_REASON as Wn, malformedExportNamesWarning as Wo, cyan as Wr, findHandledUnwrittenCreateOnly as Ws, revertNestedChildFromJournal as Wt, runDockerForeground as Wu, isTtlRateLimited as X, recordedReferenceRegions as Xa, createUnionSecretMasker as Xc, CC_BROKEN_REASON as Xi, exportNamesCarriedFrom as Xl, nameGenerationCarriedFrom as Xn, malformedOrphanRecordsWarning as Xo, deleteSupersededEntry as Xr, findReplacedReadersOfRecreateTargets as Xs, deleteJournaledOrphans as Xt, synthesisStatusMessage as Xu, isTtlAlreadyDisabled as Y, recordedOutputReferenceRegions as Ya, carryLogOnlyValues as Yc, stringifyIfAssigned as Yi, describeRegionValueKind as Yl, updatePartialReason as Yn, malformedOrphanRecordsRefusalMessage as Yo, addSuperseded as Yr, hasNoCloudControlHandlers as Ys, withNestedStackContext as Yt, Synthesizer as Yu, planTimeToLive as Z, applyRoleArnIfSet as Za, hasMaskableValues as Zc, ProviderRegistry as Zi, hasReadableExportSet as Zl, nameGenerationHighWaterOf as Zn, malformedOrphanRowsKeptWarning as Zo, holdsSupersededResources as Zr, shownType as Zs, dropFailedCommands as Zt, getDefaultStateBucketName as Zu, streamMemberRefusals as _, deleteLeftInPlace as _a, prefetchCreateOnlyPropertyPaths as _c, expectedOwnerParam as _d, secretNamePrintingBags as _i, identityKeyFor as _l, pendingMovesOutOf as _n, carriesFetchableDynamicReference as _o, noEchoParameterValueSeed as _r, refuseMalformedOutputsForDestroy as _s, renderNestedTemplateTreeDefect as _t, rewriteTemplateAssetReferences as _u, isProtectionValueActive as a, getCurrentResourceSecrets as aa, toCfnInteger as ac, resolveStateBucketWithDefaultAndSource as ad, noEchoAttributeNamesOf as ai, createSecretMasker as al, chunks as an, callerEnvCredentials as ao, reachableDivergentParameters as ar, malformedResourcesWarning as as, markRefusedBeforeApplying as at, shouldRetainResource as au, CONTRIBUTOR_INSIGHTS_KEY as b, isWaitAbandonedError as ba, withRetry as bc, derivePartitionAndUrlSuffix as bd, stateSecretNameNeedles as bi, recoverMaskedOutput as bl, replayFailedOperations as bn, AWS_NO_VALUE as bo, isExportAliasCollision as br, refuseMalformedResourceEntriesForDeploy as bs, conditionInputsFrom as bt, assertAssetBucketRegion as bu, DynamoDBGlobalTableProvider as c, applyCustomResourceResponseExpiration as ca, coerceCfnInteger as cc, warnDeprecatedNoPrefixCliFlag as cd, noEchoParameterNamesOf as ci, maskSecretsInText as cl, withApiLimit as cn, classifyReplaySecretRegion as co, displayTextOrWithheld as cr, previewableOrphanRecords as cs, crossStackOutputProvenanceSource as ct, renderPhaseTimings as cu, declaredStreamPolicyMember as d, slowCcOperationTimeoutMs as da, configStringRefusal as dc, CFN_TEMPLATE_URL_LIMIT as dd, completedReplayEntries as di, withoutPhysicalNameCopies as dl, refactorMarkerMovesOf as dn, coerceParameterTypedValue as do, secretBearingStateKeyWarning as dr, refuseMalformedOrphanRecords as ds, findServiceTokenRefusals as dt, isSensitiveAttributeName as du, wouldReturnToSdkProvider as ea, isStatefulRecreateTargetSync as ec, resolveApp as ed, supersededAfterRollback as ei, printingCorpusOf as el, journaledOrphanLines as en, explicitRoleArnOrThrow as eo, retiredNameGenerationsAfter as er, malformedOutputsRefusalMessage as es, ECR_AUTO_DELETE_IMAGES_TAG as et, importableOutputKeys as eu, declaredStreamTagsMember as f, onlySecretReferencesDiffer as fa, readConfigString as fc, MIGRATE_TMP_PREFIX as fd, journaledOrphanPrintingBag as fi, DYNAMIC_REFERENCE_TOKEN_SCAN as fl, refactorMarkerRefusalMessage as fn, isUnboundTemplateParameter as fo, secretSafeKeyDisplay as fr, refuseMalformedOrphanRecordsForDestroy as fs, serviceTokenBlockingReason as ft, stringifyValue as fu, streamDeclaresTags as g, deleteIndeterminateGuards as ga, requireConfigString as gc, decodeListingKey as gd, secretNamePrintingBag as gi, spelledKeysOf as gl, hasPendingMovesOut as gn, carriesDynamicReference as go, isWholeDynamicReferenceValue as gr, refuseMalformedOutputs as gs, listNestedTemplateRows as gt, loadPublishableAssetManifest as gu, streamDeclaresPolicy as h, UNSPECIFIED_SKIP_REASON as ha, requireConfigObject as hc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as hd, orphanRecordsPrintingBag as hi, pathCrossesDottedKey as hl, updateRefactorMarker as hn, isImpossibleEmptyStoredAttribute as ho, exportNameSecretExposure as hr, refuseMalformedOrphansForOrphan as hs, isAbsoluteAssetPath as ht, createAssetRedirectResolver as hu, PROTECTION_PROPERTY_BY_TYPE as i, isCustomResourceType as ia, isWarmThroughputDecrease as ic, resolveStateBucketWithDefault as id, withoutSuperseded as ii, unionOfSecretBags as il, formatResourceLine as in, applyCallerIdentityCredentials as io, namesAnyDeclaredParameter as ir, malformedResourcePropertiesWarning as is, getPriorAttempts as it, orphansCarriedFrom as iu, DYNAMODB_DELETE_POLL_COST_MS as j, unsettledItemsField as ja, isMarkedCoordinate as jc, ownValue as jd, earliestDefined as ji, recordProvenPublicExpression as jl, isJournaledOrphan as jn, STATE_REGION_DIVERGED as jo, rollbackOrphanIds as jr, refuseMalformedResourcesForExport as js, makeSiblingClaimReader as jt, describeDockerCapturedOutput as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, INTRINSIC_KEYS as ka, TemplateParser as kc, hasPlainPrototype$1 as kd, refusesFinalSnapshot as ki, recordNoEchoAttributeValues as kl, undeclaredEmptyObservedKeys as kn, declaresNoEcho as ko, hintSidesOf as kr, refuseMalformedResourcesForDeploy as ks, mergeNoChangeOutputs as kt, buildDockerImage as ku, STREAM_POLICY_KEY as l, customResourceResponseExpirationWarning as la, configBooleanRefusal as lc, ssmResolvedValueType as ld, withAttemptedItemsMasked as li, scrubResourceRecord as ll, readRefactorMarker as ln, producerRegionsFromState as lo, exportAliasCollisionScrubWarning as lr, refuseDivergentRecordRegionForDestroy as ls, inheritedProvenanceForChildDiff as lt, timePhase as lu, reverseMapStreamPolicy as m, RollbackInlinePolicyWriters as ma, requireConfigArray as mc, uploadCfnTemplate as md, namingSecretsWithRecordedNoEcho as mi, isUncertifiedBaselineMaskPosition as ml, sameMove as mn, getAccountInfo as mo, exportNameNoEchoParameters as mr, refuseMalformedOrphansForDestroy as ms, findNestedTemplateTreeDefect as mt, buildAssetRedirectMap as mu, recordedProtectionEvidence as n, TemplateNoEchoReresolver as na, WARM_THROUGHPUT_MEMBERS as nc, resolveCaptureObservedState as nd, supersededHolderOf as ni, recordLogOnlyValue as nl, makeForeignHolderScan as nn, sendableAssumeRoleCommand as no, withNameGenerationReached as nr, malformedRenderedContainersWarning as ns, hasCdkAutoDeleteTag as nt, isReadableBag as nu, perType as o, withPrintingSecrets as oa, toFiniteNumber as oc, resolveUseCdkBootstrapAssets as od, noEchoComparisonForTemplate as oi, errorCauseChain as ol, isAccessDeniedError as on, envCredentialsAreAssumedRole as oo, resourcesNamingDeclaredParameter as or, malformedScrubResourceEntriesRefusalMessage as os, IMPLICIT_DELETE_DEPENDENCIES as ot, stackInstanceIdCarriedFrom as ou, planStreamMemberOps as p, unchangedBehindSecretReference as pa, replayWarn as pc, findLargeInlineResources as pd, maskEventTextWithBoundBags as pi, dynamicReferenceTokens as pl, refuseRefactorMarker as pn, parameterTypeMayLoseSecretIdentity as po, carriedExportAliasExposure as pr, refuseMalformedOrphans as ps, childTemplateLoader as pt, WorkGraph as pu, vectorIndexesSettled as q, keepHeldTokenProvenance as qa, recordReferenceProvenanceEntry as qc, tagPlanWarning as qi, splitImportedOps as ql, redactedDeleteAddressSkip as qn, malformedLocalResourceEntriesWarning as qo, red as qr, withoutSilentDropProperties as qs, collectNestedChildUnaddressed as qt, AssetManifestLoader as qu, recordedProtectionNote as r, readsNoEchoDeleteValues as ra, coerceWarmThroughput as rc, resolveSkipPrefix as rd, supersededResourcesOf as ri, shareLogOnlyValues as rl, sameJournaledOrphans as rn, AWS_CREDENTIAL_ENV_KEYS as ro, computeParameterTaint as rr, malformedResourceEntriesWarning as rs, isTruthyCfnBoolean as rt, orphansAfterRollback as ru, readProtection as s, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as sa, coerceCfnBoolean as sc, stateBucketExistenceConfirmed as sd, noEchoExactEchoLeavesOf as si, maskSecretsInError as sl, lookupEachName as sn, classifyRecordedSecretRegion as so, WITHHELD_NAME_DISPLAY as sr, malformedStateRefusalMessage as ss, computeImplicitDeleteEdges as st, PhaseClock as su, DeployEngine as t, waitForLambdaFunctionActive as ta, renderStatefulReason as tc, resolveAutoAssetStorage as td, supersededHeldByOtherTypeWarning as ti, recordLogOnlyParameterValue as tl, loadJournaledOrphans as tn, isIamRoleArn as to, retiredNameGenerationsLeaving as tr, malformedOutputsWarning as ts, S3_AUTO_DELETE_OBJECTS_TAG as tt, importableOutputs as tu, STREAM_TAGS_KEY as u, CloudControlProvider as ua, configIntegerRefusal as uc, CFN_TEMPLATE_BODY_LIMIT as ud, createReadOnlyAttributeHealerFactory as ui, withPhysicalNameCopies as ul, readRefactorMarkerOnce as un, regionLessSecretName as uo, secretBearing as ur, refuseMalformedNestedChildOutputs as us, deferredServiceTokenWarning as ut, AssetPublisher as uu, streamPolicyMatchesDeclared as v, deleteSkipReason as va, templateResourceTypes as vc, PARTITION_TABLE as vd, secretNamedAttributeNamesOf as vi, inheritNestedStackParameterAssociations as vl, pendingMovesRefusalMessage as vn, isNamelessDynamicReferenceError as vo, collectDeclaredOutputNames as vr, refuseMalformedResourceAttributesForOrphan as vs, templateIdentity as vt, AssetModeResolver as vu, planIndexContributorInsightsOps as w, isTerminationProtectionPropagationError as wa, emrClusterInstancesReplaced as wc, describeJsonParseFailure as wd, buildFinalSnapshotIdentifier as wi, splitGetAttStringForm as wl, settleUnsettledPrevious as wn, refStateLookupFromResource as wo, maskingRetryLogger as wr, refuseMalformedResourceEntriesForOrphan as ws, enclosingDeadlineRemainingMs as wt, parseBootstrapMarker as wu, contributorInsightsRefusals as x, markWaitAbandoned as xa, blockDeviceMappingsDifferOnlyInDeleteOnTermination as xc, AssemblyReader as xd, storedSecretNameNeedles as xi, physicalNameCopiesOf as xl, replayRollback as xn, cfnRefValueFromPhysicalId as xo, bindingSkippedOutputs as xr, refuseMalformedResourceEntriesForDestroy as xs, parentSuppliedValues as xt, ensureAssetStorage as xu, streamTagsMatchDeclared as y, withIndeterminateGuard as ya, describeTypeWithThrottleRetry as yc, canonicalizeRegion as yd, secretNamedRecordNeedles as yi, recordNestedStackParameterExpressions as yl, refusePendingMovesOut as yn, keepsSecretReferenceToken as yo, collectPublishedOutputNames as yr, refuseMalformedResourceEntries as ys, conditionFingerprint as yt, BOOTSTRAP_MARKER_PREFIX as yu, TABLE_INDEX_NOUN as z, s3BucketArn as za, passedNoEchoParametersOf as zc, clearBucketRegionCache as zd, isRefusedByName as zi, CrossPrefixReadError as zl, seedsDeleteFirstGuard as zn, hasReadableOutputs as zo, destroyStackRecordsView as zr, unpreviewableOrphanRecords as zs, displacedPhysicalIdShown as zt, isMalformedEnvKey as zu };
55899
- //# sourceMappingURL=deploy-engine--bCIMkkk.js.map
55682
+ //# sourceMappingURL=deploy-engine-NYjdxQWe.js.map