@go-to-k/cdkd 0.313.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 (29) hide show
  1. package/dist/{asg-provider-CqPtIngx.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-CwpnkMCZ.js → deploy-engine-ClIUqDQL.js} +372 -58
  11. package/dist/deploy-engine-ClIUqDQL.js.map +1 -0
  12. package/dist/{iam-role-provider-ARR3C50J.js → iam-role-provider-DJep3uns.js} +4 -4
  13. package/dist/{iam-role-provider-ARR3C50J.js.map → iam-role-provider-DJep3uns.js.map} +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/{neptune-provider-DfPOAG0q.js → neptune-provider-CGZ_G4Vz.js} +5 -5
  16. package/dist/{neptune-provider-DfPOAG0q.js.map → neptune-provider-CGZ_G4Vz.js.map} +1 -1
  17. package/dist/{program-CMP_YVVn.js → program-Du6jOw1-.js} +38 -15
  18. package/dist/program-Du6jOw1-.js.map +1 -0
  19. package/dist/{provider-classes-DefoNqY7.js → provider-classes-ZqxIefLl.js} +545 -218
  20. package/dist/provider-classes-ZqxIefLl.js.map +1 -0
  21. package/dist/{rds-provider-Dn-7U1CR.js → rds-provider-C2fHUNSE.js} +5 -5
  22. package/dist/{rds-provider-Dn-7U1CR.js.map → rds-provider-C2fHUNSE.js.map} +1 -1
  23. package/dist/{version-CsWxTnUg.js → version-B2PvJ12r.js} +2 -2
  24. package/dist/{version-CsWxTnUg.js.map → version-B2PvJ12r.js.map} +1 -1
  25. package/package.json +1 -1
  26. package/dist/asg-provider-CqPtIngx.js.map +0 -1
  27. package/dist/deploy-engine-CwpnkMCZ.js.map +0 -1
  28. package/dist/program-CMP_YVVn.js.map +0 -1
  29. package/dist/provider-classes-DefoNqY7.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-CsWxTnUg.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",
@@ -16711,24 +16720,24 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16711
16720
  "GlobalSecondaryIndexes",
16712
16721
  "KeySchema",
16713
16722
  "LocalSecondaryIndexes",
16723
+ "ReadOnDemandThroughputSettings",
16724
+ "ReadProvisionedThroughputSettings",
16714
16725
  "Replicas",
16715
16726
  "SSESpecification",
16716
16727
  "StreamSpecification",
16717
16728
  "TableClass",
16718
16729
  "TableName",
16730
+ "TableType",
16719
16731
  "TimeToLiveSpecification",
16732
+ "VectorIndexes",
16733
+ "WarmThroughput",
16720
16734
  "WriteOnDemandThroughputSettings",
16721
16735
  "WriteProvisionedThroughputSettings"
16722
16736
  ]),
16723
16737
  silentDrop: /* @__PURE__ */ new Map([
16724
16738
  ["GlobalTableSourceArn", "not yet implemented by cdkd"],
16725
16739
  ["GlobalTableWitnesses", "not yet implemented by cdkd"],
16726
- ["MultiRegionConsistency", "not yet implemented by cdkd"],
16727
- ["ReadOnDemandThroughputSettings", "not yet implemented by cdkd"],
16728
- ["ReadProvisionedThroughputSettings", "not yet implemented by cdkd"],
16729
- ["TableType", "not yet implemented by cdkd"],
16730
- ["VectorIndexes", "not yet implemented by cdkd"],
16731
- ["WarmThroughput", "not yet implemented by cdkd"]
16740
+ ["MultiRegionConsistency", "not yet implemented by cdkd"]
16732
16741
  ]),
16733
16742
  createOnlyDrops: /* @__PURE__ */ new Set(),
16734
16743
  readOnly: /* @__PURE__ */ new Set([
@@ -18467,15 +18476,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18467
18476
  }],
