@go-to-k/cdkd 0.312.0 → 0.314.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 (30) hide show
  1. package/dist/{asg-provider-CVLTQtQr.js → asg-provider-_nun2Jda.js} +43 -7
  2. package/dist/asg-provider-_nun2Jda.js.map +1 -0
  3. package/dist/{aws-failure-text-NSBdKPYK.js → aws-failure-text-agWtoyga.js} +5 -2
  4. package/dist/{aws-failure-text-NSBdKPYK.js.map → aws-failure-text-agWtoyga.js.map} +1 -1
  5. package/dist/cli.js +2 -2
  6. package/dist/{created-resource-sink-BT2Dfnpt.js → created-resource-sink-QECX8C-Z.js} +3 -3
  7. package/dist/{created-resource-sink-BT2Dfnpt.js.map → created-resource-sink-QECX8C-Z.js.map} +1 -1
  8. package/dist/{db-instance-modify-retry-D7wXWxVo.js → db-instance-modify-retry-By0_BFNO.js} +3 -3
  9. package/dist/{db-instance-modify-retry-D7wXWxVo.js.map → db-instance-modify-retry-By0_BFNO.js.map} +1 -1
  10. package/dist/{deploy-engine-CVNzK__j.js → deploy-engine-ClIUqDQL.js} +488 -80
  11. package/dist/deploy-engine-ClIUqDQL.js.map +1 -0
  12. package/dist/{iam-role-provider-DM7bN9m1.js → iam-role-provider-DJep3uns.js} +4 -4
  13. package/dist/{iam-role-provider-DM7bN9m1.js.map → iam-role-provider-DJep3uns.js.map} +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/{neptune-provider-qdoLunCh.js → neptune-provider-CGZ_G4Vz.js} +5 -5
  16. package/dist/{neptune-provider-qdoLunCh.js.map → neptune-provider-CGZ_G4Vz.js.map} +1 -1
  17. package/dist/{program-Nk_95KKk.js → program-Du6jOw1-.js} +38 -15
  18. package/dist/program-Du6jOw1-.js.map +1 -0
  19. package/dist/{provider-classes-Dz0pYmlJ.js → provider-classes-ZqxIefLl.js} +628 -245
  20. package/dist/provider-classes-ZqxIefLl.js.map +1 -0
  21. package/dist/{rds-provider-CXSZq1c8.js → rds-provider-C2fHUNSE.js} +140 -7
  22. package/dist/rds-provider-C2fHUNSE.js.map +1 -0
  23. package/dist/{version-BqCEt5Wu.js → version-B2PvJ12r.js} +2 -2
  24. package/dist/{version-BqCEt5Wu.js.map → version-B2PvJ12r.js.map} +1 -1
  25. package/package.json +2 -2
  26. package/dist/asg-provider-CVLTQtQr.js.map +0 -1
  27. package/dist/deploy-engine-CVNzK__j.js.map +0 -1
  28. package/dist/program-Nk_95KKk.js.map +0 -1
  29. package/dist/provider-classes-Dz0pYmlJ.js.map +0 -1
  30. package/dist/rds-provider-CXSZq1c8.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
2
- import { A as isNameGeneration, B as SECRET_REF_MAX_CODE_POINTS, D as getCurrentStackInstanceId, E as getCurrentSkipPrefix, F as withSkipPrefix, G as displayAwsMessage, H as UNRENDERABLE, I as withStackScope, J as displayStackName, K as displayIdent, L as withStackScopeBeforeStateRead, N as stackInstanceNameSuffix, O as getCurrentStackName, P as withNameGeneration, Q as safeMsg, R as withoutGeneratedFallbackName, S as fallbackNamePropertyFor, T as generatedNameFor, U as asIsMessage, V as STACK_REF_MAX_CODE_POINTS, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify$1, c as isStdoutReservedForPayload, et as terminalSafe, f as currentLogLineMasker, j as looksLikeCdkdGeneratedName, m as getLiveRenderer, n as describeAwsFailure, p as installLogLineMaskerSource, q as displaySafe, s as getLogger, t as VERBOSE_POINTER, tt as truncateCodePoints, v as applyDefaultNameForFallback, w as generateResourceNameWithFallback, x as explicitNamePropertyFor, y as currentNameGeneration, z as SAFE_MSG_ALTERED_CHAR } from "./aws-failure-text-NSBdKPYK.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, 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-BT2Dfnpt.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
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-BqCEt5Wu.js";
5
+ import { t as getCdkdVersion } from "./version-B2PvJ12r.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";
@@ -12780,8 +12780,14 @@ var ReplacementRulesRegistry = class {
12780
12780
  }
12781
12781
  initializeRules() {
12782
12782
  this.rules.set("AWS::S3::Bucket", {
12783
- replacementProperties: /* @__PURE__ */ new Set(["BucketName"]),
12783
+ replacementProperties: /* @__PURE__ */ new Set([
12784
+ "BucketName",
12785
+ "BucketNamePrefix",
12786
+ "BucketNamespace"
12787
+ ]),
12784
12788
  updateableProperties: /* @__PURE__ */ new Set([
12789
+ "AbacStatus",
12790
+ "MetadataConfiguration",
12785
12791
  "Tags",
12786
12792
  "VersioningConfiguration",
12787
12793
  "LifecycleConfiguration",
@@ -14669,6 +14675,7 @@ function generatedReplacementName(resourceType, createdVia, desired, logicalId)
14669
14675
  const value = desired?.[property];
14670
14676
  return value !== void 0 && value !== null && value !== "";
14671
14677
  };
14678
+ if (alternateNamePropertiesFor(resourceType).some(declared)) return void 0;
14672
14679
  const fallbackProperty = fallbackNamePropertyFor(resourceType);
14673
14680
  if (createdVia === "cc-api" || GENERATED_NAME_VERBATIM.has(resourceType)) {
14674
14681
  if (fallbackProperty === void 0 || declared(fallbackProperty)) return void 0;
@@ -14809,7 +14816,7 @@ function holderVerdict(input, v) {
14809
14816
  generatedName = wantName !== void 0;
14810
14817
  }
14811
14818
  const derived = ownEntry$1(DERIVED_GENERATED_NAMES, oldResourceType);
14812
- const derivedName = namePath === void 0 && v.derivedNames && derived !== void 0 && input.createdVia !== "cc-api" && typeof input.logicalId === "string" && input.logicalId !== "" ? derived.derive(input.logicalId) : "";
14819
+ const derivedName = namePath === void 0 && v.derivedNames && derived !== void 0 && !alternateNamePropertiesFor(oldResourceType).some((p) => input.requested[p] !== void 0) && input.createdVia !== "cc-api" && typeof input.logicalId === "string" && input.logicalId !== "" ? derived.derive(input.logicalId) : "";
14813
14820
  if (derivedName !== "") {
14814
14821
  namePath = oldKey.name[0];
14815
14822
  wantName = derivedName;
@@ -16221,6 +16228,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16221
16228
  handled: /* @__PURE__ */ new Set([
16222
16229
  "AutoScalingGroupName",
16223
16230
  "AvailabilityZoneDistribution",
16231
+ "AvailabilityZoneIds",
16224
16232
  "AvailabilityZoneImpairmentPolicy",
16225
16233
  "AvailabilityZones",
16226
16234
  "CapacityRebalance",
@@ -16234,6 +16242,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16234
16242
  "DesiredCapacityType",
16235
16243
  "HealthCheckGracePeriod",
16236
16244
  "HealthCheckType",
16245
+ "InstanceLifecyclePolicy",
16237
16246
  "InstanceMaintenancePolicy",
16238
16247
  "LaunchTemplate",
16239
16248
  "LifecycleHookSpecificationList",
@@ -16245,6 +16254,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16245
16254
  "MixedInstancesPolicy",
16246
16255
  "NewInstancesProtectedFromScaleIn",
16247
16256
  "NotificationConfigurations",
16257
+ "PlacementGroup",
16248
16258
  "ServiceLinkedRoleARN",
16249
16259
  "SkipZonalShiftValidation",
16250
16260
  "Tags",
@@ -16254,12 +16264,9 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16254
16264
  "VPCZoneIdentifier"
16255
16265
  ]),
16256
16266
  silentDrop: /* @__PURE__ */ new Map([
16257
- ["AvailabilityZoneIds", "not yet implemented by cdkd"],
16258
- ["InstanceId", "not yet implemented by cdkd"],
16259
- ["InstanceLifecyclePolicy", "not yet implemented by cdkd"],
16267
+ ["InstanceId", "CreateAutoScalingGroup derives a new launch configuration from the instance, and AWS Launch Configurations are end-of-life 2024-10 like LaunchConfigurationName; use LaunchTemplate instead"],
16260
16268
  ["LaunchConfigurationName", "AWS Launch Configurations end-of-life 2024-10; use LaunchTemplate instead"],
16261
- ["NotificationConfiguration", "Legacy singular form; use NotificationConfigurations (plural) which cdkd already wires"],
16262
- ["PlacementGroup", "not yet implemented by cdkd"]
16269
+ ["NotificationConfiguration", "Legacy singular form; use NotificationConfigurations (plural) which cdkd already wires"]
16263
16270
  ]),
16264
16271
  createOnlyDrops: /* @__PURE__ */ new Set(["InstanceId"]),
16265
16272
  readOnly: /* @__PURE__ */ new Set(["AutoScalingGroupARN"]),
@@ -16570,6 +16577,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16570
16577
  "EmailVerificationMessage",
16571
16578
  "EmailVerificationSubject",
16572
16579
  "EnabledMfas",
16580
+ "IssuerConfiguration",
16581
+ "KeyConfiguration",
16573
16582
  "LambdaConfig",
16574
16583
  "MfaConfiguration",
16575
16584
  "Policies",
@@ -16589,7 +16598,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16589
16598
  "WebAuthnRelyingPartyID",
16590
16599
  "WebAuthnUserVerification"
16591
16600
  ]),
16592
- silentDrop: /* @__PURE__ */ new Map([["IssuerConfiguration", "not yet implemented by cdkd"], ["KeyConfiguration", "not yet implemented by cdkd"]]),
16601
+ silentDrop: /* @__PURE__ */ new Map(),
16593
16602
  createOnlyDrops: /* @__PURE__ */ new Set(),
16594
16603
  readOnly: /* @__PURE__ */ new Set([
16595
16604
  "Arn",
@@ -16663,7 +16672,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16663
16672
  "ClusterResourceId",
16664
16673
  "Endpoint",
16665
16674
  "Id",
16666
- "ReadEndpoint"
16675
+ "ReadEndpoint",
16676
+ "ServerlessV2PlatformVersion"
16667
16677
  ]),
16668
16678
  ccRouteUnavailable: true
16669
16679
  }],
@@ -16710,24 +16720,24 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16710
16720
  "GlobalSecondaryIndexes",
16711
16721
  "KeySchema",
16712
16722
  "LocalSecondaryIndexes",
16723
+ "ReadOnDemandThroughputSettings",
16724
+ "ReadProvisionedThroughputSettings",
16713
16725
  "Replicas",
16714
16726
  "SSESpecification",
16715
16727
  "StreamSpecification",
16716
16728
  "TableClass",
16717
16729
  "TableName",
16730
+ "TableType",
16718
16731
  "TimeToLiveSpecification",
16732
+ "VectorIndexes",
16733
+ "WarmThroughput",
16719
16734
  "WriteOnDemandThroughputSettings",
16720
16735
  "WriteProvisionedThroughputSettings"
16721
16736
  ]),
16722
16737
  silentDrop: /* @__PURE__ */ new Map([
16723
16738
  ["GlobalTableSourceArn", "not yet implemented by cdkd"],
16724
16739
  ["GlobalTableWitnesses", "not yet implemented by cdkd"],
16725
- ["MultiRegionConsistency", "not yet implemented by cdkd"],
16726
- ["ReadOnDemandThroughputSettings", "not yet implemented by cdkd"],
16727
- ["ReadProvisionedThroughputSettings", "not yet implemented by cdkd"],
16728
- ["TableType", "not yet implemented by cdkd"],
16729
- ["VectorIndexes", "not yet implemented by cdkd"],
16730
- ["WarmThroughput", "not yet implemented by cdkd"]
16740
+ ["MultiRegionConsistency", "not yet implemented by cdkd"]
16731
16741
  ]),
16732
16742
  createOnlyDrops: /* @__PURE__ */ new Set(),
