@go-to-k/cdkd 0.311.0 → 0.313.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/README.md +2 -2
  2. package/dist/{asg-provider-CIg_guZ-.js → asg-provider-CqPtIngx.js} +3 -3
  3. package/dist/{asg-provider-CIg_guZ-.js.map → asg-provider-CqPtIngx.js.map} +1 -1
  4. package/dist/cli.js +2 -2
  5. package/dist/{created-resource-sink-DlzoIY-1.js → created-resource-sink-BT2Dfnpt.js} +2 -2
  6. package/dist/{created-resource-sink-DlzoIY-1.js.map → created-resource-sink-BT2Dfnpt.js.map} +1 -1
  7. package/dist/{db-instance-modify-retry-1y0kIPCO.js → db-instance-modify-retry-D7wXWxVo.js} +2 -2
  8. package/dist/{db-instance-modify-retry-1y0kIPCO.js.map → db-instance-modify-retry-D7wXWxVo.js.map} +1 -1
  9. package/dist/{deploy-engine-BF5exXUb.js → deploy-engine-CwpnkMCZ.js} +419 -100
  10. package/dist/deploy-engine-CwpnkMCZ.js.map +1 -0
  11. package/dist/{iam-role-provider-qvhlVnrn.js → iam-role-provider-ARR3C50J.js} +3 -3
  12. package/dist/{iam-role-provider-qvhlVnrn.js.map → iam-role-provider-ARR3C50J.js.map} +1 -1
  13. package/dist/index.js +3 -3
  14. package/dist/{neptune-provider-D9ac71Ca.js → neptune-provider-DfPOAG0q.js} +53 -6
  15. package/dist/neptune-provider-DfPOAG0q.js.map +1 -0
  16. package/dist/{program-DbnTHlwR.js → program-CMP_YVVn.js} +16 -10
  17. package/dist/program-CMP_YVVn.js.map +1 -0
  18. package/dist/{provider-classes-DktsDsTf.js → provider-classes-DefoNqY7.js} +1128 -107
  19. package/dist/provider-classes-DefoNqY7.js.map +1 -0
  20. package/dist/{rds-provider-0LUsn9Wl.js → rds-provider-Dn-7U1CR.js} +160 -16
  21. package/dist/rds-provider-Dn-7U1CR.js.map +1 -0
  22. package/dist/{version-BA4rBBLp.js → version-CsWxTnUg.js} +2 -2
  23. package/dist/{version-BA4rBBLp.js.map → version-CsWxTnUg.js.map} +1 -1
  24. package/package.json +2 -2
  25. package/dist/deploy-engine-BF5exXUb.js.map +0 -1
  26. package/dist/neptune-provider-D9ac71Ca.js.map +0 -1
  27. package/dist/program-DbnTHlwR.js.map +0 -1
  28. package/dist/provider-classes-DktsDsTf.js.map +0 -1
  29. package/dist/rds-provider-0LUsn9Wl.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
2
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 { $ as observeThenDisableProtection, $n as shellBoundedDisplay, $t as recoveryCommandFlags, A as RESOURCE_NOT_FOUND, An as ProvisioningError, Ar as wrapMaskedAwsError, At as isSecretDerivedValue, B as refusalTypeShown, Bn as normalizeAwsError, Bt as isAuxiliaryFailure, Cr as isTransientServerError, Ct as logicalIdShown, Dn as MalformedProducerRecordRefusalError, Dr as isThrottlingError, Dt as stateOrphanRecordRemedy, En as MacroExpansionError, Er as isMarkedNonRetryable, Et as segmentAfterAnchor, Fn as StateError, Ft as carryCreatedBeforeFailure, G as compensateProtectionFlip, Gn as UNSHOWABLE_VALUE, Gt as replayMadeAnotherResource, H as resolveExplicitPhysicalId, Ht as markAuxiliaryFailure, In as SynthesisError, Jn as isInertUnquoted, Kn as commandHole, Kt as UNREPRODUCIBLE_LOCK_CLAUSE, L as isQuotableImportValue, Lt as createdBeforeFailure, M as markNotGone, Mn as ResourceUpdateNotSupportedError, Mt as maskerOrIdentity, N as assertRegionMatch, Nt as withDerivedNameMasks, Or as markNonRetryable, Ot as createMaskedLogSinks, Pt as RETRY_AUXILIARY_OWNER, Qn as quotedOrDescribed, Qt as formatLockOwner, R as normalizeAwsTagsToCfn, Rt as createdResourceIdentityBeforeFailure, Sn as IntrinsicResolutionRefusalError, Sr as isRetryableTransientError, Tn as LockError, Tt as resourceTypeShown, Un as SHELL_ACTIVE, Ut as markCreatedBeforeFailure, Vt as isAuxiliaryMarkOf, W as ProtectionFlipRegistry, Wn as SHELL_ACTIVE_WHY, Xn as physicalIdShownBesideCommand, Xt as formatLockExpiry, Yn as pasteableCommand, Z as isTerminalDeleteFailure, Zn as plainOrDescribed, Zt as formatLockOperation, _ as removalWarning, _n as CrossAccountSecretRefusalError, _r as formatRetryClassificationSignals, _t as isInterruptedWaitError, a as retractCreatedResource, ar as hasReplayMayCollide, at as DELETION_PROTECTION_DOC_POINTER, bn as DeploymentNotApprovedError, cn as withPasteableAwsProfile, cr as isRecreateRetryableError, dn as clientDefaultsFor, dr as markReplayMayCollide, en as sanitizeRecoveryValue, er as shellQuote, et as protectionFlipKey, fn as credentialFingerprint, fr as relayedNameCollision, ft as ElapsedBudgetRegistry, g as prepareRemovalForUpdate, hn as CdkdError, i as reportCreatedResource, ir as isUpdateUnsupportedError, j as isMarkedNotGone, jn as ResourceTimeoutError, jt as maskDeep, k as withoutServerErrorRetries, kr as markRedactedCause, kt as createMaskedRetryLogger, l as holdsSecretDerivedEntry, ln as ambientClientDefaults, lr as isReplayedNameCollisionFrom, lt as pasteableAwsCommand, m as withUnchangedSecretPrincipalLists, mn as AssetError, mr as stripControlChars, n as clearCreatedReport, nn as DEFAULT_STATE_PREFIX, nt as runDeleteAttempt, on as producerRecordKey, or as isNameCollisionErrorFrom, pn as AccountIdUnavailableError, pr as escapeRegExp$3, pt as monotonicNowMs, q as deleteWithProtectionCompensation, qt as buildForceUnlockCommand, r as collectCreatedResources, rn as injectiveKey, sr as isNameCooldownError, t as CreatedResourceSink, tn as CUSTOM_RESOURCE_RESPONSE_PREFIX, tr as withheldTargetClause, un as ambientCredentialConfig, ut as protectedReplacementAdvice, vn as DependencyError, vr as isAmbiguousCcHandlerErrorCode, vt as startInterruptWatch, wr as retryClassificationText, xn as DynamicReferenceRegionAmbiguousError, xr as isIamPropagationError, xt as compositeIdSeparatorRefusal, y as withoutInjectedRemovals, yr as isAmbiguousOutcomeError, yt as canonicalizeRoute53QueryName, z as quotedRemedyLogicalId, zn as isSoftAbort, zt as hasCreatedBeforeFailure } from "./created-resource-sink-DlzoIY-1.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";
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-BA4rBBLp.js";
5
+ import { t as getCdkdVersion } from "./version-CsWxTnUg.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";
@@ -12697,6 +12697,20 @@ function elastiCachePreferredAvailabilityZonesMovedToDisjoint(oldValue, newValue
12697
12697
  if (![...oldValue, ...newValue].every((z) => typeof z === "string")) return false;
12698
12698
  return !newValue.some((z) => oldValue.includes(z));
12699
12699
  }
12700
+ function elastiCacheLeftSingleAzWithoutZones(siblings) {
12701
+ if (siblings === void 0) return false;
12702
+ const { oldProperties: prev, newProperties: next } = siblings;
12703
+ return prev["Engine"] === "memcached" && next["Engine"] === "memcached" && prev["PreferredAvailabilityZone"] == null && next["PreferredAvailabilityZone"] == null && next["PreferredAvailabilityZones"] == null && (next["AZMode"] == null || next["AZMode"] === "single-az");
12704
+ }
12705
+ function elastiCacheAzModeRemovedFromSingleAz(oldValue, newValue, siblings) {
12706
+ return oldValue === "single-az" && newValue == null && elastiCacheLeftSingleAzWithoutZones(siblings);
12707
+ }
12708
+ function elastiCachePreferredAvailabilityZonesRemovedFromSingleAz(oldValue, newValue, siblings) {
12709
+ return Array.isArray(oldValue) && oldValue.length > 0 && newValue == null && siblings?.oldProperties["AZMode"] === "single-az" && elastiCacheLeftSingleAzWithoutZones(siblings);
12710
+ }
12711
+ function elastiCachePreferredAvailabilityZonesReplaced(oldValue, newValue, siblings) {
12712
+ return elastiCachePreferredAvailabilityZonesMovedToDisjoint(oldValue, newValue) || elastiCachePreferredAvailabilityZonesRemovedFromSingleAz(oldValue, newValue, siblings);
12713
+ }
12700
12714
  function emrClusterInstancesReplaced(oldValue, newValue) {
12701
12715
  if (oldValue === void 0 && newValue === void 0) return true;
12702
12716
  return !isDeepStrictEqual(emrInstancesReplacingPart(oldValue), emrInstancesReplacingPart(newValue));
@@ -13031,13 +13045,23 @@ var ReplacementRulesRegistry = class {
13031
13045
  this.rules.set("AWS::RDS::DBProxy", { replacementProperties: /* @__PURE__ */ new Set([
13032
13046
  "DBProxyName",
13033
13047
  "EngineFamily",
13034
- "VpcSubnetIds"
13048
+ "VpcSubnetIds",
13049
+ "EndpointNetworkType",
13050
+ "TargetConnectionNetworkType"
13035
13051
  ]) });
13036
13052
  this.rules.set("AWS::RDS::DBProxyEndpoint", { replacementProperties: /* @__PURE__ */ new Set([
13037
13053
  "DBProxyName",
13038
13054
  "DBProxyEndpointName",
13039
13055
  "VpcSubnetIds",
13040
- "TargetRole"
13056
+ "TargetRole",
13057
+ "EndpointNetworkType"
13058
+ ]) });
13059
+ this.rules.set("AWS::S3Tables::Table", { replacementProperties: /* @__PURE__ */ new Set([
13060
+ "TableBucketARN",
13061
+ "OpenTableFormat",
13062
+ "IcebergMetadata",
13063
+ "StorageClassConfiguration",
13064
+ "WithoutMetadata"
13041
13065
  ]) });
13042
13066
  this.rules.set("AWS::RDS::DBProxyTargetGroup", { replacementProperties: /* @__PURE__ */ new Set(["DBProxyName", "TargetGroupName"]) });
13043
13067
  this.rules.set("AWS::EC2::VPC", {
@@ -13115,7 +13139,7 @@ var ReplacementRulesRegistry = class {
13115
13139
  });
13116
13140
  this.rules.set("AWS::ElastiCache::CacheCluster", {
13117
13141
  replacementProperties: /* @__PURE__ */ new Set(),
13118
- conditionalReplacements: /* @__PURE__ */ new Map([["PreferredAvailabilityZones", elastiCachePreferredAvailabilityZonesMovedToDisjoint]])
13142
+ conditionalReplacements: /* @__PURE__ */ new Map([["AZMode", elastiCacheAzModeRemovedFromSingleAz], ["PreferredAvailabilityZones", elastiCachePreferredAvailabilityZonesReplaced]])
13119
13143
  });
13120
13144
  this.rules.set("AWS::EMR::Cluster", {
13121
13145
  replacementProperties: /* @__PURE__ */ new Set(),
@@ -13935,7 +13959,8 @@ const CREATE_ONLY_PATHS_SNAPSHOT = /* @__PURE__ */ new Map([
13935
13959
  ["SourceDbClusterResourceId"],
13936
13960
  ["SourceRegion"],
13937
13961
  ["StorageEncrypted"],
13938
- ["UseLatestRestorableTime"]
13962
+ ["UseLatestRestorableTime"],
13963
+ ["WithExpressConfiguration"]
13939
13964
  ]],
13940
13965
  ["AWS::RDS::DBInstance", [
13941
13966
  ["BackupTarget"],
@@ -16508,7 +16533,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16508
16533
  ]),
16509
16534
  silentDrop: /* @__PURE__ */ new Map([["Triggers", "not yet implemented by cdkd"]]),
16510
16535
  createOnlyDrops: /* @__PURE__ */ new Set(),
16511
- readOnly: /* @__PURE__ */ new Set(["Arn", "Id"]),
16536
+ readOnly: /* @__PURE__ */ new Set(["Arn"]),
16512
16537
  ccRouteUnavailable: true
16513
16538
  }],
16514
16539
  ["AWS::CodeCommit::Repository", {
@@ -16638,7 +16663,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16638
16663
  "ClusterResourceId",
16639
16664
  "Endpoint",
16640
16665
  "Id",
16641
- "ReadEndpoint"
16666
+ "ReadEndpoint",
16667
+ "ServerlessV2PlatformVersion"
16642
16668
  ]),
16643
16669
  ccRouteUnavailable: true
16644
16670
  }],
@@ -16700,6 +16726,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16700
16726
  ["MultiRegionConsistency", "not yet implemented by cdkd"],
16701
16727
  ["ReadOnDemandThroughputSettings", "not yet implemented by cdkd"],
16702
16728
  ["ReadProvisionedThroughputSettings", "not yet implemented by cdkd"],
16729
+ ["TableType", "not yet implemented by cdkd"],
16703
16730
  ["VectorIndexes", "not yet implemented by cdkd"],
16704
16731
  ["WarmThroughput", "not yet implemented by cdkd"]
16705
16732
  ]),
@@ -16731,9 +16758,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16731
16758
  "TableName",
16732
16759
  "Tags",
16733
16760
  "TimeToLiveSpecification",
16761
+ "VectorIndexes",
16734
16762
  "WarmThroughput"
16735
16763
  ]),
16736
- silentDrop: /* @__PURE__ */ new Map([["ImportSourceSpecification", "S3 import uses the separate ImportTable API (not CreateTable) and is create-only with no readback; deferred to a dedicated import-from-S3 PR"], ["VectorIndexes", "not yet implemented by cdkd"]]),
16764
+ silentDrop: /* @__PURE__ */ new Map([["ImportSourceSpecification", "S3 import uses the separate ImportTable API (not CreateTable) and is create-only with no readback; deferred to a dedicated import-from-S3 PR"]]),
16737
16765
  createOnlyDrops: /* @__PURE__ */ new Set(["ImportSourceSpecification"]),
16738
16766
  readOnly: /* @__PURE__ */ new Set(["Arn", "StreamArn"]),
16739
16767
  ccRouteUnavailable: false
@@ -17101,7 +17129,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
17101
17129
  "VolumeConfigurations",
17102
17130
  "VpcLatticeConfigurations"
17103
17131
  ]),
17104
- silentDrop: /* @__PURE__ */ new Map(),
17132
+ silentDrop: /* @__PURE__ */ new Map([["GatewayConnectors", "not yet implemented by cdkd"]]),
17105
17133
  createOnlyDrops: /* @__PURE__ */ new Set(),
17106
17134
  readOnly: /* @__PURE__ */ new Set(["Name", "ServiceArn"]),
17107
17135
  ccRouteUnavailable: false
@@ -18180,7 +18208,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18180
18208
  ["SourceDbClusterResourceId", "not yet implemented by cdkd"],
18181
18209
  ["SourceRegion", "not yet implemented by cdkd"],
18182
18210
  ["StorageType", "not yet implemented by cdkd"],
18183
- ["UseLatestRestorableTime", "not yet implemented by cdkd"]
18211
+ ["UseLatestRestorableTime", "not yet implemented by cdkd"],
18212
+ ["WithExpressConfiguration", "not yet implemented by cdkd"]
18184
18213
  ]),
18185
18214
  createOnlyDrops: /* @__PURE__ */ new Set([
18186
18215
  "ClusterScalabilityType",
@@ -18192,7 +18221,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18192
18221
  "SourceDBClusterIdentifier",
18193
18222
  "SourceDbClusterResourceId",
18194
18223
  "SourceRegion",
18195
- "UseLatestRestorableTime"
18224
+ "UseLatestRestorableTime",
18225
+ "WithExpressConfiguration"
18196
18226
  ]),
