@go-to-k/cdkd 0.311.0 → 0.312.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-CVLTQtQr.js} +3 -3
  3. package/dist/{asg-provider-CIg_guZ-.js.map → asg-provider-CVLTQtQr.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-CVNzK__j.js} +303 -78
  10. package/dist/deploy-engine-CVNzK__j.js.map +1 -0
  11. package/dist/{iam-role-provider-qvhlVnrn.js → iam-role-provider-DM7bN9m1.js} +3 -3
  12. package/dist/{iam-role-provider-qvhlVnrn.js.map → iam-role-provider-DM7bN9m1.js.map} +1 -1
  13. package/dist/index.js +3 -3
  14. package/dist/{neptune-provider-D9ac71Ca.js → neptune-provider-qdoLunCh.js} +53 -6
  15. package/dist/neptune-provider-qdoLunCh.js.map +1 -0
  16. package/dist/{program-DbnTHlwR.js → program-Nk_95KKk.js} +16 -10
  17. package/dist/program-Nk_95KKk.js.map +1 -0
  18. package/dist/{provider-classes-DktsDsTf.js → provider-classes-Dz0pYmlJ.js} +1045 -80
  19. package/dist/provider-classes-Dz0pYmlJ.js.map +1 -0
  20. package/dist/{rds-provider-0LUsn9Wl.js → rds-provider-CXSZq1c8.js} +25 -14
  21. package/dist/rds-provider-CXSZq1c8.js.map +1 -0
  22. package/dist/{version-BA4rBBLp.js → version-BqCEt5Wu.js} +2 -2
  23. package/dist/{version-BA4rBBLp.js.map → version-BqCEt5Wu.js.map} +1 -1
  24. package/package.json +1 -1
  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-BqCEt5Wu.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", {
@@ -16700,6 +16725,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16700
16725
  ["MultiRegionConsistency", "not yet implemented by cdkd"],
16701
16726
  ["ReadOnDemandThroughputSettings", "not yet implemented by cdkd"],
16702
16727
  ["ReadProvisionedThroughputSettings", "not yet implemented by cdkd"],
16728
+ ["TableType", "not yet implemented by cdkd"],
16703
16729
  ["VectorIndexes", "not yet implemented by cdkd"],
16704
16730
  ["WarmThroughput", "not yet implemented by cdkd"]
16705
16731
  ]),
@@ -16731,9 +16757,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
16731
16757
  "TableName",
16732
16758
  "Tags",
16733
16759
  "TimeToLiveSpecification",
16760
+ "VectorIndexes",
16734
16761
  "WarmThroughput"
16735
16762
  ]),
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"]]),
16763
+ 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
16764
  createOnlyDrops: /* @__PURE__ */ new Set(["ImportSourceSpecification"]),
16738
16765
  readOnly: /* @__PURE__ */ new Set(["Arn", "StreamArn"]),
16739
16766
  ccRouteUnavailable: false
@@ -17101,7 +17128,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
17101
17128
  "VolumeConfigurations",
17102
17129
  "VpcLatticeConfigurations"
17103
17130
  ]),
17104
- silentDrop: /* @__PURE__ */ new Map(),
17131
+ silentDrop: /* @__PURE__ */ new Map([["GatewayConnectors", "not yet implemented by cdkd"]]),
17105
17132
  createOnlyDrops: /* @__PURE__ */ new Set(),
17106
17133
  readOnly: /* @__PURE__ */ new Set(["Name", "ServiceArn"]),
17107
17134
  ccRouteUnavailable: false
@@ -18180,7 +18207,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18180
18207
  ["SourceDbClusterResourceId", "not yet implemented by cdkd"],
18181
18208
  ["SourceRegion", "not yet implemented by cdkd"],
18182
18209
  ["StorageType", "not yet implemented by cdkd"],
18183
- ["UseLatestRestorableTime", "not yet implemented by cdkd"]
18210
+ ["UseLatestRestorableTime", "not yet implemented by cdkd"],
18211
+ ["WithExpressConfiguration", "not yet implemented by cdkd"]
18184
18212
  ]),
18185
18213
  createOnlyDrops: /* @__PURE__ */ new Set([
18186
18214
  "ClusterScalabilityType",
@@ -18192,7 +18220,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18192
18220
  "SourceDBClusterIdentifier",
18193
18221
  "SourceDbClusterResourceId",
18194
18222
  "SourceRegion",
18195
- "UseLatestRestorableTime"
18223
+ "UseLatestRestorableTime",
18224
+ "WithExpressConfiguration"
18196
18225
  ]),
18197
18226
  readOnly: /* @__PURE__ */ new Set([
18198
18227
  "DBClusterArn",
@@ -18329,20 +18358,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18329
18358
  "Auth",
18330
18359
  "DBProxyName",
18331
18360
  "DebugLogging",
18361
+ "DefaultAuthScheme",
18362
+ "EndpointNetworkType",
18332
18363
  "EngineFamily",
18333
18364
  "IdleClientTimeout",
18334
18365
  "RequireTLS",
18335
18366
  "RoleArn",
18336
18367
  "Tags",
18368
+ "TargetConnectionNetworkType",
18337
18369
  "VpcSecurityGroupIds",
18338
18370
  "VpcSubnetIds"
18339
18371
  ]),
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"]),
18372
+ silentDrop: /* @__PURE__ */ new Map(),
18373
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18346
18374
  readOnly: /* @__PURE__ */ new Set([
18347
18375
  "DBProxyArn",
18348
18376
  "Endpoint",
@@ -18354,13 +18382,14 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18354
18382
  handled: /* @__PURE__ */ new Set([
18355
18383
  "DBProxyEndpointName",
18356
18384
  "DBProxyName",
18385
+ "EndpointNetworkType",
18357
18386
  "Tags",
18358
18387
  "TargetRole",
18359
18388
  "VpcSecurityGroupIds",
18360
18389
  "VpcSubnetIds"
18361
18390
  ]),
18362
- silentDrop: /* @__PURE__ */ new Map([["EndpointNetworkType", "not yet implemented by cdkd"]]),
18363
- createOnlyDrops: /* @__PURE__ */ new Set(["EndpointNetworkType"]),
18391
+ silentDrop: /* @__PURE__ */ new Map(),
18392
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18364
18393
  readOnly: /* @__PURE__ */ new Set([
18365
18394
  "DBProxyEndpointArn",
18366
18395
  "Endpoint",
@@ -18507,26 +18536,21 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18507
18536
  }],
18508
18537
  ["AWS::S3Tables::Table", {
18509
18538
  handled: /* @__PURE__ */ new Set([
18539
+ "Compaction",
18510
18540
  "Format",
18541
+ "IcebergMetadata",
18511
18542
  "Name",
18512
18543
  "Namespace",
18513
18544
  "OpenTableFormat",
18545
+ "SnapshotManagement",
18546
+ "StorageClassConfiguration",
18514
18547
  "TableBucketARN",
18515
18548
  "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",
18549
+ "Tags",
18528
18550
  "WithoutMetadata"
18529
18551
  ]),
18552
+ silentDrop: /* @__PURE__ */ new Map(),
18553
+ createOnlyDrops: /* @__PURE__ */ new Set(),
18530
18554
  readOnly: /* @__PURE__ */ new Set([
18531
18555
  "TableARN",
18532
18556
  "VersionToken",
@@ -18535,14 +18559,16 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
18535
18559
  ccRouteUnavailable: false
18536
18560
  }],
18537
18561
  ["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"]
18562
+ handled: /* @__PURE__ */ new Set([
18563
+ "EncryptionConfiguration",
18564
+ "MetricsConfiguration",
18565
+ "ReplicationConfiguration",
18566
+ "StorageClassConfiguration",
18567
+ "TableBucketName",
18568
+ "Tags",
18569
+ "UnreferencedFileRemoval"
18545
18570
  ]),
18571
+ silentDrop: /* @__PURE__ */ new Map(),
18546
18572
  createOnlyDrops: /* @__PURE__ */ new Set(),
18547
18573
  readOnly: /* @__PURE__ */ new Set(["TableBucketARN"]),
18548
18574
  ccRouteUnavailable: false
@@ -19133,7 +19159,8 @@ const NON_PROVISIONABLE_TYPES = /* @__PURE__ */ new Set([
19133
19159
  "AWS::WAFRegional::XssMatchSet",
19134
19160
  "AWS::Wisdom::Session",
19135
19161
  "AWS::WorkSpaces::WorkSpaceApplication",
19136
- "AWS::WorkSpaces::WorkspaceBundle"
19162
+ "AWS::WorkSpaces::WorkspaceBundle",
19163
+ "AWS::WorkSpaces::WorkspaceImage"
19137
19164
  ]);
19138
19165
 
19139
19166
  //#endregion
@@ -19256,21 +19283,39 @@ function excludeCreateOnly(resourceType, names) {
19256
19283
  return names.filter((property) => !createOnly.has(property));
19257
19284
  }
19258
19285
  function withoutUnwrittenSilentDropProperties(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence) {
19259
- const drops = findSilentDropProperties(resourceType, recordedProperties);
19260
- if (drops.length === 0) return recordedProperties;
19261
19286
  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));
19287
+ 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
19288
  if (removable.length === 0) return recordedProperties;
19265
19289
  const narrowed = { ...recordedProperties };
19266
19290
  for (const property of removable) delete narrowed[property];
19267
19291
  return narrowed;
19268
19292
  }
19269
19293
  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 [];
19294
+ return evidenceNamedUnwritten(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence).filter((property) => Object.hasOwn(desiredProperties, property) && askedUnchanged(recordedProperties, desiredProperties, property));
19295
+ }
19296
+ function evidenceNamedUnwritten(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence) {
19297
+ if (evidence.size === 0) return [];
19298
+ const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops ?? /* @__PURE__ */ new Set();
19272
19299
  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"));
19300
+ 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));
19301
+ }
19302
+ function askedUnchanged(recordedProperties, desiredProperties, property) {
19303
+ return sameJsonValue(recordedProperties[property], desiredProperties[property], "unchanged");
19304
+ }
19305
+ function findHandledUnwrittenCreateOnly(resourceType, recordedProperties, evidence) {
19306
+ if (evidence.size === 0) return [];
19307
+ const handled = getPropertyCoverage(resourceType)?.handled;
19308
+ if (handled === void 0) return [];
19309
+ const createOnlyRoots = new Set((CREATE_ONLY_PATHS_SNAPSHOT.get(resourceType) ?? []).filter((path) => path.length === 1).map((path) => path[0]));
19310
+ return [...evidence].filter((property) => handled.has(property) && createOnlyRoots.has(property) && Object.hasOwn(recordedProperties, property)).sort((a, b) => a.localeCompare(b));
19311
+ }
19312
+ function acceptedCreateOnlyDropsEvidence(recordedProperties, resourceType, provisionedBy, carried) {
19313
+ if (provisionedBy !== "sdk") return void 0;
19314
+ const createOnly = getPropertyCoverage(resourceType)?.createOnlyDrops ?? /* @__PURE__ */ new Set();
19315
+ const names = findSilentDropProperties(resourceType, recordedProperties).map(({ property }) => property).filter((property) => createOnly.has(property) && (carried === void 0 || carried.has(property)));
19316
+ const handled = carried === void 0 ? [] : findHandledUnwrittenCreateOnly(resourceType, recordedProperties, carried);
19317
+ const all = [...names, ...handled].sort((a, b) => a.localeCompare(b));
19318
+ return all.length > 0 ? all : void 0;
19274
19319
  }