16733
16743
  readOnly: /* @__PURE__ */ new Set([
@@ -18236,24 +18246,39 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18236
18246
  ["AWS::RDS::DBInstance", {
18237
18247
  handled: /* @__PURE__ */ new Set([
18238
18248
  "AllocatedStorage",
18249
+ "AutoMinorVersionUpgrade",
18250
+ "BackupRetentionPeriod",
18251
+ "CACertificateIdentifier",
18252
+ "CopyTagsToSnapshot",
18239
18253
  "DBClusterIdentifier",
18240
18254
  "DBInstanceClass",
18241
18255
  "DBInstanceIdentifier",
18242
18256
  "DBSubnetGroupName",
18243
18257
  "DeletionProtection",
18244
18258
  "EnableIAMDatabaseAuthentication",
18259
+ "EnablePerformanceInsights",
18245
18260
  "Engine",
18246
18261
  "EngineVersion",
18262
+ "Iops",
18247
18263
  "KmsKeyId",
18248
18264
  "ManageMasterUserPassword",
18249
18265
  "MasterUsername",
18250
18266
  "MasterUserPassword",
18251
18267
  "MasterUserSecret",
18268
+ "MaxAllocatedStorage",
18252
18269
  "MonitoringInterval",
18253
18270
  "MonitoringRoleArn",
18271
+ "MultiAZ",
18272
+ "OptionGroupName",
18273
+ "PerformanceInsightsKMSKeyId",
18274
+ "PerformanceInsightsRetentionPeriod",
18254
18275
  "Port",
18276
+ "PreferredBackupWindow",
18277
+ "PreferredMaintenanceWindow",
18255
18278
  "PubliclyAccessible",
18256
18279
  "StorageEncrypted",
18280
+ "StorageThroughput",
18281
+ "StorageType",
18257
18282
  "Tags",
18258
18283
  "VPCSecurityGroups"
18259
18284
  ]),
@@ -18265,14 +18290,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18265
18290
  ["AutomaticBackupReplicationKmsKeyId", "not yet implemented by cdkd"],
18266
18291
  ["AutomaticBackupReplicationRegion", "not yet implemented by cdkd"],
18267
18292
  ["AutomaticBackupReplicationRetentionPeriod", "not yet implemented by cdkd"],
18268
- ["AutoMinorVersionUpgrade", "not yet implemented by cdkd"],
18269
18293
  ["AvailabilityZone", "not yet implemented by cdkd"],
18270
- ["BackupRetentionPeriod", "not yet implemented by cdkd"],
18271
18294
  ["BackupTarget", "not yet implemented by cdkd"],
18272
- ["CACertificateIdentifier", "not yet implemented by cdkd"],
18273
18295
  ["CertificateRotationRestart", "not yet implemented by cdkd"],
18274
18296
  ["CharacterSetName", "not yet implemented by cdkd"],
18275
- ["CopyTagsToSnapshot", "not yet implemented by cdkd"],
18276
18297
  ["CustomIAMInstanceProfile", "not yet implemented by cdkd"],
18277
18298
  ["DatabaseInsightsMode", "not yet implemented by cdkd"],
18278
18299
  ["DBClusterSnapshotIdentifier", "not yet implemented by cdkd"],
@@ -18290,20 +18311,11 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18290
18311
  ["DomainIAMRoleName", "not yet implemented by cdkd"],
18291
18312
  ["DomainOu", "not yet implemented by cdkd"],
18292
18313
  ["EnableCloudwatchLogsExports", "not yet implemented by cdkd"],
18293
- ["EnablePerformanceInsights", "not yet implemented by cdkd"],
18294
18314
  ["EngineLifecycleSupport", "not yet implemented by cdkd"],
18295
- ["Iops", "not yet implemented by cdkd"],
18296
18315
  ["LicenseModel", "not yet implemented by cdkd"],
18297
18316
  ["MasterUserAuthenticationType", "not yet implemented by cdkd"],
18298
- ["MaxAllocatedStorage", "not yet implemented by cdkd"],
18299
- ["MultiAZ", "not yet implemented by cdkd"],
18300
18317
  ["NcharCharacterSetName", "not yet implemented by cdkd"],
18301
18318
  ["NetworkType", "not yet implemented by cdkd"],
18302
- ["OptionGroupName", "not yet implemented by cdkd"],
18303
- ["PerformanceInsightsKMSKeyId", "not yet implemented by cdkd"],
18304
- ["PerformanceInsightsRetentionPeriod", "not yet implemented by cdkd"],
18305
- ["PreferredBackupWindow", "not yet implemented by cdkd"],
18306
- ["PreferredMaintenanceWindow", "not yet implemented by cdkd"],
18307
18319
  ["ProcessorFeatures", "not yet implemented by cdkd"],
18308
18320
  ["PromotionTier", "not yet implemented by cdkd"],
18309
18321
  ["ReplicaMode", "not yet implemented by cdkd"],
@@ -18313,8 +18325,6 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18313
18325
  ["SourceDBInstanceIdentifier", "not yet implemented by cdkd"],
18314
18326
  ["SourceDbiResourceId", "not yet implemented by cdkd"],
18315
18327
  ["SourceRegion", "not yet implemented by cdkd"],
18316
- ["StorageThroughput", "not yet implemented by cdkd"],
18317
- ["StorageType", "not yet implemented by cdkd"],
18318
18328
  ["TdeCredentialArn", "not yet implemented by cdkd"],
18319
18329
  ["TdeCredentialPassword", "not yet implemented by cdkd"],
18320
18330
  ["Timezone", "not yet implemented by cdkd"],
@@ -18466,15 +18476,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18466
18476
  }],
18467
18477
  ["AWS::S3::Bucket", {
18468
18478
  handled: /* @__PURE__ */ new Set([
18479
+ "AbacStatus",
18469
18480
  "AccelerateConfiguration",
18470
18481
  "AnalyticsConfigurations",
18471
18482
  "BucketEncryption",
18472
18483
  "BucketName",
18484
+ "BucketNamePrefix",
18485
+ "BucketNamespace",
18473
18486
  "CorsConfiguration",
18474
18487
  "IntelligentTieringConfigurations",
18475
18488
  "InventoryConfigurations",
18476
18489
  "LifecycleConfiguration",
18477
18490
  "LoggingConfiguration",
18491
+ "MetadataConfiguration",
18478
18492
  "MetricsConfigurations",
18479
18493
  "NotificationConfiguration",
18480
18494
  "ObjectLockConfiguration",
@@ -18486,15 +18500,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18486
18500
  "VersioningConfiguration",
18487
18501
  "WebsiteConfiguration"
18488
18502
  ]),
18489
- silentDrop: /* @__PURE__ */ new Map([
18490
- ["AbacStatus", "not yet implemented by cdkd"],
18491
- ["AccessControl", "Legacy canned ACL; AWS disables ACLs by default since 2023-04 — use BucketOwnershipControls + BucketPolicy / PublicAccessBlockConfiguration instead"],
18492
- ["BucketNamePrefix", "not yet implemented by cdkd"],
18493
- ["BucketNamespace", "not yet implemented by cdkd"],
18494
- ["MetadataConfiguration", "not yet implemented by cdkd"],
18495
- ["MetadataTableConfiguration", "not yet implemented by cdkd"]
18496
- ]),
18497
- createOnlyDrops: /* @__PURE__ */ new Set(["BucketNamePrefix", "BucketNamespace"]),
18503
+ silentDrop: /* @__PURE__ */ new Map([["AccessControl", "Legacy canned ACL; AWS disables ACLs by default since 2023-04 — use BucketOwnershipControls + BucketPolicy / PublicAccessBlockConfiguration instead"], ["MetadataTableConfiguration", "V1 S3 Metadata, which the schema says to replace with MetadataConfiguration; S3 answered V1APIsNotAllowed where it was probed, so an SDK path could not be verified. Stays on Cloud Control"]]),
18504
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18498
18505
  readOnly: /* @__PURE__ */ new Set([
18499
18506
  "Arn",
18500
18507
  "DomainName",
@@ -28790,7 +28797,7 @@ var CloudControlProvider = class {
28790
28797
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
28791
28798
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
28792
28799
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
28793
- const { ASGProvider } = await import("./asg-provider-CVLTQtQr.js");
28800
+ const { ASGProvider } = await import("./asg-provider-_nun2Jda.js");
28794
28801
  const delegateRegion = ambientRegion();
28795
28802
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
28796
28803
  if (asgProvider === void 0) {
@@ -28899,7 +28906,7 @@ var CloudControlProvider = class {
28899
28906
  const family = SDK_DELETE_FAMILIES.get(resourceType);
28900
28907
  const cached = this.sdkDeleteDelegates.get(family);
28901
28908
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
28902
- const provider = family === "rds" ? new (await (import("./rds-provider-CXSZq1c8.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-qdoLunCh.js"))).NeptuneProvider({ region: ccRegion });
28909
+ const provider = family === "rds" ? new (await (import("./rds-provider-C2fHUNSE.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CGZ_G4Vz.js"))).NeptuneProvider({ region: ccRegion });
28903
28910
  this.sdkDeleteDelegates.set(family, {
28904
28911
  region: ccRegion,
28905
28912
  provider
@@ -35258,6 +35265,7 @@ function createOpMasker(logger, secrets, deployBag) {
35258
35265
  };
35259
35266
  }
35260
35267
  const OTHER_SPELLED_NAME_KEYS = {
35268
+ "AWS::S3::Bucket": ["BucketNamePrefix"],
35261
35269
  "AWS::Cognito::UserPoolDomain": ["Domain"],
35262
35270
  "AWS::Cognito::UserPoolUser": ["Username"],
35263
35271
  "AWS::ECS::TaskDefinition": ["Family"],
@@ -43263,6 +43271,7 @@ function keptUnderGeneratedName(resource) {
43263
43271
  if (typeof resource.physicalId !== "string" || resource.physicalId === "") return false;
43264
43272
  const property = explicitNamePropertyFor(resource.resourceType);
43265
43273
  const properties = resource.properties;
43274
+ if (alternateNamePropertiesFor(resource.resourceType).some((p) => properties?.[p])) return false;
43266
43275
  return property === void 0 || !properties?.[property];
43267
43276
  }
43268
43277
  function keptForRetainedRecord(resource) {
@@ -43665,7 +43674,7 @@ function templateStillDeclares(template, record, nameProperties) {
43665
43674
  if (!declared) return false;
43666
43675
  if (declared.Type !== record.state.resourceType) return false;
43667
43676
  const properties = declared.Properties ?? {};
43668
- return !nameProperties.some((p) => properties[p] !== void 0 && properties[p] !== null);
43677
+ return ![...nameProperties, ...alternateNamePropertiesFor(declared.Type)].some((p) => properties[p] !== void 0 && properties[p] !== null);
43669
43678
  }
43670
43679
  const ADOPTION_REFUSED_TYPES = /* @__PURE__ */ new Set(["AWS::Lambda::LayerVersion", "AWS::ECS::TaskDefinition"]);
43671
43680
  async function planOrphanAdoption(params) {
@@ -47278,6 +47287,125 @@ async function sendTtlWaitingOutRateLimit(send, options) {
47278
47287
  }
47279
47288
  }
47280
47289
 
47290
+ //#endregion
47291
+ //#region src/provisioning/dynamodb-vector-indexes.ts
47292
+ function vectorIndexesByName(value) {
47293
+ const out = /* @__PURE__ */ new Map();
47294
+ if (!Array.isArray(value)) return out;
47295
+ for (const entry of value) {
47296
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) continue;
47297
+ const name = entry["IndexName"];
47298
+ if (typeof name === "string") out.set(name, entry);
47299
+ }
47300
+ return out;
47301
+ }
47302
+ function vectorIndexesShapeDetail(value) {
47303
+ if (value === void 0) return void 0;
47304
+ if (!Array.isArray(value)) return `VectorIndexes must be a list, got ${typeof value}`;
47305
+ return value.every((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry) && typeof entry["IndexName"] === "string") ? void 0 : `every VectorIndexes entry must carry a string IndexName`;
47306
+ }
47307
+ function vectorIndexForSend(entry) {
47308
+ const out = {};
47309
+ for (const key of [
47310
+ "IndexName",
47311
+ "VectorAttribute",
47312
+ "Projection",
47313
+ "DistanceFunction"
47314
+ ]) if (entry[key] !== void 0) out[key] = entry[key];
47315
+ if (entry["Dimensions"] !== void 0) out["Dimensions"] = coerceCfnInteger(entry["Dimensions"]) ?? entry["Dimensions"];
47316
+ if (entry["SearchSchema"] !== void 0) out["SearchSchema"] = entry["SearchSchema"];
47317
+ return out;
47318
+ }
47319
+ function vectorIndexesForCreate(value) {
47320
+ if (value === void 0 || value === null) return void 0;
47321
+ if (!Array.isArray(value)) return value;
47322
+ return value.map((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry) ? vectorIndexForSend(entry) : entry);
47323
+ }
47324
+ function sortedByJson(list) {
47325
+ if (!Array.isArray(list)) return list;
47326
+ return [...list].sort((a, b) => {
47327
+ const x = JSON.stringify(a) ?? "";
47328
+ const y = JSON.stringify(b) ?? "";
47329
+ return x < y ? -1 : x > y ? 1 : 0;
47330
+ });
47331
+ }
47332
+ function vectorIndexKey(entry) {
47333
+ const e = entry;
47334
+ const projection = e["Projection"];
47335
+ const normalizedProjection = typeof projection === "object" && projection !== null && !Array.isArray(projection) ? {
47336
+ ProjectionType: projection["ProjectionType"],
47337
+ NonKeyAttributes: sortedByJson(nonEmpty(projection["NonKeyAttributes"]))
47338
+ } : projection;
47339
+ const attribute = e["VectorAttribute"];
47340
+ return JSON.stringify([
47341
+ e["IndexName"],
47342
+ typeof attribute === "object" && attribute !== null ? attribute["AttributeName"] : attribute,
47343
+ coerceCfnInteger(e["Dimensions"]) ?? e["Dimensions"],
47344
+ e["DistanceFunction"],
47345
+ normalizedProjection,
47346
+ sortedByJson(Array.isArray(e["SearchSchema"]) && e["SearchSchema"].length > 0 ? e["SearchSchema"].map((s) => typeof s === "object" && s !== null ? {
47347
+ AttributeName: s["AttributeName"],
47348
+ SearchSchemaElementType: s["SearchSchemaElementType"]
47349
+ } : s) : nonEmpty(e["SearchSchema"]))
47350
+ ]);
47351
+ }
47352
+ function nonEmpty(value) {
47353
+ return Array.isArray(value) && value.length === 0 ? void 0 : value;
47354
+ }
47355
+ function planVectorIndexUpdates(previous, desired, live) {
47356
+ const prevByName = vectorIndexesByName(previous);
47357
+ const desiredByName = vectorIndexesByName(desired);
47358
+ const liveByName = live === void 0 ? void 0 : new Map(live.filter((d) => typeof d.IndexName === "string").map((d) => [d.IndexName, d]));
47359
+ const plan = {
47360
+ ops: [],
47361
+ changed: [],
47362
+ adopted: [],
47363
+ alreadyGone: []
47364
+ };
47365
+ const liveHolds = (name, entry) => {
47366
+ const l = liveByName?.get(name);
47367
+ return l !== void 0 && l.IndexStatus !== "DELETING" && vectorIndexKey(l) === vectorIndexKey(entry);
47368
+ };
47369
+ for (const name of prevByName.keys()) {
47370
+ if (desiredByName.has(name)) continue;
47371
+ const l = liveByName?.get(name);
47372
+ if (liveByName !== void 0 && (l === void 0 || l.IndexStatus === "DELETING")) {
47373
+ plan.alreadyGone.push(name);
47374
+ continue;
47375
+ }
47376
+ plan.ops.push({ Delete: { IndexName: name } });
47377
+ }
47378
+ for (const [name, entry] of desiredByName) {
47379
+ const before = prevByName.get(name);
47380
+ if (before === void 0) {
47381
+ const l = liveByName?.get(name);
47382
+ if (l === void 0 || l.IndexStatus === "DELETING") plan.ops.push({ Create: vectorIndexForSend(entry) });
47383
+ else if (liveHolds(name, entry)) plan.adopted.push(name);
47384
+ else plan.changed.push(name);
47385
+ continue;
47386
+ }
47387
+ if (vectorIndexKey(before) === vectorIndexKey(entry)) continue;
47388
+ if (!liveHolds(name, entry)) plan.changed.push(name);
47389
+ }
47390
+ return plan;
47391
+ }
47392
+ function readbackVectorIndexes(live) {
47393
+ if (live === void 0 || live.length === 0) return void 0;
47394
+ return live.map((d) => {
47395
+ const out = {};
47396
+ if (d.IndexName !== void 0) out["IndexName"] = d.IndexName;
47397
+ if (d.VectorAttribute !== void 0) out["VectorAttribute"] = d.VectorAttribute;
47398
+ if (d.Dimensions !== void 0) out["Dimensions"] = d.Dimensions;
47399
+ if (d.DistanceFunction !== void 0) out["DistanceFunction"] = d.DistanceFunction;
47400
+ if (d.Projection !== void 0) out["Projection"] = d.Projection;
47401
+ if (d.SearchSchema !== void 0 && d.SearchSchema.length > 0) out["SearchSchema"] = d.SearchSchema;
47402
+ return out;
47403
+ });
47404
+ }
47405
+ function vectorIndexesSettled(live) {
47406
+ return (live ?? []).every((d) => d.IndexStatus === void 0 || d.IndexStatus === "ACTIVE");
47407
+ }
47408
+
47281
47409
  //#endregion
47282
47410
  //#region src/provisioning/dynamodb-index-busy-delete.ts
47283
47411
  function maskedLogger(logger, maskSecrets, name) {
@@ -48518,7 +48646,12 @@ var DynamoDBGlobalTableProvider = class {
48518
48646
  "TimeToLiveSpecification",
48519
48647
  "WriteProvisionedThroughputSettings",
48520
48648
  "WriteOnDemandThroughputSettings",
48521
- "DeletionProtectionEnabled"
48649
+ "DeletionProtectionEnabled",
48650
+ "ReadOnDemandThroughputSettings",
48651
+ "ReadProvisionedThroughputSettings",
48652
+ "TableType",
48653
+ "VectorIndexes",
48654
+ "WarmThroughput"
48522
48655
  ])]]);
48523
48656
  constructor() {
48524
48657
  const awsClients = getAwsClients();
@@ -48577,12 +48710,12 @@ var DynamoDBGlobalTableProvider = class {
48577
48710
  operationSinks(context, pairs) {
48578
48711
  return withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), pairs);
48579
48712
  }
48580
- wrapMaskedError(log, error, build) {
48713
+ wrapMaskedError(log, error, build, indexNoun) {
48581
48714
  const failure = describeAwsFailure(error);
48582
48715
  if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
48583
48716
  log.debug(build(log.mask(failure.detail)).message);
48584
48717
  const relay = isAuxiliaryFailure(error) ? "" : relayedNameCollision(failure.detail);
48585
- const wrapped = build(`${log.mask(failure.summary)}${relay}${relayedIndexBusyDelete(failure.detail)}` + relayedEncryptionChangeLimit(failure.detail));
48718
+ const wrapped = build(`${log.mask(failure.summary)}${relay}${relayedIndexBusyDelete(failure.detail, indexNoun)}` + relayedEncryptionChangeLimit(failure.detail));
48586
48719
  return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
48587
48720
  }
48588
48721
  cleanupFailureText(log, head, error) {
@@ -48591,8 +48724,8 @@ var DynamoDBGlobalTableProvider = class {
48591
48724
  log.debug(`${head}${log.mask(failure.detail)}`);
48592
48725
  return log.mask(failure.summary);
48593
48726
  }
48594
- wrapDeleteError(log, error, build) {
48595
- const thrown = this.wrapMaskedError(log, error, build);
48727
+ wrapDeleteError(log, error, build, indexNoun) {
48728
+ const thrown = this.wrapMaskedError(log, error, build, indexNoun);
48596
48729
  return error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
48597
48730
  }
48598
48731
  async create(logicalId, resourceType, properties, context) {
@@ -48718,6 +48851,12 @@ var DynamoDBGlobalTableProvider = class {
48718
48851
  }
48719
48852
  if (sdkIndexes.length > 0) createParams.GlobalSecondaryIndexes = sdkIndexes;
48720
48853
  if (properties["LocalSecondaryIndexes"]) createParams.LocalSecondaryIndexes = properties["LocalSecondaryIndexes"];
48854
+ const createVectorIndexes = vectorIndexesForCreate(properties["VectorIndexes"]);
48855
+ if (createVectorIndexes !== void 0) createParams.VectorIndexes = createVectorIndexes;
48856
+ const warmCoercion = coerceWarmThroughput(properties["WarmThroughput"]);
48857
+ if (warmCoercion.spec) createParams.WarmThroughput = warmCoercion.spec;
48858
+ const warmDiagnostic = warmThroughputDiagnostic(properties["WarmThroughput"], warmCoercion, void 0);
48859
+ if (warmDiagnostic) diagnostics.push(warmDiagnostic);
48721
48860
  const createMode = readReplicationMode(properties);
48722
48861
  if (createMode.kind === "usable") createParams.GlobalTableSettingsReplicationMode = createMode.mode;
48723
48862
  const sseEnabledRefusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
@@ -48764,6 +48903,7 @@ var DynamoDBGlobalTableProvider = class {
48764
48903
  }
48765
48904
  try {
48766
48905
  const tableInfo = await this.waitForTableActive(tableName, logicalId, void 0, maskSecrets);
48906
+ if (createVectorIndexes !== void 0) await this.waitForVectorIndexesSettled(tableName, logicalId, maskSecrets);
48767
48907
  for (const replica of wiringReplicas) {
48768
48908
  const region = replica["Region"];
48769
48909
  if (!region || region === currentRegion) continue;
@@ -48823,12 +48963,14 @@ var DynamoDBGlobalTableProvider = class {
48823
48963
  ReplicaUpdates: [{ Delete: { RegionName: region } }]
48824
48964
  }));
48825
48965
  await this.waitForReplicaGone(tableName, region, logicalId, void 0, void 0, maskSecrets);
48966
+ await this.deregisterRemovedReplicaScalableTargets(tableName, region, { maskSecrets });
48826
48967
  } catch (replicaCleanupErr) {
48827
48968
  if (isInterruptedWaitError(replicaCleanupErr)) throw replicaCleanupErr;
48828
48969
  warn(`Partial-create cleanup: failed to drop replica ${region} on ${tableName}: ${this.cleanupFailureText(log, `Partial-create cleanup: failed to drop replica ${region} on ${tableName}: `, replicaCleanupErr)} Run: ${pasteableAwsCommand(maskSecrets)`aws dynamodb update-table --table-name ${tableName} --replica-updates 'Delete={RegionName='${region}'}' --region ${currentRegion}`.render()}`);
48829
48970
  }
48830
48971
  }
48831
- await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
48972
+ if (createVectorIndexes !== void 0) await this.rollBackCreatedVectorTable(logicalId, tableName, maskSecrets);
48973
+ else await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
48832
48974
  retractCreatedResource(logicalId, resourceType, tableName);
48833
48975
  } catch (cleanupErr) {
48834
48976
  tableLeftBehind = true;
@@ -48841,6 +48983,32 @@ var DynamoDBGlobalTableProvider = class {
48841
48983
  throw thrown;
48842
48984
  }
48843
48985
  }
48986
+ async rollBackCreatedVectorTable(logicalId, tableName, maskSecrets) {
48987
+ const logger = maskedLogger(this.logger, maskSecrets, tableName);
48988
+ const allowanceMs = Math.min(resolveDynamoDbDeleteBudgetMs(), enclosingDeadlineRemainingMs() - DYNAMODB_DELETE_DEADLINE_MARGIN_MS);
48989
+ const budget = allowanceMs > 0 ? new ElapsedBudget(allowanceMs, resolveDynamoDbDeleteBudgetClock()) : void 0;
48990
+ await deleteTableWithIndexBusyRetry({
48991
+ logicalId,
48992
+ physicalId: tableName,
48993
+ typeLabel: "GlobalTable",
48994
+ indexNoun: TABLE_INDEX_NOUN,
48995
+ maxRetries: 8,
48996
+ logger,
48997
+ deleteTable: async () => {
48998
+ await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
48999
+ },
49000
+ reArm: () => this.waitForIndexesActive(tableName, logicalId, {
49001
+ maxAttempts: 900,
49002
+ shortCapUnlessVectorBusy: 60,
49003
+ proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
49004
+ ...budget !== void 0 && { budget },
49005
+ maskSecrets
49006
+ }),
49007
+ shouldKeepRetrying: () => budget !== void 0 && !budget.isExhausted(),
49008
+ retryWarning: () => `DynamoDB GlobalTable ${logicalId}: AWS refused the DeleteTable rolling back the partially-created table ${tableName} because ${TABLE_INDEX_NOUN} is still being created, updated or deleted. Waiting for the indexes to settle and retrying (up to ${8} retries in all, within ~${Math.max(1, Math.round((budget?.totalMs ?? 0) / 6e4))} minutes).`,
49009
+ sleepSeam: deleteTableRetryDelays
49010
+ });
49011
+ }
48844
49012
  reportThroughputDiagnostics(diagnostics, logicalId, physicalId, maskSecrets = (text) => text) {
48845
49013
  const warn = (message) => this.logger.warn(maskSecrets(message));
48846
49014
  const seen = /* @__PURE__ */ new Set();
@@ -48859,6 +49027,47 @@ var DynamoDBGlobalTableProvider = class {
48859
49027
  const format = (spec) => WARM_THROUGHPUT_MEMBERS.filter((m) => spec?.[m] !== void 0).map((m) => `${m}=${spec?.[m]}`).join(", ");
48860
49028
  warn(`DynamoDB GlobalTable ${logicalId}: GSI '${maskSecrets(indexName)}' on ${physicalId}: WarmThroughput was NOT sent — the template asks for ${format(desired)} while AWS reports ${format(live)}, and DynamoDB rejects a decrease ("decreasing WarmThroughput is not supported"). Warm throughput only rises with a table's traffic, so a template below the live value can never be applied; raise it to at least the live value, or remove it. Every other change to this index is applied normally.`);
48861
49029
  }
49030
+ tableWarmThroughputForSend(desired, live, logicalId, physicalId, maskSecrets) {
49031
+ if (!desired) return void 0;
49032
+ const declared = WARM_THROUGHPUT_MEMBERS.filter((m) => desired[m] !== void 0);
49033
+ if (declared.every((m) => desired[m] === live?.[m])) return void 0;
49034
+ if (!isWarmThroughputDecrease(desired, live)) return desired;
49035
+ const format = (spec) => declared.map((m) => `${m}=${spec?.[m]}`).join(", ");
49036
+ this.logger.warn(maskSecrets(`DynamoDB GlobalTable ${logicalId}: table ${maskSecrets(physicalId)}: WarmThroughput was NOT sent — the template asks for ${format(desired)} while AWS reports ${format(live)}, and DynamoDB rejects a decrease. Raise it to at least the live value, or remove it. Every other change to this table is applied normally.`));
49037
+ }
49038
+ async applyVectorIndexUpdates(physicalId, logicalId, plan, desiredAttributeDefinitions, maskSecrets) {
49039
+ const scope = (name) => `vector index ${typeof name === "string" ? maskSecrets(name) : "<unnamed>"} on DynamoDB GlobalTable ${maskSecrets(physicalId)}`;
49040
+ for (const name of plan.alreadyGone) this.logger.debug(maskSecrets(`${scope(name)} is recorded but not live; skipping its Delete`));
49041
+ for (const name of plan.adopted) this.logger.warn(maskSecrets(`${scope(name)} already exists in AWS with the declared definition but is absent from cdkd's recorded previous state, so its Create is being skipped. This usually means an earlier deploy created the index and then failed before state was written.`));
49042
+ if (plan.ops.length === 0) return;
49043
+ await this.waitForVectorIndexesSettled(physicalId, logicalId, maskSecrets);
49044
+ markUnsettled("VectorIndexes");
49045
+ for (const op of plan.ops) {
49046
+ const input = {
49047
+ TableName: physicalId,
49048
+ VectorIndexUpdates: [op]
49049
+ };
49050
+ if (op.Create && desiredAttributeDefinitions) input.AttributeDefinitions = desiredAttributeDefinitions;
49051
+ await this.dynamoDBClient.send(new UpdateTableCommand(input));
49052
+ if (op.Create?.IndexName !== void 0) markAttemptedItems("VectorIndexes", [op.Create.IndexName]);
49053
+ await this.waitForVectorIndexesSettled(physicalId, logicalId, maskSecrets);
49054
+ this.logger.debug(maskSecrets(`${op.Create ? "created" : "deleted"} ` + scope(op.Create?.IndexName ?? op.Delete?.IndexName)));
49055
+ }
49056
+ }
49057
+ async waitForVectorIndexesSettled(tableName, logicalId, maskSecrets) {
49058
+ const watch = startInterruptWatch(maskSecrets(`DynamoDB vector indexes on ${maskSecrets(tableName)}`));
49059
+ try {
49060
+ for (let attempt = 1; attempt <= VECTOR_INDEX_SETTLE_ATTEMPTS; attempt++) {
49061
+ if (watch.isInterrupted()) throw watch.onInterrupted();
49062
+ const table = (await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table;
49063
+ if (table?.TableStatus === "ACTIVE" && vectorIndexesSettled(table.VectorIndexes)) return;
49064
+ await new Promise((resolve) => setTimeout(resolve, 1e3));
49065
+ }
49066
+ } finally {
49067
+ watch.dispose();
49068
+ }
49069
+ throw new Error(maskSecrets(`DynamoDB GlobalTable ${logicalId}: table ${maskSecrets(tableName)} and its vector indexes did not settle within ${VECTOR_INDEX_SETTLE_ATTEMPTS} polls`));
49070
+ }
48862
49071
  async addReplica(tableName, replica, region, logicalId, billingMode, diagnostics, maskSecrets = (text) => text) {
48863
49072
  const create = { RegionName: region };
48864
49073
  const kmsMasterKeyId = readReplicaKmsMasterKeyId(replica);
@@ -49664,6 +49873,7 @@ var DynamoDBGlobalTableProvider = class {
49664
49873
  if (refusal === void 0 && !deepEqual(properties["StreamSpecification"], previousProperties["StreamSpecification"])) refusal = configStringRefusal(properties["StreamSpecification"], "StreamViewType", "NEW_AND_OLD_IMAGES", "AWS::DynamoDB::GlobalTable StreamSpecification");
49665
49874
  if (refusal === void 0 && (changed("SSESpecification") || !deepEqual(replicaKeyBlocks(properties), replicaKeyBlocks(previousProperties)))) refusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
49666
49875
  if (refusal === void 0 && changed("GlobalSecondaryIndexes")) refusal = globalSecondaryIndexesShapeDetail(properties["GlobalSecondaryIndexes"], maskSecrets);
49876
+ if (refusal === void 0 && changed("VectorIndexes")) refusal = vectorIndexesShapeDetail(properties["VectorIndexes"]);
49667
49877
  if (refusal === void 0) refusal = replicaSettingsRefusal(properties, previousProperties);
49668
49878
  if (refusal !== void 0) refuse(refusal);
49669
49879
  } else {
@@ -49676,6 +49886,15 @@ var DynamoDBGlobalTableProvider = class {
49676
49886
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49677
49887
  const describeResp = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
49678
49888
  const tableArn = describeResp.Table?.TableArn;
49889
+ const vectorIndexesChanged = !deepEqual(properties["VectorIndexes"], previousProperties["VectorIndexes"]);
49890
+ const vectorIndexShape = vectorIndexesShapeDetail(properties["VectorIndexes"]);
49891
+ if (vectorIndexShape !== void 0 && vectorIndexesChanged) warn(`${vectorIndexShape}; the VectorIndexes change was not applied`);
49892
+ const vectorIndexPlan = vectorIndexShape === void 0 && vectorIndexesChanged ? planVectorIndexUpdates(previousProperties["VectorIndexes"], properties["VectorIndexes"], describeResp.Table === void 0 ? void 0 : describeResp.Table.VectorIndexes ?? []) : void 0;
49893
+ if (vectorIndexPlan !== void 0 && vectorIndexPlan.changed.length > 0) {
49894
+ const vectorMessage = `AWS::DynamoDB::GlobalTable ${logicalId}: VectorIndexes ${vectorIndexPlan.changed.map((name) => maskSecrets(name)).join(", ")} changed definition, which DynamoDB cannot modify in place`;
49895
+ if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(`${maskSecrets(vectorMessage)}. Nothing was applied to the table; rename the index (so it is dropped and re-created) or revert the change`, resourceType, logicalId, physicalId);
49896
+ warn(`${vectorMessage}; that change was not applied`);
49897
+ }
49679
49898
  const extractLocalTags = (props) => {
49680
49899
  return localReplicaEntry(props, currentRegion)?.["Tags"];
49681
49900
  };
@@ -49709,6 +49928,10 @@ var DynamoDBGlobalTableProvider = class {
49709
49928
  const newBilling = billingUnusable ? oldBilling : requestedBilling;
49710
49929
  const onDemandCeilingLive = oldBilling === "PAY_PER_REQUEST" && newBilling === "PAY_PER_REQUEST";
49711
49930
  const diagnostics = [];
49931
+ if (!deepEqual(properties["WarmThroughput"], previousProperties["WarmThroughput"])) {
49932
+ const warmUpdateDiagnostic = warmThroughputDiagnostic(properties["WarmThroughput"], coerceWarmThroughput(properties["WarmThroughput"]), void 0);
49933
+ if (warmUpdateDiagnostic) diagnostics.push(warmUpdateDiagnostic);
49934
+ }
49712
49935
  const desiredCeilings = collectTableOnDemandCeilings(properties, currentRegion, diagnostics, maskSecrets);
49713
49936
  const flippingToProvisioned = oldBilling !== newBilling && newBilling === "PROVISIONED";
49714
49937
  if (flippingToProvisioned) derivePerCallProvisionedThroughput(properties, currentRegion, "seed", diagnostics, maskSecrets);
@@ -49826,7 +50049,7 @@ var DynamoDBGlobalTableProvider = class {
49826
50049
  if (flatChanged) {
49827
50050
  if (flatUpdate.DeletionProtectionEnabled !== void 0) markUnsettled("Replicas");
49828
50051
  if (flatUpdate.StreamSpecification !== void 0) markUnsettled("StreamSpecification");
49829
- if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings");
50052
+ if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
49830
50053
  await this.dynamoDBClient.send(new UpdateTableCommand(flatUpdate));
49831
50054
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49832
50055
  }
@@ -49882,7 +50105,7 @@ var DynamoDBGlobalTableProvider = class {
49882
50105
  }
49883
50106
  if (indexUpdates.length > 0) billingUpdate.GlobalSecondaryIndexUpdates = indexUpdates;
49884
50107
  }
49885
- markUnsettled("BillingMode", "WriteProvisionedThroughputSettings");
50108
+ markUnsettled("BillingMode", "WriteProvisionedThroughputSettings", TABLE_READ_PROVISIONED_KEY);
49886
50109
  if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) {
49887
50110
  markUnsettled("GlobalSecondaryIndexes");
49888
50111
  for (const indexUpdate of billingUpdate.GlobalSecondaryIndexUpdates) debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(indexUpdate.Update?.IndexName ?? "")} on ${physicalId} (with the billing mode change)`);
@@ -49891,13 +50114,29 @@ var DynamoDBGlobalTableProvider = class {
49891
50114
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49892
50115
  }
49893
50116
  if (deferCeilingsPastFlip) {
49894
- markUnsettled("WriteOnDemandThroughputSettings");
50117
+ markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
49895
50118
  await this.dynamoDBClient.send(new UpdateTableCommand({
49896
50119
  TableName: physicalId,
49897
50120
  OnDemandThroughput: onDemandPayload
49898
50121
  }));
49899
50122
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49900
50123
  }
50124
+ const readBlockOf = (bag) => localReplicaEntry(bag, currentRegion)?.[TABLE_READ_PROVISIONED_KEY] ?? bag[TABLE_READ_PROVISIONED_KEY];
50125
+ 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))) {
50126
+ const wantRead = coerceCfnInteger(asRecord(readBlockOf(properties))?.["ReadCapacityUnits"]);
50127
+ const liveThroughput = describeResp.Table?.ProvisionedThroughput;
50128
+ if (wantRead !== void 0 && liveThroughput?.WriteCapacityUnits !== void 0 && wantRead !== liveThroughput.ReadCapacityUnits) {
50129
+ markUnsettled(TABLE_READ_PROVISIONED_KEY);
50130
+ await this.dynamoDBClient.send(new UpdateTableCommand({
50131
+ TableName: physicalId,
50132
+ ProvisionedThroughput: {
50133
+ ReadCapacityUnits: wantRead,
50134
+ WriteCapacityUnits: liveThroughput.WriteCapacityUnits
50135
+ }
50136
+ }));
50137
+ await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50138
+ }
50139
+ }
49901
50140
  const writeAutoScalingOld = (previousProperties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
49902
50141
  const writeAutoScalingNew = (properties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
49903
50142
  const effectiveNewAutoScaling = oldBilling === "PROVISIONED" && newBilling === "PAY_PER_REQUEST" ? void 0 : writeAutoScalingNew;
@@ -49930,6 +50169,7 @@ var DynamoDBGlobalTableProvider = class {
49930
50169
  ReplicaUpdates: [{ Delete: { RegionName: region } }]
49931
50170
  }));
49932
50171
  await this.waitForReplicaGone(physicalId, region, logicalId, void 0, void 0, maskSecrets);
50172
+ await this.deregisterRemovedReplicaScalableTargets(physicalId, region, { maskSecrets });
49933
50173
  }
49934
50174
  for (const replica of replicaDiff.added) {
49935
50175
  const region = replica["Region"];
@@ -50103,6 +50343,19 @@ var DynamoDBGlobalTableProvider = class {
50103
50343
  }));
50104
50344
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50105
50345
  }
50346
+ if (vectorIndexPlan !== void 0) await this.applyVectorIndexUpdates(physicalId, logicalId, vectorIndexPlan, properties["AttributeDefinitions"], maskSecrets);
50347
+ if (!deepEqual(properties["WarmThroughput"], previousProperties["WarmThroughput"])) {
50348
+ const warmCoercion = coerceWarmThroughput(properties["WarmThroughput"]);
50349
+ const warmToSend = this.tableWarmThroughputForSend(warmCoercion.spec, describeResp.Table?.WarmThroughput, logicalId, physicalId, maskSecrets);
50350
+ if (warmToSend) {
50351
+ markUnsettled("WarmThroughput");
50352
+ await this.dynamoDBClient.send(new UpdateTableCommand({
50353
+ TableName: physicalId,
50354
+ WarmThroughput: warmToSend
50355
+ }));
50356
+ await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50357
+ }
50358
+ }
50106
50359
  const skipAutoScalingForUnusableGsi = desiredGsiUnusable && newBilling !== "PAY_PER_REQUEST";
50107
50360
  const autoScalingMeaningfulForIndexes = (newBilling === "PROVISIONED" || oldBilling === "PROVISIONED") && !skipAutoScalingForUnusableGsi;
50108
50361
  if (skipAutoScalingForUnusableGsi && oldBilling === "PROVISIONED") warn(`AWS::DynamoDB::GlobalTable ${logicalId}: skipping the auto-scaling target reconcile because the GlobalSecondaryIndexes block is unusable — the per-index targets are derived from it, so reconciling would deregister the live indexes' scalable targets. Existing targets are left untouched.`);
@@ -50513,31 +50766,38 @@ var DynamoDBGlobalTableProvider = class {
50513
50766
  const cause = regionErr instanceof Error ? regionErr : void 0;
50514
50767
  throw new ProvisioningError(`Could not resolve client region for DynamoDB GlobalTable ${logicalId} delete — would risk dropping the local replica`, resourceType, logicalId, physicalId, cause);
50515
50768
  }
50516
- let preDeleteIndexes;
50769
+ let preDeleteTable;
50770
+ let indexNoun;
50517
50771
  try {
50518
50772
  const describe = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
50519
50773
  const replicas = describe.Table?.Replicas ?? [];
50520
- preDeleteIndexes = describe.Table?.GlobalSecondaryIndexes;
50774
+ preDeleteTable = describe.Table;
50775
+ if ((describe.Table?.VectorIndexes ?? []).length > 0) indexNoun = TABLE_INDEX_NOUN;
50521
50776
  const tableIndexNames = (describe.Table?.GlobalSecondaryIndexes ?? []).map((gsi) => gsi.IndexName).filter((name) => typeof name === "string");
50522
50777
  for (const replica of replicas) {
50523
50778
  const region = replica.RegionName;
50524
50779
  if (!region || region === currentRegion) continue;
50525
50780
  try {
50526
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, void 0, progress);
50527
- for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, void 0, progress);
50781
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, deleteMask, progress);
50782
+ for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, deleteMask, progress);
50528
50783
  await this.dropReplicaForDelete(physicalId, region, context?.removeProtection === true, logicalId, budget, deleteMask);
50529
50784
  progress.stripped = true;
50530
50785
  await this.waitForReplicaGone(physicalId, region, logicalId, REPLICA_GONE_WAIT_ATTEMPTS, budget, context?.maskSecrets);
50786
+ await this.deregisterRemovedReplicaScalableTargets(physicalId, region, {
50787
+ budget,
50788
+ maskSecrets: deleteMask,
50789
+ progress
50790
+ });
50531
50791
  } catch (replicaErr) {
50532
50792
  if (!(replicaErr instanceof ResourceNotFoundException$1)) throw replicaErr;
50533
50793
  }
50534
50794
  }
50535
50795
  const localAsClient = await this.getLocalAutoScalingClient();
50536
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget, void 0, progress);
50537
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget, void 0, progress);
50796
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
50797
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
50538
50798
  for (const indexName of tableIndexNames) {
50539
- await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget, void 0, progress);
50540
- await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget, void 0, progress);
50799
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
50800
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
50541
50801
  }
50542
50802
  } catch (describeErr) {
50543
50803
  if (describeErr instanceof ProvisioningError) throw describeErr;
@@ -50548,8 +50808,8 @@ var DynamoDBGlobalTableProvider = class {
50548
50808
  }
50549
50809
  }
50550
50810
  try {
50551
- if (hasTransitionalIndex(preDeleteIndexes)) {
50552
- this.logger.debug(`Waiting for indexes on ${physicalId} to settle before DeleteTable`);
50811
+ if (hasTransitionalTableIndex(preDeleteTable)) {
50812
+ deleteLog.debug(`Waiting for indexes on ${physicalId} to settle before DeleteTable`);
50553
50813
  await this.waitForIndexesActive(physicalId, logicalId, {
50554
50814
  proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
50555
50815
  budget,
@@ -50560,6 +50820,7 @@ var DynamoDBGlobalTableProvider = class {
50560
50820
  logicalId,
50561
50821
  physicalId,
50562
50822
  typeLabel: "GlobalTable",
50823
+ ...indexNoun !== void 0 && { indexNoun },
50563
50824
  maxRetries: 8,
50564
50825
  logger: loopLogger,
50565
50826
  deleteTable: async () => {
@@ -50567,7 +50828,8 @@ var DynamoDBGlobalTableProvider = class {
50567
50828
  flip.deleteAccepted = true;
50568
50829
  },
50569
50830
  reArm: () => this.waitForIndexesActive(physicalId, logicalId, {
50570
- maxAttempts: 60,
50831
+ maxAttempts: 900,
50832
+ shortCapUnlessVectorBusy: 60,
50571
50833
  proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
50572
50834
  budget,
50573
50835
  ...context?.maskSecrets && { maskSecrets: context.maskSecrets }
@@ -50594,7 +50856,7 @@ var DynamoDBGlobalTableProvider = class {
50594
50856
  return;
50595
50857
  }
50596
50858
  const cause = error instanceof Error ? error : void 0;
50597
- throw this.wrapDeleteError(deleteLog, error, (text) => new ProvisioningError(`Failed to delete DynamoDB GlobalTable ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
50859
+ throw this.wrapDeleteError(deleteLog, error, (text) => new ProvisioningError(`Failed to delete DynamoDB GlobalTable ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), indexNoun);
50598
50860
  }
50599
50861
  }
50600
50862
  async isSameResource(journaledPhysicalId, record, resourceType, context) {
@@ -50663,7 +50925,7 @@ var DynamoDBGlobalTableProvider = class {
50663
50925
  out[name] = projectNamed(out[name], recordedProperties?.[name], desiredProperties?.[name], name, unnamed, attemptedItems);
50664
50926
  }
50665
50927
  for (const entry of unnamed.filter((e) => e.ambiguous === true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS has entries cdkd cannot key by an identity, so convergence keeps the recorded ${entry.path} rather than risk removing an entry neither the record nor the template declares. Check it with 'cdkd drift'.`);
50666
- for (const entry of unnamed.filter((e) => e.ambiguous !== true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS holds ${entry.identity} ${entry.value}, which neither the record nor the template declares, so cdkd leaves it in place. If the failed update added it and it should not be there, remove it by hand (for a replica: aws dynamodb update-table --replica-updates Delete; for an index: --global-secondary-index-updates Delete).`);
50928
+ for (const entry of unnamed.filter((e) => e.ambiguous !== true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS holds ${entry.identity} ${entry.value}, which neither the record nor the template declares, so cdkd leaves it in place. If the failed update added it and it should not be there, remove it by hand (for a replica: aws dynamodb update-table --replica-updates Delete; for an index: --global-secondary-index-updates Delete; for a vector index: --vector-index-updates Delete).`);
50667
50929
  return out;
50668
50930
  }
50669
50931
  async unsettledInTransition(physicalId, _logicalId, _resourceType, names) {
@@ -50680,6 +50942,8 @@ var DynamoDBGlobalTableProvider = class {
50680
50942
  }
50681
50943
  if (names.has("Replicas") && (table?.Replicas ?? []).some((replica) => replica.ReplicaStatus !== void 0 && MOVING.has(replica.ReplicaStatus))) moving.add("Replicas");
50682
50944
  if (names.has("GlobalSecondaryIndexes") && (table?.GlobalSecondaryIndexes ?? []).some((index) => index.IndexStatus !== void 0 && MOVING.has(index.IndexStatus))) moving.add("GlobalSecondaryIndexes");
50945
+ if (names.has("VectorIndexes") && (table?.VectorIndexes ?? []).some((index) => index.IndexStatus !== void 0 && MOVING.has(index.IndexStatus))) moving.add("VectorIndexes");
50946
+ if (names.has("WarmThroughput") && table?.WarmThroughput?.Status === "UPDATING") moving.add("WarmThroughput");
50683
50947
  const sse = table?.SSEDescription?.Status;
50684
50948
  if (names.has("SSESpecification") && (sse === "ENABLING" || sse === "DISABLING" || sse === "UPDATING")) moving.add("SSESpecification");
50685
50949
  if (names.has("TimeToLiveSpecification")) {
@@ -50815,6 +51079,21 @@ var DynamoDBGlobalTableProvider = class {
50815
51079
  else result["WriteProvisionedThroughputSettings"] = {};
50816
51080
  }
50817
51081
  } else result["WriteProvisionedThroughputSettings"] = {};
51082
+ const liveVectorIndexes = readbackVectorIndexes(table.VectorIndexes);
51083
+ if (liveVectorIndexes !== void 0) result["VectorIndexes"] = liveVectorIndexes;
51084
+ const declaredWarm = coerceWarmThroughput(properties?.["WarmThroughput"]).spec;
51085
+ if (declaredWarm && table.WarmThroughput) {
51086
+ const warm = {};
51087
+ for (const member of WARM_THROUGHPUT_MEMBERS) {
51088
+ const value = table.WarmThroughput[member];
51089
+ const declared = declaredWarm[member];
51090
+ if (declared === void 0 || value === void 0) continue;
51091
+ warm[member] = table.WarmThroughput.Status === "UPDATING" ? Math.max(value, declared) : value;
51092
+ }
51093
+ if (Object.keys(warm).length > 0) result["WarmThroughput"] = warm;
51094
+ }
51095
+ if (properties?.[TABLE_READ_ON_DEMAND_KEY] !== void 0 && table.OnDemandThroughput?.MaxReadRequestUnits !== void 0) result[TABLE_READ_ON_DEMAND_KEY] = { MaxReadRequestUnits: table.OnDemandThroughput.MaxReadRequestUnits };
51096
+ if (properties?.[TABLE_READ_PROVISIONED_KEY] !== void 0 && billingMode !== "PAY_PER_REQUEST" && table.ProvisionedThroughput?.ReadCapacityUnits !== void 0) result[TABLE_READ_PROVISIONED_KEY] = { ReadCapacityUnits: table.ProvisionedThroughput.ReadCapacityUnits };
50818
51097
  try {
50819
51098
  const ttlDesc = (await this.dynamoDBClient.send(new DescribeTimeToLiveCommand({ TableName: tableNameForSubs }))).TimeToLiveDescription;
50820
51099
  const ttlStatus = ttlDesc?.TimeToLiveStatus;
@@ -50951,11 +51230,19 @@ var DynamoDBGlobalTableProvider = class {
50951
51230
  return null;
50952
51231
  }
50953
51232
  }
50954
- getDriftUnknownPaths(_resourceType) {
50955
- return [];
51233
+ getDriftUnknownPaths(_resourceType, properties) {
51234
+ const paths = ["TableType"];
51235
+ if (properties === void 0 || Object.keys(properties).length === 0) return paths;
51236
+ if (properties["BillingMode"] !== "PROVISIONED") paths.push(TABLE_READ_PROVISIONED_KEY);
51237
+ if (!coerceWarmThroughput(properties["WarmThroughput"]).spec) paths.push("WarmThroughput");
51238
+ return paths;
50956
51239
  }
50957
51240
  getDriftUnorderedPaths(_resourceType) {
50958
- return ["AttributeDefinitions", "Replicas[]"];
51241
+ return [
51242
+ "AttributeDefinitions",
51243
+ "Replicas[]",
51244
+ "VectorIndexes"
51245
+ ];
50959
51246
  }
50960
51247
  canonicalizeDriftProperties(resourceType, properties) {
50961
51248
  if (resourceType !== "AWS::DynamoDB::GlobalTable") return properties;
@@ -51051,7 +51338,7 @@ var DynamoDBGlobalTableProvider = class {
51051
51338
  const response = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
51052
51339
  if (response.Table?.TableStatus === "ACTIVE") {
51053
51340
  tableReachedActive = true;
51054
- if (!hasTransitionalIndex(response.Table?.GlobalSecondaryIndexes)) return;
51341
+ if (!hasTransitionalTableIndex(response.Table)) return;
51055
51342
  }
51056
51343
  await new Promise((resolve) => setTimeout(resolve, 1e3));
51057
51344
  }
@@ -51070,6 +51357,7 @@ var DynamoDBGlobalTableProvider = class {
51070
51357
  logger: maskedLogger(this.logger, opts?.maskSecrets, tableName),
51071
51358
  describeTable: () => this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName })),
51072
51359
  maxAttempts: gateWait.grantedPolls,
51360
+ ...opts?.shortCapUnlessVectorBusy !== void 0 && { shortCapUnlessVectorBusy: opts.shortCapUnlessVectorBusy },
51073
51361
  budgetWait: gateWait,
51074
51362
  proceedNote: opts?.proceedNote ?? "auto-scaling registration for a still-building index may have been skipped. The next deploy re-asserts it."
51075
51363
  });
@@ -51102,6 +51390,83 @@ var DynamoDBGlobalTableProvider = class {
51102
51390
  }
51103
51391
  throw new ProvisioningError(maskSecrets(`Replica ${region} for table ${maskSecrets(tableName)} did not disappear within ${wait.pollsRun}s${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
51104
51392
  }
51393
+ async deregisterRemovedReplicaScalableTargets(tableName, region, options = {}) {
51394
+ const mask = options.maskSecrets ?? ((text) => text);
51395
+ const tableResourceId = autoScalingResourceId(tableName);
51396
+ const indexPrefix = `${tableResourceId}/index/`;
51397
+ const leaveTargets = (reason, awsDetail) => {
51398
+ this.logger.warn(mask(`The ${region} replica of ${tableName} was removed, but its application-autoscaling targets there were left registered: ${reason}. Once that table is gone, run: ${pasteableAwsCommand(mask)`aws application-autoscaling describe-scalable-targets --service-namespace dynamodb --region ${region}`.render()} and deregister each target whose ResourceId is ${tableResourceId} or starts with ${indexPrefix}.`));
51399
+ if (awsDetail !== void 0) this.logger.debug(mask(`${region} replica of ${tableName}: ${awsDetail}`));
51400
+ };
51401
+ const watch = startInterruptWatch(mask(`application-autoscaling target cleanup for ${tableName} in ${region}`));
51402
+ const found = [];
51403
+ const asClient = this.getRegionalAutoScalingClient(region);
51404
+ try {
51405
+ const retired = await this.readReplicaTableRetired(tableName, region, options.budget, watch);
51406
+ if (retired !== true) {
51407
+ leaveTargets(retired.reason, retired.awsDetail);
51408
+ return;
51409
+ }
51410
+ try {
51411
+ let nextToken;
51412
+ do {
51413
+ if (watch.isInterrupted()) throw watch.onInterrupted();
51414
+ const token = nextToken;
51415
+ const res = await withRetry(() => asClient.send(new DescribeScalableTargetsCommand({
51416
+ ServiceNamespace: "dynamodb",
51417
+ ...token ? { NextToken: token } : {}
51418
+ })), `${tableResourceId} targets in ${region}`, {
51419
+ isRetryable: (_message, error) => isThrottlingError(error),
51420
+ maxRetries: autoScalingRetriesWithinDeleteBudget(options.budget, 8),
51421
+ isInterrupted: watch.isInterrupted,
51422
+ onInterrupted: watch.onInterrupted,
51423
+ ...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
51424
+ });
51425
+ for (const target of res?.ScalableTargets ?? []) {
51426
+ const dimension = target.ScalableDimension;
51427
+ const resourceId = target.ResourceId;
51428
+ if (!resourceId || !isDynamoDBScalableDimension(dimension)) continue;
51429
+ if (resourceId === tableResourceId && dimension.startsWith("dynamodb:table:")) found.push({ dimension });
51430
+ else if (resourceId.startsWith(indexPrefix) && resourceId.length > indexPrefix.length && dimension.startsWith("dynamodb:index:")) found.push({
51431
+ dimension,
51432
+ indexName: resourceId.slice(indexPrefix.length)
51433
+ });
51434
+ }
51435
+ nextToken = res?.NextToken;
51436
+ } while (nextToken);
51437
+ } catch (err) {
51438
+ if (isInterruptedWaitError(err)) throw err;
51439
+ const failure = describeAwsFailure(err);
51440
+ leaveTargets(`listing them failed (${failure.summary})`, failure.detail);
51441
+ return;
51442
+ }
51443
+ } finally {
51444
+ watch.dispose();
51445
+ }
51446
+ for (const target of found) await this.applyAutoScalingDiff(tableName, target.dimension, {}, void 0, asClient, target.indexName, options.budget, mask, options.progress);
51447
+ if (found.length > 0) this.logger.debug(mask(`Deregistered ${found.length} auto-scaling target(s) left by the removed ${region} replica of ${tableName}`));
51448
+ }
51449
+ async readReplicaTableRetired(tableName, region, budget, watch) {
51450
+ try {
51451
+ const status = (await withRetry(() => this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName })), `${tableName} in ${region}`, {
51452
+ isRetryable: (_message, error) => isThrottlingError(error),
51453
+ maxRetries: autoScalingRetriesWithinDeleteBudget(budget, 8),
51454
+ isInterrupted: watch.isInterrupted,
51455
+ onInterrupted: watch.onInterrupted,
51456
+ ...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
51457
+ })).Table?.TableStatus;
51458
+ if (status === "DELETING") return true;
51459
+ return { reason: `the table there still reads ${status ?? "no status"}` };
51460
+ } catch (err) {
51461
+ if (err instanceof ResourceNotFoundException$1) return true;
51462
+ if (isInterruptedWaitError(err)) throw err;
51463
+ const failure = describeAwsFailure(err);
51464
+ return {
51465
+ reason: `reading the table there failed (${failure.summary})`,
51466
+ awsDetail: failure.detail
51467
+ };
51468
+ }
51469
+ }
51105
51470
  async waitForTableGone(tableName, logicalId, maxAttempts = 600, budget, mask = (text) => text) {
51106
51471
  const shownName = mask(tableName);
51107
51472
  const wait = beginDeleteWait(maxAttempts, budget);
@@ -51210,6 +51575,8 @@ const REPLICA_SETTING_MEMBERS = [
51210
51575
  "GlobalSecondaryIndexes"
51211
51576
  ];
51212
51577
  const REPLICATION_MODE_KEY = "GlobalTableSettingsReplicationMode";
51578
+ const TABLE_READ_ON_DEMAND_KEY = "ReadOnDemandThroughputSettings";
51579
+ const TABLE_READ_PROVISIONED_KEY = "ReadProvisionedThroughputSettings";
51213
51580
  function readReplicationMode(properties) {
51214
51581
  const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51215
51582
  const declared = replicas.map((entry) => asRecord(entry)?.[REPLICATION_MODE_KEY]).filter((value) => value !== void 0 && value !== null);
@@ -51245,9 +51612,35 @@ function replicationModeCorrection(properties, previousProperties, liveMode) {
51245
51612
  if (replicationModeUpdate(properties, previousProperties) !== void 0) return void 0;
51246
51613
  return (liveMode ?? "DISABLED") === want.mode ? void 0 : want.mode;
51247
51614
  }
51615
+ function tableLevelSettingsRefusal(properties) {
51616
+ const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51617
+ if (properties["TableType"] === "Regional" && replicas.length > 1) return "TableType Regional cannot be declared with more than one replica, as CloudFormation refuses it; declare TableType GlobalTableReplica or omit TableType";
51618
+ const mode = readReplicationMode(properties);
51619
+ for (const key of [TABLE_READ_ON_DEMAND_KEY, TABLE_READ_PROVISIONED_KEY]) {
51620
+ if (properties[key] === void 0 || properties[key] === null) continue;
51621
+ if (mode.kind !== "usable" || mode.mode !== "ENABLED") return `${key} at the table level needs Replicas[].${REPLICATION_MODE_KEY} ENABLED, as CloudFormation refuses it otherwise; enable it on the replica, or move the block to the replica`;
51622
+ if (replicas.some((entry) => asRecord(entry)?.[key] !== void 0)) return `${key} cannot be declared at both the table level and a replica, as CloudFormation refuses it; keep one`;
51623
+ }
51624
+ if (properties[TABLE_READ_ON_DEMAND_KEY] !== void 0 && properties[TABLE_READ_ON_DEMAND_KEY] !== null && properties["BillingMode"] === "PROVISIONED") return `${TABLE_READ_ON_DEMAND_KEY} cannot be declared on a PROVISIONED table, as CloudFormation refuses it; remove it, or set BillingMode to PAY_PER_REQUEST`;
51625
+ }
51626
+ function replicaReadBlockShape(properties) {
51627
+ return (Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).map((entry) => [asRecord(entry)?.[TABLE_READ_ON_DEMAND_KEY], asRecord(entry)?.[TABLE_READ_PROVISIONED_KEY]]);
51628
+ }
51629
+ const TABLE_LEVEL_SETTING_INPUTS = [
51630
+ "TableType",
51631
+ "BillingMode",
51632
+ TABLE_READ_ON_DEMAND_KEY,
51633
+ TABLE_READ_PROVISIONED_KEY
51634
+ ];
51248
51635
  function replicaSettingsRefusal(properties, previousProperties, currentRegion) {
51249
51636
  const mode = readReplicationMode(properties);
51250
- if (mode.kind === "unusable" && (previousProperties === void 0 || !deepEqual(replicationModeShape(properties), replicationModeShape(previousProperties)))) return mode.reason;
51637
+ const modeShapeChanged = previousProperties === void 0 || !deepEqual(replicationModeShape(properties), replicationModeShape(previousProperties));
51638
+ if (mode.kind === "unusable" && modeShapeChanged) return mode.reason;
51639
+ if (modeShapeChanged || previousProperties === void 0 || !deepEqual(replicaReadBlockShape(properties), replicaReadBlockShape(previousProperties)) || TABLE_LEVEL_SETTING_INPUTS.some((key) => !deepEqual(properties[key], previousProperties?.[key]))) {
51640
+ const tableLevelRefusal = tableLevelSettingsRefusal(properties);
51641
+ if (tableLevelRefusal !== void 0) return tableLevelRefusal;
51642
+ }
51643
+ if (previousProperties?.[TABLE_READ_PROVISIONED_KEY] != null && properties[TABLE_READ_PROVISIONED_KEY] == null && properties["BillingMode"] === "PROVISIONED" && !(Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).some((entry) => asRecord(entry)?.[TABLE_READ_PROVISIONED_KEY] != null)) return `${TABLE_READ_PROVISIONED_KEY} cannot be removed from a PROVISIONED table with no replica declaring its own, as CloudFormation refuses it; keep it, declare it on the replica, or set BillingMode to PAY_PER_REQUEST`;
51251
51644
  const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51252
51645
  const crossRegionCreate = previousProperties === void 0 && desired.some((entry) => {
51253
51646
  const region = asRecord(entry)?.["Region"];
@@ -51318,11 +51711,12 @@ function extractLocalTableClass(props, region) {
51318
51711
  }
51319
51712
  function derivePerCallProvisionedThroughput(properties, region, source = "min", diagnostics, maskSecrets = (text) => text) {
51320
51713
  const rawReplicas = properties["Replicas"];
51321
- const rawRead = (Array.isArray(rawReplicas) ? rawReplicas : []).find((r) => asRecord(r)?.["Region"] === region)?.["ReadProvisionedThroughputSettings"];
51714
+ const localReplica = (Array.isArray(rawReplicas) ? rawReplicas : []).find((r) => asRecord(r)?.["Region"] === region);
51715
+ const rawRead = localReplica?.["ReadProvisionedThroughputSettings"] ?? properties[TABLE_READ_PROVISIONED_KEY];
51322
51716
  const rawWrite = properties["WriteProvisionedThroughputSettings"];
51323
51717
  const read = deriveReadCapacityUnits(asRecord(rawRead), source);
51324
51718
  const write = deriveWriteCapacityUnits(asRecord(rawWrite), source);
51325
- if (read === void 0) reportUnresolvedProvisionedCapacity(rawRead, "Read", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: "Replicas[local].ReadProvisionedThroughputSettings" }, maskSecrets);
51719
+ if (read === void 0) reportUnresolvedProvisionedCapacity(rawRead, "Read", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: localReplica?.["ReadProvisionedThroughputSettings"] !== void 0 ? "Replicas[local].ReadProvisionedThroughputSettings" : TABLE_READ_PROVISIONED_KEY }, maskSecrets);
51326
51720
  if (write === void 0) reportUnresolvedProvisionedCapacity(rawWrite, "Write", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: "WriteProvisionedThroughputSettings" }, maskSecrets);
51327
51721
  return {
51328
51722
  ReadCapacityUnits: read ?? DEFAULT_CAPACITY_UNITS,
@@ -51330,6 +51724,15 @@ function derivePerCallProvisionedThroughput(properties, region, source = "min",
51330
51724
  };
51331
51725
  }
51332
51726
  const DEFAULT_CAPACITY_UNITS = 5;
51727
+ const DYNAMODB_SCALABLE_DIMENSIONS = /* @__PURE__ */ new Set([
51728
+ "dynamodb:table:WriteCapacityUnits",
51729
+ "dynamodb:table:ReadCapacityUnits",
51730
+ "dynamodb:index:WriteCapacityUnits",
51731
+ "dynamodb:index:ReadCapacityUnits"
51732
+ ]);
51733
+ function isDynamoDBScalableDimension(value) {
51734
+ return typeof value === "string" && DYNAMODB_SCALABLE_DIMENSIONS.has(value);
51735
+ }
51333
51736
  function autoScalingTargetKey(spec) {
51334
51737
  return `${spec.region}|${spec.dimension}|${spec.indexName ?? ""}`;
51335
51738
  }
@@ -51339,6 +51742,7 @@ function autoScalingResourceId(tableName, indexName) {
51339
51742
  const autoScalingRetryDelays = {};
51340
51743
  const REPLICA_GONE_WAIT_ATTEMPTS = 600;
51341
51744
  const GLOBAL_TABLE_ACTIVE_WAIT_ATTEMPTS = 600;
51745
+ const VECTOR_INDEX_SETTLE_ATTEMPTS = 1800;
51342
51746
  const TABLE_GONE_WAIT_ATTEMPTS = 600;
51343
51747
  const deleteTableRetryDelays = {};
51344
51748
  const DESCRIBE_SCALABLE_TARGETS_BATCH = 50;
@@ -51460,6 +51864,8 @@ function collectDesiredKeyAttributeNames(properties, options) {
51460
51864
  if (!Array.isArray(indexes)) continue;
51461
51865
  for (const index of indexes) addKeySchema(asRecord(index)?.["KeySchema"]);
51462
51866
  }
51867
+ const vectorIndexes = properties["VectorIndexes"];
51868
+ if (Array.isArray(vectorIndexes)) for (const index of vectorIndexes) addKeySchema(asRecord(index)?.["SearchSchema"]);
51463
51869
  return names;
51464
51870
  }
51465
51871
  function asRecord(value) {
@@ -51704,6 +52110,7 @@ function toSdkGlobalSecondaryIndexes(properties, region, billingMode, source = "
51704
52110
  function stripProvisionedCapacityKeys(properties) {
51705
52111
  const result = { ...properties };
51706
52112
  delete result["WriteProvisionedThroughputSettings"];
52113
+ delete result[TABLE_READ_PROVISIONED_KEY];
51707
52114
  const indexes = result["GlobalSecondaryIndexes"];
51708
52115
  if (Array.isArray(indexes)) result["GlobalSecondaryIndexes"] = indexes.map((entry) => {
51709
52116
  const gsi = asRecord(entry);
@@ -51743,7 +52150,7 @@ function stripProvisionedCapacityKeys(properties) {
51743
52150
  return result;
51744
52151
  }
51745
52152
  const PROVISIONED_ONLY_CAPACITY_KEYS = {
51746
- table: ["WriteProvisionedThroughputSettings"],
52153
+ table: ["WriteProvisionedThroughputSettings", "ReadProvisionedThroughputSettings"],
51747
52154
  index: [
51748
52155
  "WriteProvisionedThroughputSettings",
51749
52156
  "ReadProvisionedThroughputSettings",
@@ -51753,7 +52160,7 @@ const PROVISIONED_ONLY_CAPACITY_KEYS = {
51753
52160
  replicaIndex: ["ReadProvisionedThroughputSettings", "ProvisionedThroughputOverride"]
51754
52161
  };
51755
52162
  const ON_DEMAND_ONLY_CAPACITY_KEYS = {
51756
- table: ["WriteOnDemandThroughputSettings"],
52163
+ table: ["WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings"],
51757
52164
  index: [
51758
52165
  "WriteOnDemandThroughputSettings",
51759
52166
  "ReadOnDemandThroughputSettings",
@@ -51980,11 +52387,12 @@ function toSdkReplicaThroughputOverrides(cfn, billingMode, diagnostics, context,
51980
52387
  function collectTableOnDemandCeilings(properties, region, diagnostics, maskSecrets = (text) => text) {
51981
52388
  const writeBlock = properties["WriteOnDemandThroughputSettings"];
51982
52389
  const replicas = properties["Replicas"];
51983
- const readBlock = asRecord(Array.isArray(replicas) ? replicas.find((r) => asRecord(r)?.["Region"] === region) : void 0)?.["ReadOnDemandThroughputSettings"];
52390
+ const replicaReadBlock = asRecord(Array.isArray(replicas) ? replicas.find((r) => asRecord(r)?.["Region"] === region) : void 0)?.["ReadOnDemandThroughputSettings"];
52391
+ const readBlock = replicaReadBlock ?? properties[TABLE_READ_ON_DEMAND_KEY];
51984
52392
  const rawRead = asRecord(readBlock)?.["MaxReadRequestUnits"];
51985
52393
  const rawWrite = asRecord(writeBlock)?.["MaxWriteRequestUnits"];
51986
52394
  reportUnresolvedRawMember(rawRead, diagnostics, {
51987
- blockName: "Replicas[local].ReadOnDemandThroughputSettings",
52395
+ blockName: replicaReadBlock !== void 0 ? "Replicas[local].ReadOnDemandThroughputSettings" : TABLE_READ_ON_DEMAND_KEY,
51988
52396
  member: "MaxReadRequestUnits"
51989
52397
  }, maskSecrets);
51990
52398
  reportUnresolvedRawMember(rawWrite, diagnostics, {
@@ -55498,5 +55906,5 @@ function sameGenerationClaimsOf(record) {
55498
55906
  }
55499
55907
 
55500
55908
  //#endregion
55501
- export { getPriorAttempts as $, applyCallerIdentityCredentials as $a, unionOfSecretBags as $c, isCustomResourceType as $i, orphansCarriedFrom as $l, namesAnyDeclaredParameter as $n, malformedResourcePropertiesWarning as $o, withoutSuperseded as $r, isWarmThroughputDecrease as $s, formatResourceLine as $t, resolveStateBucketWithDefault as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, withoutUnsettledProperties as Aa, maskedLeafCoordinatesOf as Ac, renderAssemblyPathEscape as Ad, acquireIdempotencyToken as Ai, LockManager as Al, recheckFailedPlan as An, accountArgs as Ao, mappingPairs as Ar, repairMalformedOutputsForReadOnly as As, keptForRetainedRecord as At, finchSecretArgvRefusal as Au, deleteTableWithIndexBusyRetry as B, producerLookupOver as Ba, markSameGenerationBag as Bc, refuseMalformedDesiredTags as Bi, stackInstanceIdOf as Bl, isRedactedRecordedValue as Bn, malformedExportSourceWarning as Bo, gray as Br, findSilentDropProperties as Bs, revertedNestedRowIds as Bt, runDockerStreaming as Bu, planContributorInsightsOp as C, DiffCalculator as Ca, DagBuilder as Cc, hasOwnKey as Cd, isFinalSnapshotError as Ci, recordMaskOnlyValuesIn as Cl, equalModuloMask as Cn, passedParameterClassesOf as Co, findRefactorHints as Cr, refuseMalformedResourcePropertiesForOrphan as Cs, keptWholeReasonText as Ct, buildDenyExternalAccessPolicy as Cu, reverseMapTableContributorInsights as D, unsettledItemsOf as Da, maskAtCoordinates as Dc, absoluteAssemblyPathEscape as Dd, ledgerForStack as Di, wholeStringLeavesOf as Dl, isReplacementOrphan as Dn, STATE_RESOURCES_MALFORMED as Do, withMovedTo as Dr, refuseMalformedState as Ds, planOrphanAdoption as Dt, describeDockerExecFailure as Du, reverseMapIndexContributorInsights as E, unsettledItemsField as Ea, isMarkedCoordinate as Ec, ownValue as Ed, earliestDefined as Ei, recordProvenPublicExpression as El, isJournaledOrphan as En, STATE_REGION_DIVERGED as Eo, rollbackOrphanIds as Er, refuseMalformedResourcesForExport as Es, makeSiblingClaimReader as Et, describeDockerCapturedOutput as Eu, resolveDynamoDbDeleteBudgetClock as F, s3BucketDomainName as Fa, readbackPathFor as Fc, resolveBucketRegion as Fd, markDeleteStarted as Fi, CrossPrefixScanCache as Fl, orphanNeedsIdentity as Fn, hasReadableResources as Fo, getStackRecords as Fr, unreadableOrphanRecords as Fs, dropSettledNestedJournals as Ft, partitionSensitiveEnv as Fu, isTtlRateLimited as G, recordedReferenceRegions as Ga, createUnionSecretMasker as Gc, CC_BROKEN_REASON as Gi, exportNamesCarriedFrom as Gl, nameGenerationCarriedFrom as Gn, malformedOrphanRecordsWarning as Go, deleteSupersededEntry as Gr, findReplacedReadersOfRecreateTargets as Gs, deleteJournaledOrphans as Gt, synthesisStatusMessage as Gu, relayedIndexBusyDelete as H, keepHeldTokenProvenance as Ha, recordReferenceProvenanceEntry as Hc, tagPlanWarning as Hi, splitImportedOps as Hl, redactedDeleteAddressSkip as Hn, malformedLocalResourceEntriesWarning as Ho, red as Hr, withoutSilentDropProperties as Hs, collectNestedChildUnaddressed as Ht, AssetManifestLoader as Hu, resolveDynamoDbDeleteBudgetMs as I, s3BucketDualStackDomainName as Ia, readsNoEchoSource as Ic, DBPROXY_TAGS_WHAT as Ii, applyCrossPrefixScan as Il, findNestedStackTypeChanges as In, isReadableOrphanRecord as Io, withStackRecords as Ir, unreadableResourceEntries as Is, getNestedRevertRun as It, redactDockerArgvValues as Iu, sendTtlWaitingOutRateLimit as J, assertSendableRoleArn as Ja, logOnlyValueCount as Jc, isCustomResource as Ji, hasUnverifiableParameterRefusal as Jl, retiredAfterRollback as Jn, malformedOrphansWarning as Jo, removeSuperseded as Jr, isStatefulRecreateTargetForReplace as Js, isHandledOrphan as Jt, loadCdkJson as Ju, planTimeToLive as K, applyRoleArnIfSet as Ka, hasMaskableValues as Kc, ProviderRegistry as Ki, hasReadableExportSet as Kl, nameGenerationHighWaterOf as Kn, malformedOrphanRowsKeptWarning as Ko, holdsSupersededResources as Kr, shownType as Ks, dropFailedCommands as Kt, getDefaultStateBucketName as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, s3BucketRegionalDomainName as La, recordedNoEchoValuesOf as Lc, DBPROXY_TAG_OPTIONS as Li, crossPrefixDeniedWarning as Ll, getCurrentProducerRegions as Ln, isReadableResourceEntry as Lo, replacedDeleteFailureVerdict as Lr, withheldAccountClause as Ls, nestedChildStackName as Lt, redactedCause as Lu, beginDeleteWait as M, poisonRenderedSpellingsCollidingIn as Ma, noEchoLeavesOf as Mc, injectAwsRegion as Md, DeploymentEventsStore as Mi, S3StateBackend as Ml, replacementNeverSwapped as Mn, displayLogicalId as Mo, proposeRenames as Mr, repairMalformedResourcePropertiesForReadOnly as Ms, NESTED_PENDING_PARENT_REASON as Mt, getDockerCmd as Mu, compensateRemovedDeletionProtection as N, isSettledInstanceState as Na, noEchoOutputsComparison as Nc, injectedAwsRegionValue as Nd, extractDeploymentEventError as Ni, rebuildClientForBucketRegion as Nl, resolveReplacementOldType as Nn, hasReadableOrphans as No, awaitInFlightSibling as Nr, repairMalformedResourcesForReadOnly as Ns, displacedOpClause as Nt, isDockerClientEnvKey as Nu, stripIndexContributorInsights as O, unsettledPropertiesOf as Oa, maskReadbackAtCoordinates as Oc, describeFileReadFailure as Od, reserveStackCreateToken as Oi, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ol, planFailedOps as On, UNREADABLE_ORPHANS_CONTAINER_ROW as Oo, isPairableType as Or, repairMalformedOrphanRecordsForReadOnly as Os, pendingRequestCount as Ot, describeDockerFailure as Ou, deleteBudgetKey as P, s3BucketArn as Pa, passedNoEchoParametersOf as Pc, clearBucketRegionCache as Pd, isRefusedByName as Pi, CrossPrefixReadError as Pl, seedsDeleteFirstGuard as Pn, hasReadableOutputs as Po, destroyStackRecordsView as Pr, unpreviewableOrphanRecords as Ps, displacedPhysicalIdShown as Pt, isMalformedEnvKey as Pu, isTruthyCfnBoolean as Q, AWS_CREDENTIAL_ENV_KEYS as Qa, shareLogOnlyValues as Qc, readsNoEchoDeleteValues as Qi, orphansAfterRollback as Ql, computeParameterTaint as Qn, malformedResourceEntriesWarning as Qo, supersededResourcesOf as Qr, coerceWarmThroughput as Qs, sameJournaledOrphans as Qt, resolveSkipPrefix as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, s3BucketWebsiteUrl as Ra, valueAtCoordinate as Rc, planTagDiff as Ri, isAccessDenied$1 as Rl, inheritProducerRegions as Rn, malformedDriftResourcePropertiesWarning as Ro, bold as Rr, findActionableSilentDrops as Rs, recordDisplacedSkips as Rt, redactedDockerCause as Ru, indexDeclaresContributorInsights as S, reEnableInstanceApiTermination as Sa, sameLambdaFunctionAddress as Sc, defineOwnKey as Sd, effectiveDeletionPolicy as Si, recordMaskOnlyValue as Sl, equalModuloMarkedMask as Sn, parameterInputsFor as So, formatDestructiveChange as Sr, refuseMalformedResourcePropertiesForExport as Ss, isSecretBearingReferenceString as St, validateContainerRepoName as Su, readContributorInsightsSpec as T, isUsableAttemptedName as Ta, canonicalCoordinates as Tc, nullPrototypeRecord as Td, unsupportedFinalSnapshotError as Ti, recordNoEchoParameterFreshValue as Tl, demoteSupersededOrphans as Tn, JSON_LISTING_HOLE_VALUE as To, movedToHint as Tr, refuseMalformedResourcesForDestroy as Ts, makeCanonicalizePropertiesFn as Tt, resolveDockerContextDirectory as Tu, waitForIndexesSettled as U, outputReferenceProvenanceOf as Ua, snapshotPassProvenance as Uc, definedAttributes as Ui, acceptedCreateOnlyDropsOf as Ul, updatePartialMessage as Un, malformedLocalResourcesWarning as Uo, yellow as Ur, NO_CC_HANDLERS_REASON as Us, getCurrentNestedStackContext as Ut, getDockerImageBySourceHash as Uu, maskedLogger as V, refuseUnreadableCdkCrossAccountRefs as Va, redactForState as Vc, tagMapAsList as Vi, withStackInstanceIdWithheld as Vl, redactedDeleteAddressFields as Vn, malformedLocalOutputsWarning as Vo, green as Vr, unwrittenCreateOnlyReplacement as Vs, withNestedRevertRun as Vt, warnFinchArgvExposure as Vu, isTtlAlreadyDisabled as W, recordedOutputReferenceRegions as Wa, carryLogOnlyValues as Wc, stringifyIfAssigned as Wi, describeRegionValueKind as Wl, updatePartialReason as Wn, malformedOrphanRecordsRefusalMessage as Wo, addSuperseded as Wr, hasNoCloudControlHandlers as Ws, withNestedStackContext as Wt, Synthesizer as Wu, S3_AUTO_DELETE_OBJECTS_TAG as X, isIamRoleArn as Xa, recordLogOnlyParameterValue as Xc, waitForLambdaFunctionActive as Xi, importableOutputs as Xl, retiredNameGenerationsLeaving as Xn, malformedOutputsWarning as Xo, supersededHeldByOtherTypeWarning as Xr, renderStatefulReason as Xs, loadJournaledOrphans as Xt, resolveAutoAssetStorage as Xu, ECR_AUTO_DELETE_IMAGES_TAG as Y, explicitRoleArnOrThrow as Ya, printingCorpusOf as Yc, wouldReturnToSdkProvider as Yi, importableOutputKeys as Yl, retiredNameGenerationsAfter as Yn, malformedOutputsRefusalMessage as Yo, supersededAfterRollback as Yr, isStatefulRecreateTargetSync as Ys, journaledOrphanLines as Yt, resolveApp as Yu, hasCdkAutoDeleteTag as Z, sendableAssumeRoleCommand as Za, recordLogOnlyValue as Zc, TemplateNoEchoReresolver as Zi, isReadableBag as Zl, withNameGenerationReached as Zn, malformedRenderedContainersWarning as Zo, supersededHolderOf as Zr, WARM_THROUGHPUT_MEMBERS as Zs, makeForeignHolderScan as Zt, resolveCaptureObservedState as Zu, streamMemberRefusals as _, disableInstanceApiTermination as _a, dbInstanceEngineChangeIsInPlace as _c, StageLoadError as _d, ATOMIC_FINAL_SNAPSHOT_TYPES as _i, recordAttributeIdCopy as _l, removeProtectionTypeList as _n, isStalePlaceholderArnAttribute as _o, DEFAULT_RESOURCE_TIMEOUT_MS as _r, refuseMalformedResourceEntriesForImport as _s, readRecordedConditionVerdicts as _t, getBootstrapMarkerKey as _u, isProtectionValueActive as a, CloudControlProvider as aa, configIntegerRefusal as ac, CFN_TEMPLATE_BODY_LIMIT as ad, createReadOnlyAttributeHealerFactory as ai, withPhysicalNameCopies as al, readRefactorMarkerOnce as an, regionLessSecretName as ao, secretBearing as ar, refuseMalformedNestedChildOutputs as as, deferredServiceTokenWarning as at, AssetPublisher as au, CONTRIBUTOR_INSIGHTS_KEY as b, observeThenDisableInstanceApiTermination as ba, canonicalLambdaFunctionName as bc, parseFailureDebugDetail as bd, ccRoutedFinalSnapshotError as bi, carriesSecretMask as bl, withUnprovenUnsettled as bn, parseWebACLArn as bo, constructPathOf as br, refuseMalformedResourcePropertiesForDestroy as bs, withResourceDeadline as bt, readBootstrapMarkerBody as bu, DynamoDBGlobalTableProvider as c, unchangedBehindSecretReference as ca, replayWarn as cc, findLargeInlineResources as cd, maskEventTextWithBoundBags as ci, dynamicReferenceTokens as cl, refuseRefactorMarker as cn, parameterTypeMayLoseSecretIdentity as co, carriedExportAliasExposure as cr, refuseMalformedOrphans as cs, childTemplateLoader as ct, WorkGraph as cu, declaredStreamPolicyMember as d, deleteIndeterminateGuards as da, requireConfigString as dc, decodeListingKey as dd, secretNamePrintingBag as di, spelledKeysOf as dl, hasPendingMovesOut as dn, carriesDynamicReference as do, isWholeDynamicReferenceValue as dr, refuseMalformedOutputs as ds, listNestedTemplateRows as dt, loadPublishableAssetManifest as du, getCurrentResourceSecrets as ea, toCfnInteger as ec, resolveStateBucketWithDefaultAndSource as ed, noEchoAttributeNamesOf as ei, createSecretMasker as el, chunks as en, callerEnvCredentials as eo, reachableDivergentParameters as er, malformedResourcesWarning as es, markRefusedBeforeApplying as et, shouldRetainResource as eu, declaredStreamTagsMember as f, deleteLeftInPlace as fa, prefetchCreateOnlyPropertyPaths as fc, expectedOwnerParam as fd, secretNamePrintingBags as fi, identityKeyFor as fl, pendingMovesOutOf as fn, carriesFetchableDynamicReference as fo, noEchoParameterValueSeed as fr, refuseMalformedOutputsForDestroy as fs, renderNestedTemplateTreeDefect as ft, rewriteTemplateAssetReferences as fu, streamDeclaresTags as g, markWaitAbandoned as ga, blockDeviceMappingsDifferOnlyInDeleteOnTermination as gc, AssemblyReader as gd, storedSecretNameNeedles as gi, physicalNameCopiesOf as gl, replayRollback as gn, cfnRefValueFromPhysicalId as go, bindingSkippedOutputs as gr, refuseMalformedResourceEntriesForDestroy as gs, parentSuppliedValues as gt, ensureAssetStorage as gu, streamDeclaresPolicy as h, isWaitAbandonedError as ha, withRetry as hc, derivePartitionAndUrlSuffix as hd, stateSecretNameNeedles as hi, recoverMaskedOutput as hl, replayFailedOperations as hn, AWS_NO_VALUE as ho, isExportAliasCollision as hr, refuseMalformedResourceEntriesForDeploy as hs, conditionInputsFrom as ht, assertAssetBucketRegion as hu, PROTECTION_PROPERTY_BY_TYPE as i, customResourceResponseExpirationWarning as ia, configBooleanRefusal as ic, ssmResolvedValueType as id, withAttemptedItemsMasked as ii, scrubResourceRecord as il, readRefactorMarker as in, producerRegionsFromState as io, exportAliasCollisionScrubWarning as ir, refuseDivergentRecordRegionForDestroy as is, inheritedProvenanceForChildDiff as it, timePhase as iu, DYNAMODB_DELETE_POLL_COST_MS as j, IntrinsicFunctionResolver as ja, noEchoCoordinatesOf as jc, resolveAssemblyPath as jd, DeploymentEventsReader as ji, isLockInfoExpired as jl, recordUnderIdIsNotOwn as jn, deployRefusesOrphanRowsReason as jo, parseMappingFile as jr, repairMalformedResourceEntriesForReadOnly as js, recordRetainedForReadoption as jt, formatDockerLoginError as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, withUnsettledProperties as ka, maskWholeValue as kc, displayAssemblyPath as kd, withCreateTokenLedger as ki, isSingleDynamicReferenceToken as kl, planRollback as kn, UNREADABLE_RESOURCES_MAP_ROW as ko, looselyEqual as kr, repairMalformedOrphansForReadOnly as ks, resolvePendingCloudControlRequests as kt, dockerSpawnEnvWithSensitive as ku, STREAM_POLICY_KEY as l, RollbackInlinePolicyWriters as la, requireConfigArray as lc, uploadCfnTemplate as ld, namingSecretsWithRecordedNoEcho as li, isUncertifiedBaselineMaskPosition as ll, sameMove as ln, getAccountInfo as lo, exportNameNoEchoParameters as lr, refuseMalformedOrphansForDestroy as ls, findNestedTemplateTreeDefect as lt, buildAssetRedirectMap as lu, reverseMapStreamPolicy as m, withIndeterminateGuard as ma, describeTypeWithThrottleRetry as mc, canonicalizeRegion as md, secretNamedRecordNeedles as mi, recordNestedStackParameterExpressions as ml, refusePendingMovesOut as mn, keepsSecretReferenceToken as mo, collectPublishedOutputNames as mr, refuseMalformedResourceEntries as ms, conditionFingerprint as mt, BOOTSTRAP_MARKER_PREFIX as mu, recordedProtectionEvidence as n, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as na, coerceCfnBoolean as nc, stateBucketExistenceConfirmed as nd, noEchoExactEchoLeavesOf as ni, maskSecretsInError as nl, lookupEachName as nn, classifyRecordedSecretRegion as no, WITHHELD_NAME_DISPLAY as nr, malformedStateRefusalMessage as ns, computeImplicitDeleteEdges as nt, PhaseClock as nu, perType as o, slowCcOperationTimeoutMs as oa, configStringRefusal as oc, CFN_TEMPLATE_URL_LIMIT as od, completedReplayEntries as oi, withoutPhysicalNameCopies as ol, refactorMarkerMovesOf as on, coerceParameterTypedValue as oo, secretBearingStateKeyWarning as or, refuseMalformedOrphanRecords as os, findServiceTokenRefusals as ot, isSensitiveAttributeName as ou, planStreamMemberOps as p, deleteSkipReason as pa, templateResourceTypes as pc, PARTITION_TABLE as pd, secretNamedAttributeNamesOf as pi, inheritNestedStackParameterAssociations as pl, pendingMovesRefusalMessage as pn, isNamelessDynamicReferenceError as po, collectDeclaredOutputNames as pr, refuseMalformedResourceAttributesForOrphan as ps, templateIdentity as pt, AssetModeResolver 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, recordedProtectionNote as r, applyCustomResourceResponseExpiration as ra, coerceCfnInteger as rc, warnDeprecatedNoPrefixCliFlag as rd, noEchoParameterNamesOf as ri, maskSecretsInText as rl, withApiLimit as rn, classifyReplaySecretRegion as ro, displayTextOrWithheld as rr, previewableOrphanRecords as rs, crossStackOutputProvenanceSource as rt, renderPhaseTimings as ru, readProtection as s, onlySecretReferencesDiffer as sa, readConfigString as sc, MIGRATE_TMP_PREFIX as sd, journaledOrphanPrintingBag as si, DYNAMIC_REFERENCE_TOKEN_SCAN as sl, refactorMarkerRefusalMessage as sn, isUnboundTemplateParameter as so, secretSafeKeyDisplay as sr, refuseMalformedOrphanRecordsForDestroy as ss, serviceTokenBlockingReason as st, stringifyValue as su, DeployEngine as t, withPrintingSecrets as ta, toFiniteNumber as tc, resolveUseCdkBootstrapAssets as td, noEchoComparisonForTemplate as ti, errorCauseChain as tl, isAccessDeniedError as tn, envCredentialsAreAssumedRole as to, resourcesNamingDeclaredParameter as tr, malformedScrubResourceEntriesRefusalMessage as ts, IMPLICIT_DELETE_DEPENDENCIES as tt, stackInstanceIdCarriedFrom as tu, STREAM_TAGS_KEY as u, UNSPECIFIED_SKIP_REASON as ua, requireConfigObject as uc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ud, orphanRecordsPrintingBag as ui, pathCrossesDottedKey as ul, updateRefactorMarker as un, isImpossibleEmptyStoredAttribute as uo, exportNameSecretExposure as ur, refuseMalformedOrphansForOrphan as us, isAbsoluteAssetPath as ut, createAssetRedirectResolver as uu, streamPolicyMatchesDeclared as v, ec2InstanceProtectionSite as va, ecsServiceLaunchTypeSetOrChanged as vc, processStackMessages as vd, PRE_DELETE_SNAPSHOT_TYPES as vi, recordPhysicalNameCopy as vl, recordAfterRollbackUpdate as vn, lacksRecordedTableArn as vo, DEFAULT_RESOURCE_WARN_AFTER_MS as vr, refuseMalformedResourceEntriesForImportSave as vs, enclosingDeadlineExpired as vt, isCrossRegionRedirect as vu, planIndexContributorInsightsOps as w, INTRINSIC_KEYS as wa, TemplateParser as wc, hasPlainPrototype$1 as wd, refusesFinalSnapshot as wi, recordNoEchoAttributeValues as wl, undeclaredEmptyObservedKeys as wn, declaresNoEcho as wo, hintSidesOf as wr, refuseMalformedResourcesForDeploy as ws, mergeNoChangeOutputs as wt, buildDockerImage as wu, contributorInsightsRefusals as x, reDisableInstanceApiTermination as xa, lambdaFunctionNameForMask as xc, utf8ByteLength as xd, createPreDeleteFinalSnapshot as xi, provenPublicValue as xl, calculateResourceDrift as xn, withSharedDrainBudget as xo, findDestructiveChanges as xr, refuseMalformedResourcePropertiesForDrift as xs, diffSecurity as xt, validateAssetBucketName as xu, streamTagsMatchDeclared as y, isTerminationProtectionPropagationError as ya, emrClusterInstancesReplaced as yc, describeJsonParseFailure as yd, buildFinalSnapshotIdentifier as yi, splitGetAttStringForm as yl, settleUnsettledPrevious as yn, refStateLookupFromResource as yo, maskingRetryLogger as yr, refuseMalformedResourceEntriesForOrphan as ys, enclosingDeadlineRemainingMs as yt, parseBootstrapMarker as yu, TABLE_INDEX_NOUN as z, resolveDynamicReferences as za, liveMatchesUnresolvedTokenFrame as zc, readTagList as zi, isNotImplemented as zl, REDACTED_DELETE_ADDRESS_SKIP_REASON as zn, malformedExportNamesWarning as zo, cyan as zr, findHandledUnwrittenCreateOnly as zs, revertNestedChildFromJournal as zt, runDockerForeground as zu };
55502
- //# sourceMappingURL=deploy-engine-CVNzK__j.js.map
55909
+ export { ECR_AUTO_DELETE_IMAGES_TAG as $, explicitRoleArnOrThrow as $a, printingCorpusOf as $c, wouldReturnToSdkProvider as $i, importableOutputKeys as $l, retiredNameGenerationsAfter as $n, malformedOutputsRefusalMessage as $o, supersededAfterRollback as $r, isStatefulRecreateTargetSync as $s, journaledOrphanLines as $t, resolveApp as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, unsettledItemsField as Aa, isMarkedCoordinate as Ac, ownValue as Ad, earliestDefined as Ai, recordProvenPublicExpression as Al, isJournaledOrphan as An, STATE_REGION_DIVERGED as Ao, rollbackOrphanIds as Ar, refuseMalformedResourcesForExport as As, makeSiblingClaimReader as At, describeDockerCapturedOutput as Au, deleteTableWithIndexBusyRetry as B, s3BucketDualStackDomainName as Ba, readsNoEchoSource as Bc, DBPROXY_TAGS_WHAT as Bi, applyCrossPrefixScan as Bl, findNestedStackTypeChanges as Bn, isReadableOrphanRecord as Bo, withStackRecords as Br, unreadableResourceEntries as Bs, getNestedRevertRun as Bt, redactDockerArgvValues as Bu, planContributorInsightsOp as C, isTerminationProtectionPropagationError as Ca, emrClusterInstancesReplaced as Cc, describeJsonParseFailure as Cd, buildFinalSnapshotIdentifier as Ci, splitGetAttStringForm as Cl, settleUnsettledPrevious as Cn, refStateLookupFromResource as Co, maskingRetryLogger as Cr, refuseMalformedResourceEntriesForOrphan as Cs, enclosingDeadlineRemainingMs as Ct, parseBootstrapMarker as Cu, reverseMapTableContributorInsights as D, DiffCalculator as Da, DagBuilder as Dc, hasOwnKey as Dd, isFinalSnapshotError as Di, recordMaskOnlyValuesIn as Dl, equalModuloMask as Dn, passedParameterClassesOf as Do, findRefactorHints as Dr, refuseMalformedResourcePropertiesForOrphan as Ds, keptWholeReasonText as Dt, buildDenyExternalAccessPolicy as Du, reverseMapIndexContributorInsights as E, reEnableInstanceApiTermination as Ea, sameLambdaFunctionAddress as Ec, defineOwnKey as Ed, effectiveDeletionPolicy as Ei, recordMaskOnlyValue as El, equalModuloMarkedMask as En, parameterInputsFor as Eo, formatDestructiveChange as Er, refuseMalformedResourcePropertiesForExport as Es, isSecretBearingReferenceString as Et, validateContainerRepoName as Eu, resolveDynamoDbDeleteBudgetClock as F, IntrinsicFunctionResolver as Fa, noEchoCoordinatesOf as Fc, resolveAssemblyPath as Fd, DeploymentEventsReader as Fi, isLockInfoExpired as Fl, recordUnderIdIsNotOwn as Fn, deployRefusesOrphanRowsReason as Fo, parseMappingFile as Fr, repairMalformedResourceEntriesForReadOnly as Fs, recordRetainedForReadoption as Ft, formatDockerLoginError as Fu, readbackVectorIndexes as G, refuseUnreadableCdkCrossAccountRefs as Ga, redactForState as Gc, tagMapAsList as Gi, withStackInstanceIdWithheld as Gl, redactedDeleteAddressFields as Gn, malformedLocalOutputsWarning as Go, green as Gr, unwrittenCreateOnlyReplacement as Gs, withNestedRevertRun as Gt, warnFinchArgvExposure as Gu, relayedIndexBusyDelete as H, s3BucketWebsiteUrl as Ha, valueAtCoordinate as Hc, planTagDiff as Hi, isAccessDenied$1 as Hl, inheritProducerRegions as Hn, malformedDriftResourcePropertiesWarning as Ho, bold as Hr, findActionableSilentDrops as Hs, recordDisplacedSkips as Ht, redactedDockerCause as Hu, resolveDynamoDbDeleteBudgetMs as I, poisonRenderedSpellingsCollidingIn as Ia, noEchoLeavesOf as Ic, injectAwsRegion as Id, DeploymentEventsStore as Ii, S3StateBackend as Il, replacementNeverSwapped as In, displayLogicalId as Io, proposeRenames as Ir, repairMalformedResourcePropertiesForReadOnly as Is, NESTED_PENDING_PARENT_REASON as It, getDockerCmd as Iu, isTtlAlreadyDisabled as J, recordedOutputReferenceRegions as Ja, carryLogOnlyValues as Jc, stringifyIfAssigned as Ji, describeRegionValueKind as Jl, updatePartialReason as Jn, malformedOrphanRecordsRefusalMessage as Jo, addSuperseded as Jr, hasNoCloudControlHandlers as Js, withNestedStackContext as Jt, Synthesizer as Ju, vectorIndexesForCreate as K, keepHeldTokenProvenance as Ka, recordReferenceProvenanceEntry as Kc, tagPlanWarning as Ki, splitImportedOps as Kl, redactedDeleteAddressSkip as Kn, malformedLocalResourceEntriesWarning as Ko, red as Kr, withoutSilentDropProperties as Ks, collectNestedChildUnaddressed as Kt, AssetManifestLoader as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, isSettledInstanceState as La, noEchoOutputsComparison as Lc, injectedAwsRegionValue as Ld, extractDeploymentEventError as Li, rebuildClientForBucketRegion as Ll, resolveReplacementOldType as Ln, hasReadableOrphans as Lo, awaitInFlightSibling as Lr, repairMalformedResourcesForReadOnly as Ls, displacedOpClause as Lt, isDockerClientEnvKey as Lu, beginDeleteWait as M, unsettledPropertiesOf as Ma, maskReadbackAtCoordinates as Mc, describeFileReadFailure as Md, reserveStackCreateToken as Mi, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ml, planFailedOps as Mn, UNREADABLE_ORPHANS_CONTAINER_ROW as Mo, isPairableType as Mr, repairMalformedOrphanRecordsForReadOnly as Ms, pendingRequestCount as Mt, describeDockerFailure as Mu, compensateRemovedDeletionProtection as N, withUnsettledProperties as Na, maskWholeValue as Nc, displayAssemblyPath as Nd, withCreateTokenLedger as Ni, isSingleDynamicReferenceToken as Nl, planRollback as Nn, UNREADABLE_RESOURCES_MAP_ROW as No, looselyEqual as Nr, repairMalformedOrphansForReadOnly as Ns, resolvePendingCloudControlRequests as Nt, dockerSpawnEnvWithSensitive as Nu, stripIndexContributorInsights as O, INTRINSIC_KEYS as Oa, TemplateParser as Oc, hasPlainPrototype$1 as Od, refusesFinalSnapshot as Oi, recordNoEchoAttributeValues as Ol, undeclaredEmptyObservedKeys as On, declaresNoEcho as Oo, hintSidesOf as Or, refuseMalformedResourcesForDeploy as Os, mergeNoChangeOutputs as Ot, buildDockerImage as Ou, deleteBudgetKey as P, withoutUnsettledProperties as Pa, maskedLeafCoordinatesOf as Pc, renderAssemblyPathEscape as Pd, acquireIdempotencyToken as Pi, LockManager as Pl, recheckFailedPlan as Pn, accountArgs as Po, mappingPairs as Pr, repairMalformedOutputsForReadOnly as Ps, keptForRetainedRecord as Pt, finchSecretArgvRefusal as Pu, sendTtlWaitingOutRateLimit as Q, assertSendableRoleArn as Qa, logOnlyValueCount as Qc, isCustomResource as Qi, hasUnverifiableParameterRefusal as Ql, retiredAfterRollback as Qn, malformedOrphansWarning as Qo, removeSuperseded as Qr, isStatefulRecreateTargetForReplace as Qs, isHandledOrphan as Qt, loadCdkJson as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, s3BucketArn as Ra, passedNoEchoParametersOf as Rc, clearBucketRegionCache as Rd, isRefusedByName as Ri, CrossPrefixReadError as Rl, seedsDeleteFirstGuard as Rn, hasReadableOutputs as Ro, destroyStackRecordsView as Rr, unpreviewableOrphanRecords as Rs, displacedPhysicalIdShown as Rt, isMalformedEnvKey as Ru, indexDeclaresContributorInsights as S, ec2InstanceProtectionSite as Sa, ecsServiceLaunchTypeSetOrChanged as Sc, processStackMessages as Sd, PRE_DELETE_SNAPSHOT_TYPES as Si, recordPhysicalNameCopy as Sl, recordAfterRollbackUpdate as Sn, lacksRecordedTableArn as So, DEFAULT_RESOURCE_WARN_AFTER_MS as Sr, refuseMalformedResourceEntriesForImportSave as Ss, enclosingDeadlineExpired as St, isCrossRegionRedirect as Su, readContributorInsightsSpec as T, reDisableInstanceApiTermination as Ta, lambdaFunctionNameForMask as Tc, utf8ByteLength as Td, createPreDeleteFinalSnapshot as Ti, provenPublicValue as Tl, calculateResourceDrift as Tn, withSharedDrainBudget as To, findDestructiveChanges as Tr, refuseMalformedResourcePropertiesForDrift as Ts, diffSecurity as Tt, validateAssetBucketName as Tu, waitForIndexesSettled as U, resolveDynamicReferences as Ua, liveMatchesUnresolvedTokenFrame as Uc, readTagList as Ui, isNotImplemented as Ul, REDACTED_DELETE_ADDRESS_SKIP_REASON as Un, malformedExportNamesWarning as Uo, cyan as Ur, findHandledUnwrittenCreateOnly as Us, revertNestedChildFromJournal as Ut, runDockerForeground as Uu, maskedLogger as V, s3BucketRegionalDomainName as Va, recordedNoEchoValuesOf as Vc, DBPROXY_TAG_OPTIONS as Vi, crossPrefixDeniedWarning as Vl, getCurrentProducerRegions as Vn, isReadableResourceEntry as Vo, replacedDeleteFailureVerdict as Vr, withheldAccountClause as Vs, nestedChildStackName as Vt, redactedCause as Vu, planVectorIndexUpdates as W, producerLookupOver as Wa, markSameGenerationBag as Wc, refuseMalformedDesiredTags as Wi, stackInstanceIdOf as Wl, isRedactedRecordedValue as Wn, malformedExportSourceWarning as Wo, gray as Wr, findSilentDropProperties as Ws, revertedNestedRowIds as Wt, runDockerStreaming as Wu, planTimeToLive as X, applyRoleArnIfSet as Xa, hasMaskableValues as Xc, ProviderRegistry as Xi, hasReadableExportSet as Xl, nameGenerationHighWaterOf as Xn, malformedOrphanRowsKeptWarning as Xo, holdsSupersededResources as Xr, shownType as Xs, dropFailedCommands as Xt, getDefaultStateBucketName as Xu, isTtlRateLimited as Y, recordedReferenceRegions as Ya, createUnionSecretMasker as Yc, CC_BROKEN_REASON as Yi, exportNamesCarriedFrom as Yl, nameGenerationCarriedFrom as Yn, malformedOrphanRecordsWarning as Yo, deleteSupersededEntry as Yr, findReplacedReadersOfRecreateTargets as Ys, deleteJournaledOrphans as Yt, synthesisStatusMessage as Yu, readTtlSpec as Z, assertFlagRoleArn as Za, literalSplitDelimitersOf as Zc, ccBrokenReason as Zi, hasReasonlessBaselineRefusal as Zl, nameScopeOf as Zn, malformedOrphansRefusalMessage as Zo, isSupersededResourceRecord as Zr, MULTI_REGION_RECREATE_BLOCKED_TYPES as Zs, dropFailedHint as Zt, getLegacyStateBucketName as Zu, streamMemberRefusals as _, deleteSkipReason as _a, templateResourceTypes as _c, PARTITION_TABLE as _d, secretNamedAttributeNamesOf as _i, inheritNestedStackParameterAssociations as _l, pendingMovesRefusalMessage as _n, isNamelessDynamicReferenceError as _o, collectDeclaredOutputNames as _r, refuseMalformedResourceAttributesForOrphan as _s, templateIdentity as _t, AssetModeResolver as _u, isProtectionValueActive as a, withPrintingSecrets as aa, toFiniteNumber as ac, resolveUseCdkBootstrapAssets as ad, noEchoComparisonForTemplate as ai, errorCauseChain as al, isAccessDeniedError as an, envCredentialsAreAssumedRole as ao, resourcesNamingDeclaredParameter as ar, malformedScrubResourceEntriesRefusalMessage as as, IMPLICIT_DELETE_DEPENDENCIES as at, stackInstanceIdCarriedFrom as au, CONTRIBUTOR_INSIGHTS_KEY as b, markWaitAbandoned as ba, blockDeviceMappingsDifferOnlyInDeleteOnTermination as bc, AssemblyReader as bd, storedSecretNameNeedles as bi, physicalNameCopiesOf as bl, replayRollback as bn, cfnRefValueFromPhysicalId as bo, bindingSkippedOutputs as br, refuseMalformedResourceEntriesForDestroy as bs, parentSuppliedValues as bt, ensureAssetStorage as bu, DynamoDBGlobalTableProvider as c, customResourceResponseExpirationWarning as ca, configBooleanRefusal as cc, ssmResolvedValueType as cd, withAttemptedItemsMasked as ci, scrubResourceRecord as cl, readRefactorMarker as cn, producerRegionsFromState as co, exportAliasCollisionScrubWarning as cr, refuseDivergentRecordRegionForDestroy as cs, inheritedProvenanceForChildDiff as ct, timePhase as cu, declaredStreamPolicyMember as d, onlySecretReferencesDiffer as da, readConfigString as dc, MIGRATE_TMP_PREFIX as dd, journaledOrphanPrintingBag as di, DYNAMIC_REFERENCE_TOKEN_SCAN as dl, refactorMarkerRefusalMessage as dn, isUnboundTemplateParameter as do, secretSafeKeyDisplay as dr, refuseMalformedOrphanRecordsForDestroy as ds, serviceTokenBlockingReason as dt, stringifyValue as du, waitForLambdaFunctionActive as ea, renderStatefulReason as ec, resolveAutoAssetStorage as ed, supersededHeldByOtherTypeWarning as ei, recordLogOnlyParameterValue as el, loadJournaledOrphans as en, isIamRoleArn as eo, retiredNameGenerationsLeaving as er, malformedOutputsWarning as es, S3_AUTO_DELETE_OBJECTS_TAG as et, importableOutputs as eu, declaredStreamTagsMember as f, unchangedBehindSecretReference as fa, replayWarn as fc, findLargeInlineResources as fd, maskEventTextWithBoundBags as fi, dynamicReferenceTokens as fl, refuseRefactorMarker as fn, parameterTypeMayLoseSecretIdentity as fo, carriedExportAliasExposure as fr, refuseMalformedOrphans as fs, childTemplateLoader as ft, WorkGraph as fu, streamDeclaresTags as g, deleteLeftInPlace as ga, prefetchCreateOnlyPropertyPaths as gc, expectedOwnerParam as gd, secretNamePrintingBags as gi, identityKeyFor as gl, pendingMovesOutOf as gn, carriesFetchableDynamicReference as go, noEchoParameterValueSeed as gr, refuseMalformedOutputsForDestroy as gs, renderNestedTemplateTreeDefect as gt, rewriteTemplateAssetReferences as gu, streamDeclaresPolicy as h, deleteIndeterminateGuards as ha, requireConfigString as hc, decodeListingKey as hd, secretNamePrintingBag as hi, spelledKeysOf as hl, hasPendingMovesOut as hn, carriesDynamicReference as ho, isWholeDynamicReferenceValue as hr, refuseMalformedOutputs as hs, listNestedTemplateRows as ht, loadPublishableAssetManifest as hu, PROTECTION_PROPERTY_BY_TYPE as i, getCurrentResourceSecrets as ia, toCfnInteger as ic, resolveStateBucketWithDefaultAndSource as id, noEchoAttributeNamesOf as ii, createSecretMasker as il, chunks as in, callerEnvCredentials as io, reachableDivergentParameters as ir, malformedResourcesWarning as is, markRefusedBeforeApplying as it, shouldRetainResource as iu, DYNAMODB_DELETE_POLL_COST_MS as j, unsettledItemsOf as ja, maskAtCoordinates as jc, absoluteAssemblyPathEscape as jd, ledgerForStack as ji, wholeStringLeavesOf as jl, isReplacementOrphan as jn, STATE_RESOURCES_MALFORMED as jo, withMovedTo as jr, refuseMalformedState as js, planOrphanAdoption as jt, describeDockerExecFailure as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, isUsableAttemptedName as ka, canonicalCoordinates as kc, nullPrototypeRecord as kd, unsupportedFinalSnapshotError as ki, recordNoEchoParameterFreshValue as kl, demoteSupersededOrphans as kn, JSON_LISTING_HOLE_VALUE as ko, movedToHint as kr, refuseMalformedResourcesForDestroy as ks, makeCanonicalizePropertiesFn as kt, resolveDockerContextDirectory as ku, STREAM_POLICY_KEY as l, CloudControlProvider as la, configIntegerRefusal as lc, CFN_TEMPLATE_BODY_LIMIT as ld, createReadOnlyAttributeHealerFactory as li, withPhysicalNameCopies as ll, readRefactorMarkerOnce as ln, regionLessSecretName as lo, secretBearing as lr, refuseMalformedNestedChildOutputs as ls, deferredServiceTokenWarning as lt, AssetPublisher as lu, reverseMapStreamPolicy as m, UNSPECIFIED_SKIP_REASON as ma, requireConfigObject as mc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as md, orphanRecordsPrintingBag as mi, pathCrossesDottedKey as ml, updateRefactorMarker as mn, isImpossibleEmptyStoredAttribute as mo, exportNameSecretExposure as mr, refuseMalformedOrphansForOrphan as ms, isAbsoluteAssetPath as mt, createAssetRedirectResolver as mu, recordedProtectionEvidence as n, readsNoEchoDeleteValues as na, coerceWarmThroughput as nc, resolveSkipPrefix as nd, supersededResourcesOf as ni, shareLogOnlyValues as nl, sameJournaledOrphans as nn, AWS_CREDENTIAL_ENV_KEYS as no, computeParameterTaint as nr, malformedResourceEntriesWarning as ns, isTruthyCfnBoolean as nt, orphansAfterRollback as nu, perType as o, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as oa, coerceCfnBoolean as oc, stateBucketExistenceConfirmed as od, noEchoExactEchoLeavesOf as oi, maskSecretsInError as ol, lookupEachName as on, classifyRecordedSecretRegion as oo, WITHHELD_NAME_DISPLAY as or, malformedStateRefusalMessage as os, computeImplicitDeleteEdges as ot, PhaseClock as ou, planStreamMemberOps as p, RollbackInlinePolicyWriters as pa, requireConfigArray as pc, uploadCfnTemplate as pd, namingSecretsWithRecordedNoEcho as pi, isUncertifiedBaselineMaskPosition as pl, sameMove as pn, getAccountInfo as po, exportNameNoEchoParameters as pr, refuseMalformedOrphansForDestroy as ps, findNestedTemplateTreeDefect as pt, buildAssetRedirectMap as pu, vectorIndexesSettled as q, outputReferenceProvenanceOf as qa, snapshotPassProvenance as qc, definedAttributes as qi, acceptedCreateOnlyDropsOf as ql, updatePartialMessage as qn, malformedLocalResourcesWarning as qo, yellow as qr, NO_CC_HANDLERS_REASON as qs, getCurrentNestedStackContext as qt, getDockerImageBySourceHash as qu, recordedProtectionNote as r, isCustomResourceType as ra, isWarmThroughputDecrease as rc, resolveStateBucketWithDefault as rd, withoutSuperseded as ri, unionOfSecretBags as rl, formatResourceLine as rn, applyCallerIdentityCredentials as ro, namesAnyDeclaredParameter as rr, malformedResourcePropertiesWarning as rs, getPriorAttempts as rt, orphansCarriedFrom as ru, readProtection as s, applyCustomResourceResponseExpiration as sa, coerceCfnInteger as sc, warnDeprecatedNoPrefixCliFlag as sd, noEchoParameterNamesOf as si, maskSecretsInText as sl, withApiLimit as sn, classifyReplaySecretRegion as so, displayTextOrWithheld as sr, previewableOrphanRecords as ss, crossStackOutputProvenanceSource as st, renderPhaseTimings as su, DeployEngine as t, TemplateNoEchoReresolver as ta, WARM_THROUGHPUT_MEMBERS as tc, resolveCaptureObservedState as td, supersededHolderOf as ti, recordLogOnlyValue as tl, makeForeignHolderScan as tn, sendableAssumeRoleCommand as to, withNameGenerationReached as tr, malformedRenderedContainersWarning as ts, hasCdkAutoDeleteTag as tt, isReadableBag as tu, STREAM_TAGS_KEY as u, slowCcOperationTimeoutMs as ua, configStringRefusal as uc, CFN_TEMPLATE_URL_LIMIT as ud, completedReplayEntries as ui, withoutPhysicalNameCopies as ul, refactorMarkerMovesOf as un, coerceParameterTypedValue as uo, secretBearingStateKeyWarning as ur, refuseMalformedOrphanRecords as us, findServiceTokenRefusals as ut, isSensitiveAttributeName as uu, streamPolicyMatchesDeclared as v, withIndeterminateGuard as va, describeTypeWithThrottleRetry as vc, canonicalizeRegion as vd, secretNamedRecordNeedles as vi, recordNestedStackParameterExpressions as vl, refusePendingMovesOut as vn, keepsSecretReferenceToken as vo, collectPublishedOutputNames as vr, refuseMalformedResourceEntries as vs, conditionFingerprint as vt, BOOTSTRAP_MARKER_PREFIX as vu, planIndexContributorInsightsOps as w, observeThenDisableInstanceApiTermination as wa, canonicalLambdaFunctionName as wc, parseFailureDebugDetail as wd, ccRoutedFinalSnapshotError as wi, carriesSecretMask as wl, withUnprovenUnsettled as wn, parseWebACLArn as wo, constructPathOf as wr, refuseMalformedResourcePropertiesForDestroy as ws, withResourceDeadline as wt, readBootstrapMarkerBody as wu, contributorInsightsRefusals as x, disableInstanceApiTermination as xa, dbInstanceEngineChangeIsInPlace as xc, StageLoadError as xd, ATOMIC_FINAL_SNAPSHOT_TYPES as xi, recordAttributeIdCopy as xl, removeProtectionTypeList as xn, isStalePlaceholderArnAttribute as xo, DEFAULT_RESOURCE_TIMEOUT_MS as xr, refuseMalformedResourceEntriesForImport as xs, readRecordedConditionVerdicts as xt, getBootstrapMarkerKey as xu, streamTagsMatchDeclared as y, isWaitAbandonedError as ya, withRetry as yc, derivePartitionAndUrlSuffix as yd, stateSecretNameNeedles as yi, recoverMaskedOutput as yl, replayFailedOperations as yn, AWS_NO_VALUE as yo, isExportAliasCollision as yr, refuseMalformedResourceEntriesForDeploy as ys, conditionInputsFrom as yt, assertAssetBucketRegion as yu, TABLE_INDEX_NOUN as z, s3BucketDomainName as za, readbackPathFor as zc, resolveBucketRegion as zd, markDeleteStarted as zi, CrossPrefixScanCache as zl, orphanNeedsIdentity as zn, hasReadableResources as zo, getStackRecords as zr, unreadableOrphanRecords as zs, dropSettledNestedJournals as zt, partitionSensitiveEnv as zu };
55910
+ //# sourceMappingURL=deploy-engine-ClIUqDQL.js.map