18197
18227
  readOnly: /* @__PURE__ */ new Set([
18198
18228
  "DBClusterArn",
@@ -18207,24 +18237,39 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18207
18237
  ["AWS::RDS::DBInstance", {
18208
18238
  handled: /* @__PURE__ */ new Set([
18209
18239
  "AllocatedStorage",
18240
+ "AutoMinorVersionUpgrade",
18241
+ "BackupRetentionPeriod",
18242
+ "CACertificateIdentifier",
18243
+ "CopyTagsToSnapshot",
18210
18244
  "DBClusterIdentifier",
18211
18245
  "DBInstanceClass",
18212
18246
  "DBInstanceIdentifier",
18213
18247
  "DBSubnetGroupName",
18214
18248
  "DeletionProtection",
18215
18249
  "EnableIAMDatabaseAuthentication",
18250
+ "EnablePerformanceInsights",
18216
18251
  "Engine",
18217
18252
  "EngineVersion",
18253
+ "Iops",
18218
18254
  "KmsKeyId",
18219
18255
  "ManageMasterUserPassword",
18220
18256
  "MasterUsername",
18221
18257
  "MasterUserPassword",
18222
18258
  "MasterUserSecret",
18259
+ "MaxAllocatedStorage",
18223
18260
  "MonitoringInterval",
18224
18261
  "MonitoringRoleArn",
18262
+ "MultiAZ",
18263
+ "OptionGroupName",
18264
+ "PerformanceInsightsKMSKeyId",
18265
+ "PerformanceInsightsRetentionPeriod",
18225
18266
  "Port",
18267
+ "PreferredBackupWindow",
18268
+ "PreferredMaintenanceWindow",
18226
18269
  "PubliclyAccessible",
18227
18270
  "StorageEncrypted",
18271
+ "StorageThroughput",
18272
+ "StorageType",
18228
18273
  "Tags",
18229
18274
  "VPCSecurityGroups"
18230
18275
  ]),
@@ -18236,14 +18281,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18236
18281
  ["AutomaticBackupReplicationKmsKeyId", "not yet implemented by cdkd"],
18237
18282
  ["AutomaticBackupReplicationRegion", "not yet implemented by cdkd"],
18238
18283
  ["AutomaticBackupReplicationRetentionPeriod", "not yet implemented by cdkd"],
18239
- ["AutoMinorVersionUpgrade", "not yet implemented by cdkd"],
18240
18284
  ["AvailabilityZone", "not yet implemented by cdkd"],
18241
- ["BackupRetentionPeriod", "not yet implemented by cdkd"],
18242
18285
  ["BackupTarget", "not yet implemented by cdkd"],
18243
- ["CACertificateIdentifier", "not yet implemented by cdkd"],
18244
18286
  ["CertificateRotationRestart", "not yet implemented by cdkd"],
18245
18287
  ["CharacterSetName", "not yet implemented by cdkd"],
18246
- ["CopyTagsToSnapshot", "not yet implemented by cdkd"],
18247
18288
  ["CustomIAMInstanceProfile", "not yet implemented by cdkd"],
18248
18289
  ["DatabaseInsightsMode", "not yet implemented by cdkd"],
18249
18290
  ["DBClusterSnapshotIdentifier", "not yet implemented by cdkd"],
@@ -18261,20 +18302,11 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18261
18302
  ["DomainIAMRoleName", "not yet implemented by cdkd"],
18262
18303
  ["DomainOu", "not yet implemented by cdkd"],
18263
18304
  ["EnableCloudwatchLogsExports", "not yet implemented by cdkd"],
18264
- ["EnablePerformanceInsights", "not yet implemented by cdkd"],
18265
18305
  ["EngineLifecycleSupport", "not yet implemented by cdkd"],
18266
- ["Iops", "not yet implemented by cdkd"],
18267
18306
  ["LicenseModel", "not yet implemented by cdkd"],
18268
18307
  ["MasterUserAuthenticationType", "not yet implemented by cdkd"],
18269
- ["MaxAllocatedStorage", "not yet implemented by cdkd"],
18270
- ["MultiAZ", "not yet implemented by cdkd"],
18271
18308
  ["NcharCharacterSetName", "not yet implemented by cdkd"],
18272
18309
  ["NetworkType", "not yet implemented by cdkd"],
18273
- ["OptionGroupName", "not yet implemented by cdkd"],
18274
- ["PerformanceInsightsKMSKeyId", "not yet implemented by cdkd"],
18275
- ["PerformanceInsightsRetentionPeriod", "not yet implemented by cdkd"],
18276
- ["PreferredBackupWindow", "not yet implemented by cdkd"],
18277
- ["PreferredMaintenanceWindow", "not yet implemented by cdkd"],
18278
18310
  ["ProcessorFeatures", "not yet implemented by cdkd"],
18279
18311
  ["PromotionTier", "not yet implemented by cdkd"],
18280
18312
  ["ReplicaMode", "not yet implemented by cdkd"],
@@ -18284,8 +18316,6 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18284
18316
  ["SourceDBInstanceIdentifier", "not yet implemented by cdkd"],
18285
18317
  ["SourceDbiResourceId", "not yet implemented by cdkd"],
18286
18318
  ["SourceRegion", "not yet implemented by cdkd"],
18287
- ["StorageThroughput", "not yet implemented by cdkd"],
18288
- ["StorageType", "not yet implemented by cdkd"],
18289
18319
  ["TdeCredentialArn", "not yet implemented by cdkd"],
18290
18320
  ["TdeCredentialPassword", "not yet implemented by cdkd"],
18291
18321
  ["Timezone", "not yet implemented by cdkd"],
@@ -18329,20 +18359,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18329
18359
  "Auth",
18330
18360
  "DBProxyName",
18331
18361
  "DebugLogging",
18362
+ "DefaultAuthScheme",
18363
+ "EndpointNetworkType",
18332
18364
  "EngineFamily",
18333
18365
  "IdleClientTimeout",
18334
18366
  "RequireTLS",
18335
18367
  "RoleArn",
18336
18368
  "Tags",
18369
+ "TargetConnectionNetworkType",
18337
18370
  "VpcSecurityGroupIds",
18338
18371
  "VpcSubnetIds"
18339
18372
  ]),
18340
- silentDrop: /* @__PURE__ */ new Map([
18341
- ["DefaultAuthScheme", "not yet implemented by cdkd"],
18342
- ["EndpointNetworkType", "not yet implemented by cdkd"],
18343
- ["TargetConnectionNetworkType", "not yet implemented by cdkd"]
18344
- ]),
18345
- createOnlyDrops: /* @__PURE__ */ new Set(["EndpointNetworkType", "TargetConnectionNetworkType"]),
18373
+ silentDrop: /* @__PURE__ */ new Map(),
18374
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18346
18375
  readOnly: /* @__PURE__ */ new Set([
18347
18376
  "DBProxyArn",
18348
18377
  "Endpoint",
@@ -18354,13 +18383,14 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18354
18383
  handled: /* @__PURE__ */ new Set([
18355
18384
  "DBProxyEndpointName",
18356
18385
  "DBProxyName",
18386
+ "EndpointNetworkType",
18357
18387
  "Tags",
18358
18388
  "TargetRole",
18359
18389
  "VpcSecurityGroupIds",
18360
18390
  "VpcSubnetIds"
18361
18391
  ]),
18362
- silentDrop: /* @__PURE__ */ new Map([["EndpointNetworkType", "not yet implemented by cdkd"]]),
18363
- createOnlyDrops: /* @__PURE__ */ new Set(["EndpointNetworkType"]),
18392
+ silentDrop: /* @__PURE__ */ new Map(),
18393
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18364
18394
  readOnly: /* @__PURE__ */ new Set([
18365
18395
  "DBProxyEndpointArn",
18366
18396
  "Endpoint",
@@ -18507,26 +18537,21 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18507
18537
  }],
18508
18538
  ["AWS::S3Tables::Table", {
18509
18539
  handled: /* @__PURE__ */ new Set([
18540
+ "Compaction",
18510
18541
  "Format",
18542
+ "IcebergMetadata",
18511
18543
  "Name",
18512
18544
  "Namespace",
18513
18545
  "OpenTableFormat",
18546
+ "SnapshotManagement",
18547
+ "StorageClassConfiguration",
18514
18548
  "TableBucketARN",
18515
18549
  "TableName",
18516
- "Tags"
18517
- ]),
18518
- silentDrop: /* @__PURE__ */ new Map([
18519
- ["Compaction", "not yet implemented by cdkd"],
18520
- ["IcebergMetadata", "not yet implemented by cdkd"],
18521
- ["SnapshotManagement", "not yet implemented by cdkd"],
18522
- ["StorageClassConfiguration", "not yet implemented by cdkd"],
18523
- ["WithoutMetadata", "not yet implemented by cdkd"]
18524
- ]),
18525
- createOnlyDrops: /* @__PURE__ */ new Set([
18526
- "IcebergMetadata",
18527
- "StorageClassConfiguration",
18550
+ "Tags",
18528
18551
  "WithoutMetadata"
18529
18552
  ]),
18553
+ silentDrop: /* @__PURE__ */ new Map(),
18554
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18530
18555
  readOnly: /* @__PURE__ */ new Set([
18531
18556
  "TableARN",
18532
18557
  "VersionToken",
@@ -18535,14 +18560,16 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18535
18560
  ccRouteUnavailable: false
18536
18561
  }],
18537
18562
  ["AWS::S3Tables::TableBucket", {
18538
- handled: /* @__PURE__ */ new Set(["TableBucketName", "Tags"]),
18539
- silentDrop: /* @__PURE__ */ new Map([
18540
- ["EncryptionConfiguration", "not yet implemented by cdkd"],
18541
- ["MetricsConfiguration", "not yet implemented by cdkd"],
18542
- ["ReplicationConfiguration", "not yet implemented by cdkd"],
18543
- ["StorageClassConfiguration", "not yet implemented by cdkd"],
18544
- ["UnreferencedFileRemoval", "not yet implemented by cdkd"]
18563
+ handled: /* @__PURE__ */ new Set([
18564
+ "EncryptionConfiguration",
18565
+ "MetricsConfiguration",
18566
+ "ReplicationConfiguration",
18567
+ "StorageClassConfiguration",
18568
+ "TableBucketName",
18569
+ "Tags",
18570
+ "UnreferencedFileRemoval"
18545
18571
  ]),
18572
+ silentDrop: /* @__PURE__ */ new Map(),
18546
18573
  createOnlyDrops: /* @__PURE__ */ new Set(),
18547
18574
  readOnly: /* @__PURE__ */ new Set(["TableBucketARN"]),
18548
18575
  ccRouteUnavailable: false
@@ -19133,7 +19160,8 @@ const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
19133
19160
  "AWS::WAFRegional::XssMatchSet",
19134
19161
  "AWS::Wisdom::Session",
19135
19162
  "AWS::WorkSpaces::WorkSpaceApplication",
19136
- "AWS::WorkSpaces::WorkspaceBundle"
19163
+ "AWS::WorkSpaces::WorkspaceBundle",
19164
+ "AWS::WorkSpaces::WorkspaceImage"
19137
19165
  ]);
19138
19166
 
19139
19167
  //#endregion
@@ -19256,21 +19284,39 @@ function excludeCreateOnly(resourceType, names) {
19256
19284
  return names.filter((property) => !createOnly.has(property));
19257
19285
  }
19258
19286
  function withoutUnwrittenSilentDropProperties(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence) {
19259
- const drops = findSilentDropProperties(resourceType, recordedProperties);
19260
- if (drops.length === 0) return recordedProperties;
19261
19287
  const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops;
19262
- const accepted = new Set(findAcceptedSilentDrops(resourceType, desiredProperties, allowedKeys, recordedProperties));
19263
- const removable = drops.map(({ property }) => property).filter((property) => createOnly?.has(property) !== true || evidence.has(property) && !accepted.has(property));
19288
+ const removable = findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly?.has(property) !== true).concat(evidenceNamedUnwritten(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence).filter((property) => desiredProperties === void 0 || !Object.hasOwn(desiredProperties, property) || askedUnchanged(recordedProperties, desiredProperties, property)));
19264
19289
  if (removable.length === 0) return recordedProperties;
19265
19290
  const narrowed = { ...recordedProperties };
19266
19291
  for (const property of removable) delete narrowed[property];
19267
19292
  return narrowed;
19268
19293
  }
19269
19294
  function findUnwrittenCreateOnlyDrops(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence) {
19270
- const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops;
19271
- if (createOnly === void 0 || createOnly.size === 0 || evidence.size === 0) return [];
19295
+ return evidenceNamedUnwritten(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence).filter((property) => Object.hasOwn(desiredProperties, property) && askedUnchanged(recordedProperties, desiredProperties, property));
19296
+ }
19297
+ function evidenceNamedUnwritten(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence) {
19298
+ if (evidence.size === 0) return [];
19299
+ const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops ?? /* @__PURE__ */ new Set();
19272
19300
  const accepted = new Set(findAcceptedSilentDrops(resourceType, desiredProperties, allowedKeys, recordedProperties));
19273
- return findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly.has(property) && evidence.has(property) && !accepted.has(property) && Object.hasOwn(desiredProperties, property) && sameJsonValue(recordedProperties[property], desiredProperties[property], "unchanged"));
19301
+ return [...findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly.has(property) && evidence.has(property) && !accepted.has(property)), ...findHandledUnwrittenCreateOnly(resourceType, recordedProperties, evidence)].sort((a, b) => a.localeCompare(b));
19302
+ }
19303
+ function askedUnchanged(recordedProperties, desiredProperties, property) {
19304
+ return sameJsonValue(recordedProperties[property], desiredProperties[property], "unchanged");
19305
+ }
19306
+ function findHandledUnwrittenCreateOnly(resourceType, recordedProperties, evidence) {
19307
+ if (evidence.size === 0) return [];
19308
+ const handled = getPropertyCoverage(resourceType)?.handled;
19309
+ if (handled === void 0) return [];
19310
+ const createOnlyRoots = new Set((CREATE_ONLY_PATHS_SNAPSHOT.get(resourceType) ?? []).filter((path) => path.length === 1).map((path) => path[0]));
19311
+ return [...evidence].filter((property) => handled.has(property) && createOnlyRoots.has(property) && Object.hasOwn(recordedProperties, property)).sort((a, b) => a.localeCompare(b));
19312
+ }
19313
+ function acceptedCreateOnlyDropsEvidence(recordedProperties, resourceType, provisionedBy, carried) {
19314
+ if (provisionedBy !== "sdk") return void 0;
19315
+ const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops ?? /* @__PURE__ */ new Set();
19316
+ const names = findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly.has(property) && (carried === void 0 || carried.has(property)));
19317
+ const handled = carried === void 0 ? [] : findHandledUnwrittenCreateOnly(resourceType, recordedProperties, carried);
19318
+ const all = [...names, ...handled].sort((a, b) => a.localeCompare(b));
19319
+ return all.length > 0 ? all : void 0;
19274
19320
  }
19275
19321
  function unwrittenCreateOnlyReplacement(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence, replacingPaths) {
19276
19322
  if (replacingPaths.length === 0) return [];
@@ -21110,6 +21156,9 @@ const REF_RETURNS_ARN_FROM_STATE = /* @__PURE__ */ new Map([
21110
21156
  ["AWS::AppSync::DataSource", ["DataSourceArn"]],
21111
21157
  ["AWS::AppSync::Resolver", ["ResolverArn"]]
21112
21158
  ]);
21159
+ function graphQLSchemaCfnId(physicalId) {
21160
+ return /^[a-z0-9]+$/.test(physicalId) ? `${physicalId}GraphQLSchema` : physicalId;
21161
+ }
21113
21162
  function isStalePlaceholderArnAttribute(resourceType, attributeName, value) {
21114
21163
  if (!REF_RETURNS_ARN_FROM_STATE.get(resourceType)?.includes(attributeName)) return false;
21115
21164
  return typeof value === "string" && isPlaceholderArn(value);
@@ -21190,6 +21239,7 @@ function lacksRecordedTableArn(resource) {
21190
21239
  }
21191
21240
  function cfnRefValueFromPhysicalId(resourceType, physicalId, stateLookup) {
21192
21241
  if (resourceType === "AWS::S3Tables::Table") return s3TablesTableRefFromPhysicalId(physicalId, stateLookup);
21242
+ if (resourceType === "AWS::AppSync::GraphQLSchema") return graphQLSchemaCfnId(physicalId);
21193
21243
  if (resourceType === "AWS::Glue::Table") {
21194
21244
  const tableName = glueTableRefFromPhysicalId(physicalId, stateLookup);
21195
21245
  if (tableName !== void 0) return tableName;
@@ -23959,6 +24009,7 @@ async function constructAttributeForAppTypes(resolver, resource, attributeName,
23959
24009
  case "ApiId": return physicalId;
23960
24010
  default: return guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context);
23961
24011
  }
24012
+ if (resourceType === "AWS::AppSync::GraphQLSchema" && attributeName === "Id") return graphQLSchemaCfnId(physicalId);
23962
24013
  if (resourceType === "AWS::ApiGatewayV2::Api") switch (attributeName) {
23963
24014
  case "ExecuteApiArn": return `arn:${partition}:execute-api:${region}:${accountId}:${physicalId}`;
23964
24015
  case "ApiId": return physicalId;
@@ -28740,7 +28791,7 @@ var CloudControlProvider = class {
28740
28791
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
28741
28792
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
28742
28793
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
28743
- const { ASGProvider } = await import("./asg-provider-CIg_guZ-.js");
28794
+ const { ASGProvider } = await import("./asg-provider-CqPtIngx.js");
28744
28795
  const delegateRegion = ambientRegion();
28745
28796
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
28746
28797
  if (asgProvider === void 0) {
@@ -28849,7 +28900,7 @@ var CloudControlProvider = class {
28849
28900
  const family = SDK_DELETE_FAMILIES.get(resourceType);
28850
28901
  const cached = this.sdkDeleteDelegates.get(family);
28851
28902
  if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
28852
- const provider = family === "rds" ? new (await (import("./rds-provider-0LUsn9Wl.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-D9ac71Ca.js"))).NeptuneProvider({ region: ccRegion });
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 });
28853
28904
  this.sdkDeleteDelegates.set(family, {
28854
28905
  region: ccRegion,
28855
28906
  provider
@@ -31661,6 +31712,7 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31661
31712
  ["Source.Auth", ["Type"]],
31662
31713
  ["Source.GitSubmodulesConfig", ["FetchSubmodules"]],
31663
31714
  ["Tags", ["Key", "Value"]],
31715
+ ["Triggers.FilterGroups", ["Pattern", "Type"]],
31664
31716
  ["Triggers.PullRequestBuildPolicy", ["RequiresCommentApproval"]],
31665
31717
  ["Triggers.ScopeConfiguration", ["Name"]]
31666
31718
  ])],
@@ -31839,6 +31891,7 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31839
31891
  ["DeploymentConfiguration.DeploymentCircuitBreaker.ThresholdConfiguration", ["Type", "Value"]],
31840
31892
  ["DeploymentConfiguration.LifecycleHooks", ["LifecycleStages"]],
31841
31893
  ["ForceNewDeployment", ["EnableForceNewDeployment"]],
31894
+ ["GatewayConnectors", ["PortName"]],
31842
31895
  ["LoadBalancers.AdvancedConfiguration", ["AlternateTargetGroupArn"]],
31843
31896
  ["Monitoring", ["MetricConfigurations"]],
31844
31897
  ["Monitoring.MetricConfigurations", ["MetricNames", "ResolutionSeconds"]],
@@ -31868,6 +31921,8 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31868
31921
  ["ContainerDefinitions.LogConfiguration", ["LogDriver"]],
31869
31922
  ["ContainerDefinitions.LogConfiguration.SecretOptions", ["Name", "ValueFrom"]],
31870
31923
  ["ContainerDefinitions.ResourceRequirements", ["Type"]],
31924
+ ["ContainerDefinitions.ResourceRequirements.SharingStrategy", ["NvidiaMps"]],
31925
+ ["ContainerDefinitions.ResourceRequirements.SharingStrategy.NvidiaMps", ["Memory"]],
31871
31926
  ["ContainerDefinitions.Secrets", ["Name", "ValueFrom"]],
31872
31927
  ["ContainerDefinitions.Ulimits", [
31873
31928
  "HardLimit",
@@ -32945,6 +33000,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
32945
33000
  ["AWS::CloudFront::OriginAccessControl", "{\"OriginAccessControlConfig\":\"object\"}"],
32946
33001
  ["AWS::CloudTrail::Trail", "{\"AdvancedEventSelectors\":\"array\",\"AdvancedEventSelectors[]\":\"object\",\"AdvancedEventSelectors[].FieldSelectors\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[]\":\"object\",\"AdvancedEventSelectors[].FieldSelectors[].EndsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].Equals\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotEndsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotEquals\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].NotStartsWith\":\"array\",\"AdvancedEventSelectors[].FieldSelectors[].StartsWith\":\"array\",\"AggregationConfigurations\":\"array\",\"AggregationConfigurations[]\":\"object\",\"AggregationConfigurations[].Templates\":\"array\",\"EventSelectors\":\"array\",\"EventSelectors[]\":\"object\",\"EventSelectors[].DataResources\":\"array\",\"EventSelectors[].DataResources[]\":\"object\",\"EventSelectors[].DataResources[].Values\":\"array\",\"EventSelectors[].ExcludeManagementEventSources\":\"array\",\"InsightSelectors\":\"array\",\"InsightSelectors[]\":\"object\",\"InsightSelectors[].EventCategories\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
32947
33002
  ["AWS::CloudWatch::Alarm", "{\"ActionConfiguration\":\"object\",\"ActionConfiguration.AlarmTagsPropagation\":\"object\",\"ActionConfiguration.AlarmTagsPropagation.ExcludedTagKeys\":\"array\",\"ActionConfiguration.AlarmTagsPropagation.IncludedTagKeys\":\"array\",\"AlarmActions\":\"array\",\"Dimensions\":\"array\",\"Dimensions[]\":\"object\",\"EvaluationCriteria\":\"object\",\"EvaluationCriteria.PromQLCriteria\":\"object\",\"EvaluationWindow\":\"object\",\"EvaluationWindow.SlidingWindow\":\"object\",\"EvaluationWindow.WallClockWindow\":\"object\",\"InsufficientDataActions\":\"array\",\"Metrics\":\"array\",\"Metrics[]\":\"object\",\"Metrics[].MetricStat\":\"object\",\"Metrics[].MetricStat.Metric\":\"object\",\"Metrics[].MetricStat.Metric.Dimensions\":\"array\",\"Metrics[].MetricStat.Metric.Dimensions[]\":\"object\",\"OKActions\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"WarmUpConfiguration\":\"object\"}"],
33003
+ ["AWS::CodeBuild::Project", "{\"Artifacts\":\"object\",\"BuildBatchConfig\":\"object\",\"BuildBatchConfig.Restrictions\":\"object\",\"BuildBatchConfig.Restrictions.ComputeTypesAllowed\":\"array\",\"BuildBatchConfig.Restrictions.FleetsAllowed\":\"array\",\"Cache\":\"object\",\"Cache.Modes\":\"array\",\"Environment\":\"object\",\"Environment.DockerServer\":\"object\",\"Environment.DockerServer.SecurityGroupIds\":\"array\",\"Environment.EnvironmentVariables\":\"array\",\"Environment.EnvironmentVariables[]\":\"object\",\"Environment.Fleet\":\"object\",\"Environment.RegistryCredential\":\"object\",\"FileSystemLocations\":\"array\",\"FileSystemLocations[]\":\"object\",\"LogsConfig\":\"object\",\"LogsConfig.CloudWatchLogs\":\"object\",\"LogsConfig.S3Logs\":\"object\",\"SecondaryArtifacts\":\"array\",\"SecondaryArtifacts[]\":\"object\",\"SecondarySourceVersions\":\"array\",\"SecondarySourceVersions[]\":\"object\",\"SecondarySources\":\"array\",\"SecondarySources[]\":\"object\",\"SecondarySources[].Auth\":\"object\",\"SecondarySources[].BuildStatusConfig\":\"object\",\"SecondarySources[].GitSubmodulesConfig\":\"object\",\"Source\":\"object\",\"Source.Auth\":\"object\",\"Source.BuildStatusConfig\":\"object\",\"Source.GitSubmodulesConfig\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Triggers\":\"object\",\"Triggers.FilterGroups\":\"array\",\"Triggers.FilterGroups[]\":\"array\",\"Triggers.FilterGroups[][]\":\"object\",\"Triggers.PullRequestBuildPolicy\":\"object\",\"Triggers.PullRequestBuildPolicy.ApproverRoles\":\"array\",\"Triggers.ScopeConfiguration\":\"object\",\"VpcConfig\":\"object\",\"VpcConfig.SecurityGroupIds\":\"array\",\"VpcConfig.Subnets\":\"array\"}"],
32948
33004
  ["AWS::CodeCommit::Repository", "{\"Code\":\"object\",\"Code.S3\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Triggers\":\"array\",\"Triggers[]\":\"object\",\"Triggers[].Branches\":\"array\",\"Triggers[].Events\":\"array\"}"],
32949
33005
  ["AWS::Cognito::UserPool", "{\"AccountRecoverySetting\":\"object\",\"AccountRecoverySetting.RecoveryMechanisms\":\"array\",\"AccountRecoverySetting.RecoveryMechanisms[]\":\"object\",\"AdminCreateUserConfig\":\"object\",\"AdminCreateUserConfig.InviteMessageTemplate\":\"object\",\"AliasAttributes\":\"array\",\"AutoVerifiedAttributes\":\"array\",\"DeviceConfiguration\":\"object\",\"EmailConfiguration\":\"object\",\"EnabledMfas\":\"array\",\"IssuerConfiguration\":\"object\",\"KeyConfiguration\":\"object\",\"LambdaConfig\":\"object\",\"LambdaConfig.CustomEmailSender\":\"object\",\"LambdaConfig.CustomSMSSender\":\"object\",\"LambdaConfig.InboundFederation\":\"object\",\"LambdaConfig.PreTokenGenerationConfig\":\"object\",\"Policies\":\"object\",\"Policies.PasswordPolicy\":\"object\",\"Policies.SignInPolicy\":\"object\",\"Policies.SignInPolicy.AllowedFirstAuthFactors\":\"array\",\"Schema\":\"array\",\"Schema[]\":\"object\",\"Schema[].NumberAttributeConstraints\":\"object\",\"Schema[].StringAttributeConstraints\":\"object\",\"SmsConfiguration\":\"object\",\"SmsConfiguration.EumsSms\":\"object\",\"UserAttributeUpdateSettings\":\"object\",\"UserAttributeUpdateSettings.AttributesRequireVerificationBeforeUpdate\":\"array\",\"UserPoolAddOns\":\"object\",\"UserPoolAddOns.AdvancedSecurityAdditionalFlows\":\"object\",\"UserPoolTags\":\"object\",\"UsernameAttributes\":\"array\",\"UsernameConfiguration\":\"object\",\"VerificationMessageTemplate\":\"object\"}"],
32950
33006
  ["AWS::DLM::LifecyclePolicy", "{\"CrossRegionCopyTargets\":\"array\",\"CrossRegionCopyTargets[]\":\"object\",\"Exclusions\":\"object\",\"Exclusions.ExcludeTags\":\"array\",\"Exclusions.ExcludeTags[]\":\"object\",\"Exclusions.ExcludeVolumeTypes\":\"array\",\"PolicyDetails\":\"object\",\"PolicyDetails.Actions\":\"array\",\"PolicyDetails.Actions[]\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy\":\"array\",\"PolicyDetails.Actions[].CrossRegionCopy[]\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy[].EncryptionConfiguration\":\"object\",\"PolicyDetails.Actions[].CrossRegionCopy[].RetainRule\":\"object\",\"PolicyDetails.CrossRegionCopyTargets\":\"array\",\"PolicyDetails.CrossRegionCopyTargets[]\":\"object\",\"PolicyDetails.EventSource\":\"object\",\"PolicyDetails.EventSource.Parameters\":\"object\",\"PolicyDetails.EventSource.Parameters.SnapshotOwner\":\"array\",\"PolicyDetails.Exclusions\":\"object\",\"PolicyDetails.Exclusions.ExcludeTags\":\"array\",\"PolicyDetails.Exclusions.ExcludeTags[]\":\"object\",\"PolicyDetails.Exclusions.ExcludeVolumeTypes\":\"array\",\"PolicyDetails.Parameters\":\"object\",\"PolicyDetails.Parameters.ExcludeDataVolumeTags\":\"array\",\"PolicyDetails.Parameters.ExcludeDataVolumeTags[]\":\"object\",\"PolicyDetails.ResourceLocations\":\"array\",\"PolicyDetails.ResourceTypes\":\"array\",\"PolicyDetails.Schedules\":\"array\",\"PolicyDetails.Schedules[]\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule.RetainRule\":\"object\",\"PolicyDetails.Schedules[].ArchiveRule.RetainRule.RetentionArchiveTier\":\"object\",\"PolicyDetails.Schedules[].CreateRule\":\"object\",\"PolicyDetails.Schedules[].CreateRule.Scripts\":\"array\",\"PolicyDetails.Schedules[].CreateRule.Scripts[]\":\"object\",\"PolicyDetails.Schedules[].CreateRule.Scripts[].Stages\":\"array\",\"PolicyDetails.Schedules[].CreateRule.Times\":\"array\",\"PolicyDetails.Schedules[].CrossRegionCopyRules\":\"array\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[]\":\"object\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[].DeprecateRule\":\"object\",\"PolicyDetails.Schedules[].CrossRegionCopyRules[].RetainRule\":\"object\",\"PolicyDetails.Schedules[].DeprecateRule\":\"object\",\"PolicyDetails.Schedules[].FastRestoreRule\":\"object\",\"PolicyDetails.Schedules[].FastRestoreRule.AvailabilityZoneIds\":\"array\",\"PolicyDetails.Schedules[].FastRestoreRule.AvailabilityZones\":\"array\",\"PolicyDetails.Schedules[].RetainRule\":\"object\",\"PolicyDetails.Schedules[].ShareRules\":\"array\",\"PolicyDetails.Schedules[].ShareRules[]\":\"object\",\"PolicyDetails.Schedules[].ShareRules[].TargetAccounts\":\"array\",\"PolicyDetails.Schedules[].TagsToAdd\":\"array\",\"PolicyDetails.Schedules[].TagsToAdd[]\":\"object\",\"PolicyDetails.Schedules[].VariableTags\":\"array\",\"PolicyDetails.Schedules[].VariableTags[]\":\"object\",\"PolicyDetails.TargetTags\":\"array\",\"PolicyDetails.TargetTags[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
@@ -32963,8 +33019,8 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
32963
33019
  ["AWS::EC2::VPC", "{\"CidrBlockAssociations\":\"array\",\"Ipv6CidrBlocks\":\"array\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"VpcEncryptionControl\":\"object\",\"VpcEncryptionControl.ResourceExclusions\":\"object\",\"VpcEncryptionControl.ResourceExclusions.EgressOnlyInternetGateway\":\"object\",\"VpcEncryptionControl.ResourceExclusions.ElasticFileSystem\":\"object\",\"VpcEncryptionControl.ResourceExclusions.InternetGateway\":\"object\",\"VpcEncryptionControl.ResourceExclusions.Lambda\":\"object\",\"VpcEncryptionControl.ResourceExclusions.NatGateway\":\"object\",\"VpcEncryptionControl.ResourceExclusions.VirtualPrivateGateway\":\"object\",\"VpcEncryptionControl.ResourceExclusions.VpcLattice\":\"object\",\"VpcEncryptionControl.ResourceExclusions.VpcPeering\":\"object\"}"],
32964
33020
  ["AWS::ECR::Repository", "{\"EncryptionConfiguration\":\"object\",\"ImageScanningConfiguration\":\"object\",\"ImageTagMutabilityExclusionFilters\":\"array\",\"ImageTagMutabilityExclusionFilters[]\":\"object\",\"LifecyclePolicy\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
32965
33021
  ["AWS::ECS::Cluster", "{\"CapacityProviders\":\"array\",\"ClusterSettings\":\"array\",\"ClusterSettings[]\":\"object\",\"Configuration\":\"object\",\"Configuration.ExecuteCommandConfiguration\":\"object\",\"Configuration.ExecuteCommandConfiguration.LogConfiguration\":\"object\",\"Configuration.ManagedStorageConfiguration\":\"object\",\"DefaultCapacityProviderStrategy\":\"array\",\"DefaultCapacityProviderStrategy[]\":\"object\",\"ServiceConnectDefaults\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
32966
- ["AWS::ECS::Service", "{\"CapacityProviderStrategy\":\"array\",\"CapacityProviderStrategy[]\":\"object\",\"DeploymentConfiguration\":\"object\",\"DeploymentConfiguration.Alarms\":\"object\",\"DeploymentConfiguration.Alarms.AlarmNames\":\"array\",\"DeploymentConfiguration.CanaryConfiguration\":\"object\",\"DeploymentConfiguration.DeploymentCircuitBreaker\":\"object\",\"DeploymentConfiguration.DeploymentCircuitBreaker.ThresholdConfiguration\":\"object\",\"DeploymentConfiguration.EarlySuccessCriteria\":\"object\",\"DeploymentConfiguration.LifecycleHooks\":\"array\",\"DeploymentConfiguration.LifecycleHooks[]\":\"object\",\"DeploymentConfiguration.LifecycleHooks[].LifecycleStages\":\"array\",\"DeploymentConfiguration.LifecycleHooks[].TimeoutConfiguration\":\"object\",\"DeploymentConfiguration.LinearConfiguration\":\"object\",\"DeploymentController\":\"object\",\"ForceNewDeployment\":\"object\",\"LoadBalancers\":\"array\",\"LoadBalancers[]\":\"object\",\"LoadBalancers[].AdvancedConfiguration\":\"object\",\"Monitoring\":\"object\",\"Monitoring.MetricConfigurations\":\"array\",\"Monitoring.MetricConfigurations[]\":\"object\",\"Monitoring.MetricConfigurations[].MetricNames\":\"array\",\"NetworkConfiguration\":\"object\",\"NetworkConfiguration.AwsvpcConfiguration\":\"object\",\"NetworkConfiguration.AwsvpcConfiguration.SecurityGroups\":\"array\",\"NetworkConfiguration.AwsvpcConfiguration.Subnets\":\"array\",\"PlacementConstraints\":\"array\",\"PlacementConstraints[]\":\"object\",\"PlacementStrategies\":\"array\",\"PlacementStrategies[]\":\"object\",\"ServiceConnectConfiguration\":\"object\",\"ServiceConnectConfiguration.AccessLogConfiguration\":\"object\",\"ServiceConnectConfiguration.LogConfiguration\":\"object\",\"ServiceConnectConfiguration.LogConfiguration.Options\":\"object\",\"ServiceConnectConfiguration.LogConfiguration.SecretOptions\":\"array\",\"ServiceConnectConfiguration.LogConfiguration.SecretOptions[]\":\"object\",\"ServiceConnectConfiguration.Services\":\"array\",\"ServiceConnectConfiguration.Services[]\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases\":\"array\",\"ServiceConnectConfiguration.Services[].ClientAliases[]\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules.Header\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules.Header.Value\":\"object\",\"ServiceConnectConfiguration.Services[].Timeout\":\"object\",\"ServiceConnectConfiguration.Services[].Tls\":\"object\",\"ServiceConnectConfiguration.Services[].Tls.IssuerCertificateAuthority\":\"object\",\"ServiceRegistries\":\"array\",\"ServiceRegistries[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"VolumeConfigurations\":\"array\",\"VolumeConfigurations[]\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications\":\"array\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[]\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[].Tags\":\"array\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[].Tags[]\":\"object\",\"VpcLatticeConfigurations\":\"array\",\"VpcLatticeConfigurations[]\":\"object\",\"VpcLatticeConfigurations[].AdvancedConfiguration\":\"object\"}"],
32967
- ["AWS::ECS::TaskDefinition", "{\"ContainerDefinitions\":\"array\",\"ContainerDefinitions[]\":\"object\",\"ContainerDefinitions[].Command\":\"array\",\"ContainerDefinitions[].CredentialSpecs\":\"array\",\"ContainerDefinitions[].DependsOn\":\"array\",\"ContainerDefinitions[].DependsOn[]\":\"object\",\"ContainerDefinitions[].DnsSearchDomains\":\"array\",\"ContainerDefinitions[].DnsServers\":\"array\",\"ContainerDefinitions[].DockerLabels\":\"object\",\"ContainerDefinitions[].DockerSecurityOptions\":\"array\",\"ContainerDefinitions[].EntryPoint\":\"array\",\"ContainerDefinitions[].Environment\":\"array\",\"ContainerDefinitions[].EnvironmentFiles\":\"array\",\"ContainerDefinitions[].EnvironmentFiles[]\":\"object\",\"ContainerDefinitions[].Environment[]\":\"object\",\"ContainerDefinitions[].ExtraHosts\":\"array\",\"ContainerDefinitions[].ExtraHosts[]\":\"object\",\"ContainerDefinitions[].FirelensConfiguration\":\"object\",\"ContainerDefinitions[].FirelensConfiguration.Options\":\"object\",\"ContainerDefinitions[].HealthCheck\":\"object\",\"ContainerDefinitions[].HealthCheck.Command\":\"array\",\"ContainerDefinitions[].Links\":\"array\",\"ContainerDefinitions[].LinuxParameters\":\"object\",\"ContainerDefinitions[].LinuxParameters.Capabilities\":\"object\",\"ContainerDefinitions[].LinuxParameters.Capabilities.Add\":\"array\",\"ContainerDefinitions[].LinuxParameters.Capabilities.Drop\":\"array\",\"ContainerDefinitions[].LinuxParameters.Devices\":\"array\",\"ContainerDefinitions[].LinuxParameters.Devices[]\":\"object\",\"ContainerDefinitions[].LinuxParameters.Devices[].Permissions\":\"array\",\"ContainerDefinitions[].LinuxParameters.Tmpfs\":\"array\",\"ContainerDefinitions[].LinuxParameters.Tmpfs[]\":\"object\",\"ContainerDefinitions[].LinuxParameters.Tmpfs[].MountOptions\":\"array\",\"ContainerDefinitions[].LogConfiguration\":\"object\",\"ContainerDefinitions[].LogConfiguration.Options\":\"object\",\"ContainerDefinitions[].LogConfiguration.SecretOptions\":\"array\",\"ContainerDefinitions[].LogConfiguration.SecretOptions[]\":\"object\",\"ContainerDefinitions[].MountPoints\":\"array\",\"ContainerDefinitions[].MountPoints[]\":\"object\",\"ContainerDefinitions[].PortMappings\":\"array\",\"ContainerDefinitions[].PortMappings[]\":\"object\",\"ContainerDefinitions[].RepositoryCredentials\":\"object\",\"ContainerDefinitions[].ResourceRequirements\":\"array\",\"ContainerDefinitions[].ResourceRequirements[]\":\"object\",\"ContainerDefinitions[].RestartPolicy\":\"object\",\"ContainerDefinitions[].RestartPolicy.IgnoredExitCodes\":\"array\",\"ContainerDefinitions[].Secrets\":\"array\",\"ContainerDefinitions[].Secrets[]\":\"object\",\"ContainerDefinitions[].SystemControls\":\"array\",\"ContainerDefinitions[].SystemControls[]\":\"object\",\"ContainerDefinitions[].Ulimits\":\"array\",\"ContainerDefinitions[].Ulimits[]\":\"object\",\"ContainerDefinitions[].VolumesFrom\":\"array\",\"ContainerDefinitions[].VolumesFrom[]\":\"object\",\"EphemeralStorage\":\"object\",\"InferenceAccelerators\":\"array\",\"InferenceAccelerators[]\":\"object\",\"PlacementConstraints\":\"array\",\"PlacementConstraints[]\":\"object\",\"ProxyConfiguration\":\"object\",\"ProxyConfiguration.ProxyConfigurationProperties\":\"array\",\"ProxyConfiguration.ProxyConfigurationProperties[]\":\"object\",\"RequiresCompatibilities\":\"array\",\"RuntimePlatform\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Volumes\":\"array\",\"Volumes[]\":\"object\",\"Volumes[].DockerVolumeConfiguration\":\"object\",\"Volumes[].DockerVolumeConfiguration.DriverOpts\":\"object\",\"Volumes[].DockerVolumeConfiguration.Labels\":\"object\",\"Volumes[].EFSVolumeConfiguration\":\"object\",\"Volumes[].EFSVolumeConfiguration.AuthorizationConfig\":\"object\",\"Volumes[].FSxWindowsFileServerVolumeConfiguration\":\"object\",\"Volumes[].FSxWindowsFileServerVolumeConfiguration.AuthorizationConfig\":\"object\",\"Volumes[].Host\":\"object\",\"Volumes[].S3FilesVolumeConfiguration\":\"object\"}"],
33022
+ ["AWS::ECS::Service", "{\"CapacityProviderStrategy\":\"array\",\"CapacityProviderStrategy[]\":\"object\",\"DeploymentConfiguration\":\"object\",\"DeploymentConfiguration.Alarms\":\"object\",\"DeploymentConfiguration.Alarms.AlarmNames\":\"array\",\"DeploymentConfiguration.CanaryConfiguration\":\"object\",\"DeploymentConfiguration.DeploymentCircuitBreaker\":\"object\",\"DeploymentConfiguration.DeploymentCircuitBreaker.ThresholdConfiguration\":\"object\",\"DeploymentConfiguration.EarlySuccessCriteria\":\"object\",\"DeploymentConfiguration.LifecycleHooks\":\"array\",\"DeploymentConfiguration.LifecycleHooks[]\":\"object\",\"DeploymentConfiguration.LifecycleHooks[].LifecycleStages\":\"array\",\"DeploymentConfiguration.LifecycleHooks[].TimeoutConfiguration\":\"object\",\"DeploymentConfiguration.LinearConfiguration\":\"object\",\"DeploymentController\":\"object\",\"ForceNewDeployment\":\"object\",\"GatewayConnectors\":\"array\",\"GatewayConnectors[]\":\"object\",\"GatewayConnectors[].Filters\":\"object\",\"GatewayConnectors[].Filters.AccessTypes\":\"array\",\"GatewayConnectors[].HealthCheck\":\"object\",\"GatewayConnectors[].HealthCheck.Matcher\":\"object\",\"LoadBalancers\":\"array\",\"LoadBalancers[]\":\"object\",\"LoadBalancers[].AdvancedConfiguration\":\"object\",\"Monitoring\":\"object\",\"Monitoring.MetricConfigurations\":\"array\",\"Monitoring.MetricConfigurations[]\":\"object\",\"Monitoring.MetricConfigurations[].MetricNames\":\"array\",\"NetworkConfiguration\":\"object\",\"NetworkConfiguration.AwsvpcConfiguration\":\"object\",\"NetworkConfiguration.AwsvpcConfiguration.SecurityGroups\":\"array\",\"NetworkConfiguration.AwsvpcConfiguration.Subnets\":\"array\",\"PlacementConstraints\":\"array\",\"PlacementConstraints[]\":\"object\",\"PlacementStrategies\":\"array\",\"PlacementStrategies[]\":\"object\",\"ServiceConnectConfiguration\":\"object\",\"ServiceConnectConfiguration.AccessLogConfiguration\":\"object\",\"ServiceConnectConfiguration.ContainerConfigurations\":\"array\",\"ServiceConnectConfiguration.ContainerConfigurations[]\":\"object\",\"ServiceConnectConfiguration.LogConfiguration\":\"object\",\"ServiceConnectConfiguration.LogConfiguration.Options\":\"object\",\"ServiceConnectConfiguration.LogConfiguration.SecretOptions\":\"array\",\"ServiceConnectConfiguration.LogConfiguration.SecretOptions[]\":\"object\",\"ServiceConnectConfiguration.Services\":\"array\",\"ServiceConnectConfiguration.Services[]\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases\":\"array\",\"ServiceConnectConfiguration.Services[].ClientAliases[]\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules.Header\":\"object\",\"ServiceConnectConfiguration.Services[].ClientAliases[].TestTrafficRules.Header.Value\":\"object\",\"ServiceConnectConfiguration.Services[].Timeout\":\"object\",\"ServiceConnectConfiguration.Services[].Tls\":\"object\",\"ServiceConnectConfiguration.Services[].Tls.IssuerCertificateAuthority\":\"object\",\"ServiceRegistries\":\"array\",\"ServiceRegistries[]\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"VolumeConfigurations\":\"array\",\"VolumeConfigurations[]\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications\":\"array\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[]\":\"object\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[].Tags\":\"array\",\"VolumeConfigurations[].ManagedEBSVolume.TagSpecifications[].Tags[]\":\"object\",\"VpcLatticeConfigurations\":\"array\",\"VpcLatticeConfigurations[]\":\"object\",\"VpcLatticeConfigurations[].AdvancedConfiguration\":\"object\"}"],
33023
+ ["AWS::ECS::TaskDefinition", "{\"ContainerDefinitions\":\"array\",\"ContainerDefinitions[]\":\"object\",\"ContainerDefinitions[].Command\":\"array\",\"ContainerDefinitions[].CredentialSpecs\":\"array\",\"ContainerDefinitions[].DependsOn\":\"array\",\"ContainerDefinitions[].DependsOn[]\":\"object\",\"ContainerDefinitions[].DnsSearchDomains\":\"array\",\"ContainerDefinitions[].DnsServers\":\"array\",\"ContainerDefinitions[].DockerLabels\":\"object\",\"ContainerDefinitions[].DockerSecurityOptions\":\"array\",\"ContainerDefinitions[].EntryPoint\":\"array\",\"ContainerDefinitions[].Environment\":\"array\",\"ContainerDefinitions[].EnvironmentFiles\":\"array\",\"ContainerDefinitions[].EnvironmentFiles[]\":\"object\",\"ContainerDefinitions[].Environment[]\":\"object\",\"ContainerDefinitions[].ExtraHosts\":\"array\",\"ContainerDefinitions[].ExtraHosts[]\":\"object\",\"ContainerDefinitions[].FirelensConfiguration\":\"object\",\"ContainerDefinitions[].FirelensConfiguration.Options\":\"object\",\"ContainerDefinitions[].HealthCheck\":\"object\",\"ContainerDefinitions[].HealthCheck.Command\":\"array\",\"ContainerDefinitions[].Links\":\"array\",\"ContainerDefinitions[].LinuxParameters\":\"object\",\"ContainerDefinitions[].LinuxParameters.Capabilities\":\"object\",\"ContainerDefinitions[].LinuxParameters.Capabilities.Add\":\"array\",\"ContainerDefinitions[].LinuxParameters.Capabilities.Drop\":\"array\",\"ContainerDefinitions[].LinuxParameters.Devices\":\"array\",\"ContainerDefinitions[].LinuxParameters.Devices[]\":\"object\",\"ContainerDefinitions[].LinuxParameters.Devices[].Permissions\":\"array\",\"ContainerDefinitions[].LinuxParameters.Tmpfs\":\"array\",\"ContainerDefinitions[].LinuxParameters.Tmpfs[]\":\"object\",\"ContainerDefinitions[].LinuxParameters.Tmpfs[].MountOptions\":\"array\",\"ContainerDefinitions[].LogConfiguration\":\"object\",\"ContainerDefinitions[].LogConfiguration.Options\":\"object\",\"ContainerDefinitions[].LogConfiguration.SecretOptions\":\"array\",\"ContainerDefinitions[].LogConfiguration.SecretOptions[]\":\"object\",\"ContainerDefinitions[].MountPoints\":\"array\",\"ContainerDefinitions[].MountPoints[]\":\"object\",\"ContainerDefinitions[].PortMappings\":\"array\",\"ContainerDefinitions[].PortMappings[]\":\"object\",\"ContainerDefinitions[].RepositoryCredentials\":\"object\",\"ContainerDefinitions[].ResourceRequirements\":\"array\",\"ContainerDefinitions[].ResourceRequirements[]\":\"object\",\"ContainerDefinitions[].ResourceRequirements[].SharingStrategy\":\"object\",\"ContainerDefinitions[].ResourceRequirements[].SharingStrategy.NvidiaMps\":\"object\",\"ContainerDefinitions[].RestartPolicy\":\"object\",\"ContainerDefinitions[].RestartPolicy.IgnoredExitCodes\":\"array\",\"ContainerDefinitions[].Secrets\":\"array\",\"ContainerDefinitions[].Secrets[]\":\"object\",\"ContainerDefinitions[].SystemControls\":\"array\",\"ContainerDefinitions[].SystemControls[]\":\"object\",\"ContainerDefinitions[].Ulimits\":\"array\",\"ContainerDefinitions[].Ulimits[]\":\"object\",\"ContainerDefinitions[].VolumesFrom\":\"array\",\"ContainerDefinitions[].VolumesFrom[]\":\"object\",\"EphemeralStorage\":\"object\",\"InferenceAccelerators\":\"array\",\"InferenceAccelerators[]\":\"object\",\"PlacementConstraints\":\"array\",\"PlacementConstraints[]\":\"object\",\"ProxyConfiguration\":\"object\",\"ProxyConfiguration.ProxyConfigurationProperties\":\"array\",\"ProxyConfiguration.ProxyConfigurationProperties[]\":\"object\",\"RequiresCompatibilities\":\"array\",\"RuntimePlatform\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Volumes\":\"array\",\"Volumes[]\":\"object\",\"Volumes[].DockerVolumeConfiguration\":\"object\",\"Volumes[].DockerVolumeConfiguration.DriverOpts\":\"object\",\"Volumes[].DockerVolumeConfiguration.Labels\":\"object\",\"Volumes[].EFSVolumeConfiguration\":\"object\",\"Volumes[].EFSVolumeConfiguration.AuthorizationConfig\":\"object\",\"Volumes[].FSxWindowsFileServerVolumeConfiguration\":\"object\",\"Volumes[].FSxWindowsFileServerVolumeConfiguration.AuthorizationConfig\":\"object\",\"Volumes[].Host\":\"object\",\"Volumes[].S3FilesVolumeConfiguration\":\"object\"}"],
32968
33024
  ["AWS::EFS::AccessPoint", "{\"AccessPointTags\":\"array\",\"AccessPointTags[]\":\"object\",\"PosixUser\":\"object\",\"PosixUser.SecondaryGids\":\"array\",\"RootDirectory\":\"object\",\"RootDirectory.CreationInfo\":\"object\"}"],
32969
33025
  ["AWS::EFS::FileSystem", "{\"BackupPolicy\":\"object\",\"FileSystemPolicy\":\"object\",\"FileSystemProtection\":\"object\",\"FileSystemTags\":\"array\",\"FileSystemTags[]\":\"object\",\"LifecyclePolicies\":\"array\",\"LifecyclePolicies[]\":\"object\",\"ReplicationConfiguration\":\"object\",\"ReplicationConfiguration.Destinations\":\"array\",\"ReplicationConfiguration.Destinations[]\":\"object\"}"],
32970
33026
  ["AWS::EFS::MountTarget", "{\"SecurityGroups\":\"array\"}"],
@@ -40438,11 +40494,13 @@ async function replayReverseReplacement(s) {
40438
40494
  }
40439
40495
  const { observedProperties: _staleObserved, ...prevRecord } = prev;
40440
40496
  recordNoEchoAttributeValues(createResult, secrets, resolvedPrevProps);
40497
+ const restoredProperties = recordedPropertiesAfterReplayCreate(prevRecord, createResult);
40441
40498
  stateResources[op.logicalId] = redactRollbackRecord({
40442
40499
  ...withNameGenerationReached(prevRecord, op.logicalId, op.nameGeneration),
40443
40500
  physicalId: createResult.physicalId,
40444
40501
  attributes: createResult.attributes ?? {},
40445
- properties: recordedPropertiesAfterReplayCreate(prevRecord, createResult)
40502
+ properties: restoredProperties,
40503
+ acceptedCreateOnlyDrops: acceptedCreateOnlyDropsEvidence(restoredProperties, oldType, createProvisionedBy)
40446
40504
  }, secrets, prevRecord.properties, prevRecord.attributes);
40447
40505
  if (!adoptedLiveNewResource) inlinePolicyWriters.record(op.logicalId, "create", stateResources[op.logicalId], false, createProvisionedBy);
40448
40506
  const deferral = s.deferral !== void 0 && !deletedNewFirst && !adoptedLiveNewResource && !rollbackRetainsNewResource(current) ? s.deferral : void 0;
@@ -46635,12 +46693,8 @@ function extractTemplateAttributes(template, logicalId) {
46635
46693
  };
46636
46694
  }
46637
46695
  function acceptedCreateOnlyDropsField(recordedProperties, resourceType, provisionedBy, mode, previous) {
46638
- if (provisionedBy !== "sdk") return { acceptedCreateOnlyDrops: void 0 };
46639
- const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops;
46640
- if (createOnly === void 0 || createOnly.size === 0) return { acceptedCreateOnlyDrops: void 0 };
46641
46696
  const carried = mode === "in-place" ? acceptedCreateOnlyDropsOf(previous) : void 0;
46642
- const names = findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly.has(property) && (carried === void 0 || carried.has(property)));
46643
- return { acceptedCreateOnlyDrops: names.length > 0 ? names : void 0 };
46697
+ return { acceptedCreateOnlyDrops: acceptedCreateOnlyDropsEvidence(recordedProperties, resourceType, provisionedBy, carried) };
46644
46698
  }
46645
46699
  function secretNamedAttributesField(result, previous) {
46646
46700
  const reported = result.secretNamedAttributeNames;
@@ -47247,12 +47301,17 @@ const INDEX_TRANSITIONAL_STATUSES = /* @__PURE__ */ new Set([
47247
47301
  function hasTransitionalIndex(indexes) {
47248
47302
  return (indexes ?? []).some((gsi) => INDEX_TRANSITIONAL_STATUSES.has(gsi.IndexStatus ?? ""));
47249
47303
  }
47304
+ function hasTransitionalTableIndex(table) {
47305
+ return hasTransitionalIndex(table?.GlobalSecondaryIndexes) || hasTransitionalIndex(table?.VectorIndexes);
47306
+ }
47307
+ const GSI_INDEX_NOUN = "a global secondary index";
47308
+ const TABLE_INDEX_NOUN = "a global secondary index or vector index";
47250
47309
  const INDEX_BUSY_DELETE_MESSAGE = /cannot delete table while indexes are being/i;
47251
47310
  function isIndexBusyDeleteError(message) {
47252
47311
  return INDEX_BUSY_DELETE_MESSAGE.test(message);
47253
47312
  }
47254
- function relayedIndexBusyDelete(withheldText) {
47255
- return isIndexBusyDeleteError(withheldText) ? " AWS reports that a global secondary index is still being created, updated or deleted; re-running the destroy succeeds once the index is ACTIVE." : "";
47313
+ function relayedIndexBusyDelete(withheldText, indexNoun = GSI_INDEX_NOUN) {
47314
+ return isIndexBusyDeleteError(withheldText) ? ` AWS reports that ${indexNoun} is still being created, updated or deleted; re-running the destroy succeeds once the index is ACTIVE.` : "";
47256
47315
  }
47257
47316
  const DELETE_INDEX_BUSY_REARM_MAX_ATTEMPTS = 60;
47258
47317
  const INDEX_SETTLE_POLL_INTERVAL_MS = 1e3;
@@ -47260,21 +47319,43 @@ const DELETE_INDEX_WAIT_PROCEED_NOTE = `the DeleteTable goes ahead anyway and AW
47260
47319
  async function waitForIndexesSettled(opts) {
47261
47320
  const { tableName, logicalId, logger, describeTable, maxAttempts, proceedNote } = opts;
47262
47321
  const budgetWait = opts.budgetWait;
47322
+ const shortCap = opts.shortCapUnlessVectorBusy;
47323
+ let vectorOnlyBusy = false;
47324
+ let stoppedAtShortCap = false;
47325
+ let announced = false;
47326
+ const effectiveCap = () => shortCap !== void 0 && !vectorOnlyBusy ? Math.min(shortCap, maxAttempts) : maxAttempts;
47263
47327
  const watch = startInterruptWatch(`index settle wait on ${tableName}`);
47264
47328
  let attempt = 0;
47265
47329
  try {
47266
- while (budgetWait ? budgetWait.nextPoll() : attempt < maxAttempts) {
47330
+ for (;;) {
47331
+ if (shortCap !== void 0 && attempt >= shortCap && !vectorOnlyBusy) {
47332
+ stoppedAtShortCap = true;
47333
+ break;
47334
+ }
47335
+ if (!(budgetWait ? budgetWait.nextPoll() : attempt < maxAttempts)) break;
47267
47336
  attempt += 1;
47268
47337
  if (watch.isInterrupted()) {
47269
47338
  logger.debug(`Interrupted while waiting for indexes on ${tableName} (${logicalId}) after ${attempt - 1} DescribeTable polls; ${proceedNote}`);
47270
47339
  return;
47271
47340
  }
47272
47341
  try {
47273
- if (!hasTransitionalIndex((await describeTable()).Table?.GlobalSecondaryIndexes ?? [])) return;
47342
+ const response = await describeTable();
47343
+ if (!hasTransitionalTableIndex(response.Table)) {
47344
+ if (attempt > 1) logger.debug(safeMsg`Indexes on ${tableName} (${logicalId}) settled after ${attempt} DescribeTable polls`);
47345
+ return;
47346
+ }
47347
+ const gsiBusy = hasTransitionalIndex(response.Table?.GlobalSecondaryIndexes);
47348
+ const vectorBusy = hasTransitionalIndex(response.Table?.VectorIndexes);
47349
+ vectorOnlyBusy = vectorBusy && !gsiBusy;
47350
+ if (!announced) {
47351
+ announced = true;
47352
+ const busyKinds = gsiBusy ? vectorBusy ? "a global secondary index and a vector index" : "a global secondary index" : "a vector index";
47353
+ logger.debug(safeMsg`Index settle wait on ${tableName} (${logicalId}): ${busyKinds} still transitioning (poll ${attempt})`);
47354
+ }
47274
47355
  } catch (err) {
47275
47356
  const message = describeAwsFailure(err).detail;
47276
47357
  if (isThrottlingError(err)) {
47277
- logger.debug(`DescribeTable throttled while waiting for indexes on ${tableName} (attempt ${attempt}/${maxAttempts}); still waiting: ${message}`);
47358
+ logger.debug(`DescribeTable throttled while waiting for indexes on ${tableName} (attempt ${attempt}/${effectiveCap()}); still waiting: ${message}`);
47278
47359
  await new Promise((resolve) => setTimeout(resolve, INDEX_SETTLE_POLL_INTERVAL_MS));
47279
47360
  continue;
47280
47361
  }
@@ -47293,14 +47374,14 @@ async function waitForIndexesSettled(opts) {
47293
47374
  watch.dispose();
47294
47375
  }
47295
47376
  const pollSeconds = INDEX_SETTLE_POLL_INTERVAL_MS / 1e3;
47296
- const pollsRun = budgetWait ? budgetWait.pollsRun : maxAttempts;
47297
- logger.warn(`Indexes on ${tableName} (${logicalId}) did not all reach ACTIVE within ${pollsRun} DescribeTable polls (~${pollSeconds}s apart, so a little over ${pollsRun * pollSeconds}s of wall clock).${budgetWait?.note() ?? ""} ${proceedNote}`);
47377
+ const pollsRun = budgetWait ? budgetWait.pollsRun : attempt;
47378
+ logger.warn(`Indexes on ${tableName} (${logicalId}) did not all reach ACTIVE within ${pollsRun} DescribeTable polls (~${pollSeconds}s apart, so a little over ${pollsRun * pollSeconds}s of wall clock).${stoppedAtShortCap ? "" : budgetWait?.note(shortCap !== void 0 && !vectorOnlyBusy ? shortCap : void 0) ?? ""} ${proceedNote}`);
47298
47379
  }
47299
47380
  function indexBusyRetryWarning(opts) {
47300
47381
  const remainingAttempts = Math.max(0, 1 + opts.maxRetries - opts.attemptNumber);
47301
47382
  const settleFloorMinutes = Math.max(1, Math.round((remainingAttempts + 1) * 60 * INDEX_SETTLE_POLL_INTERVAL_MS / 6e4));
47302
47383
  const pollSeconds = INDEX_SETTLE_POLL_INTERVAL_MS / 1e3;
47303
- return `DynamoDB ${opts.typeLabel} ${opts.logicalId}: AWS refused DeleteTable on ${opts.physicalId} because a global secondary index is still being created, updated or deleted — application auto-scaling can start an index capacity change at any moment, including during this destroy. Waiting for the index to settle and retrying (this attempt plus up to ${remainingAttempts} more attempts; each one first waits up to ${60} DescribeTable polls ~${pollSeconds}s apart before its DeleteTable, so cdkd will not give up for at least ~${settleFloorMinutes} more minutes while those settle waits run). Nothing is wrong with the table; a large index backfill can outlast this budget, in which case the destroy fails on AWS's refusal (re-run with --verbose for AWS's own message) and re-running it succeeds once the index is ACTIVE.`;
47384
+ return `DynamoDB ${opts.typeLabel} ${opts.logicalId}: AWS refused DeleteTable on ${opts.physicalId} because ${opts.indexNoun ?? "a global secondary index"} is still being created, updated or deleted — application auto-scaling can start an index capacity change at any moment, including during this destroy. Waiting for the index to settle and retrying (this attempt plus up to ${remainingAttempts} more attempts; each one first waits up to ${60} DescribeTable polls ~${pollSeconds}s apart before its DeleteTable, so cdkd will not give up for at least ~${settleFloorMinutes} more minutes while those settle waits run). Nothing is wrong with the table; a large index backfill can outlast this budget, in which case the destroy fails on AWS's refusal (re-run with --verbose for AWS's own message) and re-running it succeeds once the index is ACTIVE.`;
47304
47385
  }
47305
47386
  async function deleteTableWithIndexBusyRetry(opts) {
47306
47387
  let deleteAttempts = 0;
@@ -47308,12 +47389,13 @@ async function deleteTableWithIndexBusyRetry(opts) {
47308
47389
  try {
47309
47390
  await withRetry(async () => {
47310
47391
  if (deleteAttempts++ > 0) {
47311
- if (deleteAttempts === 2) opts.logger.warn(indexBusyRetryWarning({
47392
+ if (deleteAttempts === 2) opts.logger.warn(opts.retryWarning?.() ?? indexBusyRetryWarning({
47312
47393
  typeLabel: opts.typeLabel,
47313
47394
  logicalId: opts.logicalId,
47314
47395
  physicalId: opts.physicalId,
47315
47396
  attemptNumber: deleteAttempts,
47316
- maxRetries: opts.maxRetries
47397
+ maxRetries: opts.maxRetries,
47398
+ ...opts.indexNoun !== void 0 && { indexNoun: opts.indexNoun }
47317
47399
  }));
47318
47400
  await opts.reArm();
47319
47401
  }
@@ -47336,6 +47418,7 @@ async function deleteTableWithIndexBusyRetry(opts) {
47336
47418
  const DYNAMODB_DELETE_POLL_RTT_MS = 200;
47337
47419
  const DYNAMODB_DELETE_POLL_COST_MS = INDEX_SETTLE_POLL_INTERVAL_MS + 200;
47338
47420
  const DYNAMODB_DELETE_BUDGET_MS = 156e4;
47421
+ const DYNAMODB_DELETE_DEADLINE_MARGIN_MS = 24e4;
47339
47422
  const DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS = 18e5;
47340
47423
  const dynamoDbDeleteBudgetOverride = {};
47341
47424
  function resolveDynamoDbDeleteBudgetMs() {
@@ -47394,11 +47477,12 @@ var DeleteWaitImpl = class {
47394
47477
  get cutShort() {
47395
47478
  return this.endedByBudget && this.ran < 60;
47396
47479
  }
47397
- note() {
47480
+ note(shownCap) {
47398
47481
  if (!this.endedByBudget) return "";
47482
+ const cap = shownCap ?? this.cap;
47399
47483
  const minutes = Math.max(1, Math.round((this.budget?.totalMs ?? 0) / 6e4));
47400
- if (this.cutShort) return ` — cdkd's shared ~${minutes}-minute delete allowance was already spent, so this wait made only ${this.ran} of its ${this.cap} polls and AWS was not given a real wait. Nothing is necessarily wrong with the table; re-run the destroy.`;
47401
- return ` (cdkd's shared ~${minutes}-minute delete allowance capped this wait at ${this.ran} of its ${this.cap} polls.)`;
47484
+ if (this.cutShort) return ` — cdkd's shared ~${minutes}-minute delete allowance was already spent, so this wait made only ${this.ran} of its ${cap} polls and AWS was not given a real wait. Nothing is necessarily wrong with the table; re-run the destroy.`;
47485
+ return ` (cdkd's shared ~${minutes}-minute delete allowance capped this wait at ${this.ran} of its ${cap} polls.)`;
47402
47486
  }
47403
47487
  };
47404
47488
  function beginDeleteWait(cap, budget) {
@@ -48518,6 +48602,11 @@ var DynamoDBGlobalTableProvider = class {
48518
48602
  const warn = log.warn;
48519
48603
  log.debug(`Creating DynamoDB GlobalTable ${logicalId}`);
48520
48604
  const desiredReplicaTags = refuseMalformedReplicaTags(properties, resourceType, logicalId);
48605
+ const disassociationRefusal = disassociationProtectionRefusal(properties, void 0, logicalId);
48606
+ if (disassociationRefusal !== void 0) {
48607
+ if (context?.replayingState !== true) throw new ProvisioningError(log.mask(disassociationRefusal), resourceType, logicalId);
48608
+ warn(`${disassociationRefusal} Proceeding: this create replays a cdkd state record.`);
48609
+ }
48521
48610
  const tableName = properties["TableName"] || generatedNameFor("AWS::DynamoDB::GlobalTable", logicalId);
48522
48611
  const keySchema = properties["KeySchema"];
48523
48612
  const attributeDefinitions = properties["AttributeDefinitions"];
@@ -48689,6 +48778,7 @@ var DynamoDBGlobalTableProvider = class {
48689
48778
  await this.applyCrossRegionReplicaTagsDiff(tableInfo.tableArn, region, void 0, replicaTags, resourceType, logicalId, tableName, maskSecrets);
48690
48779
  }
48691
48780
  await this.applyReplicaSettings(tableName, logicalId, currentRegion, wiringProperties, void 0, /* @__PURE__ */ new Set(), false, replayWarn(log, context).onUnusable !== void 0, /* @__PURE__ */ new Set(), void 0, warn, maskSecrets);
48781
+ await this.convergeReplicaDisassociationProtection(tableName, logicalId, currentRegion, wiringProperties, void 0, context?.replayingState === true ? "replay" : "template", warn, maskSecrets);
48692
48782
  const createTtl = planTimeToLive(properties["TimeToLiveSpecification"], void 0, "create");
48693
48783
  if (createTtl.kind === "enable") await this.dynamoDBClient.send(new UpdateTimeToLiveCommand({
48694
48784
  TableName: tableName,
@@ -48734,6 +48824,7 @@ var DynamoDBGlobalTableProvider = class {
48734
48824
  ReplicaUpdates: [{ Delete: { RegionName: region } }]
48735
48825
  }));
48736
48826
  await this.waitForReplicaGone(tableName, region, logicalId, void 0, void 0, maskSecrets);
48827
+ await this.deregisterRemovedReplicaScalableTargets(tableName, region, { maskSecrets });
48737
48828
  } catch (replicaCleanupErr) {
48738
48829
  if (isInterruptedWaitError(replicaCleanupErr)) throw replicaCleanupErr;
48739
48830
  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()}`);
@@ -48816,14 +48907,14 @@ var DynamoDBGlobalTableProvider = class {
48816
48907
  DeletionProtectionEnabled: enabled
48817
48908
  }));
48818
48909
  }
48819
- async waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget) {
48910
+ async waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget, member = "DeletionProtectionEnabled", replicaClient = this.getRegionalClient(region)) {
48820
48911
  const wait = beginDeleteWait(60, budget);
48821
- const watch = startInterruptWatch(maskSecrets(`DynamoDB replica ${region} deletion-protection change on ${tableName}`));
48912
+ const watch = startInterruptWatch(maskSecrets(`DynamoDB replica ${region} ${member === "DeletionProtectionEnabled" ? "deletion-protection" : "disassociation-protection"} change on ${tableName}`));
48822
48913
  try {
48823
48914
  while (wait.nextPoll()) {
48824
48915
  if (watch.isInterrupted()) throw watch.onInterrupted();
48825
- const replica = await this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName }));
48826
- if (replica.Table?.TableStatus === "ACTIVE" && replica.Table.DeletionProtectionEnabled === enabled) {
48916
+ const replica = await replicaClient.send(new DescribeTableCommand({ TableName: tableName }));
48917
+ if (replica.Table?.TableStatus === "ACTIVE" && replica.Table[member] === enabled) {
48827
48918
  if ((await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table?.TableStatus === "ACTIVE") return;
48828
48919
  }
48829
48920
  await new Promise((resolve) => setTimeout(resolve, REPLICA_PROTECTION_SETTLE_POLL_MS));
@@ -48831,7 +48922,7 @@ var DynamoDBGlobalTableProvider = class {
48831
48922
  } finally {
48832
48923
  watch.dispose();
48833
48924
  }
48834
- throw new ProvisioningError(maskSecrets(`DeletionProtectionEnabled=${enabled} on the ${region} replica of ${tableName} did not settle within ${wait.pollsRun} polls${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
48925
+ throw new ProvisioningError(maskSecrets(`${member}=${enabled} on the ${region} replica of ${tableName} did not settle within ${wait.pollsRun} polls${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
48835
48926
  }
48836
48927
  async convergeReplicaDeletionProtection(tableName, logicalId, currentRegion, previousProperties, properties, addedRegions, desiredFromReadback, warn, maskSecrets) {
48837
48928
  const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
@@ -48860,6 +48951,63 @@ var DynamoDBGlobalTableProvider = class {
48860
48951
  if (typeof live === "boolean" && live !== newDpe) await this.setReplicaDeletionProtection(tableName, region, newDpe, logicalId, maskSecrets);
48861
48952
  }
48862
48953
  }
48954
+ async convergeReplicaDisassociationProtection(tableName, logicalId, currentRegion, properties, previousProperties, origin, warn, maskSecrets) {
48955
+ const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
48956
+ let wrote = false;
48957
+ const multiRegion = isMultiRegionReplicaSet(properties);
48958
+ for (const entry of desired) {
48959
+ const replica = asRecord(entry);
48960
+ const region = replica?.["Region"];
48961
+ if (typeof region !== "string" || region === "") continue;
48962
+ const declared = readReplicaDisassociationProtection(replica);
48963
+ const previous = previousProperties === void 0 ? void 0 : readReplicaDisassociationProtection(localReplicaEntry(previousProperties, region));
48964
+ const clientFor = () => region === currentRegion ? this.dynamoDBClient : this.getRegionalClient(region);
48965
+ const readLive = async () => {
48966
+ const client = clientFor();
48967
+ try {
48968
+ return (await client.send(new DescribeTableCommand({ TableName: tableName }))).Table?.DisassociationProtectionEnabled;
48969
+ } catch (readError) {
48970
+ this.logger.debug(maskSecrets(`Could not read ${DISASSOCIATION_PROTECTION_KEY} on the ${region} replica of ${tableName}: ${describeAwsFailure(readError).detail}`));
48971
+ return;
48972
+ }
48973
+ };
48974
+ if (!multiRegion) {
48975
+ if (declared !== void 0) {
48976
+ const message = `${DISASSOCIATION_PROTECTION_KEY}=${declared} on the ${region} replica of ${tableName} is not sent: DynamoDB applies it only to a replica of a multi-Region global table, and this table's Replicas name a single Region.`;
48977
+ const justShrunk = previousProperties !== void 0 && isMultiRegionReplicaSet(previousProperties);
48978
+ if (origin === "template" && (justShrunk || declared !== previous)) warn(message);
48979
+ else this.logger.debug(maskSecrets(message));
48980
+ } else if (origin !== "readback" && replica?.[DISASSOCIATION_PROTECTION_KEY] === void 0 && previous !== void 0) warn(`${DISASSOCIATION_PROTECTION_KEY} was removed from the ${region} replica of ${tableName}, whose Replicas now name a single Region, so nothing is sent and the replica keeps its current setting (${previous} when last deployed).`);
48981
+ continue;
48982
+ }
48983
+ if (declared === void 0) {
48984
+ if (replica?.[DISASSOCIATION_PROTECTION_KEY] !== void 0 || previous === void 0) continue;
48985
+ if (origin === "template") warn(`${DISASSOCIATION_PROTECTION_KEY} was removed from the ${region} replica of ${tableName}; DynamoDB keeps the replica's current setting (${previous} when last deployed), so nothing is sent. Declare it to change it.`);
48986
+ else if (origin === "replay" && previous === false && await readLive() === false) {
48987
+ await this.setReplicaDisassociationProtection(tableName, region, clientFor(), true, logicalId, maskSecrets);
48988
+ wrote = true;
48989
+ }
48990
+ continue;
48991
+ }
48992
+ const changed = declared !== previous || isUnsettled("Replicas");
48993
+ const live = await readLive();
48994
+ if (live === declared) continue;
48995
+ if (live === void 0 && !changed) continue;
48996
+ await this.setReplicaDisassociationProtection(tableName, region, clientFor(), declared, logicalId, maskSecrets);
48997
+ wrote = true;
48998
+ }
48999
+ if (wrote) await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
49000
+ }
49001
+ async setReplicaDisassociationProtection(tableName, region, client, enabled, logicalId, maskSecrets) {
49002
+ await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets, client === this.dynamoDBClient ? {} : { region });
49003
+ markUnsettled("Replicas");
49004
+ this.logger.debug(maskSecrets(`Sending UpdateTable ${DISASSOCIATION_PROTECTION_KEY}=${enabled} to the ${region} replica of ${tableName}`));
49005
+ await client.send(new UpdateTableCommand({
49006
+ TableName: tableName,
49007
+ DisassociationProtectionEnabled: enabled
49008
+ }));
49009
+ await this.waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, void 0, DISASSOCIATION_PROTECTION_KEY, client);
49010
+ }
48863
49011
  async convergeReplicaSettings(tableName, logicalId, currentRegion, properties, addedRegions, maskSecrets) {
48864
49012
  const kept = (Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).map(asRecord).filter((r) => typeof r?.["Region"] === "string" && r["Region"] !== currentRegion && !addedRegions.has(r["Region"]));
48865
49013
  if (kept.every((r) => readReplicaTableClass(r) === void 0)) return;
@@ -49454,6 +49602,11 @@ var DynamoDBGlobalTableProvider = class {
49454
49602
  const debug = log.debug;
49455
49603
  debug(`Updating DynamoDB GlobalTable ${logicalId}: ${log.value(physicalId)}`);
49456
49604
  refuseMalformedReplicaTags(properties, resourceType, logicalId, physicalId);
49605
+ const disassociationRefusal = disassociationProtectionRefusal(properties, previousProperties, logicalId);
49606
+ if (disassociationRefusal !== void 0) {
49607
+ if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(log.mask(disassociationRefusal), resourceType, logicalId, physicalId);
49608
+ warn(`${disassociationRefusal} Proceeding: this update restores a recorded or read-back configuration.`);
49609
+ }
49457
49610
  const replaceFlags = "cdkd deploy --replace --force-stateful-recreation";
49458
49611
  const replaceRemedy = async () => {
49459
49612
  let guardRegion = "";
@@ -49732,7 +49885,10 @@ var DynamoDBGlobalTableProvider = class {
49732
49885
  if (indexUpdates.length > 0) billingUpdate.GlobalSecondaryIndexUpdates = indexUpdates;
49733
49886
  }
49734
49887
  markUnsettled("BillingMode", "WriteProvisionedThroughputSettings");
49735
- if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) markUnsettled("GlobalSecondaryIndexes");
49888
+ if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) {
49889
+ markUnsettled("GlobalSecondaryIndexes");
49890
+ for (const indexUpdate of billingUpdate.GlobalSecondaryIndexUpdates) debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(indexUpdate.Update?.IndexName ?? "")} on ${physicalId} (with the billing mode change)`);
49891
+ }
49736
49892
  await this.dynamoDBClient.send(new UpdateTableCommand(billingUpdate));
49737
49893
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49738
49894
  }
@@ -49776,6 +49932,7 @@ var DynamoDBGlobalTableProvider = class {
49776
49932
  ReplicaUpdates: [{ Delete: { RegionName: region } }]
49777
49933
  }));
49778
49934
  await this.waitForReplicaGone(physicalId, region, logicalId, void 0, void 0, maskSecrets);
49935
+ await this.deregisterRemovedReplicaScalableTargets(physicalId, region, { maskSecrets });
49779
49936
  }
49780
49937
  for (const replica of replicaDiff.added) {
49781
49938
  const region = replica["Region"];
@@ -49856,6 +50013,7 @@ var DynamoDBGlobalTableProvider = class {
49856
50013
  "streamTags"
49857
50014
  ] : context?.replayingState === true ? ["pitr"] : []);
49858
50015
  await this.applyReplicaSettings(physicalId, logicalId, currentRegion, properties, previousProperties, addedReplicaRegions, !deepEqual(asRecord(properties["StreamSpecification"])?.["StreamViewType"], asRecord(previousProperties["StreamSpecification"])?.["StreamViewType"]), context?.replayingState === true || context?.desiredFromAwsReadback === true, replicaKeepOnRemoval, describeResp.Table?.LatestStreamArn, warn, maskSecrets);
50016
+ await this.convergeReplicaDisassociationProtection(physicalId, logicalId, currentRegion, properties, previousProperties, context?.desiredFromAwsReadback === true ? "readback" : context?.replayingState === true ? "replay" : "template", warn, maskSecrets);
49859
50017
  const previousTranslatedIndexes = toSdkGlobalSecondaryIndexes(previousProperties, currentRegion, oldBilling, "min", void 0, onUnusablePreviousGsiBlock, maskSecrets);
49860
50018
  const previousSdkIndexes = previousGsiUnusable ? buildLiveRecoveryGsiBaseline(desiredSdkIndexes, describeResp.Table?.GlobalSecondaryIndexes, {
49861
50019
  carryLiveValues: oldBilling === newBilling && liveBillingMode === newBilling,
@@ -49879,6 +50037,7 @@ var DynamoDBGlobalTableProvider = class {
49879
50037
  if (!gsi.IndexName) continue;
49880
50038
  const gsiUpdate = { Delete: { IndexName: gsi.IndexName } };
49881
50039
  markUnsettled("GlobalSecondaryIndexes");
50040
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Delete for index ${maskSecrets(gsi.IndexName)} on ${physicalId}`);
49882
50041
  await this.dynamoDBClient.send(new UpdateTableCommand({
49883
50042
  TableName: physicalId,
49884
50043
  GlobalSecondaryIndexUpdates: [gsiUpdate]
@@ -49897,6 +50056,7 @@ var DynamoDBGlobalTableProvider = class {
49897
50056
  ...addedWarmToSend && { WarmThroughput: addedWarmToSend }
49898
50057
  } };
49899
50058
  markUnsettled("GlobalSecondaryIndexes");
50059
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Create for index ${maskSecrets(gsi.IndexName ?? "")} on ${physicalId}`);
49900
50060
  await this.dynamoDBClient.send(new UpdateTableCommand({
49901
50061
  TableName: physicalId,
49902
50062
  AttributeDefinitions: newAttrs,
@@ -49939,6 +50099,7 @@ var DynamoDBGlobalTableProvider = class {
49939
50099
  }
49940
50100
  const gsiUpdate = { Update: update };
49941
50101
  markUnsettled("GlobalSecondaryIndexes");
50102
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(gsi.IndexName ?? "")} on ${physicalId}`);
49942
50103
  await this.dynamoDBClient.send(new UpdateTableCommand({
49943
50104
  TableName: physicalId,
49944
50105
  GlobalSecondaryIndexUpdates: [gsiUpdate]
@@ -50365,21 +50526,26 @@ var DynamoDBGlobalTableProvider = class {
50365
50526
  const region = replica.RegionName;
50366
50527
  if (!region || region === currentRegion) continue;
50367
50528
  try {
50368
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, void 0, progress);
50369
- for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, void 0, progress);
50529
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, deleteMask, progress);
50530
+ for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, deleteMask, progress);
50370
50531
  await this.dropReplicaForDelete(physicalId, region, context?.removeProtection === true, logicalId, budget, deleteMask);
50371
50532
  progress.stripped = true;
50372
50533
  await this.waitForReplicaGone(physicalId, region, logicalId, REPLICA_GONE_WAIT_ATTEMPTS, budget, context?.maskSecrets);
50534
+ await this.deregisterRemovedReplicaScalableTargets(physicalId, region, {
50535
+ budget,
50536
+ maskSecrets: deleteMask,
50537
+ progress
50538
+ });
50373
50539
  } catch (replicaErr) {
50374
50540
  if (!(replicaErr instanceof ResourceNotFoundException$1)) throw replicaErr;
50375
50541
  }
50376
50542
  }
50377
50543
  const localAsClient = await this.getLocalAutoScalingClient();
50378
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget, void 0, progress);
50379
- await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget, void 0, progress);
50544
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
50545
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
50380
50546
  for (const indexName of tableIndexNames) {
50381
- await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget, void 0, progress);
50382
- await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget, void 0, progress);
50547
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
50548
+ await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
50383
50549
  }
50384
50550
  } catch (describeErr) {
50385
50551
  if (describeErr instanceof ProvisioningError) throw describeErr;
@@ -50570,13 +50736,16 @@ var DynamoDBGlobalTableProvider = class {
50570
50736
  const subs = await this.readReplicaSubSpecs(client, tableNameForSubs, regionLabel, declaredReplica);
50571
50737
  Object.assign(entry, subs);
50572
50738
  let protection;
50739
+ let disassociationProtection;
50573
50740
  let streamArn;
50574
50741
  if (isLocal) {
50575
50742
  protection = table.DeletionProtectionEnabled;
50743
+ disassociationProtection = table.DisassociationProtectionEnabled;
50576
50744
  streamArn = table.LatestStreamArn;
50577
50745
  } else try {
50578
50746
  const regional = await client.send(new DescribeTableCommand({ TableName: tableNameForSubs }));
50579
50747
  protection = regional.Table?.DeletionProtectionEnabled;
50748
+ disassociationProtection = regional.Table?.DisassociationProtectionEnabled;
50580
50749
  streamArn = regional.Table?.LatestStreamArn;
50581
50750
  } catch (err) {
50582
50751
  if (strictFor("Replicas") && !(err instanceof ResourceNotFoundException$1)) throw err;
@@ -50584,6 +50753,7 @@ var DynamoDBGlobalTableProvider = class {
50584
50753
  else this.logger.debug(safeMsg`Could not read the ${regionLabel} replica of ${tableNameForSubs}: ${describeAwsFailure(err).detail}`);
50585
50754
  }
50586
50755
  if (typeof protection === "boolean") entry["DeletionProtectionEnabled"] = protection;
50756
+ if (typeof disassociationProtection === "boolean" && declaredReplica?.[DISASSOCIATION_PROTECTION_KEY] !== void 0) entry[DISASSOCIATION_PROTECTION_KEY] = disassociationProtection;
50587
50757
  await this.readReplicaPolicies(client, tableNameForSubs, regionLabel, replicaArn, streamArn, declaredReplica, afterOwnWrite, entry);
50588
50758
  if (replicaArn) try {
50589
50759
  const tagsResp = await client.send(new ListTagsOfResourceCommand({ ResourceArn: replicaArn }));
@@ -50940,6 +51110,83 @@ var DynamoDBGlobalTableProvider = class {
50940
51110
  }
50941
51111
  throw new ProvisioningError(maskSecrets(`Replica ${region} for table ${maskSecrets(tableName)} did not disappear within ${wait.pollsRun}s${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
50942
51112
  }
51113
+ async deregisterRemovedReplicaScalableTargets(tableName, region, options = {}) {
51114
+ const mask = options.maskSecrets ?? ((text) => text);
51115
+ const tableResourceId = autoScalingResourceId(tableName);
51116
+ const indexPrefix = `${tableResourceId}/index/`;
51117
+ const leaveTargets = (reason, awsDetail) => {
51118
+ this.logger.warn(mask(`The ${region} replica of ${tableName} was removed, but its application-autoscaling targets there were left registered: ${reason}. Once that table is gone, run: ${pasteableAwsCommand(mask)`aws application-autoscaling describe-scalable-targets --service-namespace dynamodb --region ${region}`.render()} and deregister each target whose ResourceId is ${tableResourceId} or starts with ${indexPrefix}.`));
51119
+ if (awsDetail !== void 0) this.logger.debug(mask(`${region} replica of ${tableName}: ${awsDetail}`));
51120
+ };
51121
+ const watch = startInterruptWatch(mask(`application-autoscaling target cleanup for ${tableName} in ${region}`));
51122
+ const found = [];
51123
+ const asClient = this.getRegionalAutoScalingClient(region);
51124
+ try {
51125
+ const retired = await this.readReplicaTableRetired(tableName, region, options.budget, watch);
51126
+ if (retired !== true) {
51127
+ leaveTargets(retired.reason, retired.awsDetail);
51128
+ return;
51129
+ }
51130
+ try {
51131
+ let nextToken;
51132
+ do {
51133
+ if (watch.isInterrupted()) throw watch.onInterrupted();
51134
+ const token = nextToken;
51135
+ const res = await withRetry(() => asClient.send(new DescribeScalableTargetsCommand({
51136
+ ServiceNamespace: "dynamodb",
51137
+ ...token ? { NextToken: token } : {}
51138
+ })), `${tableResourceId} targets in ${region}`, {
51139
+ isRetryable: (_message, error) => isThrottlingError(error),
51140
+ maxRetries: autoScalingRetriesWithinDeleteBudget(options.budget, 8),
51141
+ isInterrupted: watch.isInterrupted,
51142
+ onInterrupted: watch.onInterrupted,
51143
+ ...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
51144
+ });
51145
+ for (const target of res?.ScalableTargets ?? []) {
51146
+ const dimension = target.ScalableDimension;
51147
+ const resourceId = target.ResourceId;
51148
+ if (!resourceId || !isDynamoDBScalableDimension(dimension)) continue;
51149
+ if (resourceId === tableResourceId && dimension.startsWith("dynamodb:table:")) found.push({ dimension });
51150
+ else if (resourceId.startsWith(indexPrefix) && resourceId.length > indexPrefix.length && dimension.startsWith("dynamodb:index:")) found.push({
51151
+ dimension,
51152
+ indexName: resourceId.slice(indexPrefix.length)
51153
+ });
51154
+ }
51155
+ nextToken = res?.NextToken;
51156
+ } while (nextToken);
51157
+ } catch (err) {
51158
+ if (isInterruptedWaitError(err)) throw err;
51159
+ const failure = describeAwsFailure(err);
51160
+ leaveTargets(`listing them failed (${failure.summary})`, failure.detail);
51161
+ return;
51162
+ }
51163
+ } finally {
51164
+ watch.dispose();
51165
+ }
51166
+ for (const target of found) await this.applyAutoScalingDiff(tableName, target.dimension, {}, void 0, asClient, target.indexName, options.budget, mask, options.progress);
51167
+ if (found.length > 0) this.logger.debug(mask(`Deregistered ${found.length} auto-scaling target(s) left by the removed ${region} replica of ${tableName}`));
51168
+ }
51169
+ async readReplicaTableRetired(tableName, region, budget, watch) {
51170
+ try {
51171
+ const status = (await withRetry(() => this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName })), `${tableName} in ${region}`, {
51172
+ isRetryable: (_message, error) => isThrottlingError(error),
51173
+ maxRetries: autoScalingRetriesWithinDeleteBudget(budget, 8),
51174
+ isInterrupted: watch.isInterrupted,
51175
+ onInterrupted: watch.onInterrupted,
51176
+ ...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
51177
+ })).Table?.TableStatus;
51178
+ if (status === "DELETING") return true;
51179
+ return { reason: `the table there still reads ${status ?? "no status"}` };
51180
+ } catch (err) {
51181
+ if (err instanceof ResourceNotFoundException$1) return true;
51182
+ if (isInterruptedWaitError(err)) throw err;
51183
+ const failure = describeAwsFailure(err);
51184
+ return {
51185
+ reason: `reading the table there failed (${failure.summary})`,
51186
+ awsDetail: failure.detail
51187
+ };
51188
+ }
51189
+ }
50943
51190
  async waitForTableGone(tableName, logicalId, maxAttempts = 600, budget, mask = (text) => text) {
50944
51191
  const shownName = mask(tableName);
50945
51192
  const wait = beginDeleteWait(maxAttempts, budget);
@@ -50979,6 +51226,46 @@ function refuseMalformedReplicaTags(properties, resourceType, logicalId, physica
50979
51226
  });
50980
51227
  return tagsByReplica;
50981
51228
  }
51229
+ const DISASSOCIATION_PROTECTION_KEY = "DisassociationProtectionEnabled";
51230
+ function disassociationProtectionRefusal(properties, previousProperties, logicalId) {
51231
+ const replicas = properties["Replicas"];
51232
+ if (!Array.isArray(replicas)) return void 0;
51233
+ const malformed = [];
51234
+ const singleRegion = [];
51235
+ const multiRegion = isMultiRegionReplicaSet(properties);
51236
+ replicas.forEach((entry, index) => {
51237
+ const replica = asRecord(entry);
51238
+ if (replica === void 0) return;
51239
+ const refusal = configBooleanRefusal(replica, DISASSOCIATION_PROTECTION_KEY, `Replicas[${index}]`);
51240
+ if (refusal !== void 0) {
51241
+ malformed.push(refusal);
51242
+ return;
51243
+ }
51244
+ const declared = readReplicaDisassociationProtection(replica);
51245
+ if (declared === void 0 || multiRegion) return;
51246
+ const region = replica["Region"];
51247
+ const previous = previousProperties === void 0 || typeof region !== "string" ? void 0 : readReplicaDisassociationProtection(localReplicaEntry(previousProperties, region));
51248
+ if (declared === false && declared !== previous) singleRegion.push(`Replicas[${index}].${DISASSOCIATION_PROTECTION_KEY}`);
51249
+ });
51250
+ const parts = [];
51251
+ if (malformed.length > 0) parts.push(`${malformed.join("; ")}. That replica's disassociation protection is left as it is.`);
51252
+ if (singleRegion.length > 0) parts.push(`${singleRegion.join(", ")} is applied by DynamoDB only to a replica of a multi-Region (MREC) global table, and this table's Replicas name a single Region, so cdkd does not send it. Remove ${DISASSOCIATION_PROTECTION_KEY}, or add a replica in another Region.`);
51253
+ if (parts.length === 0) return void 0;
51254
+ return `AWS::DynamoDB::GlobalTable ${logicalId}: ${parts.join(" ")}`;
51255
+ }
51256
+ function isMultiRegionReplicaSet(properties) {
51257
+ const replicas = properties["Replicas"];
51258
+ if (!Array.isArray(replicas)) return false;
51259
+ const regions = /* @__PURE__ */ new Set();
51260
+ for (const entry of replicas) {
51261
+ const region = asRecord(entry)?.["Region"];
51262
+ if (typeof region === "string" && region !== "") regions.add(region);
51263
+ }
51264
+ return regions.size > 1;
51265
+ }
51266
+ function readReplicaDisassociationProtection(replica) {
51267
+ return coerceCfnBoolean(replica?.[DISASSOCIATION_PROTECTION_KEY]);
51268
+ }
50982
51269
  function completeLegacyLocalReplica(baseline, aws, localRegion) {
50983
51270
  const key = "Replicas";
50984
51271
  const baselineReplicas = baseline[key];
@@ -51128,6 +51415,15 @@ function derivePerCallProvisionedThroughput(properties, region, source = "min",
51128
51415
  };
51129
51416
  }
51130
51417
  const DEFAULT_CAPACITY_UNITS = 5;
51418
+ const DYNAMODB_SCALABLE_DIMENSIONS = /* @__PURE__ */ new Set([
51419
+ "dynamodb:table:WriteCapacityUnits",
51420
+ "dynamodb:table:ReadCapacityUnits",
51421
+ "dynamodb:index:WriteCapacityUnits",
51422
+ "dynamodb:index:ReadCapacityUnits"
51423
+ ]);
51424
+ function isDynamoDBScalableDimension(value) {
51425
+ return typeof value === "string" && DYNAMODB_SCALABLE_DIMENSIONS.has(value);
51426
+ }
51131
51427
  function autoScalingTargetKey(spec) {
51132
51428
  return `${spec.region}|${spec.dimension}|${spec.indexName ?? ""}`;
51133
51429
  }
@@ -53262,6 +53558,8 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
53262
53558
  unwritten,
53263
53559
  routeDriving: findActionableSilentDrops(resourceType, desiredForSkipCheck, allowedForRecord, currentProps).map(({ property }) => property),
53264
53560
  nested: engine.options.parentStackInfo !== void 0,
53561
+ nowWritten: findHandledUnwrittenCreateOnly(resourceType, currentProps, createOnlyEvidence),
53562
+ evidence: [...createOnlyEvidence],
53265
53563
  protectionEvidence: recordedProtectionEvidence(resourceType, currentProps, currentResource.observedProperties, engine.stackRegion)
53266
53564
  }), "CREATE_ONLY_DROP_NEEDS_REPLACEMENT")));
53267
53565
  }
@@ -53373,13 +53671,34 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
53373
53671
  }
53374
53672
  function unwrittenCreateOnlyRefusal(input) {
53375
53673
  const { logicalId, resourceType, unwritten, routeDriving, nested, protectionEvidence } = input;
53674
+ const nowWritten = (input.nowWritten ?? []).filter((property) => unwritten.includes(property));
53675
+ if (nowWritten.length > 0) return nowWrittenCreateOnlyRefusal({
53676
+ ...input,
53677
+ nowWritten
53678
+ });
53376
53679
  const one = unwritten.length === 1;
53377
53680
  const list = unwritten.join(", ");
53378
53681
  const keep = [.../* @__PURE__ */ new Set([...unwritten, ...routeDriving])].sort((a, b) => a.localeCompare(b)).map((property) => `${resourceType}:${property}`).join(",");
53379
- const replaceFlags = nested ? "--replace (which creates the new resource before deleting the old one, so a resource holding a unique value other than its name, such as a CIDR block, collides)" : `--recreate-via-cc-api ${logicalId}, which deletes the old resource first (--replace also works, but creates the new one first, so a resource holding a unique value other than its name, such as a CIDR block, collides)`;
53682
+ const replaceFlags = unwrittenReplaceFlags(logicalId, nested);
53380
53683
  const routed = [...routeDriving].sort((a, b) => a.localeCompare(b)).join(", ");
53381
53684
  return safeMsg`${logicalId} (${resourceType}): ${list} ${one ? "is" : "are"} create-only, and the ` + `state record holds ${one ? "it" : "them"} although this type's SDK provider never writes ${one ? "it" : "them"}, so AWS does not. This deploy routes the resource through ` + safeMsg`Cloud Control (--prefer-sdk-route does not cover ${routed}), and applying a create-only ` + `property means replacing the resource, which cdkd does not do on its own. This ` + safeMsg`resource was not changed. To replace it and apply ${list}, re-run with ${replaceFlags}; a ` + `stateful resource also needs --force-stateful-recreation.` + (protectionEvidence !== void 0 ? safeMsg` ${recordedProtectionNote(protectionEvidence, nested ? "--replace" : `--recreate-via-cc-api ${logicalId} or --replace`)}` : "") + safeMsg` To keep dropping ${one ? "it" : "them"}, re-run with --prefer-sdk-route ${keep}.`;
53382
53685
  }
53686
+ function unwrittenReplaceFlags(logicalId, nested) {
53687
+ return nested ? "--replace (which creates the new resource before deleting the old one, so a resource holding a unique value other than its name, such as a CIDR block, collides)" : `--recreate-via-cc-api ${logicalId}, which deletes the old resource first (--replace also works, but creates the new one first, so a resource holding a unique value other than its name, such as a CIDR block, collides)`;
53688
+ }
53689
+ function nowWrittenCreateOnlyRefusal(input) {
53690
+ const { logicalId, resourceType, unwritten, routeDriving, nested, protectionEvidence } = input;
53691
+ const nowWritten = input.nowWritten;
53692
+ const one = unwritten.length === 1;
53693
+ const list = unwritten.join(", ");
53694
+ const written = nowWritten.join(", ");
53695
+ const writtenOne = nowWritten.length === 1;
53696
+ const stillDropped = unwritten.filter((property) => !nowWritten.includes(property));
53697
+ const keep = [.../* @__PURE__ */ new Set([...stillDropped, ...routeDriving])].filter((property) => !nowWritten.includes(property)).sort((a, b) => a.localeCompare(b)).map((property) => `${resourceType}:${property}`).join(",");
53698
+ const routed = [...routeDriving].sort((a, b) => a.localeCompare(b)).join(", ");
53699
+ const replaceFlags = unwrittenReplaceFlags(logicalId, nested);
53700
+ return safeMsg`${logicalId} (${resourceType}): ${list} ${one ? "is" : "are"} create-only, and the ` + `state record holds ${one ? "it" : "them"} although the SDK provider that built the resource did not write ${one ? "it" : "them"} (an earlier deploy accepted dropping ${one ? "it" : "them"} with --prefer-sdk-route), so AWS does not. ` + safeMsg`This cdkd version's SDK provider writes ${written}, so no flag keeps ` + `${writtenOne ? "it" : "them"} dropped any more` + (routed.length > 0 ? safeMsg`, and this deploy routes the resource through Cloud Control (--prefer-sdk-route does not cover ${routed})` : "") + "; applying a create-only property means replacing the resource, which cdkd does not do on its own. This " + safeMsg`resource was not changed. To replace it and apply ${list}, re-run with ${replaceFlags}; a ` + `stateful resource also needs --force-stateful-recreation.` + (protectionEvidence !== void 0 ? safeMsg` ${recordedProtectionNote(protectionEvidence, nested ? "--replace" : `--recreate-via-cc-api ${logicalId} or --replace`)}` : "") + safeMsg` To keep the resource as it is, remove ${written} from the template` + (keep.length > 0 ? safeMsg` and re-run with --prefer-sdk-route ${keep}.` : ".") + (nested || stillDropped.length > 0 || (input.evidence ?? []).some((property) => !nowWritten.includes(property)) ? "" : safeMsg` If AWS already holds ${written} (cdkd drift compares it), re-record the ` + safeMsg`resource instead: cdkd import with --resource '${logicalId}=PHYSICAL_ID' (its physical ` + `id, quoted) and --force writes a record without this evidence and changes nothing in AWS.`);
53701
+ }
53383
53702
  function scalarLeavesOf(value, into = /* @__PURE__ */ new Set()) {
53384
53703
  if (typeof value === "string") into.add(value);
53385
53704
  else if (typeof value === "number") into.add(String(value));
@@ -55273,5 +55592,5 @@ function sameGenerationClaimsOf(record) {
55273
55592
  }
55274
55593
 
55275
55594
  //#endregion
55276
- export { IMPLICIT_DELETE_DEPENDENCIES as $, envCredentialsAreAssumedRole as $a, maskSecretsInError as $c, withPrintingSecrets as $i, PhaseClock as $l, resourcesNamingDeclaredParameter as $n, malformedScrubResourceEntriesRefusalMessage as $o, noEchoComparisonForTemplate as $r, coerceCfnBoolean as $s, isAccessDeniedError as $t, stateBucketExistenceConfirmed as $u, DYNAMODB_DELETE_POLL_COST_MS as A, poisonRenderedSpellingsCollidingIn as Aa, noEchoOutputsComparison as Ac, injectedAwsRegionValue as Ad, DeploymentEventsStore as Ai, rebuildClientForBucketRegion as Al, replacementNeverSwapped as An, displayLogicalId as Ao, proposeRenames as Ar, repairMalformedResourcePropertiesForReadOnly as As, NESTED_PENDING_PARENT_REASON as At, isDockerClientEnvKey as Au, relayedIndexBusyDelete as B, keepHeldTokenProvenance as Ba, snapshotPassProvenance as Bc, tagPlanWarning as Bi, acceptedCreateOnlyDropsOf as Bl, redactedDeleteAddressSkip as Bn, malformedLocalResourceEntriesWarning as Bo, red as Br, NO_CC_HANDLERS_REASON as Bs, collectNestedChildUnaddressed as Bt, getDockerImageBySourceHash as Bu, planContributorInsightsOp as C, isUsableAttemptedName as Ca, isMarkedCoordinate as Cc, ownValue as Cd, unsupportedFinalSnapshotError as Ci, recordProvenPublicExpression as Cl, demoteSupersededOrphans as Cn, JSON_LISTING_HOLE_VALUE as Co, movedToHint as Cr, refuseMalformedResourcesForDestroy as Cs, makeCanonicalizePropertiesFn as Ct, describeDockerCapturedOutput as Cu, reverseMapTableContributorInsights as D, withUnsettledProperties as Da, maskedLeafCoordinatesOf as Dc, renderAssemblyPathEscape as Dd, withCreateTokenLedger as Di, LockManager as Dl, planRollback as Dn, UNREADABLE_RESOURCES_MAP_ROW as Do, looselyEqual as Dr, repairMalformedOrphansForReadOnly as Ds, resolvePendingCloudControlRequests as Dt, finchSecretArgvRefusal as Du, reverseMapIndexContributorInsights as E, unsettledPropertiesOf as Ea, maskWholeValue as Ec, displayAssemblyPath as Ed, reserveStackCreateToken as Ei, isSingleDynamicReferenceToken as El, planFailedOps as En, UNREADABLE_ORPHANS_CONTAINER_ROW as Eo, isPairableType as Er, repairMalformedOrphanRecordsForReadOnly as Es, pendingRequestCount as Et, dockerSpawnEnvWithSensitive as Eu, resolveDynamoDbDeleteBudgetMs as F, s3BucketRegionalDomainName as Fa, valueAtCoordinate as Fc, DBPROXY_TAG_OPTIONS as Fi, isAccessDenied$1 as Fl, getCurrentProducerRegions as Fn, isReadableResourceEntry as Fo, replacedDeleteFailureVerdict as Fr, withheldAccountClause as Fs, nestedChildStackName as Ft, redactedDockerCause as Fu, readTtlSpec as G, assertFlagRoleArn as Ga, logOnlyValueCount as Gc, ccBrokenReason as Gi, hasUnverifiableParameterRefusal as Gl, nameScopeOf as Gn, malformedOrphansRefusalMessage as Go, isSupersededResourceRecord as Gr, isStatefulRecreateTargetForReplace as Gs, dropFailedHint as Gt, loadCdkJson as Gu, isTtlAlreadyDisabled as H, recordedOutputReferenceRegions as Ha, createUnionSecretMasker as Hc, stringifyIfAssigned as Hi, exportNamesCarriedFrom as Hl, updatePartialReason as Hn, malformedOrphanRecordsRefusalMessage as Ho, addSuperseded as Hr, findReplacedReadersOfRecreateTargets as Hs, withNestedStackContext as Ht, synthesisStatusMessage as Hu, DELETE_INDEX_WAIT_PROCEED_NOTE as I, s3BucketWebsiteUrl as Ia, liveMatchesUnresolvedTokenFrame as Ic, planTagDiff as Ii, isNotImplemented as Il, inheritProducerRegions as In, malformedDriftResourcePropertiesWarning as Io, bold as Ir, findActionableSilentDrops as Is, recordDisplacedSkips as It, runDockerForeground as Iu, S3_AUTO_DELETE_OBJECTS_TAG as J, isIamRoleArn as Ja, recordLogOnlyValue as Jc, waitForLambdaFunctionActive as Ji, isReadableBag as Jl, retiredNameGenerationsLeaving as Jn, malformedOutputsWarning as Jo, supersededHeldByOtherTypeWarning as Jr, WARM_THROUGHPUT_MEMBERS as Js, loadJournaledOrphans as Jt, resolveCaptureObservedState as Ju, sendTtlWaitingOutRateLimit as K, assertSendableRoleArn as Ka, printingCorpusOf as Kc, isCustomResource as Ki, importableOutputKeys as Kl, retiredAfterRollback as Kn, malformedOrphansWarning as Ko, removeSuperseded as Kr, isStatefulRecreateTargetSync as Ks, isHandledOrphan as Kt, resolveApp as Ku, INDEX_SETTLE_POLL_INTERVAL_MS as L, resolveDynamicReferences as La, markSameGenerationBag as Lc, readTagList as Li, stackInstanceIdOf as Ll, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ln, malformedExportNamesWarning as Lo, cyan as Lr, findSilentDropProperties as Ls, revertNestedChildFromJournal as Lt, runDockerStreaming as Lu, compensateRemovedDeletionProtection as M, s3BucketArn as Ma, readbackPathFor as Mc, resolveBucketRegion as Md, isRefusedByName as Mi, CrossPrefixScanCache as Ml, seedsDeleteFirstGuard as Mn, hasReadableOutputs as Mo, destroyStackRecordsView as Mr, unpreviewableOrphanRecords as Ms, displacedPhysicalIdShown as Mt, partitionSensitiveEnv as Mu, deleteBudgetKey as N, s3BucketDomainName as Na, readsNoEchoSource as Nc, markDeleteStarted as Ni, applyCrossPrefixScan as Nl, orphanNeedsIdentity as Nn, hasReadableResources as No, getStackRecords as Nr, unreadableOrphanRecords as Ns, dropSettledNestedJournals as Nt, redactDockerArgvValues as Nu, stripIndexContributorInsights as O, withoutUnsettledProperties as Oa, noEchoCoordinatesOf as Oc, resolveAssemblyPath as Od, acquireIdempotencyToken as Oi, isLockInfoExpired as Ol, recheckFailedPlan as On, accountArgs as Oo, mappingPairs as Or, repairMalformedOutputsForReadOnly as Os, keptForRetainedRecord as Ot, formatDockerLoginError as Ou, resolveDynamoDbDeleteBudgetClock as P, s3BucketDualStackDomainName as Pa, recordedNoEchoValuesOf as Pc, DBPROXY_TAGS_WHAT as Pi, crossPrefixDeniedWarning as Pl, findNestedStackTypeChanges as Pn, isReadableOrphanRecord as Po, withStackRecords as Pr, unreadableResourceEntries as Ps, getNestedRevertRun as Pt, redactedCause as Pu, markRefusedBeforeApplying as Q, callerEnvCredentials as Qa, errorCauseChain as Qc, getCurrentResourceSecrets as Qi, stackInstanceIdCarriedFrom as Ql, reachableDivergentParameters as Qn, malformedResourcesWarning as Qo, noEchoAttributeNamesOf as Qr, toFiniteNumber as Qs, chunks as Qt, resolveUseCdkBootstrapAssets as Qu, deleteTableWithIndexBusyRetry as R, producerLookupOver as Ra, redactForState as Rc, refuseMalformedDesiredTags as Ri, withStackInstanceIdWithheld as Rl, isRedactedRecordedValue as Rn, malformedExportSourceWarning as Ro, gray as Rr, unwrittenCreateOnlyReplacement as Rs, revertedNestedRowIds as Rt, warnFinchArgvExposure as Ru, indexDeclaresContributorInsights as S, INTRINSIC_KEYS as Sa, canonicalCoordinates as Sc, nullPrototypeRecord as Sd, refusesFinalSnapshot as Si, recordNoEchoParameterFreshValue as Sl, undeclaredEmptyObservedKeys as Sn, declaresNoEcho as So, hintSidesOf as Sr, refuseMalformedResourcesForDeploy as Ss, mergeNoChangeOutputs as St, resolveDockerContextDirectory as Su, readContributorInsightsSpec as T, unsettledItemsOf as Ta, maskReadbackAtCoordinates as Tc, describeFileReadFailure as Td, ledgerForStack as Ti, WHOLE_DYNAMIC_REFERENCE_PATTERN as Tl, isReplacementOrphan as Tn, STATE_RESOURCES_MALFORMED as To, withMovedTo as Tr, refuseMalformedState as Ts, planOrphanAdoption as Tt, describeDockerFailure as Tu, isTtlRateLimited as U, recordedReferenceRegions as Ua, hasMaskableValues as Uc, CC_BROKEN_REASON as Ui, hasReadableExportSet as Ul, nameGenerationCarriedFrom as Un, malformedOrphanRecordsWarning as Uo, deleteSupersededEntry as Ur, shownType as Us, deleteJournaledOrphans as Ut, getDefaultStateBucketName as Uu, waitForIndexesSettled as V, outputReferenceProvenanceOf as Va, carryLogOnlyValues as Vc, definedAttributes as Vi, describeRegionValueKind as Vl, updatePartialMessage as Vn, malformedLocalResourcesWarning as Vo, yellow as Vr, hasNoCloudControlHandlers as Vs, getCurrentNestedStackContext as Vt, Synthesizer as Vu, planTimeToLive as W, applyRoleArnIfSet as Wa, literalSplitDelimitersOf as Wc, ProviderRegistry as Wi, hasReasonlessBaselineRefusal as Wl, nameGenerationHighWaterOf as Wn, malformedOrphanRowsKeptWarning as Wo, holdsSupersededResources as Wr, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ws, dropFailedCommands as Wt, getLegacyStateBucketName as Wu, isTruthyCfnBoolean as X, AWS_CREDENTIAL_ENV_KEYS as Xa, unionOfSecretBags as Xc, readsNoEchoDeleteValues as Xi, orphansCarriedFrom as Xl, computeParameterTaint as Xn, malformedResourceEntriesWarning as Xo, supersededResourcesOf as Xr, isWarmThroughputDecrease as Xs, sameJournaledOrphans as Xt, resolveStateBucketWithDefault as Xu, hasCdkAutoDeleteTag as Y, sendableAssumeRoleCommand as Ya, shareLogOnlyValues as Yc, TemplateNoEchoReresolver as Yi, orphansAfterRollback as Yl, withNameGenerationReached as Yn, malformedRenderedContainersWarning as Yo, supersededHolderOf as Yr, coerceWarmThroughput as Ys, makeForeignHolderScan as Yt, resolveSkipPrefix as Yu, getPriorAttempts as Z, applyCallerIdentityCredentials as Za, createSecretMasker as Zc, isCustomResourceType as Zi, shouldRetainResource as Zl, namesAnyDeclaredParameter as Zn, malformedResourcePropertiesWarning as Zo, withoutSuperseded as Zr, toCfnInteger as Zs, formatResourceLine as Zt, resolveStateBucketWithDefaultAndSource as Zu, streamMemberRefusals as _, isTerminationProtectionPropagationError as _a, canonicalLambdaFunctionName as _c, parseFailureDebugDetail as _d, buildFinalSnapshotIdentifier as _i, carriesSecretMask as _l, settleUnsettledPrevious as _n, refStateLookupFromResource as _o, maskingRetryLogger as _r, refuseMalformedResourceEntriesForOrphan as _s, enclosingDeadlineRemainingMs as _t, readBootstrapMarkerBody as _u, isProtectionValueActive as a, onlySecretReferencesDiffer as aa, replayWarn as ac, findLargeInlineResources as ad, journaledOrphanPrintingBag as ai, dynamicReferenceTokens as al, refactorMarkerRefusalMessage as an, isUnboundTemplateParameter as ao, secretSafeKeyDisplay as ar, refuseMalformedOrphanRecordsForDestroy as as, serviceTokenBlockingReason as at, WorkGraph as au, CONTRIBUTOR_INSIGHTS_KEY as b, reEnableInstanceApiTermination as ba, DagBuilder as bc, hasOwnKey as bd, effectiveDeletionPolicy as bi, recordMaskOnlyValuesIn as bl, equalModuloMarkedMask as bn, parameterInputsFor as bo, formatDestructiveChange as br, refuseMalformedResourcePropertiesForExport as bs, isSecretBearingReferenceString as bt, buildDenyExternalAccessPolicy as bu, DynamoDBGlobalTableProvider as c, UNSPECIFIED_SKIP_REASON as ca, requireConfigString as cc, decodeListingKey as cd, orphanRecordsPrintingBag as ci, spelledKeysOf as cl, updateRefactorMarker as cn, isImpossibleEmptyStoredAttribute as co, exportNameSecretExposure as cr, refuseMalformedOrphansForOrphan as cs, isAbsoluteAssetPath as ct, loadPublishableAssetManifest as cu, declaredStreamPolicyMember as d, deleteSkipReason as da, describeTypeWithThrottleRetry as dc, canonicalizeRegion as dd, secretNamedAttributeNamesOf as di, recordNestedStackParameterExpressions as dl, pendingMovesRefusalMessage as dn, isNamelessDynamicReferenceError as do, collectDeclaredOutputNames as dr, refuseMalformedResourceAttributesForOrphan as ds, templateIdentity as dt, BOOTSTRAP_MARKER_PREFIX as du, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as ea, coerceCfnInteger as ec, warnDeprecatedNoPrefixCliFlag as ed, noEchoExactEchoLeavesOf as ei, maskSecretsInText as el, lookupEachName as en, classifyRecordedSecretRegion as eo, WITHHELD_NAME_DISPLAY as er, malformedStateRefusalMessage as es, computeImplicitDeleteEdges as et, renderPhaseTimings as eu, declaredStreamTagsMember as f, withIndeterminateGuard as fa, withRetry as fc, derivePartitionAndUrlSuffix as fd, secretNamedRecordNeedles as fi, recoverMaskedOutput as fl, refusePendingMovesOut as fn, keepsSecretReferenceToken as fo, collectPublishedOutputNames as fr, refuseMalformedResourceEntries as fs, conditionFingerprint as ft, assertAssetBucketRegion as fu, streamDeclaresTags as g, ec2InstanceProtectionSite as ga, emrClusterInstancesReplaced as gc, describeJsonParseFailure as gd, PRE_DELETE_SNAPSHOT_TYPES as gi, splitGetAttStringForm as gl, recordAfterRollbackUpdate as gn, lacksRecordedTableArn as go, DEFAULT_RESOURCE_WARN_AFTER_MS as gr, refuseMalformedResourceEntriesForImportSave as gs, enclosingDeadlineExpired as gt, parseBootstrapMarker as gu, streamDeclaresPolicy as h, disableInstanceApiTermination as ha, ecsServiceLaunchTypeSetOrChanged as hc, processStackMessages as hd, ATOMIC_FINAL_SNAPSHOT_TYPES as hi, recordPhysicalNameCopy as hl, removeProtectionTypeList as hn, isStalePlaceholderArnAttribute as ho, DEFAULT_RESOURCE_TIMEOUT_MS as hr, refuseMalformedResourceEntriesForImport as hs, readRecordedConditionVerdicts as ht, isCrossRegionRedirect as hu, PROTECTION_PROPERTY_BY_TYPE as i, slowCcOperationTimeoutMs as ia, readConfigString as ic, MIGRATE_TMP_PREFIX as id, completedReplayEntries as ii, DYNAMIC_REFERENCE_TOKEN_SCAN as il, refactorMarkerMovesOf as in, coerceParameterTypedValue as io, secretBearingStateKeyWarning as ir, refuseMalformedOrphanRecords as is, findServiceTokenRefusals as it, stringifyValue as iu, beginDeleteWait as j, isSettledInstanceState as ja, passedNoEchoParametersOf as jc, clearBucketRegionCache as jd, extractDeploymentEventError as ji, CrossPrefixReadError as jl, resolveReplacementOldType as jn, hasReadableOrphans as jo, awaitInFlightSibling as jr, repairMalformedResourcesForReadOnly as js, displacedOpClause as jt, isMalformedEnvKey as ju, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, IntrinsicFunctionResolver as ka, noEchoLeavesOf as kc, injectAwsRegion as kd, DeploymentEventsReader as ki, S3StateBackend as kl, recordUnderIdIsNotOwn as kn, deployRefusesOrphanRowsReason as ko, parseMappingFile as kr, repairMalformedResourceEntriesForReadOnly as ks, recordRetainedForReadoption as kt, getDockerCmd as ku, STREAM_POLICY_KEY as l, deleteIndeterminateGuards as la, prefetchCreateOnlyPropertyPaths as lc, expectedOwnerParam as ld, secretNamePrintingBag as li, identityKeyFor as ll, hasPendingMovesOut as ln, carriesDynamicReference as lo, isWholeDynamicReferenceValue as lr, refuseMalformedOutputs as ls, listNestedTemplateRows as lt, rewriteTemplateAssetReferences as lu, reverseMapStreamPolicy as m, markWaitAbandoned as ma, dbInstanceEngineChangeIsInPlace as mc, StageLoadError as md, storedSecretNameNeedles as mi, recordAttributeIdCopy as ml, replayRollback as mn, cfnRefValueFromPhysicalId as mo, bindingSkippedOutputs as mr, refuseMalformedResourceEntriesForDestroy as ms, parentSuppliedValues as mt, getBootstrapMarkerKey as mu, recordedProtectionEvidence as n, customResourceResponseExpirationWarning as na, configIntegerRefusal as nc, CFN_TEMPLATE_BODY_LIMIT as nd, withAttemptedItemsMasked as ni, withPhysicalNameCopies as nl, readRefactorMarker as nn, producerRegionsFromState as no, exportAliasCollisionScrubWarning as nr, refuseDivergentRecordRegionForDestroy as ns, inheritedProvenanceForChildDiff as nt, AssetPublisher as nu, perType as o, unchangedBehindSecretReference as oa, requireConfigArray as oc, uploadCfnTemplate as od, maskEventTextWithBoundBags as oi, isUncertifiedBaselineMaskPosition as ol, refuseRefactorMarker as on, parameterTypeMayLoseSecretIdentity as oo, carriedExportAliasExposure as or, refuseMalformedOrphans as os, childTemplateLoader as ot, buildAssetRedirectMap as ou, planStreamMemberOps as p, isWaitAbandonedError as pa, blockDeviceMappingsDifferOnlyInDeleteOnTermination as pc, AssemblyReader as pd, stateSecretNameNeedles as pi, physicalNameCopiesOf as pl, replayFailedOperations as pn, AWS_NO_VALUE as po, isExportAliasCollision as pr, refuseMalformedResourceEntriesForDeploy as ps, conditionInputsFrom as pt, ensureAssetStorage as pu, ECR_AUTO_DELETE_IMAGES_TAG as q, explicitRoleArnOrThrow as qa, recordLogOnlyParameterValue as qc, wouldReturnToSdkProvider as qi, importableOutputs as ql, retiredNameGenerationsAfter as qn, malformedOutputsRefusalMessage as qo, supersededAfterRollback as qr, renderStatefulReason as qs, journaledOrphanLines as qt, resolveAutoAssetStorage as qu, recordedProtectionNote as r, CloudControlProvider as ra, configStringRefusal as rc, CFN_TEMPLATE_URL_LIMIT as rd, createReadOnlyAttributeHealerFactory as ri, withoutPhysicalNameCopies as rl, readRefactorMarkerOnce as rn, regionLessSecretName as ro, secretBearing as rr, refuseMalformedNestedChildOutputs as rs, deferredServiceTokenWarning as rt, isSensitiveAttributeName as ru, readProtection as s, RollbackInlinePolicyWriters as sa, requireConfigObject as sc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as sd, namingSecretsWithRecordedNoEcho as si, pathCrossesDottedKey as sl, sameMove as sn, getAccountInfo as so, exportNameNoEchoParameters as sr, refuseMalformedOrphansForDestroy as ss, findNestedTemplateTreeDefect as st, createAssetRedirectResolver as su, DeployEngine as t, applyCustomResourceResponseExpiration as ta, configBooleanRefusal as tc, ssmResolvedValueType as td, noEchoParameterNamesOf as ti, scrubResourceRecord as tl, withApiLimit as tn, classifyReplaySecretRegion as to, displayTextOrWithheld as tr, previewableOrphanRecords as ts, crossStackOutputProvenanceSource as tt, timePhase as tu, STREAM_TAGS_KEY as u, deleteLeftInPlace as ua, templateResourceTypes as uc, PARTITION_TABLE as ud, secretNamePrintingBags as ui, inheritNestedStackParameterAssociations as ul, pendingMovesOutOf as un, carriesFetchableDynamicReference as uo, noEchoParameterValueSeed as ur, refuseMalformedOutputsForDestroy as us, renderNestedTemplateTreeDefect as ut, AssetModeResolver as uu, streamPolicyMatchesDeclared as v, observeThenDisableInstanceApiTermination as va, lambdaFunctionNameForMask as vc, utf8ByteLength as vd, ccRoutedFinalSnapshotError as vi, provenPublicValue as vl, withUnprovenUnsettled as vn, parseWebACLArn as vo, constructPathOf as vr, refuseMalformedResourcePropertiesForDestroy as vs, withResourceDeadline as vt, validateAssetBucketName as vu, planIndexContributorInsightsOps as w, unsettledItemsField as wa, maskAtCoordinates as wc, absoluteAssemblyPathEscape as wd, earliestDefined as wi, wholeStringLeavesOf as wl, isJournaledOrphan as wn, STATE_REGION_DIVERGED as wo, rollbackOrphanIds as wr, refuseMalformedResourcesForExport as ws, makeSiblingClaimReader as wt, describeDockerExecFailure as wu, contributorInsightsRefusals as x, DiffCalculator as xa, TemplateParser as xc, hasPlainPrototype$1 as xd, isFinalSnapshotError as xi, recordNoEchoAttributeValues as xl, equalModuloMask as xn, passedParameterClassesOf as xo, findRefactorHints as xr, refuseMalformedResourcePropertiesForOrphan as xs, keptWholeReasonText as xt, buildDockerImage as xu, streamTagsMatchDeclared as y, reDisableInstanceApiTermination as ya, sameLambdaFunctionAddress as yc, defineOwnKey as yd, createPreDeleteFinalSnapshot as yi, recordMaskOnlyValue as yl, calculateResourceDrift as yn, withSharedDrainBudget as yo, findDestructiveChanges as yr, refuseMalformedResourcePropertiesForDrift as ys, diffSecurity as yt, validateContainerRepoName as yu, maskedLogger as z, refuseUnreadableCdkCrossAccountRefs as za, recordReferenceProvenanceEntry as zc, tagMapAsList as zi, splitImportedOps as zl, redactedDeleteAddressFields as zn, malformedLocalOutputsWarning as zo, green as zr, withoutSilentDropProperties as zs, withNestedRevertRun as zt, AssetManifestLoader as zu };
55277
- //# sourceMappingURL=deploy-engine-BF5exXUb.js.map
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