19275
19320
  function unwrittenCreateOnlyReplacement(resourceType, recordedProperties, desiredProperties, allowedKeys, evidence, replacingPaths) {
19276
19321
  if (replacingPaths.length === 0) return [];
@@ -21110,6 +21155,9 @@ const REF_RETURNS_ARN_FROM_STATE = /* @__PURE__ */ new Map([
21110
21155
  ["AWS::AppSync::DataSource", ["DataSourceArn"]],
21111
21156
  ["AWS::AppSync::Resolver", ["ResolverArn"]]
21112
21157
  ]);
21158
+ function graphQLSchemaCfnId(physicalId) {
21159
+ return /^[a-z0-9]+$/.test(physicalId) ? `${physicalId}GraphQLSchema` : physicalId;
21160
+ }
21113
21161
  function isStalePlaceholderArnAttribute(resourceType, attributeName, value) {
21114
21162
  if (!REF_RETURNS_ARN_FROM_STATE.get(resourceType)?.includes(attributeName)) return false;
21115
21163
  return typeof value === "string" && isPlaceholderArn(value);
@@ -21190,6 +21238,7 @@ function lacksRecordedTableArn(resource) {
21190
21238
  }
21191
21239
  function cfnRefValueFromPhysicalId(resourceType, physicalId, stateLookup) {
21192
21240
  if (resourceType === "AWS::S3Tables::Table") return s3TablesTableRefFromPhysicalId(physicalId, stateLookup);
21241
+ if (resourceType === "AWS::AppSync::GraphQLSchema") return graphQLSchemaCfnId(physicalId);
21193
21242
  if (resourceType === "AWS::Glue::Table") {
21194
21243
  const tableName = glueTableRefFromPhysicalId(physicalId, stateLookup);
21195
21244
  if (tableName !== void 0) return tableName;
@@ -23959,6 +24008,7 @@ async function constructAttributeForAppTypes(resolver, resource, attributeName,
23959
24008
  case "ApiId": return physicalId;
23960
24009
  default: return guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context);
23961
24010
  }
24011
+ if (resourceType === "AWS::AppSync::GraphQLSchema" && attributeName === "Id") return graphQLSchemaCfnId(physicalId);
23962
24012
  if (resourceType === "AWS::ApiGatewayV2::Api") switch (attributeName) {
23963
24013
  case "ExecuteApiArn": return `arn:${partition}:execute-api:${region}:${accountId}:${physicalId}`;
23964
24014
  case "ApiId": return physicalId;
@@ -28740,7 +28790,7 @@ var CloudControlProvider = class {
28740
28790
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
28741
28791
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
28742
28792
  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");
28793
+ const { ASGProvider } = await import("./asg-provider-CVLTQtQr.js");
28744
28794
  const delegateRegion = ambientRegion();
28745
28795
  let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
28746
28796
  if (asgProvider === void 0) {
@@ -28849,7 +28899,7 @@ var CloudControlProvider = class {
28849
28899
  const family = SDK_DELETE_FAMILIES.get(resourceType);
28850
28900
  const cached = this.sdkDeleteDelegates.get(family);
28851
28901
  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 });
28902
+ const provider = family === "rds" ? new (await (import("./rds-provider-CXSZq1c8.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-qdoLunCh.js"))).NeptuneProvider({ region: ccRegion });
28853
28903
  this.sdkDeleteDelegates.set(family, {
28854
28904
  region: ccRegion,
28855
28905
  provider
@@ -31661,6 +31711,7 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31661
31711
  ["Source.Auth", ["Type"]],
31662
31712
  ["Source.GitSubmodulesConfig", ["FetchSubmodules"]],
31663
31713
  ["Tags", ["Key", "Value"]],
31714
+ ["Triggers.FilterGroups", ["Pattern", "Type"]],
31664
31715
  ["Triggers.PullRequestBuildPolicy", ["RequiresCommentApproval"]],
31665
31716
  ["Triggers.ScopeConfiguration", ["Name"]]
31666
31717
  ])],
@@ -31839,6 +31890,7 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31839
31890
  ["DeploymentConfiguration.DeploymentCircuitBreaker.ThresholdConfiguration", ["Type", "Value"]],
31840
31891
  ["DeploymentConfiguration.LifecycleHooks", ["LifecycleStages"]],
31841
31892
  ["ForceNewDeployment", ["EnableForceNewDeployment"]],
31893
+ ["GatewayConnectors", ["PortName"]],
31842
31894
  ["LoadBalancers.AdvancedConfiguration", ["AlternateTargetGroupArn"]],
31843
31895
  ["Monitoring", ["MetricConfigurations"]],
31844
31896
  ["Monitoring.MetricConfigurations", ["MetricNames", "ResolutionSeconds"]],
@@ -31868,6 +31920,8 @@ const NESTED_REQUIRED = /* @__PURE__ */ new Map([
31868
31920
  ["ContainerDefinitions.LogConfiguration", ["LogDriver"]],
31869
31921
  ["ContainerDefinitions.LogConfiguration.SecretOptions", ["Name", "ValueFrom"]],
31870
31922
  ["ContainerDefinitions.ResourceRequirements", ["Type"]],
31923
+ ["ContainerDefinitions.ResourceRequirements.SharingStrategy", ["NvidiaMps"]],
31924
+ ["ContainerDefinitions.ResourceRequirements.SharingStrategy.NvidiaMps", ["Memory"]],
31871
31925
  ["ContainerDefinitions.Secrets", ["Name", "ValueFrom"]],
31872
31926
  ["ContainerDefinitions.Ulimits", [
31873
31927
  "HardLimit",
@@ -32945,6 +32999,7 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
32945
32999
  ["AWS::CloudFront::OriginAccessControl", "{\"OriginAccessControlConfig\":\"object\"}"],
32946
33000
  ["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
33001
  ["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\"}"],
33002
+ ["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
33003
  ["AWS::CodeCommit::Repository", "{\"Code\":\"object\",\"Code.S3\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\",\"Triggers\":\"array\",\"Triggers[]\":\"object\",\"Triggers[].Branches\":\"array\",\"Triggers[].Events\":\"array\"}"],
32949
33004
  ["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
33005
  ["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 +33018,8 @@ const PROPERTY_SHAPES = /* @__PURE__ */ new Map([
32963
33018
  ["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
33019
  ["AWS::ECR::Repository", "{\"EncryptionConfiguration\":\"object\",\"ImageScanningConfiguration\":\"object\",\"ImageTagMutabilityExclusionFilters\":\"array\",\"ImageTagMutabilityExclusionFilters[]\":\"object\",\"LifecyclePolicy\":\"object\",\"Tags\":\"array\",\"Tags[]\":\"object\"}"],
32965
33020
  ["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\"}"],
33021
+ ["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\"}"],
33022
+ ["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
33023
  ["AWS::EFS::AccessPoint", "{\"AccessPointTags\":\"array\",\"AccessPointTags[]\":\"object\",\"PosixUser\":\"object\",\"PosixUser.SecondaryGids\":\"array\",\"RootDirectory\":\"object\",\"RootDirectory.CreationInfo\":\"object\"}"],
32969
33024
  ["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
33025
  ["AWS::EFS::MountTarget", "{\"SecurityGroups\":\"array\"}"],
@@ -40438,11 +40493,13 @@ async function replayReverseReplacement(s) {
40438
40493
  }
40439
40494
  const { observedProperties: _staleObserved, ...prevRecord } = prev;
40440
40495
  recordNoEchoAttributeValues(createResult, secrets, resolvedPrevProps);
40496
+ const restoredProperties = recordedPropertiesAfterReplayCreate(prevRecord, createResult);
40441
40497
  stateResources[op.logicalId] = redactRollbackRecord({
40442
40498
  ...withNameGenerationReached(prevRecord, op.logicalId, op.nameGeneration),
40443
40499
  physicalId: createResult.physicalId,
40444
40500
  attributes: createResult.attributes ?? {},
40445
- properties: recordedPropertiesAfterReplayCreate(prevRecord, createResult)
40501
+ properties: restoredProperties,
40502
+ acceptedCreateOnlyDrops: acceptedCreateOnlyDropsEvidence(restoredProperties, oldType, createProvisionedBy)
40446
40503
  }, secrets, prevRecord.properties, prevRecord.attributes);
40447
40504
  if (!adoptedLiveNewResource) inlinePolicyWriters.record(op.logicalId, "create", stateResources[op.logicalId], false, createProvisionedBy);
40448
40505
  const deferral = s.deferral !== void 0 && !deletedNewFirst && !adoptedLiveNewResource && !rollbackRetainsNewResource(current) ? s.deferral : void 0;
@@ -46635,12 +46692,8 @@ function extractTemplateAttributes(template, logicalId) {
46635
46692
  };
46636
46693
  }
46637
46694
  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
46695
  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 };
46696
+ return { acceptedCreateOnlyDrops: acceptedCreateOnlyDropsEvidence(recordedProperties, resourceType, provisionedBy, carried) };
46644
46697
  }
46645
46698
  function secretNamedAttributesField(result, previous) {
46646
46699
  const reported = result.secretNamedAttributeNames;
@@ -47247,12 +47300,17 @@ const INDEX_TRANSITIONAL_STATUSES = /* @__PURE__ */ new Set([
47247
47300
  function hasTransitionalIndex(indexes) {
47248
47301
  return (indexes ?? []).some((gsi) => INDEX_TRANSITIONAL_STATUSES.has(gsi.IndexStatus ?? ""));
47249
47302
  }
47303
+ function hasTransitionalTableIndex(table) {
47304
+ return hasTransitionalIndex(table?.GlobalSecondaryIndexes) || hasTransitionalIndex(table?.VectorIndexes);
47305
+ }
47306
+ const GSI_INDEX_NOUN = "a global secondary index";
47307
+ const TABLE_INDEX_NOUN = "a global secondary index or vector index";
47250
47308
  const INDEX_BUSY_DELETE_MESSAGE = /cannot delete table while indexes are being/i;
47251
47309
  function isIndexBusyDeleteError(message) {
47252
47310
  return INDEX_BUSY_DELETE_MESSAGE.test(message);
47253
47311
  }
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." : "";
47312
+ function relayedIndexBusyDelete(withheldText, indexNoun = GSI_INDEX_NOUN) {
47313
+ 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
47314
  }
47257
47315
  const DELETE_INDEX_BUSY_REARM_MAX_ATTEMPTS = 60;
47258
47316
  const INDEX_SETTLE_POLL_INTERVAL_MS = 1e3;
@@ -47260,21 +47318,43 @@ const DELETE_INDEX_WAIT_PROCEED_NOTE = `the DeleteTable goes ahead anyway and AW
47260
47318
  async function waitForIndexesSettled(opts) {
47261
47319
  const { tableName, logicalId, logger, describeTable, maxAttempts, proceedNote } = opts;
47262
47320
  const budgetWait = opts.budgetWait;
47321
+ const shortCap = opts.shortCapUnlessVectorBusy;
47322
+ let vectorOnlyBusy = false;
47323
+ let stoppedAtShortCap = false;
47324
+ let announced = false;
47325
+ const effectiveCap = () => shortCap !== void 0 && !vectorOnlyBusy ? Math.min(shortCap, maxAttempts) : maxAttempts;
47263
47326
  const watch = startInterruptWatch(`index settle wait on ${tableName}`);
47264
47327
  let attempt = 0;
47265
47328
  try {
47266
- while (budgetWait ? budgetWait.nextPoll() : attempt < maxAttempts) {
47329
+ for (;;) {
47330
+ if (shortCap !== void 0 && attempt >= shortCap && !vectorOnlyBusy) {
47331
+ stoppedAtShortCap = true;
47332
+ break;
47333
+ }
47334
+ if (!(budgetWait ? budgetWait.nextPoll() : attempt < maxAttempts)) break;
47267
47335
  attempt += 1;
47268
47336
  if (watch.isInterrupted()) {
47269
47337
  logger.debug(`Interrupted while waiting for indexes on ${tableName} (${logicalId}) after ${attempt - 1} DescribeTable polls; ${proceedNote}`);
47270
47338
  return;
47271
47339
  }
47272
47340
  try {
47273
- if (!hasTransitionalIndex((await describeTable()).Table?.GlobalSecondaryIndexes ?? [])) return;
47341
+ const response = await describeTable();
47342
+ if (!hasTransitionalTableIndex(response.Table)) {
47343
+ if (attempt > 1) logger.debug(safeMsg`Indexes on ${tableName} (${logicalId}) settled after ${attempt} DescribeTable polls`);
47344
+ return;
47345
+ }
47346
+ const gsiBusy = hasTransitionalIndex(response.Table?.GlobalSecondaryIndexes);
47347
+ const vectorBusy = hasTransitionalIndex(response.Table?.VectorIndexes);
47348
+ vectorOnlyBusy = vectorBusy && !gsiBusy;
47349
+ if (!announced) {
47350
+ announced = true;
47351
+ const busyKinds = gsiBusy ? vectorBusy ? "a global secondary index and a vector index" : "a global secondary index" : "a vector index";
47352
+ logger.debug(safeMsg`Index settle wait on ${tableName} (${logicalId}): ${busyKinds} still transitioning (poll ${attempt})`);
47353
+ }
47274
47354
  } catch (err) {
47275
47355
  const message = describeAwsFailure(err).detail;
47276
47356
  if (isThrottlingError(err)) {
47277
- logger.debug(`DescribeTable throttled while waiting for indexes on ${tableName} (attempt ${attempt}/${maxAttempts}); still waiting: ${message}`);
47357
+ logger.debug(`DescribeTable throttled while waiting for indexes on ${tableName} (attempt ${attempt}/${effectiveCap()}); still waiting: ${message}`);
47278
47358
  await new Promise((resolve) => setTimeout(resolve, INDEX_SETTLE_POLL_INTERVAL_MS));
47279
47359
  continue;
47280
47360
  }
@@ -47293,14 +47373,14 @@ async function waitForIndexesSettled(opts) {
47293
47373
  watch.dispose();
47294
47374
  }
47295
47375
  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}`);
47376
+ const pollsRun = budgetWait ? budgetWait.pollsRun : attempt;
47377
+ 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
47378
  }
47299
47379
  function indexBusyRetryWarning(opts) {
47300
47380
  const remainingAttempts = Math.max(0, 1 + opts.maxRetries - opts.attemptNumber);
47301
47381
  const settleFloorMinutes = Math.max(1, Math.round((remainingAttempts + 1) * 60 * INDEX_SETTLE_POLL_INTERVAL_MS / 6e4));
47302
47382
  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.`;
47383
+ 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
47384
  }
47305
47385
  async function deleteTableWithIndexBusyRetry(opts) {
47306
47386
  let deleteAttempts = 0;
@@ -47308,12 +47388,13 @@ async function deleteTableWithIndexBusyRetry(opts) {
47308
47388
  try {
47309
47389
  await withRetry(async () => {
47310
47390
  if (deleteAttempts++ > 0) {
47311
- if (deleteAttempts === 2) opts.logger.warn(indexBusyRetryWarning({
47391
+ if (deleteAttempts === 2) opts.logger.warn(opts.retryWarning?.() ?? indexBusyRetryWarning({
47312
47392
  typeLabel: opts.typeLabel,
47313
47393
  logicalId: opts.logicalId,
47314
47394
  physicalId: opts.physicalId,
47315
47395
  attemptNumber: deleteAttempts,
47316
- maxRetries: opts.maxRetries
47396
+ maxRetries: opts.maxRetries,
47397
+ ...opts.indexNoun !== void 0 && { indexNoun: opts.indexNoun }
47317
47398
  }));
47318
47399
  await opts.reArm();
47319
47400
  }
@@ -47336,6 +47417,7 @@ async function deleteTableWithIndexBusyRetry(opts) {
47336
47417
  const DYNAMODB_DELETE_POLL_RTT_MS = 200;
47337
47418
  const DYNAMODB_DELETE_POLL_COST_MS = INDEX_SETTLE_POLL_INTERVAL_MS + 200;
47338
47419
  const DYNAMODB_DELETE_BUDGET_MS = 156e4;
47420
+ const DYNAMODB_DELETE_DEADLINE_MARGIN_MS = 24e4;
47339
47421
  const DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS = 18e5;
47340
47422
  const dynamoDbDeleteBudgetOverride = {};
47341
47423
  function resolveDynamoDbDeleteBudgetMs() {
@@ -47394,11 +47476,12 @@ var DeleteWaitImpl = class {
47394
47476
  get cutShort() {
47395
47477
  return this.endedByBudget && this.ran < 60;
47396
47478
  }
47397
- note() {
47479
+ note(shownCap) {
47398
47480
  if (!this.endedByBudget) return "";
47481
+ const cap = shownCap ?? this.cap;
47399
47482
  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.)`;
47483
+ 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.`;
47484
+ return ` (cdkd's shared ~${minutes}-minute delete allowance capped this wait at ${this.ran} of its ${cap} polls.)`;
47402
47485
  }
47403
47486
  };
47404
47487
  function beginDeleteWait(cap, budget) {
@@ -48518,6 +48601,11 @@ var DynamoDBGlobalTableProvider = class {
48518
48601
  const warn = log.warn;
48519
48602
  log.debug(`Creating DynamoDB GlobalTable ${logicalId}`);
48520
48603
  const desiredReplicaTags = refuseMalformedReplicaTags(properties, resourceType, logicalId);
48604
+ const disassociationRefusal = disassociationProtectionRefusal(properties, void 0, logicalId);
48605
+ if (disassociationRefusal !== void 0) {
48606
+ if (context?.replayingState !== true) throw new ProvisioningError(log.mask(disassociationRefusal), resourceType, logicalId);
48607
+ warn(`${disassociationRefusal} Proceeding: this create replays a cdkd state record.`);
48608
+ }
48521
48609
  const tableName = properties["TableName"] || generatedNameFor("AWS::DynamoDB::GlobalTable", logicalId);
48522
48610
  const keySchema = properties["KeySchema"];
48523
48611
  const attributeDefinitions = properties["AttributeDefinitions"];
@@ -48689,6 +48777,7 @@ var DynamoDBGlobalTableProvider = class {
48689
48777
  await this.applyCrossRegionReplicaTagsDiff(tableInfo.tableArn, region, void 0, replicaTags, resourceType, logicalId, tableName, maskSecrets);
48690
48778
  }
48691
48779
  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);
48780
+ await this.convergeReplicaDisassociationProtection(tableName, logicalId, currentRegion, wiringProperties, void 0, context?.replayingState === true ? "replay" : "template", warn, maskSecrets);
48692
48781
  const createTtl = planTimeToLive(properties["TimeToLiveSpecification"], void 0, "create");
48693
48782
  if (createTtl.kind === "enable") await this.dynamoDBClient.send(new UpdateTimeToLiveCommand({
48694
48783
  TableName: tableName,
@@ -48816,14 +48905,14 @@ var DynamoDBGlobalTableProvider = class {
48816
48905
  DeletionProtectionEnabled: enabled
48817
48906
  }));
48818
48907
  }
48819
- async waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget) {
48908
+ async waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget, member = "DeletionProtectionEnabled", replicaClient = this.getRegionalClient(region)) {
48820
48909
  const wait = beginDeleteWait(60, budget);
48821
- const watch = startInterruptWatch(maskSecrets(`DynamoDB replica ${region} deletion-protection change on ${tableName}`));
48910
+ const watch = startInterruptWatch(maskSecrets(`DynamoDB replica ${region} ${member === "DeletionProtectionEnabled" ? "deletion-protection" : "disassociation-protection"} change on ${tableName}`));
48822
48911
  try {
48823
48912
  while (wait.nextPoll()) {
48824
48913
  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) {
48914
+ const replica = await replicaClient.send(new DescribeTableCommand({ TableName: tableName }));
48915
+ if (replica.Table?.TableStatus === "ACTIVE" && replica.Table[member] === enabled) {
48827
48916
  if ((await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table?.TableStatus === "ACTIVE") return;
48828
48917
  }
48829
48918
  await new Promise((resolve) => setTimeout(resolve, REPLICA_PROTECTION_SETTLE_POLL_MS));
@@ -48831,7 +48920,7 @@ var DynamoDBGlobalTableProvider = class {
48831
48920
  } finally {
48832
48921
  watch.dispose();
48833
48922
  }
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);
48923
+ 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
48924
  }
48836
48925
  async convergeReplicaDeletionProtection(tableName, logicalId, currentRegion, previousProperties, properties, addedRegions, desiredFromReadback, warn, maskSecrets) {
48837
48926
  const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
@@ -48860,6 +48949,63 @@ var DynamoDBGlobalTableProvider = class {
48860
48949
  if (typeof live === "boolean" && live !== newDpe) await this.setReplicaDeletionProtection(tableName, region, newDpe, logicalId, maskSecrets);
48861
48950
  }
48862
48951
  }
48952
+ async convergeReplicaDisassociationProtection(tableName, logicalId, currentRegion, properties, previousProperties, origin, warn, maskSecrets) {
48953
+ const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
48954
+ let wrote = false;
48955
+ const multiRegion = isMultiRegionReplicaSet(properties);
48956
+ for (const entry of desired) {
48957
+ const replica = asRecord(entry);
48958
+ const region = replica?.["Region"];
48959
+ if (typeof region !== "string" || region === "") continue;
48960
+ const declared = readReplicaDisassociationProtection(replica);
48961
+ const previous = previousProperties === void 0 ? void 0 : readReplicaDisassociationProtection(localReplicaEntry(previousProperties, region));
48962
+ const clientFor = () => region === currentRegion ? this.dynamoDBClient : this.getRegionalClient(region);
48963
+ const readLive = async () => {
48964
+ const client = clientFor();
48965
+ try {
48966
+ return (await client.send(new DescribeTableCommand({ TableName: tableName }))).Table?.DisassociationProtectionEnabled;
48967
+ } catch (readError) {
48968
+ this.logger.debug(maskSecrets(`Could not read ${DISASSOCIATION_PROTECTION_KEY} on the ${region} replica of ${tableName}: ${describeAwsFailure(readError).detail}`));
48969
+ return;
48970
+ }
48971
+ };
48972
+ if (!multiRegion) {
48973
+ if (declared !== void 0) {
48974
+ 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.`;
48975
+ const justShrunk = previousProperties !== void 0 && isMultiRegionReplicaSet(previousProperties);
48976
+ if (origin === "template" && (justShrunk || declared !== previous)) warn(message);
48977
+ else this.logger.debug(maskSecrets(message));
48978
+ } 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).`);
48979
+ continue;
48980
+ }
48981
+ if (declared === void 0) {
48982
+ if (replica?.[DISASSOCIATION_PROTECTION_KEY] !== void 0 || previous === void 0) continue;
48983
+ 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.`);
48984
+ else if (origin === "replay" && previous === false && await readLive() === false) {
48985
+ await this.setReplicaDisassociationProtection(tableName, region, clientFor(), true, logicalId, maskSecrets);
48986
+ wrote = true;
48987
+ }
48988
+ continue;
48989
+ }
48990
+ const changed = declared !== previous || isUnsettled("Replicas");
48991
+ const live = await readLive();
48992
+ if (live === declared) continue;
48993
+ if (live === void 0 && !changed) continue;
48994
+ await this.setReplicaDisassociationProtection(tableName, region, clientFor(), declared, logicalId, maskSecrets);
48995
+ wrote = true;
48996
+ }
48997
+ if (wrote) await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
48998
+ }
48999
+ async setReplicaDisassociationProtection(tableName, region, client, enabled, logicalId, maskSecrets) {
49000
+ await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets, client === this.dynamoDBClient ? {} : { region });
49001
+ markUnsettled("Replicas");
49002
+ this.logger.debug(maskSecrets(`Sending UpdateTable ${DISASSOCIATION_PROTECTION_KEY}=${enabled} to the ${region} replica of ${tableName}`));
49003
+ await client.send(new UpdateTableCommand({
49004
+ TableName: tableName,
49005
+ DisassociationProtectionEnabled: enabled
49006
+ }));
49007
+ await this.waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, void 0, DISASSOCIATION_PROTECTION_KEY, client);
49008
+ }
48863
49009
  async convergeReplicaSettings(tableName, logicalId, currentRegion, properties, addedRegions, maskSecrets) {
48864
49010
  const kept = (Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).map(asRecord).filter((r) => typeof r?.["Region"] === "string" && r["Region"] !== currentRegion && !addedRegions.has(r["Region"]));
48865
49011
  if (kept.every((r) => readReplicaTableClass(r) === void 0)) return;
@@ -49454,6 +49600,11 @@ var DynamoDBGlobalTableProvider = class {
49454
49600
  const debug = log.debug;
49455
49601
  debug(`Updating DynamoDB GlobalTable ${logicalId}: ${log.value(physicalId)}`);
49456
49602
  refuseMalformedReplicaTags(properties, resourceType, logicalId, physicalId);
49603
+ const disassociationRefusal = disassociationProtectionRefusal(properties, previousProperties, logicalId);
49604
+ if (disassociationRefusal !== void 0) {
49605
+ if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(log.mask(disassociationRefusal), resourceType, logicalId, physicalId);
49606
+ warn(`${disassociationRefusal} Proceeding: this update restores a recorded or read-back configuration.`);
49607
+ }
49457
49608
  const replaceFlags = "cdkd deploy --replace --force-stateful-recreation";
49458
49609
  const replaceRemedy = async () => {
49459
49610
  let guardRegion = "";
@@ -49732,7 +49883,10 @@ var DynamoDBGlobalTableProvider = class {
49732
49883
  if (indexUpdates.length > 0) billingUpdate.GlobalSecondaryIndexUpdates = indexUpdates;
49733
49884
  }
49734
49885
  markUnsettled("BillingMode", "WriteProvisionedThroughputSettings");
49735
- if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) markUnsettled("GlobalSecondaryIndexes");
49886
+ if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) {
49887
+ markUnsettled("GlobalSecondaryIndexes");
49888
+ for (const indexUpdate of billingUpdate.GlobalSecondaryIndexUpdates) debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(indexUpdate.Update?.IndexName ?? "")} on ${physicalId} (with the billing mode change)`);
49889
+ }
49736
49890
  await this.dynamoDBClient.send(new UpdateTableCommand(billingUpdate));
49737
49891
  await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
49738
49892
  }
@@ -49856,6 +50010,7 @@ var DynamoDBGlobalTableProvider = class {
49856
50010
  "streamTags"
49857
50011
  ] : context?.replayingState === true ? ["pitr"] : []);
49858
50012
  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);
50013
+ await this.convergeReplicaDisassociationProtection(physicalId, logicalId, currentRegion, properties, previousProperties, context?.desiredFromAwsReadback === true ? "readback" : context?.replayingState === true ? "replay" : "template", warn, maskSecrets);
49859
50014
  const previousTranslatedIndexes = toSdkGlobalSecondaryIndexes(previousProperties, currentRegion, oldBilling, "min", void 0, onUnusablePreviousGsiBlock, maskSecrets);
49860
50015
  const previousSdkIndexes = previousGsiUnusable ? buildLiveRecoveryGsiBaseline(desiredSdkIndexes, describeResp.Table?.GlobalSecondaryIndexes, {
49861
50016
  carryLiveValues: oldBilling === newBilling && liveBillingMode === newBilling,
@@ -49879,6 +50034,7 @@ var DynamoDBGlobalTableProvider = class {
49879
50034
  if (!gsi.IndexName) continue;
49880
50035
  const gsiUpdate = { Delete: { IndexName: gsi.IndexName } };
49881
50036
  markUnsettled("GlobalSecondaryIndexes");
50037
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Delete for index ${maskSecrets(gsi.IndexName)} on ${physicalId}`);
49882
50038
  await this.dynamoDBClient.send(new UpdateTableCommand({
49883
50039
  TableName: physicalId,
49884
50040
  GlobalSecondaryIndexUpdates: [gsiUpdate]
@@ -49897,6 +50053,7 @@ var DynamoDBGlobalTableProvider = class {
49897
50053
  ...addedWarmToSend && { WarmThroughput: addedWarmToSend }
49898
50054
  } };
49899
50055
  markUnsettled("GlobalSecondaryIndexes");
50056
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Create for index ${maskSecrets(gsi.IndexName ?? "")} on ${physicalId}`);
49900
50057
  await this.dynamoDBClient.send(new UpdateTableCommand({
49901
50058
  TableName: physicalId,
49902
50059
  AttributeDefinitions: newAttrs,
@@ -49939,6 +50096,7 @@ var DynamoDBGlobalTableProvider = class {
49939
50096
  }
49940
50097
  const gsiUpdate = { Update: update };
49941
50098
  markUnsettled("GlobalSecondaryIndexes");
50099
+ debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(gsi.IndexName ?? "")} on ${physicalId}`);
49942
50100
  await this.dynamoDBClient.send(new UpdateTableCommand({
49943
50101
  TableName: physicalId,
49944
50102
  GlobalSecondaryIndexUpdates: [gsiUpdate]
@@ -50570,13 +50728,16 @@ var DynamoDBGlobalTableProvider = class {
50570
50728
  const subs = await this.readReplicaSubSpecs(client, tableNameForSubs, regionLabel, declaredReplica);
50571
50729
  Object.assign(entry, subs);
50572
50730
  let protection;
50731
+ let disassociationProtection;
50573
50732
  let streamArn;
50574
50733
  if (isLocal) {
50575
50734
  protection = table.DeletionProtectionEnabled;
50735
+ disassociationProtection = table.DisassociationProtectionEnabled;
50576
50736
  streamArn = table.LatestStreamArn;
50577
50737
  } else try {
50578
50738
  const regional = await client.send(new DescribeTableCommand({ TableName: tableNameForSubs }));
50579
50739
  protection = regional.Table?.DeletionProtectionEnabled;
50740
+ disassociationProtection = regional.Table?.DisassociationProtectionEnabled;
50580
50741
  streamArn = regional.Table?.LatestStreamArn;
50581
50742
  } catch (err) {
50582
50743
  if (strictFor("Replicas") && !(err instanceof ResourceNotFoundException$1)) throw err;
@@ -50584,6 +50745,7 @@ var DynamoDBGlobalTableProvider = class {
50584
50745
  else this.logger.debug(safeMsg`Could not read the ${regionLabel} replica of ${tableNameForSubs}: ${describeAwsFailure(err).detail}`);
50585
50746
  }
50586
50747
  if (typeof protection === "boolean") entry["DeletionProtectionEnabled"] = protection;
50748
+ if (typeof disassociationProtection === "boolean" && declaredReplica?.[DISASSOCIATION_PROTECTION_KEY] !== void 0) entry[DISASSOCIATION_PROTECTION_KEY] = disassociationProtection;
50587
50749
  await this.readReplicaPolicies(client, tableNameForSubs, regionLabel, replicaArn, streamArn, declaredReplica, afterOwnWrite, entry);
50588
50750
  if (replicaArn) try {
50589
50751
  const tagsResp = await client.send(new ListTagsOfResourceCommand({ ResourceArn: replicaArn }));
@@ -50979,6 +51141,46 @@ function refuseMalformedReplicaTags(properties, resourceType, logicalId, physica
50979
51141
  });
50980
51142
  return tagsByReplica;
50981
51143
  }
51144
+ const DISASSOCIATION_PROTECTION_KEY = "DisassociationProtectionEnabled";
51145
+ function disassociationProtectionRefusal(properties, previousProperties, logicalId) {
51146
+ const replicas = properties["Replicas"];
51147
+ if (!Array.isArray(replicas)) return void 0;
51148
+ const malformed = [];
51149
+ const singleRegion = [];
51150
+ const multiRegion = isMultiRegionReplicaSet(properties);
51151
+ replicas.forEach((entry, index) => {
51152
+ const replica = asRecord(entry);
51153
+ if (replica === void 0) return;
51154
+ const refusal = configBooleanRefusal(replica, DISASSOCIATION_PROTECTION_KEY, `Replicas[${index}]`);
51155
+ if (refusal !== void 0) {
51156
+ malformed.push(refusal);
51157
+ return;
51158
+ }
51159
+ const declared = readReplicaDisassociationProtection(replica);
51160
+ if (declared === void 0 || multiRegion) return;
51161
+ const region = replica["Region"];
51162
+ const previous = previousProperties === void 0 || typeof region !== "string" ? void 0 : readReplicaDisassociationProtection(localReplicaEntry(previousProperties, region));
51163
+ if (declared === false && declared !== previous) singleRegion.push(`Replicas[${index}].${DISASSOCIATION_PROTECTION_KEY}`);
51164
+ });
51165
+ const parts = [];
51166
+ if (malformed.length > 0) parts.push(`${malformed.join("; ")}. That replica's disassociation protection is left as it is.`);
51167
+ 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.`);
51168
+ if (parts.length === 0) return void 0;
51169
+ return `AWS::DynamoDB::GlobalTable ${logicalId}: ${parts.join(" ")}`;
51170
+ }
51171
+ function isMultiRegionReplicaSet(properties) {
51172
+ const replicas = properties["Replicas"];
51173
+ if (!Array.isArray(replicas)) return false;
51174
+ const regions = /* @__PURE__ */ new Set();
51175
+ for (const entry of replicas) {
51176
+ const region = asRecord(entry)?.["Region"];
51177
+ if (typeof region === "string" && region !== "") regions.add(region);
51178
+ }
51179
+ return regions.size > 1;
51180
+ }
51181
+ function readReplicaDisassociationProtection(replica) {
51182
+ return coerceCfnBoolean(replica?.[DISASSOCIATION_PROTECTION_KEY]);
51183
+ }
50982
51184
  function completeLegacyLocalReplica(baseline, aws, localRegion) {
50983
51185
  const key = "Replicas";
50984
51186
  const baselineReplicas = baseline[key];
@@ -53262,6 +53464,8 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
53262
53464
  unwritten,
53263
53465
  routeDriving: findActionableSilentDrops(resourceType, desiredForSkipCheck, allowedForRecord, currentProps).map(({ property }) => property),
53264
53466
  nested: engine.options.parentStackInfo !== void 0,
53467
+ nowWritten: findHandledUnwrittenCreateOnly(resourceType, currentProps, createOnlyEvidence),
53468
+ evidence: [...createOnlyEvidence],
53265
53469
  protectionEvidence: recordedProtectionEvidence(resourceType, currentProps, currentResource.observedProperties, engine.stackRegion)
53266
53470
  }), "CREATE_ONLY_DROP_NEEDS_REPLACEMENT")));
53267
53471
  }
@@ -53373,13 +53577,34 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
53373
53577
  }
53374
53578
  function unwrittenCreateOnlyRefusal(input) {
53375
53579
  const { logicalId, resourceType, unwritten, routeDriving, nested, protectionEvidence } = input;
53580
+ const nowWritten = (input.nowWritten ?? []).filter((property) => unwritten.includes(property));
53581
+ if (nowWritten.length > 0) return nowWrittenCreateOnlyRefusal({
53582
+ ...input,
53583
+ nowWritten
53584
+ });
53376
53585
  const one = unwritten.length === 1;
53377
53586
  const list = unwritten.join(", ");
53378
53587
  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)`;
53588
+ const replaceFlags = unwrittenReplaceFlags(logicalId, nested);
53380
53589
  const routed = [...routeDriving].sort((a, b) => a.localeCompare(b)).join(", ");
53381
53590
  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
53591
  }
53592
+ function unwrittenReplaceFlags(logicalId, nested) {
53593
+ 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)`;
53594
+ }
53595
+ function nowWrittenCreateOnlyRefusal(input) {
53596
+ const { logicalId, resourceType, unwritten, routeDriving, nested, protectionEvidence } = input;
53597
+ const nowWritten = input.nowWritten;
53598
+ const one = unwritten.length === 1;
53599
+ const list = unwritten.join(", ");
53600
+ const written = nowWritten.join(", ");
53601
+ const writtenOne = nowWritten.length === 1;
53602
+ const stillDropped = unwritten.filter((property) => !nowWritten.includes(property));
53603
+ const keep = [.../* @__PURE__ */ new Set([...stillDropped, ...routeDriving])].filter((property) => !nowWritten.includes(property)).sort((a, b) => a.localeCompare(b)).map((property) => `${resourceType}:${property}`).join(",");
53604
+ const routed = [...routeDriving].sort((a, b) => a.localeCompare(b)).join(", ");
53605
+ const replaceFlags = unwrittenReplaceFlags(logicalId, nested);
53606
+ 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.`);
53607
+ }
53383
53608
  function scalarLeavesOf(value, into = /* @__PURE__ */ new Set()) {
53384
53609
  if (typeof value === "string") into.add(value);
53385
53610
  else if (typeof value === "number") into.add(String(value));
@@ -55273,5 +55498,5 @@ function sameGenerationClaimsOf(record) {
55273
55498
  }
55274
55499
 
55275
55500
  //#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
55501
+ export { getPriorAttempts as $, applyCallerIdentityCredentials as $a, unionOfSecretBags as $c, isCustomResourceType as $i, orphansCarriedFrom as $l, namesAnyDeclaredParameter as $n, malformedResourcePropertiesWarning as $o, withoutSuperseded as $r, isWarmThroughputDecrease as $s, formatResourceLine as $t, resolveStateBucketWithDefault as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, withoutUnsettledProperties as Aa, maskedLeafCoordinatesOf as Ac, renderAssemblyPathEscape as Ad, acquireIdempotencyToken as Ai, LockManager as Al, recheckFailedPlan as An, accountArgs as Ao, mappingPairs as Ar, repairMalformedOutputsForReadOnly as As, keptForRetainedRecord as At, finchSecretArgvRefusal as Au, deleteTableWithIndexBusyRetry as B, producerLookupOver as Ba, markSameGenerationBag as Bc, refuseMalformedDesiredTags as Bi, stackInstanceIdOf as Bl, isRedactedRecordedValue as Bn, malformedExportSourceWarning as Bo, gray as Br, findSilentDropProperties as Bs, revertedNestedRowIds as Bt, runDockerStreaming as Bu, planContributorInsightsOp as C, DiffCalculator as Ca, DagBuilder as Cc, hasOwnKey as Cd, isFinalSnapshotError as Ci, recordMaskOnlyValuesIn as Cl, equalModuloMask as Cn, passedParameterClassesOf as Co, findRefactorHints as Cr, refuseMalformedResourcePropertiesForOrphan as Cs, keptWholeReasonText as Ct, buildDenyExternalAccessPolicy as Cu, reverseMapTableContributorInsights as D, unsettledItemsOf as Da, maskAtCoordinates as Dc, absoluteAssemblyPathEscape as Dd, ledgerForStack as Di, wholeStringLeavesOf as Dl, isReplacementOrphan as Dn, STATE_RESOURCES_MALFORMED as Do, withMovedTo as Dr, refuseMalformedState as Ds, planOrphanAdoption as Dt, describeDockerExecFailure as Du, reverseMapIndexContributorInsights as E, unsettledItemsField as Ea, isMarkedCoordinate as Ec, ownValue as Ed, earliestDefined as Ei, recordProvenPublicExpression as El, isJournaledOrphan as En, STATE_REGION_DIVERGED as Eo, rollbackOrphanIds as Er, refuseMalformedResourcesForExport as Es, makeSiblingClaimReader as Et, describeDockerCapturedOutput as Eu, resolveDynamoDbDeleteBudgetClock as F, s3BucketDomainName as Fa, readbackPathFor as Fc, resolveBucketRegion as Fd, markDeleteStarted as Fi, CrossPrefixScanCache as Fl, orphanNeedsIdentity as Fn, hasReadableResources as Fo, getStackRecords as Fr, unreadableOrphanRecords as Fs, dropSettledNestedJournals as Ft, partitionSensitiveEnv as Fu, isTtlRateLimited as G, recordedReferenceRegions as Ga, createUnionSecretMasker as Gc, CC_BROKEN_REASON as Gi, exportNamesCarriedFrom as Gl, nameGenerationCarriedFrom as Gn, malformedOrphanRecordsWarning as Go, deleteSupersededEntry as Gr, findReplacedReadersOfRecreateTargets as Gs, deleteJournaledOrphans as Gt, synthesisStatusMessage as Gu, relayedIndexBusyDelete as H, keepHeldTokenProvenance as Ha, recordReferenceProvenanceEntry as Hc, tagPlanWarning as Hi, splitImportedOps as Hl, redactedDeleteAddressSkip as Hn, malformedLocalResourceEntriesWarning as Ho, red as Hr, withoutSilentDropProperties as Hs, collectNestedChildUnaddressed as Ht, AssetManifestLoader as Hu, resolveDynamoDbDeleteBudgetMs as I, s3BucketDualStackDomainName as Ia, readsNoEchoSource as Ic, DBPROXY_TAGS_WHAT as Ii, applyCrossPrefixScan as Il, findNestedStackTypeChanges as In, isReadableOrphanRecord as Io, withStackRecords as Ir, unreadableResourceEntries as Is, getNestedRevertRun as It, redactDockerArgvValues as Iu, sendTtlWaitingOutRateLimit as J, assertSendableRoleArn as Ja, logOnlyValueCount as Jc, isCustomResource as Ji, hasUnverifiableParameterRefusal as Jl, retiredAfterRollback as Jn, malformedOrphansWarning as Jo, removeSuperseded as Jr, isStatefulRecreateTargetForReplace as Js, isHandledOrphan as Jt, loadCdkJson as Ju, planTimeToLive as K, applyRoleArnIfSet as Ka, hasMaskableValues as Kc, ProviderRegistry as Ki, hasReadableExportSet as Kl, nameGenerationHighWaterOf as Kn, malformedOrphanRowsKeptWarning as Ko, holdsSupersededResources as Kr, shownType as Ks, dropFailedCommands as Kt, getDefaultStateBucketName as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, s3BucketRegionalDomainName as La, recordedNoEchoValuesOf as Lc, DBPROXY_TAG_OPTIONS as Li, crossPrefixDeniedWarning as Ll, getCurrentProducerRegions as Ln, isReadableResourceEntry as Lo, replacedDeleteFailureVerdict as Lr, withheldAccountClause as Ls, nestedChildStackName as Lt, redactedCause as Lu, beginDeleteWait as M, poisonRenderedSpellingsCollidingIn as Ma, noEchoLeavesOf as Mc, injectAwsRegion as Md, DeploymentEventsStore as Mi, S3StateBackend as Ml, replacementNeverSwapped as Mn, displayLogicalId as Mo, proposeRenames as Mr, repairMalformedResourcePropertiesForReadOnly as Ms, NESTED_PENDING_PARENT_REASON as Mt, getDockerCmd as Mu, compensateRemovedDeletionProtection as N, isSettledInstanceState as Na, noEchoOutputsComparison as Nc, injectedAwsRegionValue as Nd, extractDeploymentEventError as Ni, rebuildClientForBucketRegion as Nl, resolveReplacementOldType as Nn, hasReadableOrphans as No, awaitInFlightSibling as Nr, repairMalformedResourcesForReadOnly as Ns, displacedOpClause as Nt, isDockerClientEnvKey as Nu, stripIndexContributorInsights as O, unsettledPropertiesOf as Oa, maskReadbackAtCoordinates as Oc, describeFileReadFailure as Od, reserveStackCreateToken as Oi, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ol, planFailedOps as On, UNREADABLE_ORPHANS_CONTAINER_ROW as Oo, isPairableType as Or, repairMalformedOrphanRecordsForReadOnly as Os, pendingRequestCount as Ot, describeDockerFailure as Ou, deleteBudgetKey as P, s3BucketArn as Pa, passedNoEchoParametersOf as Pc, clearBucketRegionCache as Pd, isRefusedByName as Pi, CrossPrefixReadError as Pl, seedsDeleteFirstGuard as Pn, hasReadableOutputs as Po, destroyStackRecordsView as Pr, unpreviewableOrphanRecords as Ps, displacedPhysicalIdShown as Pt, isMalformedEnvKey as Pu, isTruthyCfnBoolean as Q, AWS_CREDENTIAL_ENV_KEYS as Qa, shareLogOnlyValues as Qc, readsNoEchoDeleteValues as Qi, orphansAfterRollback as Ql, computeParameterTaint as Qn, malformedResourceEntriesWarning as Qo, supersededResourcesOf as Qr, coerceWarmThroughput as Qs, sameJournaledOrphans as Qt, resolveSkipPrefix as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, s3BucketWebsiteUrl as Ra, valueAtCoordinate as Rc, planTagDiff as Ri, isAccessDenied$1 as Rl, inheritProducerRegions as Rn, malformedDriftResourcePropertiesWarning as Ro, bold as Rr, findActionableSilentDrops as Rs, recordDisplacedSkips as Rt, redactedDockerCause as Ru, indexDeclaresContributorInsights as S, reEnableInstanceApiTermination as Sa, sameLambdaFunctionAddress as Sc, defineOwnKey as Sd, effectiveDeletionPolicy as Si, recordMaskOnlyValue as Sl, equalModuloMarkedMask as Sn, parameterInputsFor as So, formatDestructiveChange as Sr, refuseMalformedResourcePropertiesForExport as Ss, isSecretBearingReferenceString as St, validateContainerRepoName as Su, readContributorInsightsSpec as T, isUsableAttemptedName as Ta, canonicalCoordinates as Tc, nullPrototypeRecord as Td, unsupportedFinalSnapshotError as Ti, recordNoEchoParameterFreshValue as Tl, demoteSupersededOrphans as Tn, JSON_LISTING_HOLE_VALUE as To, movedToHint as Tr, refuseMalformedResourcesForDestroy as Ts, makeCanonicalizePropertiesFn as Tt, resolveDockerContextDirectory as Tu, waitForIndexesSettled as U, outputReferenceProvenanceOf as Ua, snapshotPassProvenance as Uc, definedAttributes as Ui, acceptedCreateOnlyDropsOf as Ul, updatePartialMessage as Un, malformedLocalResourcesWarning as Uo, yellow as Ur, NO_CC_HANDLERS_REASON as Us, getCurrentNestedStackContext as Ut, getDockerImageBySourceHash as Uu, maskedLogger as V, refuseUnreadableCdkCrossAccountRefs as Va, redactForState as Vc, tagMapAsList as Vi, withStackInstanceIdWithheld as Vl, redactedDeleteAddressFields as Vn, malformedLocalOutputsWarning as Vo, green as Vr, unwrittenCreateOnlyReplacement as Vs, withNestedRevertRun as Vt, warnFinchArgvExposure as Vu, isTtlAlreadyDisabled as W, recordedOutputReferenceRegions as Wa, carryLogOnlyValues as Wc, stringifyIfAssigned as Wi, describeRegionValueKind as Wl, updatePartialReason as Wn, malformedOrphanRecordsRefusalMessage as Wo, addSuperseded as Wr, hasNoCloudControlHandlers as Ws, withNestedStackContext as Wt, Synthesizer as Wu, S3_AUTO_DELETE_OBJECTS_TAG as X, isIamRoleArn as Xa, recordLogOnlyParameterValue as Xc, waitForLambdaFunctionActive as Xi, importableOutputs as Xl, retiredNameGenerationsLeaving as Xn, malformedOutputsWarning as Xo, supersededHeldByOtherTypeWarning as Xr, renderStatefulReason as Xs, loadJournaledOrphans as Xt, resolveAutoAssetStorage as Xu, ECR_AUTO_DELETE_IMAGES_TAG as Y, explicitRoleArnOrThrow as Ya, printingCorpusOf as Yc, wouldReturnToSdkProvider as Yi, importableOutputKeys as Yl, retiredNameGenerationsAfter as Yn, malformedOutputsRefusalMessage as Yo, supersededAfterRollback as Yr, isStatefulRecreateTargetSync as Ys, journaledOrphanLines as Yt, resolveApp as Yu, hasCdkAutoDeleteTag as Z, sendableAssumeRoleCommand as Za, recordLogOnlyValue as Zc, TemplateNoEchoReresolver as Zi, isReadableBag as Zl, withNameGenerationReached as Zn, malformedRenderedContainersWarning as Zo, supersededHolderOf as Zr, WARM_THROUGHPUT_MEMBERS as Zs, makeForeignHolderScan as Zt, resolveCaptureObservedState as Zu, streamMemberRefusals as _, disableInstanceApiTermination as _a, dbInstanceEngineChangeIsInPlace as _c, StageLoadError as _d, ATOMIC_FINAL_SNAPSHOT_TYPES as _i, recordAttributeIdCopy as _l, removeProtectionTypeList as _n, isStalePlaceholderArnAttribute as _o, DEFAULT_RESOURCE_TIMEOUT_MS as _r, refuseMalformedResourceEntriesForImport as _s, readRecordedConditionVerdicts as _t, getBootstrapMarkerKey as _u, isProtectionValueActive as a, CloudControlProvider as aa, configIntegerRefusal as ac, CFN_TEMPLATE_BODY_LIMIT as ad, createReadOnlyAttributeHealerFactory as ai, withPhysicalNameCopies as al, readRefactorMarkerOnce as an, regionLessSecretName as ao, secretBearing as ar, refuseMalformedNestedChildOutputs as as, deferredServiceTokenWarning as at, AssetPublisher as au, CONTRIBUTOR_INSIGHTS_KEY as b, observeThenDisableInstanceApiTermination as ba, canonicalLambdaFunctionName as bc, parseFailureDebugDetail as bd, ccRoutedFinalSnapshotError as bi, carriesSecretMask as bl, withUnprovenUnsettled as bn, parseWebACLArn as bo, constructPathOf as br, refuseMalformedResourcePropertiesForDestroy as bs, withResourceDeadline as bt, readBootstrapMarkerBody as bu, DynamoDBGlobalTableProvider as c, unchangedBehindSecretReference as ca, replayWarn as cc, findLargeInlineResources as cd, maskEventTextWithBoundBags as ci, dynamicReferenceTokens as cl, refuseRefactorMarker as cn, parameterTypeMayLoseSecretIdentity as co, carriedExportAliasExposure as cr, refuseMalformedOrphans as cs, childTemplateLoader as ct, WorkGraph as cu, declaredStreamPolicyMember as d, deleteIndeterminateGuards as da, requireConfigString as dc, decodeListingKey as dd, secretNamePrintingBag as di, spelledKeysOf as dl, hasPendingMovesOut as dn, carriesDynamicReference as do, isWholeDynamicReferenceValue as dr, refuseMalformedOutputs as ds, listNestedTemplateRows as dt, loadPublishableAssetManifest as du, getCurrentResourceSecrets as ea, toCfnInteger as ec, resolveStateBucketWithDefaultAndSource as ed, noEchoAttributeNamesOf as ei, createSecretMasker as el, chunks as en, callerEnvCredentials as eo, reachableDivergentParameters as er, malformedResourcesWarning as es, markRefusedBeforeApplying as et, shouldRetainResource as eu, declaredStreamTagsMember as f, deleteLeftInPlace as fa, prefetchCreateOnlyPropertyPaths as fc, expectedOwnerParam as fd, secretNamePrintingBags as fi, identityKeyFor as fl, pendingMovesOutOf as fn, carriesFetchableDynamicReference as fo, noEchoParameterValueSeed as fr, refuseMalformedOutputsForDestroy as fs, renderNestedTemplateTreeDefect as ft, rewriteTemplateAssetReferences as fu, streamDeclaresTags as g, markWaitAbandoned as ga, blockDeviceMappingsDifferOnlyInDeleteOnTermination as gc, AssemblyReader as gd, storedSecretNameNeedles as gi, physicalNameCopiesOf as gl, replayRollback as gn, cfnRefValueFromPhysicalId as go, bindingSkippedOutputs as gr, refuseMalformedResourceEntriesForDestroy as gs, parentSuppliedValues as gt, ensureAssetStorage as gu, streamDeclaresPolicy as h, isWaitAbandonedError as ha, withRetry as hc, derivePartitionAndUrlSuffix as hd, stateSecretNameNeedles as hi, recoverMaskedOutput as hl, replayFailedOperations as hn, AWS_NO_VALUE as ho, isExportAliasCollision as hr, refuseMalformedResourceEntriesForDeploy as hs, conditionInputsFrom as ht, assertAssetBucketRegion as hu, PROTECTION_PROPERTY_BY_TYPE as i, customResourceResponseExpirationWarning as ia, configBooleanRefusal as ic, ssmResolvedValueType as id, withAttemptedItemsMasked as ii, scrubResourceRecord as il, readRefactorMarker as in, producerRegionsFromState as io, exportAliasCollisionScrubWarning as ir, refuseDivergentRecordRegionForDestroy as is, inheritedProvenanceForChildDiff as it, timePhase as iu, DYNAMODB_DELETE_POLL_COST_MS as j, IntrinsicFunctionResolver as ja, noEchoCoordinatesOf as jc, resolveAssemblyPath as jd, DeploymentEventsReader as ji, isLockInfoExpired as jl, recordUnderIdIsNotOwn as jn, deployRefusesOrphanRowsReason as jo, parseMappingFile as jr, repairMalformedResourceEntriesForReadOnly as js, recordRetainedForReadoption as jt, formatDockerLoginError as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, withUnsettledProperties as ka, maskWholeValue as kc, displayAssemblyPath as kd, withCreateTokenLedger as ki, isSingleDynamicReferenceToken as kl, planRollback as kn, UNREADABLE_RESOURCES_MAP_ROW as ko, looselyEqual as kr, repairMalformedOrphansForReadOnly as ks, resolvePendingCloudControlRequests as kt, dockerSpawnEnvWithSensitive as ku, STREAM_POLICY_KEY as l, RollbackInlinePolicyWriters as la, requireConfigArray as lc, uploadCfnTemplate as ld, namingSecretsWithRecordedNoEcho as li, isUncertifiedBaselineMaskPosition as ll, sameMove as ln, getAccountInfo as lo, exportNameNoEchoParameters as lr, refuseMalformedOrphansForDestroy as ls, findNestedTemplateTreeDefect as lt, buildAssetRedirectMap as lu, reverseMapStreamPolicy as m, withIndeterminateGuard as ma, describeTypeWithThrottleRetry as mc, canonicalizeRegion as md, secretNamedRecordNeedles as mi, recordNestedStackParameterExpressions as ml, refusePendingMovesOut as mn, keepsSecretReferenceToken as mo, collectPublishedOutputNames as mr, refuseMalformedResourceEntries as ms, conditionFingerprint as mt, BOOTSTRAP_MARKER_PREFIX as mu, recordedProtectionEvidence as n, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as na, coerceCfnBoolean as nc, stateBucketExistenceConfirmed as nd, noEchoExactEchoLeavesOf as ni, maskSecretsInError as nl, lookupEachName as nn, classifyRecordedSecretRegion as no, WITHHELD_NAME_DISPLAY as nr, malformedStateRefusalMessage as ns, computeImplicitDeleteEdges as nt, PhaseClock as nu, perType as o, slowCcOperationTimeoutMs as oa, configStringRefusal as oc, CFN_TEMPLATE_URL_LIMIT as od, completedReplayEntries as oi, withoutPhysicalNameCopies as ol, refactorMarkerMovesOf as on, coerceParameterTypedValue as oo, secretBearingStateKeyWarning as or, refuseMalformedOrphanRecords as os, findServiceTokenRefusals as ot, isSensitiveAttributeName as ou, planStreamMemberOps as p, deleteSkipReason as pa, templateResourceTypes as pc, PARTITION_TABLE as pd, secretNamedAttributeNamesOf as pi, inheritNestedStackParameterAssociations as pl, pendingMovesRefusalMessage as pn, isNamelessDynamicReferenceError as po, collectDeclaredOutputNames as pr, refuseMalformedResourceAttributesForOrphan as ps, templateIdentity as pt, AssetModeResolver as pu, readTtlSpec as q, assertFlagRoleArn as qa, literalSplitDelimitersOf as qc, ccBrokenReason as qi, hasReasonlessBaselineRefusal as ql, nameScopeOf as qn, malformedOrphansRefusalMessage as qo, isSupersededResourceRecord as qr, MULTI_REGION_RECREATE_BLOCKED_TYPES as qs, dropFailedHint as qt, getLegacyStateBucketName as qu, recordedProtectionNote as r, applyCustomResourceResponseExpiration as ra, coerceCfnInteger as rc, warnDeprecatedNoPrefixCliFlag as rd, noEchoParameterNamesOf as ri, maskSecretsInText as rl, withApiLimit as rn, classifyReplaySecretRegion as ro, displayTextOrWithheld as rr, previewableOrphanRecords as rs, crossStackOutputProvenanceSource as rt, renderPhaseTimings as ru, readProtection as s, onlySecretReferencesDiffer as sa, readConfigString as sc, MIGRATE_TMP_PREFIX as sd, journaledOrphanPrintingBag as si, DYNAMIC_REFERENCE_TOKEN_SCAN as sl, refactorMarkerRefusalMessage as sn, isUnboundTemplateParameter as so, secretSafeKeyDisplay as sr, refuseMalformedOrphanRecordsForDestroy as ss, serviceTokenBlockingReason as st, stringifyValue as su, DeployEngine as t, withPrintingSecrets as ta, toFiniteNumber as tc, resolveUseCdkBootstrapAssets as td, noEchoComparisonForTemplate as ti, errorCauseChain as tl, isAccessDeniedError as tn, envCredentialsAreAssumedRole as to, resourcesNamingDeclaredParameter as tr, malformedScrubResourceEntriesRefusalMessage as ts, IMPLICIT_DELETE_DEPENDENCIES as tt, stackInstanceIdCarriedFrom as tu, STREAM_TAGS_KEY as u, UNSPECIFIED_SKIP_REASON as ua, requireConfigObject as uc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ud, orphanRecordsPrintingBag as ui, pathCrossesDottedKey as ul, updateRefactorMarker as un, isImpossibleEmptyStoredAttribute as uo, exportNameSecretExposure as ur, refuseMalformedOrphansForOrphan as us, isAbsoluteAssetPath as ut, createAssetRedirectResolver as uu, streamPolicyMatchesDeclared as v, ec2InstanceProtectionSite as va, ecsServiceLaunchTypeSetOrChanged as vc, processStackMessages as vd, PRE_DELETE_SNAPSHOT_TYPES as vi, recordPhysicalNameCopy as vl, recordAfterRollbackUpdate as vn, lacksRecordedTableArn as vo, DEFAULT_RESOURCE_WARN_AFTER_MS as vr, refuseMalformedResourceEntriesForImportSave as vs, enclosingDeadlineExpired as vt, isCrossRegionRedirect as vu, planIndexContributorInsightsOps as w, INTRINSIC_KEYS as wa, TemplateParser as wc, hasPlainPrototype$1 as wd, refusesFinalSnapshot as wi, recordNoEchoAttributeValues as wl, undeclaredEmptyObservedKeys as wn, declaresNoEcho as wo, hintSidesOf as wr, refuseMalformedResourcesForDeploy as ws, mergeNoChangeOutputs as wt, buildDockerImage as wu, contributorInsightsRefusals as x, reDisableInstanceApiTermination as xa, lambdaFunctionNameForMask as xc, utf8ByteLength as xd, createPreDeleteFinalSnapshot as xi, provenPublicValue as xl, calculateResourceDrift as xn, withSharedDrainBudget as xo, findDestructiveChanges as xr, refuseMalformedResourcePropertiesForDrift as xs, diffSecurity as xt, validateAssetBucketName as xu, streamTagsMatchDeclared as y, isTerminationProtectionPropagationError as ya, emrClusterInstancesReplaced as yc, describeJsonParseFailure as yd, buildFinalSnapshotIdentifier as yi, splitGetAttStringForm as yl, settleUnsettledPrevious as yn, refStateLookupFromResource as yo, maskingRetryLogger as yr, refuseMalformedResourceEntriesForOrphan as ys, enclosingDeadlineRemainingMs as yt, parseBootstrapMarker as yu, TABLE_INDEX_NOUN as z, resolveDynamicReferences as za, liveMatchesUnresolvedTokenFrame as zc, readTagList as zi, isNotImplemented as zl, REDACTED_DELETE_ADDRESS_SKIP_REASON as zn, malformedExportNamesWarning as zo, cyan as zr, findHandledUnwrittenCreateOnly as zs, revertNestedChildFromJournal as zt, runDockerForeground as zu };
55502
+ //# sourceMappingURL=deploy-engine-CVNzK__j.js.map