18468
18477
  ["AWS::S3::Bucket", {
18469
18478
  handled: /* @__PURE__ */ new Set([
18479
+ "AbacStatus",
18470
18480
  "AccelerateConfiguration",
18471
18481
  "AnalyticsConfigurations",
18472
18482
  "BucketEncryption",
18473
18483
  "BucketName",
18484
+ "BucketNamePrefix",
18485
+ "BucketNamespace",
18474
18486
  "CorsConfiguration",
18475
18487
  "IntelligentTieringConfigurations",
18476
18488
  "InventoryConfigurations",
18477
18489
  "LifecycleConfiguration",
18478
18490
  "LoggingConfiguration",
18491
+ "MetadataConfiguration",
18479
18492
  "MetricsConfigurations",
18480
18493
  "NotificationConfiguration",
18481
18494
  "ObjectLockConfiguration",
@@ -18487,15 +18500,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18487
18500
  "VersioningConfiguration",
18488
18501
  "WebsiteConfiguration"
18489
18502
  ]),
18490
- silentDrop: /* @__PURE__ */ new Map([
18491
- ["AbacStatus", "not yet implemented by cdkd"],
18492
- ["AccessControl", "Legacy canned ACL; AWS disables ACLs by default since 2023-04 — use BucketOwnershipControls + BucketPolicy / PublicAccessBlockConfiguration instead"],
18493
- ["BucketNamePrefix", "not yet implemented by cdkd"],
18494
- ["BucketNamespace", "not yet implemented by cdkd"],
18495
- ["MetadataConfiguration", "not yet implemented by cdkd"],
18496
- ["MetadataTableConfiguration", "not yet implemented by cdkd"]
18497
- ]),
18498
- 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(),
18499
18505
  readOnly: /* @__PURE__ */ new Set([
18500
18506
  "Arn",
18501
18507
  "DomainName",
@@ -28791,7 +28797,7 @@ var CloudControlProvider = class {
28791
28797
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
28792
28798
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
28793
28799
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
28794
- const { ASGProvider } = await import("./asg-provider-CqPtIngx.js");
28800
+ const { ASGProvider } = await import("./asg-provider-_nun2Jda.js");
28795
28801
  const delegateRegion = ambientRegion();
28796
28802
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
28797
28803
  if (asgProvider === void 0) {
@@ -28900,7 +28906,7 @@ var CloudControlProvider = class {
28900
28906
  const family = SDK_DELETE_FAMILIES.get(resourceType);
28901
28907
  const cached = this.sdkDeleteDelegates.get(family);
28902
28908
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
28903
- const provider = family === "rds" ? new (await (import("./rds-provider-Dn-7U1CR.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DfPOAG0q.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 });
28904
28910
  this.sdkDeleteDelegates.set(family, {
28905
28911
  region: ccRegion,
28906
28912
  provider
@@ -35259,6 +35265,7 @@ function createOpMasker(logger, secrets, deployBag) {
35259
35265
  };
35260
35266
  }
35261
35267
  const OTHER_SPELLED_NAME_KEYS = {
35268
+ "AWS::S3::Bucket": ["BucketNamePrefix"],
35262
35269
  "AWS::Cognito::UserPoolDomain": ["Domain"],
35263
35270
  "AWS::Cognito::UserPoolUser": ["Username"],
35264
35271
  "AWS::ECS::TaskDefinition": ["Family"],
@@ -43264,6 +43271,7 @@ function keptUnderGeneratedName(resource) {
43264
43271
  if (typeof resource.physicalId !== "string" || resource.physicalId === "") return false;
43265
43272
  const property = explicitNamePropertyFor(resource.resourceType);
43266
43273
  const properties = resource.properties;
43274
+ if (alternateNamePropertiesFor(resource.resourceType).some((p) => properties?.[p])) return false;
43267
43275
  return property === void 0 || !properties?.[property];
43268
43276
  }
43269
43277
  function keptForRetainedRecord(resource) {
@@ -43666,7 +43674,7 @@ function templateStillDeclares(template, record, nameProperties) {
43666
43674
  if (!declared) return false;
43667
43675
  if (declared.Type !== record.state.resourceType) return false;
43668
43676
  const properties = declared.Properties ?? {};
43669
- 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);
43670
43678
  }
43671
43679
  const ADOPTION_REFUSED_TYPES = /* @__PURE__ */ new Set(["AWS::Lambda::LayerVersion", "AWS::ECS::TaskDefinition"]);
43672
43680
  async function planOrphanAdoption(params) {
@@ -47279,6 +47287,125 @@ async function sendTtlWaitingOutRateLimit(send, options) {
47279
47287
  }
47280
47288
  }
47281
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
+
47282
47409
  //#endregion
47283
47410
  //#region src/provisioning/dynamodb-index-busy-delete.ts
47284
47411
  function maskedLogger(logger, maskSecrets, name) {
@@ -48519,7 +48646,12 @@ var DynamoDBGlobalTableProvider = class {
48519
48646
  "TimeToLiveSpecification",
48520
48647
  "WriteProvisionedThroughputSettings",
48521
48648
  "WriteOnDemandThroughputSettings",
48522
- "DeletionProtectionEnabled"
48649
+ "DeletionProtectionEnabled",
48650
+ "ReadOnDemandThroughputSettings",
48651
+ "ReadProvisionedThroughputSettings",
48652
+ "TableType",
48653
+ "VectorIndexes",
48654
+ "WarmThroughput"
48523
48655
  ])]]);
48524
48656
  constructor() {
48525
48657
  const awsClients = getAwsClients();
@@ -48578,12 +48710,12 @@ var DynamoDBGlobalTableProvider = class {
48578
48710
  operationSinks(context, pairs) {
48579
48711
  return withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), pairs);
48580
48712
  }
48581
- wrapMaskedError(log, error, build) {
48713
+ wrapMaskedError(log, error, build, indexNoun) {
48582
48714
  const failure = describeAwsFailure(error);
48583
48715
  if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
48584
48716
  log.debug(build(log.mask(failure.detail)).message);
48585
48717
  const relay = isAuxiliaryFailure(error) ? "" : relayedNameCollision(failure.detail);
48586
- 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));
48587
48719
  return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
48588
48720
  }
48589
48721
  cleanupFailureText(log, head, error) {
@@ -48592,8 +48724,8 @@ var DynamoDBGlobalTableProvider = class {
48592
48724
  log.debug(`${head}${log.mask(failure.detail)}`);
48593
48725
  return log.mask(failure.summary);
48594
48726
  }
48595
- wrapDeleteError(log, error, build) {
48596
- const thrown = this.wrapMaskedError(log, error, build);
48727
+ wrapDeleteError(log, error, build, indexNoun) {
48728
+ const thrown = this.wrapMaskedError(log, error, build, indexNoun);
48597
48729
  return error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
48598
48730
  }
48599
48731
  async create(logicalId, resourceType, properties, context) {
@@ -48719,6 +48851,12 @@ var DynamoDBGlobalTableProvider = class {
48719
48851
  }
48720
48852
  if (sdkIndexes.length > 0) createParams.GlobalSecondaryIndexes = sdkIndexes;
48721
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);
48722
48860
  const createMode = readReplicationMode(properties);
48723
48861
  if (createMode.kind === "usable") createParams.GlobalTableSettingsReplicationMode = createMode.mode;
48724
48862
  const sseEnabledRefusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
@@ -48765,6 +48903,7 @@ var DynamoDBGlobalTableProvider = class {
48765
48903
  }
48766
48904
  try {
48767
48905
  const tableInfo = await this.waitForTableActive(tableName, logicalId, void 0, maskSecrets);
48906
+ if (createVectorIndexes !== void 0) await this.waitForVectorIndexesSettled(tableName, logicalId, maskSecrets);
48768
48907
  for (const replica of wiringReplicas) {
48769
48908
  const region = replica["Region"];
48770
48909
  if (!region || region === currentRegion) continue;
@@ -48830,7 +48969,8 @@ var DynamoDBGlobalTableProvider = class {
48830
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()}`);
48831
48970
  }
48832
48971
  }
48833
- 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 }));
48834
48974
  retractCreatedResource(logicalId, resourceType, tableName);
48835
48975
  } catch (cleanupErr) {
48836
48976
  tableLeftBehind = true;
@@ -48843,6 +48983,32 @@ var DynamoDBGlobalTableProvider = class {
48843
48983
  throw thrown;
48844
48984
  }
48845
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
+ }
48846
49012
  reportThroughputDiagnostics(diagnostics, logicalId, physicalId, maskSecrets = (text) => text) {
48847
49013
  const warn = (message) => this.logger.warn(maskSecrets(message));
48848
49014
  const seen = /* @__PURE__ */ new Set();
@@ -48861,6 +49027,47 @@ var DynamoDBGlobalTableProvider = class {
48861
49027
  const format = (spec) => WARM_THROUGHPUT_MEMBERS.filter((m) => spec?.[m] !== void 0).map((m) => `${m}=${spec?.[m]}`).join(", ");
48862
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.`);
48863
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
+ }
48864
49071
  async addReplica(tableName, replica, region, logicalId, billingMode, diagnostics, maskSecrets = (text) => text) {
48865
49072
  const create = { RegionName: region };
48866
49073
  const kmsMasterKeyId = readReplicaKmsMasterKeyId(replica);
@@ -49666,6 +49873,7 @@ var DynamoDBGlobalTableProvider = class {
49666
49873
  if (refusal === void 0 && !deepEqual(properties["StreamSpecification"], previousProperties["StreamSpecification"])) refusal = configStringRefusal(properties["StreamSpecification"], "StreamViewType", "NEW_AND_OLD_IMAGES", "AWS::DynamoDB::GlobalTable StreamSpecification");
49667
49874
  if (refusal === void 0 && (changed("SSESpecification") || !deepEqual(replicaKeyBlocks(properties), replicaKeyBlocks(previousProperties)))) refusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
49668
49875
  if (refusal === void 0 && changed("GlobalSecondaryIndexes")) refusal = globalSecondaryIndexesShapeDetail(properties["GlobalSecondaryIndexes"], maskSecrets);
49876
+ if (refusal === void 0 && changed("VectorIndexes")) refusal = vectorIndexesShapeDetail(properties["VectorIndexes"]);
49669
49877
  if (refusal === void 0) refusal = replicaSettingsRefusal(properties, previousProperties);
49670
49878
  if (refusal !== void 0) refuse(refusal);
49671
49879
  } else {
@@ -49678,6 +49886,15 @@ var DynamoDBGlobalTableProvider = class {
49678
49886
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49679
49887
  const describeResp = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
49680
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
+ }
49681
49898
  const extractLocalTags = (props) => {
49682
49899
  return localReplicaEntry(props, currentRegion)?.["Tags"];
49683
49900
  };
@@ -49711,6 +49928,10 @@ var DynamoDBGlobalTableProvider = class {
49711
49928
  const newBilling = billingUnusable ? oldBilling : requestedBilling;
49712
49929
  const onDemandCeilingLive = oldBilling === "PAY_PER_REQUEST" && newBilling === "PAY_PER_REQUEST";
49713
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
+ }
49714
49935
  const desiredCeilings = collectTableOnDemandCeilings(properties, currentRegion, diagnostics, maskSecrets);
49715
49936
  const flippingToProvisioned = oldBilling !== newBilling && newBilling === "PROVISIONED";
49716
49937
  if (flippingToProvisioned) derivePerCallProvisionedThroughput(properties, currentRegion, "seed", diagnostics, maskSecrets);
@@ -49828,7 +50049,7 @@ var DynamoDBGlobalTableProvider = class {
49828
50049
  if (flatChanged) {
49829
50050
  if (flatUpdate.DeletionProtectionEnabled !== void 0) markUnsettled("Replicas");
49830
50051
  if (flatUpdate.StreamSpecification !== void 0) markUnsettled("StreamSpecification");
49831
- if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings");
50052
+ if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
49832
50053
  await this.dynamoDBClient.send(new UpdateTableCommand(flatUpdate));
49833
50054
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49834
50055
  }
@@ -49884,7 +50105,7 @@ var DynamoDBGlobalTableProvider = class {
49884
50105
  }
49885
50106
  if (indexUpdates.length > 0) billingUpdate.GlobalSecondaryIndexUpdates = indexUpdates;
49886
50107
  }
49887
- markUnsettled("BillingMode", "WriteProvisionedThroughputSettings");
50108
+ markUnsettled("BillingMode", "WriteProvisionedThroughputSettings", TABLE_READ_PROVISIONED_KEY);
49888
50109
  if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) {
49889
50110
  markUnsettled("GlobalSecondaryIndexes");
49890
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)`);
@@ -49893,13 +50114,29 @@ var DynamoDBGlobalTableProvider = class {
49893
50114
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49894
50115
  }
49895
50116
  if (deferCeilingsPastFlip) {
49896
- markUnsettled("WriteOnDemandThroughputSettings");
50117
+ markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
49897
50118
  await this.dynamoDBClient.send(new UpdateTableCommand({
49898
50119
  TableName: physicalId,
49899
50120
  OnDemandThroughput: onDemandPayload
49900
50121
  }));
49901
50122
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49902
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
+ }
49903
50140
  const writeAutoScalingOld = (previousProperties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
49904
50141
  const writeAutoScalingNew = (properties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
49905
50142
  const effectiveNewAutoScaling = oldBilling === "PROVISIONED" && newBilling === "PAY_PER_REQUEST" ? void 0 : writeAutoScalingNew;
@@ -50106,6 +50343,19 @@ var DynamoDBGlobalTableProvider = class {
50106
50343
  }));
50107
50344
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
50108
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
+ }
50109
50359
  const skipAutoScalingForUnusableGsi = desiredGsiUnusable && newBilling !== "PAY_PER_REQUEST";
50110
50360
  const autoScalingMeaningfulForIndexes = (newBilling === "PROVISIONED" || oldBilling === "PROVISIONED") && !skipAutoScalingForUnusableGsi;
50111
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.`);
@@ -50516,11 +50766,13 @@ var DynamoDBGlobalTableProvider = class {
50516
50766
  const cause = regionErr instanceof Error ? regionErr : void 0;
50517
50767
  throw new ProvisioningError(`Could not resolve client region for DynamoDB GlobalTable ${logicalId} delete — would risk dropping the local replica`, resourceType, logicalId, physicalId, cause);
50518
50768
  }
50519
- let preDeleteIndexes;
50769
+ let preDeleteTable;
50770
+ let indexNoun;
50520
50771
  try {
50521
50772
  const describe = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
50522
50773
  const replicas = describe.Table?.Replicas ?? [];
50523
- preDeleteIndexes = describe.Table?.GlobalSecondaryIndexes;
50774
+ preDeleteTable = describe.Table;
50775
+ if ((describe.Table?.VectorIndexes ?? []).length > 0) indexNoun = TABLE_INDEX_NOUN;
50524
50776
  const tableIndexNames = (describe.Table?.GlobalSecondaryIndexes ?? []).map((gsi) => gsi.IndexName).filter((name) => typeof name === "string");
50525
50777
  for (const replica of replicas) {
50526
50778
  const region = replica.RegionName;
@@ -50556,8 +50808,8 @@ var DynamoDBGlobalTableProvider = class {
50556
50808
  }
50557
50809
  }
50558
50810
  try {
50559
- if (hasTransitionalIndex(preDeleteIndexes)) {
50560
- 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`);
50561
50813
  await this.waitForIndexesActive(physicalId, logicalId, {
50562
50814
  proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
50563
50815
  budget,
@@ -50568,6 +50820,7 @@ var DynamoDBGlobalTableProvider = class {
50568
50820
  logicalId,
50569
50821
  physicalId,
50570
50822
  typeLabel: "GlobalTable",
50823
+ ...indexNoun !== void 0 && { indexNoun },
50571
50824
  maxRetries: 8,
50572
50825
  logger: loopLogger,
50573
50826
  deleteTable: async () => {
@@ -50575,7 +50828,8 @@ var DynamoDBGlobalTableProvider = class {
50575
50828
  flip.deleteAccepted = true;
50576
50829
  },
50577
50830
  reArm: () => this.waitForIndexesActive(physicalId, logicalId, {
50578
- maxAttempts: 60,
50831
+ maxAttempts: 900,
50832
+ shortCapUnlessVectorBusy: 60,
50579
50833
  proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
50580
50834
  budget,
50581
50835
  ...context?.maskSecrets && { maskSecrets: context.maskSecrets }
@@ -50602,7 +50856,7 @@ var DynamoDBGlobalTableProvider = class {
50602
50856
  return;
50603
50857
  }
50604
50858
  const cause = error instanceof Error ? error : void 0;
50605
- 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);
50606
50860
  }
50607
50861
  }
50608
50862
  async isSameResource(journaledPhysicalId, record, resourceType, context) {
@@ -50671,7 +50925,7 @@ var DynamoDBGlobalTableProvider = class {
50671
50925
  out[name] = projectNamed(out[name], recordedProperties?.[name], desiredProperties?.[name], name, unnamed, attemptedItems);
50672
50926
  }
50673
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'.`);
50674
- 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).`);
50675
50929
  return out;
50676
50930
  }
50677
50931
  async unsettledInTransition(physicalId, _logicalId, _resourceType, names) {
@@ -50688,6 +50942,8 @@ var DynamoDBGlobalTableProvider = class {
50688
50942
  }
50689
50943
  if (names.has("Replicas") && (table?.Replicas ?? []).some((replica) => replica.ReplicaStatus !== void 0 && MOVING.has(replica.ReplicaStatus))) moving.add("Replicas");
50690
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");
50691
50947
  const sse = table?.SSEDescription?.Status;
50692
50948
  if (names.has("SSESpecification") && (sse === "ENABLING" || sse === "DISABLING" || sse === "UPDATING")) moving.add("SSESpecification");
50693
50949
  if (names.has("TimeToLiveSpecification")) {
@@ -50823,6 +51079,21 @@ var DynamoDBGlobalTableProvider = class {
50823
51079
  else result["WriteProvisionedThroughputSettings"] = {};
50824
51080
  }
50825
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 };
50826
51097
  try {
50827
51098
  const ttlDesc = (await this.dynamoDBClient.send(new DescribeTimeToLiveCommand({ TableName: tableNameForSubs }))).TimeToLiveDescription;
50828
51099
  const ttlStatus = ttlDesc?.TimeToLiveStatus;
@@ -50959,11 +51230,19 @@ var DynamoDBGlobalTableProvider = class {
50959
51230
  return null;
50960
51231
  }
50961
51232
  }
50962
- getDriftUnknownPaths(_resourceType) {
50963
- 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;
50964
51239
  }
50965
51240
  getDriftUnorderedPaths(_resourceType) {
50966
- return ["AttributeDefinitions", "Replicas[]"];
51241
+ return [
51242
+ "AttributeDefinitions",
51243
+ "Replicas[]",
51244
+ "VectorIndexes"
51245
+ ];
50967
51246
  }
50968
51247
  canonicalizeDriftProperties(resourceType, properties) {
50969
51248
  if (resourceType !== "AWS::DynamoDB::GlobalTable") return properties;
@@ -51059,7 +51338,7 @@ var DynamoDBGlobalTableProvider = class {
51059
51338
  const response = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
51060
51339
  if (response.Table?.TableStatus === "ACTIVE") {
51061
51340
  tableReachedActive = true;
51062
- if (!hasTransitionalIndex(response.Table?.GlobalSecondaryIndexes)) return;
51341
+ if (!hasTransitionalTableIndex(response.Table)) return;
51063
51342
  }
51064
51343
  await new Promise((resolve) => setTimeout(resolve, 1e3));
51065
51344
  }
@@ -51078,6 +51357,7 @@ var DynamoDBGlobalTableProvider = class {
51078
51357
  logger: maskedLogger(this.logger, opts?.maskSecrets, tableName),
51079
51358
  describeTable: () => this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName })),
51080
51359
  maxAttempts: gateWait.grantedPolls,
51360
+ ...opts?.shortCapUnlessVectorBusy !== void 0 && { shortCapUnlessVectorBusy: opts.shortCapUnlessVectorBusy },
51081
51361
  budgetWait: gateWait,
51082
51362
  proceedNote: opts?.proceedNote ?? "auto-scaling registration for a still-building index may have been skipped. The next deploy re-asserts it."
51083
51363
  });
@@ -51295,6 +51575,8 @@ const REPLICA_SETTING_MEMBERS = [
51295
51575
  "GlobalSecondaryIndexes"
51296
51576
  ];
51297
51577
  const REPLICATION_MODE_KEY = "GlobalTableSettingsReplicationMode";
51578
+ const TABLE_READ_ON_DEMAND_KEY = "ReadOnDemandThroughputSettings";
51579
+ const TABLE_READ_PROVISIONED_KEY = "ReadProvisionedThroughputSettings";
51298
51580
  function readReplicationMode(properties) {
51299
51581
  const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51300
51582
  const declared = replicas.map((entry) => asRecord(entry)?.[REPLICATION_MODE_KEY]).filter((value) => value !== void 0 && value !== null);
@@ -51330,9 +51612,35 @@ function replicationModeCorrection(properties, previousProperties, liveMode) {
51330
51612
  if (replicationModeUpdate(properties, previousProperties) !== void 0) return void 0;
51331
51613
  return (liveMode ?? "DISABLED") === want.mode ? void 0 : want.mode;
51332
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
+ ];
51333
51635
  function replicaSettingsRefusal(properties, previousProperties, currentRegion) {
51334
51636
  const mode = readReplicationMode(properties);
51335
- 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`;
51336
51644
  const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
51337
51645
  const crossRegionCreate = previousProperties === void 0 && desired.some((entry) => {
51338
51646
  const region = asRecord(entry)?.["Region"];
@@ -51403,11 +51711,12 @@ function extractLocalTableClass(props, region) {
51403
51711
  }
51404
51712
  function derivePerCallProvisionedThroughput(properties, region, source = "min", diagnostics, maskSecrets = (text) => text) {
51405
51713
  const rawReplicas = properties["Replicas"];
51406
- 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];
51407
51716
  const rawWrite = properties["WriteProvisionedThroughputSettings"];
51408
51717
  const read = deriveReadCapacityUnits(asRecord(rawRead), source);
51409
51718
  const write = deriveWriteCapacityUnits(asRecord(rawWrite), source);
51410
- 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);
51411
51720
  if (write === void 0) reportUnresolvedProvisionedCapacity(rawWrite, "Write", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: "WriteProvisionedThroughputSettings" }, maskSecrets);
51412
51721
  return {
51413
51722
  ReadCapacityUnits: read ?? DEFAULT_CAPACITY_UNITS,
@@ -51433,6 +51742,7 @@ function autoScalingResourceId(tableName, indexName) {
51433
51742
  const autoScalingRetryDelays = {};
51434
51743
  const REPLICA_GONE_WAIT_ATTEMPTS = 600;
51435
51744
  const GLOBAL_TABLE_ACTIVE_WAIT_ATTEMPTS = 600;
51745
+ const VECTOR_INDEX_SETTLE_ATTEMPTS = 1800;
51436
51746
  const TABLE_GONE_WAIT_ATTEMPTS = 600;
51437
51747
  const deleteTableRetryDelays = {};
51438
51748
  const DESCRIBE_SCALABLE_TARGETS_BATCH = 50;
@@ -51554,6 +51864,8 @@ function collectDesiredKeyAttributeNames(properties, options) {
51554
51864
  if (!Array.isArray(indexes)) continue;
51555
51865
  for (const index of indexes) addKeySchema(asRecord(index)?.["KeySchema"]);
51556
51866
  }
51867
+ const vectorIndexes = properties["VectorIndexes"];
51868
+ if (Array.isArray(vectorIndexes)) for (const index of vectorIndexes) addKeySchema(asRecord(index)?.["SearchSchema"]);
51557
51869
  return names;
51558
51870
  }
51559
51871
  function asRecord(value) {
@@ -51798,6 +52110,7 @@ function toSdkGlobalSecondaryIndexes(properties, region, billingMode, source = "
51798
52110
  function stripProvisionedCapacityKeys(properties) {
51799
52111
  const result = { ...properties };
51800
52112
  delete result["WriteProvisionedThroughputSettings"];
52113
+ delete result[TABLE_READ_PROVISIONED_KEY];
51801
52114
  const indexes = result["GlobalSecondaryIndexes"];
51802
52115
  if (Array.isArray(indexes)) result["GlobalSecondaryIndexes"] = indexes.map((entry) => {
51803
52116
  const gsi = asRecord(entry);
@@ -51837,7 +52150,7 @@ function stripProvisionedCapacityKeys(properties) {
51837
52150
  return result;
51838
52151
  }
51839
52152
  const PROVISIONED_ONLY_CAPACITY_KEYS = {
51840
- table: ["WriteProvisionedThroughputSettings"],
52153
+ table: ["WriteProvisionedThroughputSettings", "ReadProvisionedThroughputSettings"],
51841
52154
  index: [
51842
52155
  "WriteProvisionedThroughputSettings",
51843
52156
  "ReadProvisionedThroughputSettings",
@@ -51847,7 +52160,7 @@ const PROVISIONED_ONLY_CAPACITY_KEYS = {
51847
52160
  replicaIndex: ["ReadProvisionedThroughputSettings", "ProvisionedThroughputOverride"]
51848
52161
  };
51849
52162
  const ON_DEMAND_ONLY_CAPACITY_KEYS = {
51850
- table: ["WriteOnDemandThroughputSettings"],
52163
+ table: ["WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings"],
51851
52164
  index: [
51852
52165
  "WriteOnDemandThroughputSettings",
51853
52166
  "ReadOnDemandThroughputSettings",
@@ -52074,11 +52387,12 @@ function toSdkReplicaThroughputOverrides(cfn, billingMode, diagnostics, context,
52074
52387
  function collectTableOnDemandCeilings(properties, region, diagnostics, maskSecrets = (text) => text) {
52075
52388
  const writeBlock = properties["WriteOnDemandThroughputSettings"];
52076
52389
  const replicas = properties["Replicas"];
52077
- 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];
52078
52392
  const rawRead = asRecord(readBlock)?.["MaxReadRequestUnits"];
52079
52393
  const rawWrite = asRecord(writeBlock)?.["MaxWriteRequestUnits"];
52080
52394
  reportUnresolvedRawMember(rawRead, diagnostics, {
52081
- blockName: "Replicas[local].ReadOnDemandThroughputSettings",
52395
+ blockName: replicaReadBlock !== void 0 ? "Replicas[local].ReadOnDemandThroughputSettings" : TABLE_READ_ON_DEMAND_KEY,
52082
52396
  member: "MaxReadRequestUnits"
52083
52397
  }, maskSecrets);
52084
52398
  reportUnresolvedRawMember(rawWrite, diagnostics, {
@@ -55592,5 +55906,5 @@ function sameGenerationClaimsOf(record) {
55592
55906
  }
55593
55907
 
55594
55908
  //#endregion
55595
- 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 };
55596
- //# sourceMappingURL=deploy-engine-CwpnkMCZ.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