@go-to-k/cdkd 0.314.0 → 0.316.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/{asg-provider-_nun2Jda.js → asg-provider-DOLuhiky.js} +6 -7
  2. package/dist/{asg-provider-_nun2Jda.js.map → asg-provider-DOLuhiky.js.map} +1 -1
  3. package/dist/{aws-client-defaults-BX9Y_fKp.js → aws-client-defaults-BLXFsfMa.js} +6 -11
  4. package/dist/aws-client-defaults-BLXFsfMa.js.map +1 -0
  5. package/dist/{aws-clients-Bu9EMILF.js → aws-clients-CGZAQ1gS.js} +5 -8
  6. package/dist/aws-clients-CGZAQ1gS.js.map +1 -0
  7. package/dist/{aws-failure-text-agWtoyga.js → aws-failure-text-DiHodi76.js} +8 -15
  8. package/dist/aws-failure-text-DiHodi76.js.map +1 -0
  9. package/dist/cli.js +6 -10
  10. package/dist/cli.js.map +1 -1
  11. package/dist/{created-resource-sink-QECX8C-Z.js → created-resource-sink-B9OCHRr_.js} +35 -66
  12. package/dist/created-resource-sink-B9OCHRr_.js.map +1 -0
  13. package/dist/db-instance-modify-retry-DQTozL4b.js +43 -0
  14. package/dist/db-instance-modify-retry-DQTozL4b.js.map +1 -0
  15. package/dist/{deploy-engine-ClIUqDQL.js → deploy-engine-NYjdxQWe.js} +445 -673
  16. package/dist/deploy-engine-NYjdxQWe.js.map +1 -0
  17. package/dist/{iam-role-provider-DJep3uns.js → iam-role-provider-Ddo7WwEs.js} +7 -9
  18. package/dist/iam-role-provider-Ddo7WwEs.js.map +1 -0
  19. package/dist/index.d.ts +2 -103
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +5 -5
  22. package/dist/{neptune-provider-CGZ_G4Vz.js → neptune-provider-CuZbMn9R.js} +377 -23
  23. package/dist/neptune-provider-CuZbMn9R.js.map +1 -0
  24. package/dist/{program-Du6jOw1-.js → program-DSq5150i.js} +118 -228
  25. package/dist/program-DSq5150i.js.map +1 -0
  26. package/dist/{provider-classes-ZqxIefLl.js → provider-classes-ushrO6ri.js} +468 -212
  27. package/dist/provider-classes-ushrO6ri.js.map +1 -0
  28. package/dist/{rds-provider-C2fHUNSE.js → rds-provider-VigGKsxO.js} +77 -20
  29. package/dist/rds-provider-VigGKsxO.js.map +1 -0
  30. package/dist/{version-B2PvJ12r.js → version-9_dvIw-h.js} +3 -4
  31. package/dist/{version-B2PvJ12r.js.map → version-9_dvIw-h.js.map} +1 -1
  32. package/package.json +8 -8
  33. package/dist/aws-client-defaults-BX9Y_fKp.js.map +0 -1
  34. package/dist/aws-clients-Bu9EMILF.js.map +0 -1
  35. package/dist/aws-failure-text-agWtoyga.js.map +0 -1
  36. package/dist/created-resource-sink-QECX8C-Z.js.map +0 -1
  37. package/dist/db-instance-modify-retry-By0_BFNO.js +0 -38
  38. package/dist/db-instance-modify-retry-By0_BFNO.js.map +0 -1
  39. package/dist/deploy-engine-ClIUqDQL.js.map +0 -1
  40. package/dist/iam-role-provider-DJep3uns.js.map +0 -1
  41. package/dist/neptune-provider-CGZ_G4Vz.js.map +0 -1
  42. package/dist/program-Du6jOw1-.js.map +0 -1
  43. package/dist/provider-classes-ZqxIefLl.js.map +0 -1
  44. package/dist/rds-provider-C2fHUNSE.js.map +0 -1
@@ -1,14 +1,14 @@
1
- import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-Bu9EMILF.js";
2
- import { $ as safeMsg, A as isBeforeStateRead, E as generatedNameFor, J as displaySafe, N as recordedGeneratedNameKept, O as getCurrentStackInstanceId, Q as plainIdentOr, T as generateResourceNameWithFallback, V as SECRET_REF_MAX_CODE_POINTS, X as isPasteableIdent, Y as displayStackName, a as safeStringify, i as isAwsAuthoredFailure, n as describeAwsFailure, q as displayIdent, r as describeAwsStatusReason, s as getLogger, t as VERBOSE_POINTER, w as generateResourceName } from "./aws-failure-text-agWtoyga.js";
3
- import { $ as logGroupProtectionSite, $n as plainOrDescribed, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, C as RecentIdSet, Ct as compositeIdSeparatorRefusal, D as replayFollowedAmbiguousAttempt, Dr as THROTTLING_ERROR_NAMES, E as isInsideWindow, Et as packCompositeId, F as VALUE_NOT_SHOWN, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gt as markCreatedBeforeFailure, H as remedyLogicalId, Ht as isAuxiliaryFailure, I as isPlainImportJson, J as deleteWithProtectionCompensation, Jn as commandHole, Kt as markSupersedesEarlierCreate, L as isPlainImportValue, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nt as maskDeep, O as replayedSendWindow, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, R as isQuotableImportValue, Rt as clearCreatedBeforeFailure, S as AmbiguousCreateLatch, Sr as isExplicitDenyError, St as compositeIdFormatMessage, T as createAttemptKey, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, V as refusalTypeShown, Wt as markAuxiliaryFailure, Xn as isInertUnquoted, Yn as hasClauseBreak, Z as isTerminalDbWaitStatus, Zn as pasteableCommand, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, at as userPoolProtectionSite, bt as startInterruptWatch, c as SECRET_DERIVED_READ_LIVE, ct as WITHHELD_AWS_COMMAND, d as readPrincipalLists, dn as ambientClientDefaults, dt as protectedReplacementAdvice, et as observeThenDisableProtection, fn as ambientCredentialConfig, fr as markNameCollision, ft as renderDisableCommand, h as clearOnUpdateRemoval, hn as AccountIdUnavailableError, i as reportCreatedResource, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, k as setBounded, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lt as isAwsCliLiteral, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, nr as shellQuote, nt as rdsFamilyProtectionSite, on as injectiveKeyPrefix, p as recordedPrincipalsRepair, pn as clientDefaultsFor, pr as markReplayMayCollide, pt as ElapsedBudget, q as deleteAfterProtectionFlipWithFinalSnapshot, rr as withheldTargetClause, st as UNNAMEABLE_ID_CLAUSE, tt as protectionFlipKey, u as onlySecretDerived, un as withPasteableAwsProfile, ut as pasteableAwsCommand, v as removedTemplateKeys, vr as explicitDenyPolicyKind, w as ambiguousAttemptLead, wr as isRetryableTransientError, wt as compositeIdSkipResult, x as AMBIGUOUS_LATCH_TTL_MS, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, y as withRemovalDefaults, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn } from "./created-resource-sink-QECX8C-Z.js";
4
- import { c as ambientRegion } from "./aws-client-defaults-BX9Y_fKp.js";
5
- import { $ as ECR_AUTO_DELETE_IMAGES_TAG, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Ai as earliestDefined, B as deleteTableWithIndexBusyRetry, Ba as s3BucketDualStackDomainName, Bi as DBPROXY_TAGS_WHAT, Bt as getNestedRevertRun, C as planContributorInsightsOp, Ca as isTerminationProtectionPropagationError, Cc as emrClusterInstancesReplaced, Ct as enclosingDeadlineRemainingMs, D as reverseMapTableContributorInsights, Do as passedParameterClassesOf, E as reverseMapIndexContributorInsights, Ea as reEnableInstanceApiTermination, Ec as sameLambdaFunctionAddress, F as resolveDynamoDbDeleteBudgetClock, Fd as resolveAssemblyPath, G as readbackVectorIndexes, Gc as redactForState, Gi as tagMapAsList, Gn as redactedDeleteAddressFields, H as relayedIndexBusyDelete, Ha as s3BucketWebsiteUrl, Hi as planTagDiff, I as resolveDynamoDbDeleteBudgetMs, J as isTtlAlreadyDisabled, Ji as stringifyIfAssigned, Jt as withNestedStackContext, K as vectorIndexesForCreate, Kc as recordReferenceProvenanceEntry, Ki as tagPlanWarning, Kn as redactedDeleteAddressSkip, Ks as withoutSilentDropProperties, L as DELETE_INDEX_WAIT_PROCEED_NOTE, La as isSettledInstanceState, Lr as awaitInFlightSibling, M as beginDeleteWait, Md as describeFileReadFailure, Mi as reserveStackCreateToken, N as compensateRemovedDeletionProtection, Nd as displayAssemblyPath, O as stripIndexContributorInsights, P as deleteBudgetKey, Pd as renderAssemblyPathEscape, Pi as acquireIdempotencyToken, Po as accountArgs, Q as sendTtlWaitingOutRateLimit, R as INDEX_SETTLE_POLL_INTERVAL_MS, Ra as s3BucketArn, Rc as passedNoEchoParametersOf, Ri as isRefusedByName, S as indexDeclaresContributorInsights, Sa as ec2InstanceProtectionSite, Sc as ecsServiceLaunchTypeSetOrChanged, St as enclosingDeadlineExpired, T as readContributorInsightsSpec, Ta as reDisableInstanceApiTermination, Tc as lambdaFunctionNameForMask, U as waitForIndexesSettled, Ui as readTagList, Un as REDACTED_DELETE_ADDRESS_SKIP_REASON, Ut as revertNestedChildFromJournal, V as maskedLogger, Va as s3BucketRegionalDomainName, Vi as DBPROXY_TAG_OPTIONS, Vn as getCurrentProducerRegions, Vr as replacedDeleteFailureVerdict, Vs as withheldAccountClause, W as planVectorIndexUpdates, Wc as markSameGenerationBag, Wi as refuseMalformedDesiredTags, Wn as isRedactedRecordedValue, Ws as findSilentDropProperties, X as planTimeToLive, Xc as hasMaskableValues, Y as isTtlRateLimited, Z as readTtlSpec, _ as streamMemberRefusals, _a as deleteSkipReason, _i as secretNamedAttributeNamesOf, ac as toFiniteNumber, an as isAccessDeniedError, b as CONTRIBUTOR_INSIGHTS_KEY, ba as markWaitAbandoned, bc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, bl as physicalNameCopiesOf, c as DynamoDBGlobalTableProvider, cc as configBooleanRefusal, cu as timePhase, d as declaredStreamPolicyMember, da as onlySecretReferencesDiffer, dc as readConfigString, du as stringifyValue, ea as waitForLambdaFunctionActive, et as S3_AUTO_DELETE_OBJECTS_TAG, f as declaredStreamTagsMember, fa as unchangedBehindSecretReference, fc as replayWarn, fl as dynamicReferenceTokens, g as streamDeclaresTags, gt as renderNestedTemplateTreeDefect, gu as rewriteTemplateAssetReferences, h as streamDeclaresPolicy, hc as requireConfigString, hd as decodeListingKey, ht as listNestedTemplateRows, ia as getCurrentResourceSecrets, ic as toCfnInteger, in as chunks, it as markRefusedBeforeApplying, j as DYNAMODB_DELETE_POLL_COST_MS, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, ka as isUsableAttemptedName, ks as refuseMalformedResourcesForDestroy, l as STREAM_POLICY_KEY, lc as configIntegerRefusal, ls as refuseMalformedNestedChildOutputs, m as reverseMapStreamPolicy, mc as requireConfigObject, mt as isAbsoluteAssetPath, nc as coerceWarmThroughput$1, nt as isTruthyCfnBoolean, oc as coerceCfnBoolean, on as lookupEachName, p as planStreamMemberOps, pc as requireConfigArray, po as getAccountInfo, pt as findNestedTemplateTreeDefect, q as vectorIndexesSettled, qa as outputReferenceProvenanceOf, qc as snapshotPassProvenance, qi as definedAttributes, qt as getCurrentNestedStackContext, rc as isWarmThroughputDecrease, rt as getPriorAttempts, sc as coerceCfnInteger, sn as withApiLimit, t as DeployEngine, tc as WARM_THROUGHPUT_MEMBERS, tt as hasCdkAutoDeleteTag, u as STREAM_TAGS_KEY, ua as slowCcOperationTimeoutMs, uc as configStringRefusal, ul as withoutPhysicalNameCopies, v as streamPolicyMatchesDeclared, va as withIndeterminateGuard, vd as canonicalizeRegion, w as planIndexContributorInsightsOps, wa as observeThenDisableInstanceApiTermination, wc as canonicalLambdaFunctionName, wl as carriesSecretMask, wo as parseWebACLArn, x as contributorInsightsRefusals, xl as recordAttributeIdCopy, y as streamTagsMatchDeclared, ya as isWaitAbandonedError, yc as withRetry, yd as derivePartitionAndUrlSuffix, yl as recoverMaskedOutput, z as TABLE_INDEX_NOUN, za as s3BucketDomainName, zi as markDeleteStarted, zr as getStackRecords } from "./deploy-engine-ClIUqDQL.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-DJep3uns.js";
7
- import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-Du6jOw1-.js";
8
- import { t as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-By0_BFNO.js";
9
- import { RDSProvider } from "./rds-provider-C2fHUNSE.js";
10
- import { NeptuneProvider } from "./neptune-provider-CGZ_G4Vz.js";
11
- import { ASGProvider } from "./asg-provider-_nun2Jda.js";
1
+ import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-CGZAQ1gS.js";
2
+ import { $ as safeMsg, A as isBeforeStateRead, E as generatedNameFor, J as displaySafe, N as recordedGeneratedNameKept, O as getCurrentStackInstanceId, Q as plainIdentOr, T as generateResourceNameWithFallback, V as SECRET_REF_MAX_CODE_POINTS, X as isPasteableIdent, Y as displayStackName, a as safeStringify, i as isAwsAuthoredFailure, n as describeAwsFailure, q as displayIdent, r as describeAwsStatusReason, s as getLogger, t as VERBOSE_POINTER, w as generateResourceName } from "./aws-failure-text-DiHodi76.js";
3
+ import { $ as logGroupProtectionSite, $n as plainOrDescribed, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, C as RecentIdSet, Ct as compositeIdSeparatorRefusal, D as replayFollowedAmbiguousAttempt, Dr as THROTTLING_ERROR_NAMES, E as isInsideWindow, Et as packCompositeId, F as VALUE_NOT_SHOWN, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gt as markCreatedBeforeFailure, H as remedyLogicalId, Ht as isAuxiliaryFailure, I as isPlainImportJson, J as deleteWithProtectionCompensation, Jn as commandHole, Kt as markSupersedesEarlierCreate, L as isPlainImportValue, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nt as maskDeep, O as replayedSendWindow, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, R as isQuotableImportValue, Rt as clearCreatedBeforeFailure, S as AmbiguousCreateLatch, Sr as isExplicitDenyError, St as compositeIdFormatMessage, T as createAttemptKey, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, V as refusalTypeShown, Wt as markAuxiliaryFailure, X as isProceedDbStatus, Xn as isInertUnquoted, Yn as hasClauseBreak, Z as isTerminalDbWaitStatus, Zn as pasteableCommand, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, at as userPoolProtectionSite, bt as startInterruptWatch, c as SECRET_DERIVED_READ_LIVE, ct as WITHHELD_AWS_COMMAND, d as readPrincipalLists, dn as ambientClientDefaults, dt as protectedReplacementAdvice, et as observeThenDisableProtection, fn as ambientCredentialConfig, fr as markNameCollision, ft as renderDisableCommand, h as clearOnUpdateRemoval, hn as AccountIdUnavailableError, i as reportCreatedResource, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, k as setBounded, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lt as isAwsCliLiteral, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, nr as shellQuote, nt as rdsFamilyProtectionSite, on as injectiveKeyPrefix, p as recordedPrincipalsRepair, pn as clientDefaultsFor, pr as markReplayMayCollide, pt as ElapsedBudget, q as deleteAfterProtectionFlipWithFinalSnapshot, rr as withheldTargetClause, st as UNNAMEABLE_ID_CLAUSE, tt as protectionFlipKey, u as onlySecretDerived, un as withPasteableAwsProfile, ut as pasteableAwsCommand, v as removedTemplateKeys, vr as explicitDenyPolicyKind, w as ambiguousAttemptLead, wr as isRetryableTransientError, wt as compositeIdSkipResult, x as AMBIGUOUS_LATCH_TTL_MS, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, y as withRemovalDefaults, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn } from "./created-resource-sink-B9OCHRr_.js";
4
+ import { c as ambientRegion } from "./aws-client-defaults-BLXFsfMa.js";
5
+ import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Aa as isUsableAttemptedName, As as refuseMalformedResourcesForDestroy, B as deleteTableWithIndexBusyRetry, Ba as s3BucketDomainName, Bi as markDeleteStarted, Br as getStackRecords, C as planContributorInsightsOp, Ca as ec2InstanceProtectionSite, Cc as ecsServiceLaunchTypeSetOrChanged, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reEnableInstanceApiTermination, Dc as sameLambdaFunctionAddress, E as reverseMapIndexContributorInsights, Ea as reDisableInstanceApiTermination, Ec as lambdaFunctionNameForMask, F as resolveDynamoDbDeleteBudgetClock, Fd as renderAssemblyPathEscape, Fi as acquireIdempotencyToken, Fo as accountArgs, G as readbackVectorIndexes, Gc as markSameGenerationBag, Gi as refuseMalformedDesiredTags, Gn as isRedactedRecordedValue, Gs as findSilentDropProperties, H as relayedIndexBusyDelete, Ha as s3BucketRegionalDomainName, Hi as DBPROXY_TAG_OPTIONS, Hn as getCurrentProducerRegions, Hr as replacedDeleteFailureVerdict, Hs as withheldAccountClause, I as resolveDynamoDbDeleteBudgetMs, Id as resolveAssemblyPath, J as vectorIndexesShapeDetail, Ja as outputReferenceProvenanceOf, Jc as snapshotPassProvenance, Ji as definedAttributes, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as redactForState, Ki as tagMapAsList, Kn as redactedDeleteAddressFields, L as DELETE_INDEX_WAIT_PROCEED_NOTE, M as beginDeleteWait, N as compensateRemovedDeletionProtection, Nd as describeFileReadFailure, Ni as reserveStackCreateToken, O as stripIndexContributorInsights, Oo as passedParameterClassesOf, P as deleteBudgetKey, Pd as displayAssemblyPath, Q as readTtlSpec, R as INDEX_SETTLE_POLL_INTERVAL_MS, Ra as isSettledInstanceState, Rr as awaitInFlightSibling, S as indexDeclaresContributorInsights, Sl as recordAttributeIdCopy, T as readContributorInsightsSpec, Ta as observeThenDisableInstanceApiTermination, Tc as canonicalLambdaFunctionName, Tl as carriesSecretMask, To as parseWebACLArn, U as waitForIndexesSettled, Ua as s3BucketWebsiteUrl, Ui as planTagDiff, V as maskedLogger, Va as s3BucketDualStackDomainName, Vi as DBPROXY_TAGS_WHAT, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wi as readTagList, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Y as isTtlAlreadyDisabled, Yi as stringifyIfAssigned, Yt as withNestedStackContext, Z as planTimeToLive, Zc as hasMaskableValues, _ as streamMemberRefusals, _t as renderNestedTemplateTreeDefect, _u as rewriteTemplateAssetReferences, aa as getCurrentResourceSecrets, ac as toCfnInteger, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as isWaitAbandonedError, bc as withRetry, bd as derivePartitionAndUrlSuffix, bl as recoverMaskedOutput, c as DynamoDBGlobalTableProvider, cc as coerceCfnInteger, cn as withApiLimit, d as declaredStreamPolicyMember, da as slowCcOperationTimeoutMs, dc as configStringRefusal, dl as withoutPhysicalNameCopies, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as onlySecretReferencesDiffer, fc as readConfigString, fu as stringifyValue, g as streamDeclaresTags, gc as requireConfigString, gd as decodeListingKey, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigObject, ht as isAbsoluteAssetPath, ic as isWarmThroughputDecrease, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ji as earliestDefined, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, l as STREAM_POLICY_KEY, lc as configBooleanRefusal, lu as timePhase, m as reverseMapStreamPolicy, mc as requireConfigArray, mo as getAccountInfo, mt as findNestedTemplateTreeDefect, nc as WARM_THROUGHPUT_MEMBERS, nt as hasCdkAutoDeleteTag, oc as toFiniteNumber, on as isAccessDeniedError, p as planStreamMemberOps, pa as unchangedBehindSecretReference, pc as replayWarn, pl as dynamicReferenceTokens, q as vectorIndexesSettled, qc as recordReferenceProvenanceEntry, qi as tagPlanWarning, qn as redactedDeleteAddressSkip, qs as withoutSilentDropProperties, rc as coerceWarmThroughput$1, rt as isTruthyCfnBoolean, sc as coerceCfnBoolean, sn as lookupEachName, t as DeployEngine, ta as waitForLambdaFunctionActive, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configIntegerRefusal, us as refuseMalformedNestedChildOutputs, v as streamPolicyMatchesDeclared, va as deleteSkipReason, vi as secretNamedAttributeNamesOf, w as planIndexContributorInsightsOps, wa as isTerminationProtectionPropagationError, wc as emrClusterInstancesReplaced, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as markWaitAbandoned, xc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, xl as physicalNameCopiesOf, y as streamTagsMatchDeclared, ya as withIndeterminateGuard, yd as canonicalizeRegion, z as TABLE_INDEX_NOUN, za as s3BucketArn, zc as passedNoEchoParametersOf, zi as isRefusedByName } from "./deploy-engine-NYjdxQWe.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-Ddo7WwEs.js";
7
+ import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DSq5150i.js";
8
+ import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-DQTozL4b.js";
9
+ import { RDSProvider } from "./rds-provider-VigGKsxO.js";
10
+ import { NeptuneProvider } from "./neptune-provider-CuZbMn9R.js";
11
+ import { ASGProvider } from "./asg-provider-DOLuhiky.js";
12
12
  import { createHash, randomUUID } from "node:crypto";
13
13
  import { CreateBucketCommand, CreateBucketMetadataConfigurationCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetadataConfigurationCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAbacCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketMetadataConfigurationCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAbacCommand, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, UpdateBucketMetadataAnnotationTableConfigurationCommand, UpdateBucketMetadataInventoryTableConfigurationCommand, UpdateBucketMetadataJournalTableConfigurationCommand } from "@aws-sdk/client-s3";
14
14
  import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateAccessKeyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetAccessKeyLastUsedCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateAccessKeyCommand, UpdateGroupCommand, UpdateLoginProfileCommand, UpdateUserCommand } from "@aws-sdk/client-iam";
@@ -65,7 +65,7 @@ import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand a
65
65
  import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$19, S3VectorsClient, TagResourceCommand as TagResourceCommand$28, UntagResourceCommand as UntagResourceCommand$29 } from "@aws-sdk/client-s3vectors";
66
66
  import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableBucketMetricsConfigurationCommand, DeleteTableBucketReplicationCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableBucketEncryptionCommand, GetTableBucketMaintenanceConfigurationCommand, GetTableBucketMetricsConfigurationCommand, GetTableBucketReplicationCommand, GetTableBucketStorageClassCommand, GetTableCommand as GetTableCommand$1, GetTableMaintenanceConfigurationCommand, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$20, NotFoundException as NotFoundException$7, PutTableBucketEncryptionCommand, PutTableBucketMaintenanceConfigurationCommand, PutTableBucketMetricsConfigurationCommand, PutTableBucketReplicationCommand, PutTableBucketStorageClassCommand, PutTableMaintenanceConfigurationCommand, RenameTableCommand, S3TablesClient, TagResourceCommand as TagResourceCommand$29, UntagResourceCommand as UntagResourceCommand$30 } from "@aws-sdk/client-s3tables";
67
67
 
68
- //#region src/provisioning/providers/iam-policy-provider.ts
68
+ // src/provisioning/providers/iam-policy-provider.ts
69
69
  const POLICY_NAME_SKIP_REASON = "no policy name in state — no delete issued";
70
70
  const POLICY_NO_TARGET_SKIP_REASON = "no Roles/Groups/Users in state — no delete issued";
71
71
  const POLICY_MALFORMED_TARGET_SKIP_REASON = "malformed Roles/Groups/Users in state — no delete issued";
@@ -590,8 +590,7 @@ var IAMPolicyProvider = class {
590
590
  }
591
591
  };
592
592
 
593
- //#endregion
594
- //#region src/provisioning/providers/iam-managed-policy-provider.ts
593
+ // src/provisioning/providers/iam-managed-policy-provider.ts
595
594
  const principalsOf = (bag) => readPrincipalLists({
596
595
  Groups: bag["Groups"],
597
596
  Roles: bag["Roles"],
@@ -1217,8 +1216,7 @@ function recordedNonRootPath(arn) {
1217
1216
  return path === "/" ? void 0 : path;
1218
1217
  }
1219
1218
 
1220
- //#endregion
1221
- //#region src/provisioning/providers/iam-instance-profile-provider.ts
1219
+ // src/provisioning/providers/iam-instance-profile-provider.ts
1222
1220
  const INSTANCE_PROFILE_TYPE = "AWS::IAM::InstanceProfile";
1223
1221
  function isInstanceProfileName(id) {
1224
1222
  return /^[\w+=,.@-]{1,128}$/.test(id);
@@ -1485,8 +1483,7 @@ var IAMInstanceProfileProvider = class {
1485
1483
  }
1486
1484
  };
1487
1485
 
1488
- //#endregion
1489
- //#region src/provisioning/providers/iam-access-key-provider.ts
1486
+ // src/provisioning/providers/iam-access-key-provider.ts
1490
1487
  const ACCESS_KEY_ID_PATTERN = /^AKIA[A-Z0-9]{16}$/;
1491
1488
  const CREATE_DATE_SKEW_MARGIN_MS = 5e3;
1492
1489
  var IAMAccessKeyProvider = class {
@@ -1796,8 +1793,7 @@ var IAMAccessKeyProvider = class {
1796
1793
  }
1797
1794
  };
1798
1795
 
1799
- //#endregion
1800
- //#region src/provisioning/providers/iam-user-group-provider.ts
1796
+ // src/provisioning/providers/iam-user-group-provider.ts
1801
1797
  function isUserOrGroupName(resourceType, id) {
1802
1798
  return resourceType === "AWS::IAM::User" ? /^[\w+=,.@-]{1,64}$/.test(id) : /^[\w+=,.@-]{1,128}$/.test(id);
1803
1799
  }
@@ -2938,15 +2934,13 @@ var IAMUserGroupProvider = class {
2938
2934
  }
2939
2935
  };
2940
2936
 
2941
- //#endregion
2942
- //#region src/utils/cfn-timestamp.ts
2937
+ // src/utils/cfn-timestamp.ts
2943
2938
  const OFFSETLESS_DATE_TIME = /^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
2944
2939
  function parseCfnTimestamp(value) {
2945
2940
  return new Date(OFFSETLESS_DATE_TIME.test(value) ? `${value}Z` : value);
2946
2941
  }
2947
2942
 
2948
- //#endregion
2949
- //#region src/provisioning/providers/s3-bucket-provider.ts
2943
+ // src/provisioning/providers/s3-bucket-provider.ts
2950
2944
  function manualBucketDeletionClause(bucketName, maskSecrets, journaled) {
2951
2945
  const command = renderDisableCommand({
2952
2946
  before: "aws s3api delete-bucket --bucket",
@@ -6059,8 +6053,7 @@ var S3BucketProvider = class S3BucketProvider {
6059
6053
  }
6060
6054
  };
6061
6055
 
6062
- //#endregion
6063
- //#region src/provisioning/providers/s3-bucket-policy-provider.ts
6056
+ // src/provisioning/providers/s3-bucket-policy-provider.ts
6064
6057
  const OAI_USER_ARN_RE = /^arn:aws[a-z-]*:iam::cloudfront:user\/CloudFront Origin Access Identity ([A-Z0-9]+)$/;
6065
6058
  const IAM_UNIQUE_ID_RE = /^A[A-Z0-9]{15,}$/;
6066
6059
  const oaiCanonicalUserIdCache = /* @__PURE__ */ new Map();
@@ -6262,8 +6255,7 @@ function isS3BucketName(value) {
6262
6255
  return true;
6263
6256
  }
6264
6257
 
6265
- //#endregion
6266
- //#region src/provisioning/providers/sqs-queue-provider.ts
6258
+ // src/provisioning/providers/sqs-queue-provider.ts
6267
6259
  function serializeRedrivePolicy(value) {
6268
6260
  if (value === null || value === void 0) return "";
6269
6261
  if (typeof value === "object" && Object.keys(value).length === 0) return "";
@@ -6591,8 +6583,7 @@ var SQSQueueProvider = class {
6591
6583
  }
6592
6584
  };
6593
6585
 
6594
- //#endregion
6595
- //#region src/provisioning/policy-document-content.ts
6586
+ // src/provisioning/policy-document-content.ts
6596
6587
  const MASK = "***";
6597
6588
  const PERMANENT_CDKD_CODES = /* @__PURE__ */ new Set(["ROLLBACK_SECRET_TOKEN_SCAN_MISMATCH"]);
6598
6589
  const MARKED_PERMANENT_CODE_PREFIXES = ["INTRINSIC_RESOLUTION_REFUSAL", "ROLLBACK_SECRET_REGION_AMBIGUOUS"];
@@ -6723,8 +6714,7 @@ function policyContentKey(document) {
6723
6714
  return canonicalJson$3(value);
6724
6715
  }
6725
6716
 
6726
- //#endregion
6727
- //#region src/provisioning/providers/sqs-queue-policy-provider.ts
6717
+ // src/provisioning/providers/sqs-queue-policy-provider.ts
6728
6718
  const QUEUE_POLICY_UNREADABLE_SKIP_REASON = "the policy of a queue it wrote could not be read, so whether that queue still carries it is unknown";
6729
6719
  const QUEUE_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its queues with";
6730
6720
  const QUEUE_POLICY_MISMATCH_LEFT_REASON = "a queue it wrote carries a policy that does not match the document it attempted, so that queue was not cleared";
@@ -7026,8 +7016,7 @@ function splitQueueUrls(physicalId) {
7026
7016
  return physicalId.split(",").filter((url) => url.length > 0);
7027
7017
  }
7028
7018
 
7029
- //#endregion
7030
- //#region src/provisioning/providers/create-ownership.ts
7019
+ // src/provisioning/providers/create-ownership.ts
7031
7020
  async function nameHeldBefore(lookup, isAbsent) {
7032
7021
  try {
7033
7022
  return await lookup() ? "held" : "free";
@@ -7044,8 +7033,7 @@ function skippedCleanupText(heldBefore, what, command) {
7044
7033
  return heldBefore === "held" ? `${what} already existed before this create attempt (it may be an earlier attempt of this same deploy, an earlier failed deploy, or another stack's or someone else's resource), and the create handed it back, so cdkd did not delete it after the wiring failure; this deploy may have changed its configuration. A resource under a cdkd-generated name is adopted by the next deploy if its create-time settings are unchanged, so it needs no action if it is this stack's. Delete it only after confirming from its tags and creation time that no one else uses it: ${command}` : `cdkd could not tell whether this create made ${what} (the lookup before the create did not answer), so it was not deleted after the wiring failure. If this deploy created it, delete it before the next deploy: ${command}`;
7045
7034
  }
7046
7035
 
7047
- //#endregion
7048
- //#region src/provisioning/providers/sns-topic-provider.ts
7036
+ // src/provisioning/providers/sns-topic-provider.ts
7049
7037
  const SNS_MAXIMUM_MESSAGE_SIZE_DEFAULT = "262144";
7050
7038
  function snsTopicAttributes(topicArn) {
7051
7039
  return {
@@ -7601,8 +7589,7 @@ function mapDeliveryStatusLogging(attrs, stateCaseMap = /* @__PURE__ */ new Map(
7601
7589
  return result;
7602
7590
  }
7603
7591
 
7604
- //#endregion
7605
- //#region src/provisioning/providers/sns-subscription-provider.ts
7592
+ // src/provisioning/providers/sns-subscription-provider.ts
7606
7593
  const SNS_SUBSCRIPTION_DELETE_THREW_REASON = "the Unsubscribe call did not complete, so the old subscription is unproven";
7607
7594
  const MUTABLE_ATTRIBUTES = [
7608
7595
  "RawMessageDelivery",
@@ -7865,8 +7852,7 @@ function isPendingConfirmationError(error) {
7865
7852
  return error instanceof InvalidParameterException && error.message.toLowerCase().includes("pending confirmation");
7866
7853
  }
7867
7854
 
7868
- //#endregion
7869
- //#region src/provisioning/providers/sns-topic-policy-provider.ts
7855
+ // src/provisioning/providers/sns-topic-policy-provider.ts
7870
7856
  const TOPIC_POLICY_UNREADABLE_SKIP_REASON = "the policy of a topic it wrote could not be read, so whether that topic still carries it is unknown";
7871
7857
  const TOPIC_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its topics with";
7872
7858
  const TOPIC_POLICY_MISMATCH_LEFT_REASON = "a topic it wrote carries a policy that does not match the document it attempted, so that topic was not reset";
@@ -8182,8 +8168,7 @@ function canonicalPolicy(text) {
8182
8168
  }
8183
8169
  }
8184
8170
 
8185
- //#endregion
8186
- //#region src/provisioning/providers/lambda-create-client.ts
8171
+ // src/provisioning/providers/lambda-create-client.ts
8187
8172
  var LambdaCreateClientCache = class {
8188
8173
  client;
8189
8174
  shared;
@@ -8204,8 +8189,7 @@ var LambdaCreateClientCache = class {
8204
8189
  }
8205
8190
  };
8206
8191
 
8207
- //#endregion
8208
- //#region src/provisioning/providers/lambda-function-provider.ts
8192
+ // src/provisioning/providers/lambda-function-provider.ts
8209
8193
  function isFunctionName(id) {
8210
8194
  return /^[A-Za-z0-9_-]{1,64}$/.test(id);
8211
8195
  }
@@ -9236,8 +9220,7 @@ var LambdaFunctionProvider = class {
9236
9220
  }
9237
9221
  };
9238
9222
 
9239
- //#endregion
9240
- //#region src/provisioning/providers/lambda-permission-provider.ts
9223
+ // src/provisioning/providers/lambda-permission-provider.ts
9241
9224
  const PERMISSION_FUNCTION_NAME_SKIP_REASON = "FunctionName missing from state — no delete issued";
9242
9225
  const PERMISSION_STATEMENT_ID_SKIP_REASON = "empty StatementId in state physicalId — no delete issued";
9243
9226
  const DEPLOY_SKIP_CAVEAT$1 = "NOTE this arm is ALSO reached from cdkd deploy. Since issue 1762 the DELETE of a resource removed from the template behaves like destroy — the record is KEPT and the next deploy re-attempts it — but a REPLACEMENT / rollback delete FAILS the resource instead (https://github.com/go-to-k/cdkd/issues/1762), leaving the old one untracked; there, remove the resource by hand.";
@@ -9468,8 +9451,7 @@ function permissionStatementId(logicalId) {
9468
9451
  return statementId;
9469
9452
  }
9470
9453
 
9471
- //#endregion
9472
- //#region src/provisioning/providers/lambda-url-provider.ts
9454
+ // src/provisioning/providers/lambda-url-provider.ts
9473
9455
  var LambdaUrlProvider = class {
9474
9456
  lambdaClient;
9475
9457
  createClient = new LambdaCreateClientCache(() => this.lambdaClient);
@@ -9678,8 +9660,7 @@ var LambdaUrlProvider = class {
9678
9660
  }
9679
9661
  };
9680
9662
 
9681
- //#endregion
9682
- //#region src/provisioning/providers/orphan-report.ts
9663
+ // src/provisioning/providers/orphan-report.ts
9683
9664
  async function orphanCommandRegionArg(client, aws) {
9684
9665
  let region;
9685
9666
  try {
@@ -9744,8 +9725,7 @@ async function reportPossibleOrphans(logicalId, window, log, lookup) {
9744
9725
  log.warn(`${lead} (${when}), and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} match that this deploy did not record: ${shown.join(", ")}${more}. ${service} reports no creation time for them, so any of them may instead be this stack's own recorded one, another stack's, or older than this deploy; cdkd does not adopt or delete them. ${afterward} Inspect each before deleting anything: ${inspect}.${incomplete}`);
9745
9726
  }
9746
9727
 
9747
- //#endregion
9748
- //#region src/provisioning/providers/lambda-eventsource-provider.ts
9728
+ // src/provisioning/providers/lambda-eventsource-provider.ts
9749
9729
  const createEventSourceMappingLatch = new AmbiguousCreateLatch("lambda:CreateEventSourceMapping");
9750
9730
  const mappingsCreatedByThisProcess = new RecentIdSet();
9751
9731
  const ARN_SERVICE_RE = /^arn:aws[a-z0-9-]*:([^:]+):/;
@@ -10364,8 +10344,7 @@ var LambdaEventSourceMappingProvider = class {
10364
10344
  }
10365
10345
  };
10366
10346
 
10367
- //#endregion
10368
- //#region src/provisioning/providers/lambda-layer-provider.ts
10347
+ // src/provisioning/providers/lambda-layer-provider.ts
10369
10348
  const publishLayerVersionLatch = new AmbiguousCreateLatch("lambda:PublishLayerVersion");
10370
10349
  const versionsPublishedByThisProcess = new RecentIdSet();
10371
10350
  function parseLayerCreatedDate(value) {
@@ -10556,8 +10535,7 @@ var LambdaLayerVersionProvider = class {
10556
10535
  }
10557
10536
  };
10558
10537
 
10559
- //#endregion
10560
- //#region src/provisioning/providers/lambda-event-invoke-config-provider.ts
10538
+ // src/provisioning/providers/lambda-event-invoke-config-provider.ts
10561
10539
  function stringOrUndefined(value) {
10562
10540
  return typeof value === "string" ? value : void 0;
10563
10541
  }
@@ -10795,8 +10773,7 @@ var LambdaEventInvokeConfigProvider = class {
10795
10773
  }
10796
10774
  };
10797
10775
 
10798
- //#endregion
10799
- //#region src/provisioning/providers/lambda-microvm-image-provider.ts
10776
+ // src/provisioning/providers/lambda-microvm-image-provider.ts
10800
10777
  var LambdaMicrovmImageProvider = class {
10801
10778
  client;
10802
10779
  logger = getLogger().child("LambdaMicrovmImageProvider");
@@ -11165,8 +11142,7 @@ function isRecord$2(value) {
11165
11142
  return typeof value === "object" && value !== null && !Array.isArray(value);
11166
11143
  }
11167
11144
 
11168
- //#endregion
11169
- //#region src/provisioning/providers/lambda-web-function-arns.ts
11145
+ // src/provisioning/providers/lambda-web-function-arns.ts
11170
11146
  const CHILD_ARN = /^(arn:[^:]+:lambda:[^:]+:\d{12}:web-function\/[^/]+)\/(revision|endpoint)\/([^/]+)$/;
11171
11147
  function parseWebFunctionChildArn(arn, kind) {
11172
11148
  const match = CHILD_ARN.exec(arn);
@@ -11200,8 +11176,7 @@ function sleep$1(ms) {
11200
11176
  return new Promise((resolve) => setTimeout(resolve, ms));
11201
11177
  }
11202
11178
 
11203
- //#endregion
11204
- //#region src/provisioning/providers/lambda-web-function-revision-provider.ts
11179
+ // src/provisioning/providers/lambda-web-function-revision-provider.ts
11205
11180
  const createRevisionLatch = new AmbiguousCreateLatch("lambda-web:CreateWebFunctionRevision");
11206
11181
  const revisionsCreatedByThisProcess = new RecentIdSet();
11207
11182
  var LambdaWebFunctionRevisionProvider = class {
@@ -11561,8 +11536,7 @@ function serviceConfigToCfn(config) {
11561
11536
  return out;
11562
11537
  }
11563
11538
 
11564
- //#endregion
11565
- //#region src/provisioning/providers/lambda-web-function-endpoint-provider.ts
11539
+ // src/provisioning/providers/lambda-web-function-endpoint-provider.ts
11566
11540
  var LambdaWebFunctionEndpointProvider = class {
11567
11541
  client;
11568
11542
  logger = getLogger().child("LambdaWebFunctionEndpointProvider");
@@ -11924,8 +11898,7 @@ function buildAttributes$1(resp) {
11924
11898
  return attributes;
11925
11899
  }
11926
11900
 
11927
- //#endregion
11928
- //#region src/provisioning/providers/lambda-network-connector-provider.ts
11901
+ // src/provisioning/providers/lambda-network-connector-provider.ts
11929
11902
  const POLL_INTERVAL_MS$2 = 1e3;
11930
11903
  const MAX_POLL_ATTEMPTS = 1200;
11931
11904
  var LambdaNetworkConnectorProvider = class {
@@ -12228,8 +12201,7 @@ function versionOfArn(arn) {
12228
12201
  return match ? Number(match[1]) : void 0;
12229
12202
  }
12230
12203
 
12231
- //#endregion
12232
- //#region src/provisioning/delete-gone-wait.ts
12204
+ // src/provisioning/delete-gone-wait.ts
12233
12205
  async function waitForGoneAfterDelete(opts) {
12234
12206
  const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
12235
12207
  const now = opts.now ?? Date.now;
@@ -12280,8 +12252,7 @@ async function waitForGoneAfterDelete(opts) {
12280
12252
  }
12281
12253
  }
12282
12254
 
12283
- //#endregion
12284
- //#region src/provisioning/providers/dynamodb-table-provider.ts
12255
+ // src/provisioning/providers/dynamodb-table-provider.ts
12285
12256
  function isTableName(id) {
12286
12257
  return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
12287
12258
  }
@@ -12528,12 +12499,15 @@ function sentWarmThroughputMembers(value) {
12528
12499
  function wasSentWarmThroughput(value) {
12529
12500
  return sentWarmThroughputMembers(value).size > 0;
12530
12501
  }
12531
- function readbackWarmThroughput(live, members) {
12502
+ function readbackWarmThroughput(live, members, declared) {
12503
+ const moving = live.Status === "UPDATING" ? coerceWarmThroughput(declared)?.spec : void 0;
12532
12504
  const out = {};
12533
12505
  for (const member of WARM_THROUGHPUT_MEMBERS) {
12534
- if (live[member] === void 0) continue;
12506
+ const value = live[member];
12507
+ if (value === void 0) continue;
12535
12508
  if (members !== void 0 && !members.has(member)) continue;
12536
- out[member] = live[member];
12509
+ const target = moving?.[member];
12510
+ out[member] = target === void 0 ? value : Math.max(value, target);
12537
12511
  }
12538
12512
  return Object.keys(out).length > 0 ? out : void 0;
12539
12513
  }
@@ -12595,7 +12569,7 @@ function reverseMapSecondaryIndex(live, desired, bagInformative) {
12595
12569
  if (Object.keys(odt).length > 0) out["OnDemandThroughput"] = odt;
12596
12570
  }
12597
12571
  if ("WarmThroughput" in live && indexDeclares(desired, "WarmThroughput", bagInformative) && live.WarmThroughput) {
12598
- const wt = readbackWarmThroughput(live.WarmThroughput, bagInformative ? sentWarmThroughputMembers(desired?.["WarmThroughput"]) : void 0);
12572
+ const wt = readbackWarmThroughput(live.WarmThroughput, bagInformative ? sentWarmThroughputMembers(desired?.["WarmThroughput"]) : void 0, bagInformative ? desired?.["WarmThroughput"] : void 0);
12599
12573
  if (wt !== void 0) out["WarmThroughput"] = wt;
12600
12574
  }
12601
12575
  return out;
@@ -12953,7 +12927,14 @@ var DynamoDBTableProvider = class {
12953
12927
  if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(`${lsiMessage}. Nothing was applied to the table; revert the LocalSecondaryIndexes change, or create a new table under a new logical ID (a new table starts empty)`, resourceType, logicalId, physicalId);
12954
12928
  warn(`${lsiMessage}; the LocalSecondaryIndexes change was not applied`);
12955
12929
  }
12956
- const vectorIndexPlan = JSON.stringify(properties["VectorIndexes"]) !== JSON.stringify(previousProperties["VectorIndexes"]) ? planVectorIndexUpdates(previousProperties["VectorIndexes"], properties["VectorIndexes"], table?.VectorIndexes ?? (table === void 0 ? void 0 : [])) : void 0;
12930
+ const vectorIndexesChanged = JSON.stringify(properties["VectorIndexes"]) !== JSON.stringify(previousProperties["VectorIndexes"]);
12931
+ const vectorIndexShape = vectorIndexesChanged ? vectorIndexesShapeDetail(properties["VectorIndexes"]) : void 0;
12932
+ if (vectorIndexShape !== void 0) {
12933
+ const shapeMessage = `AWS::DynamoDB::Table ${logicalId}: ${vectorIndexShape}`;
12934
+ if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(`${maskSecrets(shapeMessage)}. Nothing was applied to the table; fix the template value`, resourceType, logicalId, physicalId);
12935
+ warn(`${shapeMessage}; the VectorIndexes change was not applied`);
12936
+ }
12937
+ const vectorIndexPlan = vectorIndexesChanged && vectorIndexShape === void 0 ? planVectorIndexUpdates(previousProperties["VectorIndexes"], properties["VectorIndexes"], table?.VectorIndexes ?? (table === void 0 ? void 0 : [])) : void 0;
12957
12938
  if (vectorIndexPlan !== void 0 && vectorIndexPlan.changed.length > 0) {
12958
12939
  const vectorMessage = `AWS::DynamoDB::Table ${logicalId}: VectorIndexes ${vectorIndexPlan.changed.map((n) => maskSecrets(n)).join(", ")} changed definition, which DynamoDB cannot modify in place`;
12959
12940
  if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(`${maskSecrets(vectorMessage)}. Nothing was applied to the table; rename the index (so it is dropped and re-created) or revert the change`, resourceType, logicalId, physicalId);
@@ -14274,7 +14255,8 @@ var DynamoDBTableProvider = class {
14274
14255
  if (Object.keys(odt).length > 0) result["OnDemandThroughput"] = odt;
14275
14256
  }
14276
14257
  if (table.WarmThroughput && declaresWarmThroughput(properties)) {
14277
- const wt = readbackWarmThroughput(table.WarmThroughput, properties !== void 0 && desiredBagIsInformative(properties) ? sentWarmThroughputMembers(properties["WarmThroughput"]) : void 0);
14258
+ const informative = properties !== void 0 && desiredBagIsInformative(properties);
14259
+ const wt = readbackWarmThroughput(table.WarmThroughput, informative ? sentWarmThroughputMembers(properties["WarmThroughput"]) : void 0, informative ? properties["WarmThroughput"] : void 0);
14278
14260
  if (wt !== void 0) result["WarmThroughput"] = wt;
14279
14261
  }
14280
14262
  let streamMembersRead = Promise.resolve();
@@ -14540,8 +14522,7 @@ function projectIndexesOnto(live, recorded, desired, attempted = /* @__PURE__ */
14540
14522
  return kept.length > 0 ? kept : void 0;
14541
14523
  }
14542
14524
 
14543
- //#endregion
14544
- //#region src/provisioning/providers/logs-loggroup-provider.ts
14525
+ // src/provisioning/providers/logs-loggroup-provider.ts
14545
14526
  const LOG_GROUP_TYPE = "AWS::Logs::LogGroup";
14546
14527
  function isLogGroupName(id) {
14547
14528
  return /^[A-Za-z0-9._/#-]{1,512}$/.test(id);
@@ -15040,8 +15021,7 @@ var LogsLogGroupProvider = class {
15040
15021
  }
15041
15022
  };
15042
15023
 
15043
- //#endregion
15044
- //#region src/provisioning/providers/cloudwatch-alarm-provider.ts
15024
+ // src/provisioning/providers/cloudwatch-alarm-provider.ts
15045
15025
  function isDefaultEvaluationWindow(value) {
15046
15026
  if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
15047
15027
  const keys = Object.keys(value);
@@ -15409,8 +15389,7 @@ var CloudWatchAlarmProvider = class {
15409
15389
  }
15410
15390
  };
15411
15391
 
15412
- //#endregion
15413
- //#region src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
15392
+ // src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
15414
15393
  const ID_ATTRIBUTES = ["AnomalyDetectorId", "Id"];
15415
15394
  var CloudWatchAnomalyDetectorProvider = class {
15416
15395
  cloudWatchClient;
@@ -15579,8 +15558,7 @@ function hasDescriptor(params) {
15579
15558
  return params.SingleMetricAnomalyDetector !== void 0 || params.MetricMathAnomalyDetector !== void 0 || params.Namespace !== void 0 || params.MetricName !== void 0;
15580
15559
  }
15581
15560
 
15582
- //#endregion
15583
- //#region src/provisioning/providers/secretsmanager-secret-provider.ts
15561
+ // src/provisioning/providers/secretsmanager-secret-provider.ts
15584
15562
  function asJson(value) {
15585
15563
  return value === void 0 ? void 0 : JSON.parse(JSON.stringify(value));
15586
15564
  }
@@ -16019,8 +15997,7 @@ var SecretsManagerSecretProvider = class {
16019
15997
  }
16020
15998
  };
16021
15999
 
16022
- //#endregion
16023
- //#region src/provisioning/providers/ssm-parameter-provider.ts
16000
+ // src/provisioning/providers/ssm-parameter-provider.ts
16024
16001
  var SSMParameterProvider = class SSMParameterProvider {
16025
16002
  ssmClient;
16026
16003
  createClient;
@@ -16310,8 +16287,7 @@ function ssmPoliciesParameter(policies) {
16310
16287
  return JSON.stringify(policies);
16311
16288
  }
16312
16289
 
16313
- //#endregion
16314
- //#region src/provisioning/providers/eventbridge-rule-provider.ts
16290
+ // src/provisioning/providers/eventbridge-rule-provider.ts
16315
16291
  var EventBridgeRuleProvider = class {
16316
16292
  eventBridgeClient;
16317
16293
  logger = getLogger().child("EventBridgeRuleProvider");
@@ -16752,8 +16728,7 @@ var EventBridgeRuleProvider = class {
16752
16728
  }
16753
16729
  };
16754
16730
 
16755
- //#endregion
16756
- //#region src/provisioning/providers/eventbridge-bus-provider.ts
16731
+ // src/provisioning/providers/eventbridge-bus-provider.ts
16757
16732
  function sanitizeDeadLetterConfig(value) {
16758
16733
  if (value === null || value === void 0) return void 0;
16759
16734
  if (typeof value !== "object") return void 0;
@@ -17039,8 +17014,7 @@ var EventBridgeBusProvider = class {
17039
17014
  }
17040
17015
  };
17041
17016
 
17042
- //#endregion
17043
- //#region src/provisioning/providers/ec2-provider.ts
17017
+ // src/provisioning/providers/ec2-provider.ts
17044
17018
  const EC2_VPC_GATEWAY_ATTACHMENT_ID_FORMAT = {
17045
17019
  label: "VPCGatewayAttachment",
17046
17020
  segments: ["gatewayId", "vpcId"]
@@ -21756,8 +21730,7 @@ function isDefaultEgressRule(rule) {
21756
21730
  return true;
21757
21731
  }
21758
21732
 
21759
- //#endregion
21760
- //#region src/provisioning/providers/apigateway-provider.ts
21733
+ // src/provisioning/providers/apigateway-provider.ts
21761
21734
  const createAuthorizerLatch$1 = new AmbiguousCreateLatch("apigateway:CreateAuthorizer");
21762
21735
  const createDeploymentLatch = new AmbiguousCreateLatch("apigateway:CreateDeployment");
21763
21736
  const authorizersCreatedByThisProcess$1 = new RecentIdSet();
@@ -23355,8 +23328,7 @@ function methodChildCalls(ids, desired, previous) {
23355
23328
  return calls;
23356
23329
  }
23357
23330
 
23358
- //#endregion
23359
- //#region src/provisioning/providers/apigatewayv2-provider.ts
23331
+ // src/provisioning/providers/apigatewayv2-provider.ts
23360
23332
  const createApiLatch = new AmbiguousCreateLatch("apigatewayv2:CreateApi");
23361
23333
  const createIntegrationLatch = new AmbiguousCreateLatch("apigatewayv2:CreateIntegration");
23362
23334
  const createAuthorizerLatch = new AmbiguousCreateLatch("apigatewayv2:CreateAuthorizer");
@@ -24825,8 +24797,7 @@ var ApiGatewayV2Provider = class ApiGatewayV2Provider {
24825
24797
  }
24826
24798
  };
24827
24799
 
24828
- //#endregion
24829
- //#region src/provisioning/providers/cloudfront-oai-provider.ts
24800
+ // src/provisioning/providers/cloudfront-oai-provider.ts
24830
24801
  var CloudFrontOAIProvider = class {
24831
24802
  cloudFrontClient;
24832
24803
  logger = getLogger().child("CloudFrontOAIProvider");
@@ -24975,8 +24946,7 @@ var CloudFrontOAIProvider = class {
24975
24946
  }
24976
24947
  };
24977
24948
 
24978
- //#endregion
24979
- //#region src/provisioning/providers/cloudfront-oac-provider.ts
24949
+ // src/provisioning/providers/cloudfront-oac-provider.ts
24980
24950
  var CloudFrontOACProvider = class {
24981
24951
  cloudFrontClient;
24982
24952
  createClient;
@@ -25141,8 +25111,7 @@ var CloudFrontOACProvider = class {
25141
25111
  }
25142
25112
  };
25143
25113
 
25144
- //#endregion
25145
- //#region src/provisioning/providers/cloudfront-distribution-provider.ts
25114
+ // src/provisioning/providers/cloudfront-distribution-provider.ts
25146
25115
  function shownId(id) {
25147
25116
  return isPlainImportValue(id) ? id : VALUE_NOT_SHOWN;
25148
25117
  }
@@ -25820,8 +25789,7 @@ var CloudFrontDistributionProvider = class {
25820
25789
  }
25821
25790
  };
25822
25791
 
25823
- //#endregion
25824
- //#region src/provisioning/providers/agentcore-case-convert.ts
25792
+ // src/provisioning/providers/agentcore-case-convert.ts
25825
25793
  function pascalToCamelCaseKeys(value, preserveKeys) {
25826
25794
  if (value === null || value === void 0) return value;
25827
25795
  if (Array.isArray(value)) return value.map((item) => pascalToCamelCaseKeys(item, preserveKeys));
@@ -25849,8 +25817,7 @@ function camelToPascalCaseKeys(value, preserveKeys) {
25849
25817
  return value;
25850
25818
  }
25851
25819
 
25852
- //#endregion
25853
- //#region src/provisioning/providers/agentcore-runtime-provider.ts
25820
+ // src/provisioning/providers/agentcore-runtime-provider.ts
25854
25821
  const CFN_MAP_KEYS = /* @__PURE__ */ new Set(["Tags", "AdvertisedScopeMapping"]);
25855
25822
  const SDK_MAP_KEYS = /* @__PURE__ */ new Set(["tags", "advertisedScopeMapping"]);
25856
25823
  const RUNTIME_TAGS_WHAT = "a map of tag keys to scalar values or a list of tags with a non-empty string Key and a scalar Value";
@@ -26144,8 +26111,7 @@ var AgentCoreRuntimeProvider = class {
26144
26111
  }
26145
26112
  };
26146
26113
 
26147
- //#endregion
26148
- //#region src/provisioning/providers/agentcore-browser-provider.ts
26114
+ // src/provisioning/providers/agentcore-browser-provider.ts
26149
26115
  const DEFAULT_BROWSER_ID = "aws.browser.v1";
26150
26116
  var AgentCoreBrowserProvider = class {
26151
26117
  client;
@@ -26219,8 +26185,7 @@ var AgentCoreBrowserProvider = class {
26219
26185
  }
26220
26186
  };
26221
26187
 
26222
- //#endregion
26223
- //#region src/provisioning/providers/agentcore-code-interpreter-provider.ts
26188
+ // src/provisioning/providers/agentcore-code-interpreter-provider.ts
26224
26189
  const DEFAULT_CODE_INTERPRETER_ID = "aws.codeinterpreter.v1";
26225
26190
  var AgentCoreCodeInterpreterProvider = class {
26226
26191
  client;
@@ -26289,8 +26254,7 @@ var AgentCoreCodeInterpreterProvider = class {
26289
26254
  }
26290
26255
  };
26291
26256
 
26292
- //#endregion
26293
- //#region src/provisioning/providers/agentcore-evaluator-provider.ts
26257
+ // src/provisioning/providers/agentcore-evaluator-provider.ts
26294
26258
  const CFN_PRESERVE_KEYS = /* @__PURE__ */ new Set(["AdditionalModelRequestFields"]);
26295
26259
  const SDK_PRESERVE_KEYS = /* @__PURE__ */ new Set(["additionalModelRequestFields"]);
26296
26260
  function evaluatorIdFromArn(arnOrId) {
@@ -26484,8 +26448,7 @@ var AgentCoreEvaluatorProvider = class {
26484
26448
  }
26485
26449
  };
26486
26450
 
26487
- //#endregion
26488
- //#region src/provisioning/providers/stepfunctions-provider.ts
26451
+ // src/provisioning/providers/stepfunctions-provider.ts
26489
26452
  function stateMachineRevisionId(described) {
26490
26453
  return described.revisionId ?? "INITIAL";
26491
26454
  }
@@ -26893,8 +26856,7 @@ function wasMeaningfullyConfigured(value, discriminatorKey) {
26893
26856
  return value[discriminatorKey] !== void 0;
26894
26857
  }
26895
26858
 
26896
- //#endregion
26897
- //#region src/provisioning/providers/ecs-provider.ts
26859
+ // src/provisioning/providers/ecs-provider.ts
26898
26860
  const registerTaskDefinitionLatch = new AmbiguousCreateLatch("ecs:RegisterTaskDefinition");
26899
26861
  const taskDefinitionsRegisteredByThisProcess = new RecentIdSet();
26900
26862
  function familyOfTaskDefinitionArn(arn) {
@@ -28511,8 +28473,7 @@ var ECSProvider = class {
28511
28473
  }
28512
28474
  };
28513
28475
 
28514
- //#endregion
28515
- //#region src/provisioning/providers/elbv2-provider.ts
28476
+ // src/provisioning/providers/elbv2-provider.ts
28516
28477
  function loadBalancerNameFromArn(arn) {
28517
28478
  return nameFromElbv2Arn(arn, ":loadbalancer/", 3);
28518
28479
  }
@@ -30022,8 +29983,7 @@ var ELBv2Provider = class {
30022
29983
  }
30023
29984
  };
30024
29985
 
30025
- //#endregion
30026
- //#region src/provisioning/providers/rds-dbproxy-provider.ts
29986
+ // src/provisioning/providers/rds-dbproxy-provider.ts
30027
29987
  const POLL_INTERVAL_MS$1 = 5e3;
30028
29988
  const POLL_TIMEOUT_MS$1 = 18e5;
30029
29989
  const RETAINED_ON_REMOVAL = [
@@ -30402,8 +30362,7 @@ var RDSDBProxyProvider = class {
30402
30362
  }
30403
30363
  };
30404
30364
 
30405
- //#endregion
30406
- //#region src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
30365
+ // src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
30407
30366
  const POLL_INTERVAL_MS = 5e3;
30408
30367
  const POLL_TIMEOUT_MS = 18e5;
30409
30368
  var RDSDBProxyEndpointProvider = class {
@@ -30705,8 +30664,7 @@ var RDSDBProxyEndpointProvider = class {
30705
30664
  }
30706
30665
  };
30707
30666
 
30708
- //#endregion
30709
- //#region src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
30667
+ // src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
30710
30668
  const RDS_TARGET_IDENTIFIER = /^[A-Za-z][A-Za-z0-9-]{0,62}$/;
30711
30669
  function readTargetLists(values) {
30712
30670
  const lists = {
@@ -31220,8 +31178,7 @@ function withoutKey(bag, key) {
31220
31178
  return rest;
31221
31179
  }
31222
31180
 
31223
- //#endregion
31224
- //#region src/provisioning/providers/docdb-shared.ts
31181
+ // src/provisioning/providers/docdb-shared.ts
31225
31182
  function wrapDocDBFailure(logger, mask, error, build) {
31226
31183
  const m = maskerOrIdentity(mask);
31227
31184
  const failure = describeAwsFailure(error);
@@ -31230,6 +31187,41 @@ function wrapDocDBFailure(logger, mask, error, build) {
31230
31187
  const wrapped = build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`);
31231
31188
  return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
31232
31189
  }
31190
+ function docdbStringList(value) {
31191
+ if (value == null) return [];
31192
+ if (!Array.isArray(value)) return void 0;
31193
+ return value.every((item) => typeof item === "string") ? value : void 0;
31194
+ }
31195
+ function docdbLogExportChange(desired, previous) {
31196
+ const enable = [...new Set(desired)].filter((type) => !previous.includes(type));
31197
+ const disable = [...new Set(previous)].filter((type) => !desired.includes(type));
31198
+ if (enable.length === 0 && disable.length === 0) return void 0;
31199
+ return {
31200
+ ...enable.length > 0 && { EnableLogTypes: enable },
31201
+ ...disable.length > 0 && { DisableLogTypes: disable }
31202
+ };
31203
+ }
31204
+ function cfnCapacity(value) {
31205
+ const capacity = typeof value === "number" || typeof value === "string" && value.trim() !== "" ? Number(value) : NaN;
31206
+ return Number.isFinite(capacity) ? capacity : void 0;
31207
+ }
31208
+ function docdbServerlessScaling(value) {
31209
+ if (value == null) return void 0;
31210
+ if (typeof value !== "object" || Array.isArray(value)) return null;
31211
+ const { MinCapacity, MaxCapacity } = value;
31212
+ const min = cfnCapacity(MinCapacity);
31213
+ const max = cfnCapacity(MaxCapacity);
31214
+ if (min === void 0 || max === void 0) return null;
31215
+ return {
31216
+ MinCapacity: min,
31217
+ MaxCapacity: max
31218
+ };
31219
+ }
31220
+ function holdsDocDBPendingValue(value) {
31221
+ if (value === void 0 || value === null) return false;
31222
+ if (typeof value === "object") return Object.values(value).some(holdsDocDBPendingValue);
31223
+ return true;
31224
+ }
31233
31225
  function isDocDBNotFoundError(error, faultName) {
31234
31226
  if (!(error instanceof Error)) return false;
31235
31227
  const name = error.name ?? "";
@@ -31269,8 +31261,7 @@ async function attachDocDBTags(client, logger, result, arn) {
31269
31261
  }
31270
31262
  }
31271
31263
 
31272
- //#endregion
31273
- //#region src/provisioning/providers/docdb-provider.ts
31264
+ // src/provisioning/providers/docdb-provider.ts
31274
31265
  function masterUserPasswordToSend(properties, previousProperties, context) {
31275
31266
  const desired = properties["MasterUserPassword"];
31276
31267
  if (desired === void 0 || desired === null) return void 0;
@@ -31280,6 +31271,20 @@ function masterUserPasswordToSend(properties, previousProperties, context) {
31280
31271
  return typeof desired === "string" && typeof recorded === "string" && recorded === desired && dynamicReferenceTokens(recorded).length === 0 && recorded !== "***" ? void 0 : desired;
31281
31272
  }
31282
31273
  const DOCDB_DEFAULT_PORT = 27017;
31274
+ const DOCDB_DEFAULT_STORAGE_TYPE = "standard";
31275
+ function rotateMasterUserPassword(properties, previousProperties, context) {
31276
+ if (context?.replayingState === true || context?.desiredFromAwsReadback === true) return false;
31277
+ return coerceCfnBoolean(properties["RotateMasterUserPassword"]) === true && coerceCfnBoolean(previousProperties["RotateMasterUserPassword"]) !== true;
31278
+ }
31279
+ function kmsKeyText(key) {
31280
+ return key.replace(/^arn:[^:]*:kms:[^:]*:[^:]*:/, "").replace(/^key\//, "");
31281
+ }
31282
+ function sameKmsKey(a, b) {
31283
+ return b !== void 0 && kmsKeyText(a) === kmsKeyText(b);
31284
+ }
31285
+ function declaredChange(desired, recorded, live) {
31286
+ return desired != null && String(desired) !== String(recorded ?? live);
31287
+ }
31283
31288
  const DOCDB_CLUSTER_KEPT_ON_REMOVAL = [
31284
31289
  "DeletionProtection",
31285
31290
  "BackupRetentionPeriod",
@@ -31287,17 +31292,38 @@ const DOCDB_CLUSTER_KEPT_ON_REMOVAL = [
31287
31292
  "EngineVersion",
31288
31293
  "PreferredBackupWindow",
31289
31294
  "PreferredMaintenanceWindow",
31290
- "DBClusterParameterGroupName"
31295
+ "DBClusterParameterGroupName",
31296
+ "CopyTagsToSnapshot",
31297
+ "EnableCloudwatchLogsExports",
31298
+ "StorageType",
31299
+ "ServerlessV2ScalingConfiguration",
31300
+ "MasterUserSecretKmsKeyId"
31301
+ ];
31302
+ const DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL = ["NetworkType", "ManageMasterUserPassword"];
31303
+ const DOCDB_INSTANCE_KEPT_ON_REMOVAL = [
31304
+ "PreferredMaintenanceWindow",
31305
+ "CACertificateIdentifier",
31306
+ "EnablePerformanceInsights"
31307
+ ];
31308
+ const CLUSTER_MODIFY_UNSETTLED_KEYS = [
31309
+ "CopyTagsToSnapshot",
31310
+ "EnableCloudwatchLogsExports",
31311
+ "NetworkType",
31312
+ "ServerlessV2ScalingConfiguration",
31313
+ "StorageType"
31291
31314
  ];
31292
- const DOCDB_INSTANCE_KEPT_ON_REMOVAL = ["PreferredMaintenanceWindow"];
31293
- function keptOnRemovalWarning$1(keys, properties, previousProperties, context, logicalId, resourceType) {
31315
+ const INSTANCE_MODIFY_UNSETTLED_KEYS = ["CACertificateIdentifier", "EnablePerformanceInsights"];
31316
+ const SETTLE_MAX_WAIT_MS = 3e5;
31317
+ const STORAGE_SETTLE_MAX_WAIT_MS = 18e5;
31318
+ const DEADLINE_MARGIN_MS = 3e4;
31319
+ function keptOnRemovalWarning$1(keys, properties, previousProperties, context, logicalId, resourceType, measured = true) {
31294
31320
  const removedSet = context?.removedProperties ?? new Set(removedTemplateKeys(previousProperties, properties));
31295
31321
  const removed = keys.filter((key) => removedSet.has(key));
31296
31322
  if (removed.length === 0) return void 0;
31297
31323
  const one = removed.length === 1;
31298
31324
  const names = `${one ? "property" : "properties"} ${removed.join(", ")}`;
31299
31325
  const modify = resourceType === "AWS::DocDB::DBInstance" ? "ModifyDBInstance" : "ModifyDBCluster";
31300
- return context?.replayingState ? safeMsg`${logicalId} (${resourceType}): ${names} ${one ? "is" : "are"} absent from the state being restored; ${modify} keeps a setting it is not sent, so the rollback leaves any value the failed deploy applied in place.` : safeMsg`${logicalId} (${resourceType}): ${names} ${one ? "was" : "were"} removed from the template; cdkd leaves the current AWS ${one ? "value" : "values"} in place, as CloudFormation does. Declare ${one ? "it" : "them"} to change ${one ? "it" : "them"}.`;
31326
+ return context?.replayingState ? safeMsg`${logicalId} (${resourceType}): ${names} ${one ? "is" : "are"} absent from the state being restored; ${modify} keeps a setting it is not sent, so the rollback leaves any value the failed deploy applied in place.` : safeMsg`${logicalId} (${resourceType}): ${names} ${one ? "was" : "were"} removed from the template; cdkd leaves the current AWS ${one ? "value" : "values"} in place${measured ? ", as CloudFormation does" : ""}. Declare ${one ? "it" : "them"} to change ${one ? "it" : "them"}.`;
31301
31327
  }
31302
31328
  const SECURITY_GROUP_CHANGE_MEMBER_STATUSES = /* @__PURE__ */ new Set(["modifying"]);
31303
31329
  const PORT_CHANGE_MEMBER_STATUSES = /* @__PURE__ */ new Set(["modifying", "rebooting"]);
@@ -31341,6 +31367,7 @@ var DocDBProvider = class {
31341
31367
  protectionFlips = new ProtectionFlipRegistry();
31342
31368
  disableCcApiFallback = true;
31343
31369
  removalHandledInUpdate = /* @__PURE__ */ new Map([["AWS::DocDB::DBCluster", /* @__PURE__ */ new Set([
31370
+ "AvailabilityZones",
31344
31371
  "DBClusterIdentifier",
31345
31372
  "DBSubnetGroupName",
31346
31373
  "KmsKeyId",
@@ -31349,7 +31376,9 @@ var DocDBProvider = class {
31349
31376
  "Port",
31350
31377
  "Tags",
31351
31378
  "MasterUserPassword",
31352
- ...DOCDB_CLUSTER_KEPT_ON_REMOVAL
31379
+ "RotateMasterUserPassword",
31380
+ ...DOCDB_CLUSTER_KEPT_ON_REMOVAL,
31381
+ ...DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL
31353
31382
  ])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
31354
31383
  "DBInstanceIdentifier",
31355
31384
  "DBClusterIdentifier",
@@ -31357,6 +31386,7 @@ var DocDBProvider = class {
31357
31386
  "DBInstanceClass",
31358
31387
  "Tags",
31359
31388
  "AutoMinorVersionUpgrade",
31389
+ "CertificateRotationRestart",
31360
31390
  ...DOCDB_INSTANCE_KEPT_ON_REMOVAL
31361
31391
  ])]]);
31362
31392
  handledProperties = /* @__PURE__ */ new Map([["AWS::DocDB::DBCluster", /* @__PURE__ */ new Set([
@@ -31374,7 +31404,16 @@ var DocDBProvider = class {
31374
31404
  "PreferredMaintenanceWindow",
31375
31405
  "DBClusterParameterGroupName",
31376
31406
  "DeletionProtection",
31377
- "Tags"
31407
+ "Tags",
31408
+ "AvailabilityZones",
31409
+ "CopyTagsToSnapshot",
31410
+ "EnableCloudwatchLogsExports",
31411
+ "ManageMasterUserPassword",
31412
+ "MasterUserSecretKmsKeyId",
31413
+ "NetworkType",
31414
+ "RotateMasterUserPassword",
31415
+ "ServerlessV2ScalingConfiguration",
31416
+ "StorageType"
31378
31417
  ])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
31379
31418
  "DBInstanceIdentifier",
31380
31419
  "DBInstanceClass",
@@ -31382,7 +31421,10 @@ var DocDBProvider = class {
31382
31421
  "AvailabilityZone",
31383
31422
  "PreferredMaintenanceWindow",
31384
31423
  "AutoMinorVersionUpgrade",
31385
- "Tags"
31424
+ "Tags",
31425
+ "CACertificateIdentifier",
31426
+ "CertificateRotationRestart",
31427
+ "EnablePerformanceInsights"
31386
31428
  ])]]);
31387
31429
  getClient() {
31388
31430
  if (!this.docdbClient) {
@@ -31404,8 +31446,8 @@ var DocDBProvider = class {
31404
31446
  async create(logicalId, resourceType, properties, context) {
31405
31447
  const mask = context?.maskSecrets;
31406
31448
  switch (resourceType) {
31407
- case "AWS::DocDB::DBCluster": return this.createDBCluster(logicalId, resourceType, properties, mask);
31408
- case "AWS::DocDB::DBInstance": return this.createDBInstance(logicalId, resourceType, properties, mask);
31449
+ case "AWS::DocDB::DBCluster": return this.createDBCluster(logicalId, resourceType, properties, mask, context?.replayingState === true);
31450
+ case "AWS::DocDB::DBInstance": return this.createDBInstance(logicalId, resourceType, properties, mask, context?.replayingState === true);
31409
31451
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId);
31410
31452
  }
31411
31453
  }
@@ -31430,9 +31472,13 @@ var DocDBProvider = class {
31430
31472
  const thrown = this.wrapCaughtError(mask, error, build);
31431
31473
  return error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
31432
31474
  }
31433
- async createDBCluster(logicalId, resourceType, properties, mask) {
31475
+ async createDBCluster(logicalId, resourceType, properties, mask, replayingState) {
31434
31476
  this.logger.debug(`Creating DocDB DBCluster ${logicalId}`);
31435
31477
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31478
+ const origin = { stateBorne: replayingState };
31479
+ const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, true);
31480
+ const managedPassword = this.readBooleanProperty("ManageMasterUserPassword", properties, resourceType, logicalId, origin);
31481
+ const password = this.passwordBesideManaged(managedPassword, false, properties["MasterUserPassword"], resourceType, logicalId, origin);
31436
31482
  const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
31437
31483
  let clusterCreated = false;
31438
31484
  let createdResourceId;
@@ -31442,7 +31488,7 @@ var DocDBProvider = class {
31442
31488
  Engine: "docdb",
31443
31489
  EngineVersion: properties["EngineVersion"],
31444
31490
  MasterUsername: properties["MasterUsername"],
31445
- MasterUserPassword: properties["MasterUserPassword"],
31491
+ MasterUserPassword: password,
31446
31492
  Port: properties["Port"] != null ? Number(properties["Port"]) : void 0,
31447
31493
  VpcSecurityGroupIds: properties["VpcSecurityGroupIds"],
31448
31494
  DBSubnetGroupName: properties["DBSubnetGroupName"],
@@ -31453,6 +31499,14 @@ var DocDBProvider = class {
31453
31499
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
31454
31500
  DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
31455
31501
  DeletionProtection: properties["DeletionProtection"],
31502
+ AvailabilityZones: properties["AvailabilityZones"],
31503
+ CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
31504
+ ManageMasterUserPassword: managedPassword,
31505
+ MasterUserSecretKmsKeyId: properties["MasterUserSecretKmsKeyId"],
31506
+ NetworkType: properties["NetworkType"],
31507
+ StorageType: properties["StorageType"],
31508
+ ...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
31509
+ ...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
31456
31510
  ...tags.length > 0 && { Tags: tags }
31457
31511
  }));
31458
31512
  clusterCreated = true;
@@ -31474,10 +31528,26 @@ var DocDBProvider = class {
31474
31528
  async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context) {
31475
31529
  this.logger.debug(`Updating DocDB DBCluster ${logicalId}: ${physicalId}`);
31476
31530
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
31531
+ const origin = {
31532
+ stateBorne: context?.replayingState === true || context?.desiredFromAwsReadback === true,
31533
+ physicalId
31534
+ };
31535
+ const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, false);
31536
+ const logExportConfig = logTypes === void 0 ? void 0 : docdbLogExportChange(logTypes, docdbStringList(previousProperties["EnableCloudwatchLogsExports"]) ?? []);
31477
31537
  try {
31538
+ const credentials = await this.planMasterCredentials(physicalId, properties, previousProperties, resourceType, logicalId, context, origin);
31478
31539
  const vpcSgIds = properties["VpcSecurityGroupIds"];
31479
31540
  const sendVpcSgIds = vpcSgIds !== void 0 && vpcSgIds.length > 0;
31480
31541
  const portToSend = clusterPortToSend(properties, previousProperties);
31542
+ const unrecorded = (key) => properties[key] != null && previousProperties[key] == null;
31543
+ const live = unrecorded("NetworkType") || unrecorded("StorageType") || logExportConfig?.EnableLogTypes !== void 0 ? await this.describeDBCluster(physicalId) : void 0;
31544
+ const networkType = properties["NetworkType"];
31545
+ const networkChange = declaredChange(networkType, previousProperties["NetworkType"], live?.NetworkType);
31546
+ const storageType = properties["StorageType"];
31547
+ const storageChange = declaredChange(storageType, previousProperties["StorageType"], live?.StorageType ?? DOCDB_DEFAULT_STORAGE_TYPE);
31548
+ const previousScaling = docdbServerlessScaling(previousProperties["ServerlessV2ScalingConfiguration"]);
31549
+ const scalingChange = scaling != null && (scaling.MinCapacity !== previousScaling?.MinCapacity || scaling.MaxCapacity !== previousScaling?.MaxCapacity);
31550
+ this.markChangedUnsettled(CLUSTER_MODIFY_UNSETTLED_KEYS, properties, previousProperties, context);
31481
31551
  await this.getClient().send(new ModifyDBClusterCommand$1({
31482
31552
  DBClusterIdentifier: physicalId,
31483
31553
  EngineVersion: properties["EngineVersion"],
@@ -31487,15 +31557,40 @@ var DocDBProvider = class {
31487
31557
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
31488
31558
  DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
31489
31559
  ...sendVpcSgIds && { VpcSecurityGroupIds: vpcSgIds },
31490
- MasterUserPassword: masterUserPasswordToSend(properties, previousProperties, context),
31560
+ MasterUserPassword: credentials.password,
31491
31561
  Port: portToSend,
31562
+ CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
31563
+ ...rotateMasterUserPassword(properties, previousProperties, context) && { RotateMasterUserPassword: true },
31564
+ ...credentials.managed !== void 0 && { ManageMasterUserPassword: credentials.managed },
31565
+ ...credentials.secretKmsKey !== void 0 && { MasterUserSecretKmsKeyId: credentials.secretKmsKey },
31566
+ ...networkChange && { NetworkType: networkType },
31567
+ ...storageChange && { StorageType: storageType },
31568
+ ...scalingChange && { ServerlessV2ScalingConfiguration: scaling },
31569
+ ...logExportConfig !== void 0 && { CloudwatchLogsExportConfiguration: logExportConfig },
31492
31570
  ApplyImmediately: true
31493
31571
  }));
31572
+ const addedLogTypes = (logExportConfig?.EnableLogTypes ?? []).filter((type) => !live?.EnabledCloudwatchLogsExports?.includes(type));
31573
+ if (addedLogTypes.length > 0) context?.markAttempted?.("EnableCloudwatchLogsExports", addedLogTypes);
31494
31574
  this.logger.debug(`Successfully updated DocDB DBCluster ${logicalId}`);
31495
31575
  const noWait = process.env["CDKD_NO_WAIT"] === "true";
31496
31576
  const portChanged = portToSend !== void 0 && portToSend !== numberOrUndefined(previousProperties["Port"]);
31497
31577
  if (!noWait && portChanged) await this.waitForClusterPortApplied(physicalId, logicalId, portToSend);
31498
31578
  const described = await this.describeDBCluster(physicalId);
31579
+ if (!noWait) {
31580
+ const { EnableLogTypes: enabled = [], DisableLogTypes: disabled = [] } = logExportConfig ?? {};
31581
+ const applied = /* @__PURE__ */ new Map();
31582
+ if (logExportConfig !== void 0) applied.set("EnableCloudwatchLogsExports", (cluster) => {
31583
+ const logs = cluster?.EnabledCloudwatchLogsExports;
31584
+ return enabled.every((type) => logs?.includes(type)) && !disabled.some((type) => logs?.includes(type));
31585
+ });
31586
+ if (networkChange) applied.set("NetworkType", (cluster) => cluster?.NetworkType === networkType);
31587
+ if (storageChange) applied.set("StorageType", (cluster) => (cluster?.StorageType ?? DOCDB_DEFAULT_STORAGE_TYPE) === storageType);
31588
+ if (scalingChange) applied.set("ServerlessV2ScalingConfiguration", (cluster) => {
31589
+ const live = cluster?.ServerlessV2ScalingConfiguration;
31590
+ return live?.MinCapacity === scaling?.MinCapacity && live?.MaxCapacity === scaling?.MaxCapacity;
31591
+ });
31592
+ await this.waitForApplied(logicalId, applied, () => this.describeDBCluster(physicalId), storageChange ? STORAGE_SETTLE_MAX_WAIT_MS : SETTLE_MAX_WAIT_MS);
31593
+ }
31499
31594
  if (!noWait && portChanged) {
31500
31595
  for (const member of described?.DBClusterMembers ?? []) if (member.DBInstanceIdentifier) await this.waitForMemberAfterClusterChange(member.DBInstanceIdentifier, logicalId, PORT_CHANGE_MEMBER_STATUSES, "port");
31501
31596
  }
@@ -31506,15 +31601,20 @@ var DocDBProvider = class {
31506
31601
  if (described?.DBClusterArn) await applyDocDBTagDiff(this.getClient(), this.logger, described.DBClusterArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
31507
31602
  const keptWarning = keptOnRemovalWarning$1(DOCDB_CLUSTER_KEPT_ON_REMOVAL, properties, previousProperties, context, logicalId, resourceType);
31508
31603
  if (keptWarning !== void 0) this.logger.warn(keptWarning);
31604
+ const unmeasuredWarning = keptOnRemovalWarning$1(DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL, properties, previousProperties, context, logicalId, resourceType, false);
31605
+ if (unmeasuredWarning !== void 0) this.logger.warn(unmeasuredWarning);
31606
+ if (credentials.heldWarning !== void 0) this.logger.warn(credentials.heldWarning);
31509
31607
  return {
31510
31608
  physicalId,
31511
31609
  wasReplaced: false,
31512
31610
  attributes: clusterAttributes(noWait && portChanged && described !== void 0 ? {
31513
31611
  ...described,
31514
31612
  Port: portToSend
31515
- } : described)
31613
+ } : described),
31614
+ ...credentials.effectiveProperties !== void 0 && { effectiveProperties: credentials.effectiveProperties }
31516
31615
  };
31517
31616
  } catch (error) {
31617
+ if (error instanceof ProvisioningError) throw error;
31518
31618
  const cause = error instanceof Error ? error : void 0;
31519
31619
  throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
31520
31620
  }
@@ -31596,9 +31696,10 @@ var DocDBProvider = class {
31596
31696
  throw this.wrapDeleteError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
31597
31697
  }
31598
31698
  }
31599
- async createDBInstance(logicalId, resourceType, properties, mask) {
31699
+ async createDBInstance(logicalId, resourceType, properties, mask, replayingState) {
31600
31700
  this.logger.debug(`Creating DocDB DBInstance ${logicalId}`);
31601
31701
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31702
+ const insights = this.readBooleanProperty("EnablePerformanceInsights", properties, resourceType, logicalId, { stateBorne: replayingState });
31602
31703
  const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generatedNameFor("AWS::DocDB::DBInstance", logicalId);
31603
31704
  let instanceCreated = false;
31604
31705
  let createdResourceId;
@@ -31611,6 +31712,8 @@ var DocDBProvider = class {
31611
31712
  AvailabilityZone: properties["AvailabilityZone"],
31612
31713
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
31613
31714
  AutoMinorVersionUpgrade: properties["AutoMinorVersionUpgrade"],
31715
+ CACertificateIdentifier: properties["CACertificateIdentifier"],
31716
+ EnablePerformanceInsights: insights,
31614
31717
  ...tags.length > 0 && { Tags: tags }
31615
31718
  }));
31616
31719
  instanceCreated = true;
@@ -31633,13 +31736,25 @@ var DocDBProvider = class {
31633
31736
  this.logger.debug(`Updating DocDB DBInstance ${logicalId}: ${physicalId}`);
31634
31737
  const mask = context?.maskSecrets;
31635
31738
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
31739
+ const insights = this.readBooleanProperty("EnablePerformanceInsights", properties, resourceType, logicalId, {
31740
+ stateBorne: context?.replayingState === true || context?.desiredFromAwsReadback === true,
31741
+ physicalId
31742
+ });
31636
31743
  try {
31744
+ const certificate = properties["CACertificateIdentifier"];
31745
+ const live = certificate != null && previousProperties["CACertificateIdentifier"] == null || insights !== void 0 && previousProperties["EnablePerformanceInsights"] == null ? await this.describeDBInstance(physicalId) : void 0;
31746
+ const certificateChange = declaredChange(certificate, previousProperties["CACertificateIdentifier"], live?.CACertificateIdentifier);
31747
+ const insightsChange = declaredChange(insights, previousProperties["EnablePerformanceInsights"], live?.PerformanceInsightsEnabled ?? false);
31748
+ this.markChangedUnsettled(INSTANCE_MODIFY_UNSETTLED_KEYS, properties, previousProperties, context);
31637
31749
  await modifyDbInstanceWhenAvailable({
31638
31750
  send: () => this.getClient().send(new ModifyDBInstanceCommand$1({
31639
31751
  DBInstanceIdentifier: physicalId,
31640
31752
  DBInstanceClass: properties["DBInstanceClass"],
31641
31753
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
31642
31754
  AutoMinorVersionUpgrade: properties["AutoMinorVersionUpgrade"],
31755
+ ...certificateChange && { CACertificateIdentifier: certificate },
31756
+ ...certificateChange && properties["CertificateRotationRestart"] != null && { CertificateRotationRestart: properties["CertificateRotationRestart"] },
31757
+ ...insightsChange && { EnablePerformanceInsights: insights },
31643
31758
  ApplyImmediately: true
31644
31759
  })),
31645
31760
  readStatus: async () => (await this.describeDBInstance(physicalId))?.DBInstanceStatus,
@@ -31650,6 +31765,12 @@ var DocDBProvider = class {
31650
31765
  remainingMs: enclosingDeadlineRemainingMs()
31651
31766
  });
31652
31767
  this.logger.debug(`Successfully updated DocDB DBInstance ${logicalId}`);
31768
+ if (process.env["CDKD_NO_WAIT"] !== "true") {
31769
+ const applied = /* @__PURE__ */ new Map();
31770
+ if (certificateChange) applied.set("CACertificateIdentifier", (instance) => instance?.CACertificateIdentifier === certificate);
31771
+ if (insightsChange) applied.set("EnablePerformanceInsights", (instance) => instance?.PerformanceInsightsEnabled === insights);
31772
+ await this.waitForApplied(logicalId, applied, () => this.describeDBInstance(physicalId));
31773
+ }
31653
31774
  const described = await this.describeDBInstance(physicalId);
31654
31775
  if (described?.DBInstanceArn) await applyDocDBTagDiff(this.getClient(), this.logger, described.DBInstanceArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
31655
31776
  const keptWarning = keptOnRemovalWarning$1(DOCDB_INSTANCE_KEPT_ON_REMOVAL, properties, previousProperties, context, logicalId, resourceType);
@@ -31682,6 +31803,106 @@ var DocDBProvider = class {
31682
31803
  throw this.wrapDeleteError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DocDB DBInstance ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
31683
31804
  }
31684
31805
  }
31806
+ markChangedUnsettled(keys, properties, previousProperties, context) {
31807
+ for (const key of keys) if (properties[key] != null && !isDeepStrictEqual(properties[key], previousProperties[key])) context?.markUnsettled?.(key);
31808
+ }
31809
+ refuseBlock(logicalId, resourceType, physicalId, text) {
31810
+ throw markNonRetryable(new ProvisioningError(safeMsg`${resourceType === "AWS::DocDB::DBInstance" ? "DocDB DBInstance" : "DocDB DBCluster"} ${logicalId}: ${text}; nothing was changed.`, resourceType, logicalId, physicalId));
31811
+ }
31812
+ readClusterBlocks(properties, resourceType, logicalId, origin, creating) {
31813
+ const leaveOut = (key) => {
31814
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded ${key} is unusable, so it is not sent.`);
31815
+ };
31816
+ const rawLogs = properties["EnableCloudwatchLogsExports"];
31817
+ let logTypes = rawLogs == null ? void 0 : docdbStringList(rawLogs);
31818
+ if (rawLogs != null && logTypes === void 0) {
31819
+ if (!(creating && origin.stateBorne)) this.refuseBlock(logicalId, resourceType, origin.physicalId, "EnableCloudwatchLogsExports must be a list of strings");
31820
+ leaveOut("EnableCloudwatchLogsExports");
31821
+ logTypes = void 0;
31822
+ }
31823
+ const scaling = docdbServerlessScaling(properties["ServerlessV2ScalingConfiguration"]);
31824
+ if (scaling === null) {
31825
+ if (!origin.stateBorne) this.refuseBlock(logicalId, resourceType, origin.physicalId, "ServerlessV2ScalingConfiguration must be an object with both a numeric MinCapacity and a numeric MaxCapacity");
31826
+ leaveOut("ServerlessV2ScalingConfiguration");
31827
+ }
31828
+ return {
31829
+ logTypes,
31830
+ scaling
31831
+ };
31832
+ }
31833
+ async planMasterCredentials(physicalId, properties, previousProperties, resourceType, logicalId, context, origin) {
31834
+ const managed = this.readBooleanProperty("ManageMasterUserPassword", properties, resourceType, logicalId, origin);
31835
+ const changedPassword = masterUserPasswordToSend(properties, previousProperties, context);
31836
+ const recordedFlag = coerceCfnBoolean(previousProperties["ManageMasterUserPassword"]);
31837
+ const key = properties["MasterUserSecretKmsKeyId"];
31838
+ const recordedKey = previousProperties["MasterUserSecretKmsKeyId"];
31839
+ let managedSide = recordedFlag ?? false;
31840
+ let keyChange = key != null && !sameKmsKey(key, recordedKey);
31841
+ if (recordedFlag === void 0 && (changedPassword !== void 0 || managed !== void 0 || keyChange)) {
31842
+ const secret = (await this.describeDBCluster(physicalId))?.MasterUserSecret;
31843
+ managedSide = secret !== void 0;
31844
+ if (recordedKey === void 0 && secret?.KmsKeyId !== void 0 && key != null) keyChange = !sameKmsKey(key, secret.KmsKeyId) && !kmsKeyText(key).startsWith("alias/");
31845
+ }
31846
+ const leaving = managed === false && managedSide;
31847
+ const declared = properties["MasterUserPassword"];
31848
+ const declaredUsable = typeof declared === "string" && declared !== "***" && dynamicReferenceTokens(declared).length === 0;
31849
+ const password = leaving ? declaredUsable ? declared : void 0 : changedPassword;
31850
+ const modeChange = managed !== void 0 && managed !== managedSide;
31851
+ if (context?.desiredFromAwsReadback === true && modeChange) return {
31852
+ managed: void 0,
31853
+ secretKmsKey: void 0,
31854
+ password: void 0,
31855
+ heldWarning: safeMsg`${logicalId} (${resourceType}): cdkd drift --revert does not change ManageMasterUserPassword, so it is left as it is. Declare it in the template and deploy to change it.`
31856
+ };
31857
+ if (origin.stateBorne && leaving && password === void 0) return {
31858
+ managed: void 0,
31859
+ secretKmsKey: void 0,
31860
+ password: void 0,
31861
+ heldWarning: safeMsg`${logicalId} (${resourceType}): ManageMasterUserPassword stays true: turning it off needs a MasterUserPassword, which the restored state does not hold. Declare both in the template and deploy.`,
31862
+ effectiveProperties: {
31863
+ ...properties,
31864
+ ManageMasterUserPassword: true
31865
+ }
31866
+ };
31867
+ const sendKey = key != null && (modeChange && managed === true || keyChange && (managed ?? managedSide));
31868
+ return {
31869
+ managed: modeChange || sendKey ? managed : void 0,
31870
+ secretKmsKey: sendKey ? key : void 0,
31871
+ password: this.passwordBesideManaged(managed, managed === void 0 && managedSide, password, resourceType, logicalId, origin),
31872
+ heldWarning: void 0
31873
+ };
31874
+ }
31875
+ readBooleanProperty(key, properties, resourceType, logicalId, origin) {
31876
+ const value = properties[key];
31877
+ if (value == null) return void 0;
31878
+ const flag = coerceCfnBoolean(value);
31879
+ if (flag !== void 0) return flag;
31880
+ if (!origin.stateBorne) this.refuseBlock(logicalId, resourceType, origin.physicalId, `${key} must be a boolean`);
31881
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded ${key} is unusable, so it is not sent.`);
31882
+ }
31883
+ passwordBesideManaged(managed, removedFromManaged, password, resourceType, logicalId, origin) {
31884
+ if (managed !== true && !removedFromManaged || password == null) return password;
31885
+ if (!origin.stateBorne) this.refuseBlock(logicalId, resourceType, origin.physicalId, removedFromManaged ? "MasterUserPassword cannot change while AWS manages the password; declare ManageMasterUserPassword: false beside it to leave managed mode" : "MasterUserPassword cannot be set while ManageMasterUserPassword is true, because AWS manages that password");
31886
+ this.logger.warn(removedFromManaged ? safeMsg`${logicalId} (${resourceType}): the recorded MasterUserPassword is not sent: the cluster stays managed, because the recorded ManageMasterUserPassword is absent.` : safeMsg`${logicalId} (${resourceType}): the recorded MasterUserPassword is not sent, because ManageMasterUserPassword is true.`);
31887
+ }
31888
+ async waitForApplied(logicalId, applied, read, maxWaitMs = SETTLE_MAX_WAIT_MS) {
31889
+ if (applied.size === 0) return;
31890
+ const capMs = Math.min(maxWaitMs, enclosingDeadlineRemainingMs() - DEADLINE_MARGIN_MS);
31891
+ const startTime = Date.now();
31892
+ let delay = 2e3;
31893
+ for (;;) {
31894
+ const live = await read();
31895
+ const pending = [...applied].filter(([, isApplied]) => !isApplied(live));
31896
+ if (pending.length === 0) return;
31897
+ if (Date.now() - startTime + delay >= capMs) {
31898
+ const keys = pending.map(([key]) => key).join(", ");
31899
+ this.logger.warn(safeMsg`${logicalId}: the new ${keys} did not read back when cdkd stopped waiting; AWS accepted the change, so cdkd drift may report the old value as the baseline. Once it applies, run cdkd drift --accept.`);
31900
+ return;
31901
+ }
31902
+ await this.sleep(delay);
31903
+ delay = Math.min(delay * 2, 1e4);
31904
+ }
31905
+ }
31685
31906
  async describeDBCluster(dbClusterIdentifier) {
31686
31907
  return (await this.getClient().send(new DescribeDBClustersCommand$1({ DBClusterIdentifier: dbClusterIdentifier }))).DBClusters?.[0];
31687
31908
  }
@@ -31870,6 +32091,60 @@ var DocDBProvider = class {
31870
32091
  sleep(ms) {
31871
32092
  return new Promise((resolve) => setTimeout(resolve, ms));
31872
32093
  }
32094
+ getDriftUnknownPaths(resourceType) {
32095
+ if (resourceType === "AWS::DocDB::DBCluster") return [
32096
+ "AvailabilityZones",
32097
+ "MasterUserSecretKmsKeyId",
32098
+ "RotateMasterUserPassword"
32099
+ ];
32100
+ if (resourceType === "AWS::DocDB::DBInstance") return ["CertificateRotationRestart"];
32101
+ return [];
32102
+ }
32103
+ getDriftUnorderedPaths(resourceType) {
32104
+ return resourceType === "AWS::DocDB::DBCluster" ? ["EnableCloudwatchLogsExports"] : [];
32105
+ }
32106
+ canonicalizeDriftProperties(resourceType, properties) {
32107
+ if (resourceType !== "AWS::DocDB::DBCluster") return properties;
32108
+ const out = { ...properties };
32109
+ const logs = out["EnableCloudwatchLogsExports"];
32110
+ if (Array.isArray(logs) && docdbStringList(logs) !== void 0) out["EnableCloudwatchLogsExports"] = [...new Set(logs)];
32111
+ const scaling = docdbServerlessScaling(out["ServerlessV2ScalingConfiguration"]);
32112
+ if (scaling != null) out["ServerlessV2ScalingConfiguration"] = scaling;
32113
+ return out;
32114
+ }
32115
+ canonicalizeUnsettledProperties(resourceType, properties) {
32116
+ return this.canonicalizeDriftProperties(resourceType, properties);
32117
+ }
32118
+ async readUnsettled(physicalId, logicalId, resourceType, names, recordedProperties, desiredProperties, attemptedItems) {
32119
+ const live = await this.readCurrentState(physicalId, logicalId, resourceType);
32120
+ if (resourceType !== "AWS::DocDB::DBCluster") return live;
32121
+ if (live === void 0 || live === RESOURCE_NOT_FOUND) return live;
32122
+ if (!names.has("EnableCloudwatchLogsExports")) return live;
32123
+ const key = "EnableCloudwatchLogsExports";
32124
+ const named = /* @__PURE__ */ new Set([
32125
+ ...docdbStringList(recordedProperties?.[key]) ?? [],
32126
+ ...docdbStringList(desiredProperties?.[key]) ?? [],
32127
+ ...[...attemptedItems?.get(key) ?? []].filter(isUsableAttemptedName)
32128
+ ]);
32129
+ return {
32130
+ ...live,
32131
+ [key]: (live[key] ?? []).filter((type) => named.has(type))
32132
+ };
32133
+ }
32134
+ async unsettledInTransition(physicalId, _logicalId, resourceType, names, _recordedProperties, desiredProperties) {
32135
+ if (desiredProperties !== void 0) return /* @__PURE__ */ new Set();
32136
+ const unmoving = (status) => isProceedDbStatus(status) || status === "backing-up";
32137
+ try {
32138
+ if (resourceType === "AWS::DocDB::DBCluster") return unmoving((await this.describeDBCluster(physicalId))?.Status) ? /* @__PURE__ */ new Set() : names;
32139
+ if (resourceType === "AWS::DocDB::DBInstance") {
32140
+ const instance = await this.describeDBInstance(physicalId);
32141
+ return unmoving(instance?.DBInstanceStatus) && !holdsDocDBPendingValue(instance?.PendingModifiedValues) ? /* @__PURE__ */ new Set() : names;
32142
+ }
32143
+ return /* @__PURE__ */ new Set();
32144
+ } catch {
32145
+ return names;
32146
+ }
32147
+ }
31873
32148
  async import(input) {
31874
32149
  switch (input.resourceType) {
31875
32150
  case "AWS::DocDB::DBInstance": return this.importDBInstance(input);
@@ -31901,6 +32176,8 @@ var DocDBProvider = class {
31901
32176
  if (inst.AvailabilityZone !== void 0) result["AvailabilityZone"] = inst.AvailabilityZone;
31902
32177
  if (inst.PreferredMaintenanceWindow !== void 0) result["PreferredMaintenanceWindow"] = inst.PreferredMaintenanceWindow;
31903
32178
  if (inst.AutoMinorVersionUpgrade !== void 0) result["AutoMinorVersionUpgrade"] = inst.AutoMinorVersionUpgrade;
32179
+ if (inst.CACertificateIdentifier !== void 0) result["CACertificateIdentifier"] = inst.CACertificateIdentifier;
32180
+ result["EnablePerformanceInsights"] = inst.PerformanceInsightsEnabled ?? false;
31904
32181
  if (inst.DBInstanceArn) await attachDocDBTags(this.getClient(), this.logger, result, inst.DBInstanceArn);
31905
32182
  return result;
31906
32183
  }
@@ -31928,6 +32205,16 @@ var DocDBProvider = class {
31928
32205
  if (cluster.PreferredMaintenanceWindow !== void 0) result["PreferredMaintenanceWindow"] = cluster.PreferredMaintenanceWindow;
31929
32206
  if (cluster.DBClusterParameterGroup !== void 0) result["DBClusterParameterGroupName"] = cluster.DBClusterParameterGroup;
31930
32207
  if (cluster.DeletionProtection !== void 0) result["DeletionProtection"] = cluster.DeletionProtection;
32208
+ result["CopyTagsToSnapshot"] = cluster.CopyTagsToSnapshot ?? false;
32209
+ result["ManageMasterUserPassword"] = cluster.MasterUserSecret !== void 0;
32210
+ result["StorageType"] = cluster.StorageType ?? DOCDB_DEFAULT_STORAGE_TYPE;
32211
+ result["EnableCloudwatchLogsExports"] = cluster.EnabledCloudwatchLogsExports ?? [];
32212
+ if (cluster.NetworkType !== void 0) result["NetworkType"] = cluster.NetworkType;
32213
+ const { MinCapacity: min, MaxCapacity: max } = cluster.ServerlessV2ScalingConfiguration ?? {};
32214
+ if (min !== void 0 && max !== void 0) result["ServerlessV2ScalingConfiguration"] = {
32215
+ MinCapacity: min,
32216
+ MaxCapacity: max
32217
+ };
31931
32218
  if (cluster.DBClusterArn) await attachDocDBTags(this.getClient(), this.logger, result, cluster.DBClusterArn);
31932
32219
  return result;
31933
32220
  }
@@ -31965,8 +32252,7 @@ function securityGroupListChanged(sent, previous) {
31965
32252
  return [...sent].sort().join(" ") !== [...before].sort().join(" ");
31966
32253
  }
31967
32254
 
31968
- //#endregion
31969
- //#region src/provisioning/providers/docdb-subnet-group-provider.ts
32255
+ // src/provisioning/providers/docdb-subnet-group-provider.ts
31970
32256
  var DocDBSubnetGroupProvider = class {
31971
32257
  docdbClient;
31972
32258
  createClient;
@@ -32103,8 +32389,7 @@ var DocDBSubnetGroupProvider = class {
32103
32389
  }
32104
32390
  };
32105
32391
 
32106
- //#endregion
32107
- //#region src/provisioning/providers/route53-provider.ts
32392
+ // src/provisioning/providers/route53-provider.ts
32108
32393
  function isZoneDisabledForMutationError(error) {
32109
32394
  return error instanceof Error && error.message.includes("is marked disabled for mutation");
32110
32395
  }
@@ -33259,8 +33544,7 @@ var Route53Provider = class {
33259
33544
  }
33260
33545
  };
33261
33546
 
33262
- //#endregion
33263
- //#region src/provisioning/providers/wafv2-provider.ts
33547
+ // src/provisioning/providers/wafv2-provider.ts
33264
33548
  function sanitizeDescription(value) {
33265
33549
  if (value === void 0 || value === null) return void 0;
33266
33550
  if (typeof value === "string" && value.length === 0) return void 0;
@@ -33726,8 +34010,7 @@ var WAFv2WebACLProvider = class {
33726
34010
  }
33727
34011
  };
33728
34012
 
33729
- //#endregion
33730
- //#region src/provisioning/providers/cognito-provider.ts
34013
+ // src/provisioning/providers/cognito-provider.ts
33731
34014
  const USER_POOL_ECHO_MEMBERS = [
33732
34015
  "LambdaConfig",
33733
34016
  "UserPoolAddOns",
@@ -34874,8 +35157,7 @@ var CognitoUserPoolProvider = class {
34874
35157
  }
34875
35158
  };
34876
35159
 
34877
- //#endregion
34878
- //#region src/provisioning/providers/elasticache-provider.ts
35160
+ // src/provisioning/providers/elasticache-provider.ts
34879
35161
  const CACHE_DELETE_WAIT_MS = Math.max(6e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "DELETE"));
34880
35162
  const NODE_TYPE_MODIFY_WAIT_MS = Math.max(36e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "UPDATE"));
34881
35163
  const MODIFY_DROPPED_AFTER_MS = 12e4;
@@ -35521,8 +35803,7 @@ var ElastiCacheProvider = class {
35521
35803
  }
35522
35804
  };
35523
35805
 
35524
- //#endregion
35525
- //#region src/provisioning/providers/servicediscovery-provider.ts
35806
+ // src/provisioning/providers/servicediscovery-provider.ts
35526
35807
  const PUBLIC_DNS_NAMESPACE_DEFAULT_SOA_TTL = 60;
35527
35808
  const PRIVATE_DNS_NAMESPACE_DEFAULT_SOA_TTL = 15;
35528
35809
  const CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES = 9;
@@ -36455,8 +36736,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
36455
36736
  }
36456
36737
  };
36457
36738
 
36458
- //#endregion
36459
- //#region src/provisioning/providers/appsync-provider.ts
36739
+ // src/provisioning/providers/appsync-provider.ts
36460
36740
  const createGraphqlApiLatch = new AmbiguousCreateLatch("CreateGraphqlApi");
36461
36741
  const graphqlApisCreatedByThisProcess = new RecentIdSet();
36462
36742
  const MAX_GRAPHQL_API_LIST_PAGES = 40;
@@ -38118,8 +38398,7 @@ var AppSyncProvider = class {
38118
38398
  }
38119
38399
  };
38120
38400
 
38121
- //#endregion
38122
- //#region src/provisioning/providers/glue-provider.ts
38401
+ // src/provisioning/providers/glue-provider.ts
38123
38402
  const GLUE_TABLE_ID_FORMAT = {
38124
38403
  label: "Glue Table",
38125
38404
  segments: ["databaseName", "tableName"]
@@ -40460,8 +40739,7 @@ var GlueTriggerProvider = class {
40460
40739
  }
40461
40740
  };
40462
40741
 
40463
- //#endregion
40464
- //#region src/provisioning/providers/kms-provider.ts
40742
+ // src/provisioning/providers/kms-provider.ts
40465
40743
  const createKeyLatch = new AmbiguousCreateLatch("CreateKey");
40466
40744
  const keysCreatedByThisProcess = new RecentIdSet();
40467
40745
  const pendingKeys = /* @__PURE__ */ new Map();
@@ -41092,8 +41370,7 @@ function templateBool(value) {
41092
41370
  return Boolean(value);
41093
41371
  }
41094
41372
 
41095
- //#endregion
41096
- //#region src/provisioning/providers/budgets-budget-provider.ts
41373
+ // src/provisioning/providers/budgets-budget-provider.ts
41097
41374
  const BUDGET_LIST_WHAT = {
41098
41375
  NotificationsWithSubscribers: "entries with a Notification (NotificationType, ComparisonOperator, numeric Threshold) and Subscribers (SubscriptionType, Address)",
41099
41376
  ResourceTags: "tags with a string Key"
@@ -41828,8 +42105,7 @@ var BudgetsBudgetProvider = class {
41828
42105
  }
41829
42106
  };
41830
42107
 
41831
- //#endregion
41832
- //#region src/provisioning/providers/kinesis-provider.ts
42108
+ // src/provisioning/providers/kinesis-provider.ts
41833
42109
  function isKmsEncryption(value) {
41834
42110
  if (!value) return false;
41835
42111
  return value["EncryptionType"] === "KMS";
@@ -42489,8 +42765,7 @@ var KinesisStreamProvider = class {
42489
42765
  }
42490
42766
  };
42491
42767
 
42492
- //#endregion
42493
- //#region src/provisioning/providers/kinesis-streamconsumer-provider.ts
42768
+ // src/provisioning/providers/kinesis-streamconsumer-provider.ts
42494
42769
  function consumerArnParts(consumerArn) {
42495
42770
  const at = consumerArn.lastIndexOf("/consumer/");
42496
42771
  if (at <= 0) return void 0;
@@ -42711,8 +42986,7 @@ function tagListToMap(tags) {
42711
42986
  return Object.fromEntries(tags.map((t) => [t.Key, t.Value]));
42712
42987
  }
42713
42988
 
42714
- //#endregion
42715
- //#region src/provisioning/providers/scheduler-schedule-provider.ts
42989
+ // src/provisioning/providers/scheduler-schedule-provider.ts
42716
42990
  const RECORDED_CREATION_DATE_KEY = "cdkd:CreationDate";
42717
42991
  function recordedCreationDate(attributes) {
42718
42992
  const value = attributes?.[RECORDED_CREATION_DATE_KEY];
@@ -43148,8 +43422,7 @@ var SchedulerScheduleProvider = class {
43148
43422
  }
43149
43423
  };
43150
43424
 
43151
- //#endregion
43152
- //#region src/provisioning/providers/pipes-provider.ts
43425
+ // src/provisioning/providers/pipes-provider.ts
43153
43426
  const PIPE_TYPE = "AWS::Pipes::Pipe";
43154
43427
  function isPipeName(id) {
43155
43428
  return /^[.\-_A-Za-z0-9]{1,64}$/.test(id);
@@ -43783,8 +44056,7 @@ var PipesPipeProvider = class {
43783
44056
  }
43784
44057
  };
43785
44058
 
43786
- //#endregion
43787
- //#region src/provisioning/providers/server-clock.ts
44059
+ // src/provisioning/providers/server-clock.ts
43788
44060
  const SERVER_CLOCK_MARGIN_MS = 5e3;
43789
44061
  const CLOCK_FALLBACK_MARGIN_MS = 3e5;
43790
44062
  const readings = /* @__PURE__ */ new WeakMap();
@@ -43821,8 +44093,7 @@ function earliestOwnCreationTime(firstSentLocalMs, reading) {
43821
44093
  return firstSentLocalMs + (reading.serverDateMs - reading.receivedAtMs) - SERVER_CLOCK_MARGIN_MS;
43822
44094
  }
43823
44095
 
43824
- //#endregion
43825
- //#region src/provisioning/providers/efs-provider.ts
44096
+ // src/provisioning/providers/efs-provider.ts
43826
44097
  function samePosixUser(requested, described) {
43827
44098
  if (requested == null || described == null) return requested == null && described == null;
43828
44099
  const gids = (user) => JSON.stringify([...new Set(user.SecondaryGids ?? [])].sort((a, b) => a - b));
@@ -44664,8 +44935,7 @@ var EFSProvider = class {
44664
44935
  }
44665
44936
  };
44666
44937
 
44667
- //#endregion
44668
- //#region src/provisioning/providers/fsx-filesystem-provider.ts
44938
+ // src/provisioning/providers/fsx-filesystem-provider.ts
44669
44939
  const DEFAULT_MAX_WAIT_MS$3 = 36e5;
44670
44940
  const DEFAULT_POLL_INTERVAL_MS$3 = 15e3;
44671
44941
  const FILE_SYSTEM_ID_PATTERN = /^fs-[0-9a-f]+$/;
@@ -45895,8 +46165,7 @@ var FSxFileSystemProvider = class {
45895
46165
  }
45896
46166
  };
45897
46167
 
45898
- //#endregion
45899
- //#region src/provisioning/emr-configuration.ts
46168
+ // src/provisioning/emr-configuration.ts
45900
46169
  function isRecord$1(value) {
45901
46170
  return typeof value === "object" && value !== null && !Array.isArray(value);
45902
46171
  }
@@ -45943,8 +46212,7 @@ function toSdkInstanceTypeConfigs(value) {
45943
46212
  });
45944
46213
  }
45945
46214
 
45946
- //#endregion
45947
- //#region src/provisioning/providers/emr-instance-group-config-provider.ts
46215
+ // src/provisioning/providers/emr-instance-group-config-provider.ts
45948
46216
  const DEFAULT_MAX_WAIT_MS$2 = 36e5;
45949
46217
  const DEFAULT_POLL_INTERVAL_MS$2 = 15e3;
45950
46218
  const READY_STATES$1 = /* @__PURE__ */ new Set(["RUNNING"]);
@@ -46318,8 +46586,7 @@ var EMRInstanceGroupConfigProvider = class {
46318
46586
  }
46319
46587
  };
46320
46588
 
46321
- //#endregion
46322
- //#region src/provisioning/providers/emr-instance-fleet-config-provider.ts
46589
+ // src/provisioning/providers/emr-instance-fleet-config-provider.ts
46323
46590
  const DEFAULT_MAX_WAIT_MS$1 = 36e5;
46324
46591
  const DEFAULT_POLL_INTERVAL_MS$1 = 15e3;
46325
46592
  const READY_STATES = /* @__PURE__ */ new Set(["RUNNING"]);
@@ -46667,8 +46934,7 @@ var EMRInstanceFleetConfigProvider = class {
46667
46934
  }
46668
46935
  };
46669
46936
 
46670
- //#endregion
46671
- //#region src/provisioning/providers/emr-cluster-provider.ts
46937
+ // src/provisioning/providers/emr-cluster-provider.ts
46672
46938
  const DEFAULT_MAX_WAIT_MS = 36e5;
46673
46939
  const DEFAULT_POLL_INTERVAL_MS = 15e3;
46674
46940
  const CREATE_READY_STATES = /* @__PURE__ */ new Set(["WAITING", "RUNNING"]);
@@ -47670,8 +47936,7 @@ var EMRClusterProvider = class {
47670
47936
  }
47671
47937
  };
47672
47938
 
47673
- //#endregion
47674
- //#region src/provisioning/providers/firehose-provider.ts
47939
+ // src/provisioning/providers/firehose-provider.ts
47675
47940
  const ENCRYPTION_KEY = "DeliveryStreamEncryptionConfigurationInput";
47676
47941
  function readEncryptionInput(value, emptyIsAbsent) {
47677
47942
  if (value === void 0 || value === null) return { kind: "absent" };
@@ -47756,6 +48021,7 @@ var FirehoseProvider = class {
47756
48021
  "S3DestinationConfiguration",
47757
48022
  "ExtendedS3DestinationConfiguration",
47758
48023
  "KinesisStreamSourceConfiguration",
48024
+ "DirectPutSourceConfiguration",
47759
48025
  "Tags",
47760
48026
  "HttpEndpointDestinationConfiguration",
47761
48027
  "RedshiftDestinationConfiguration",
@@ -47808,6 +48074,7 @@ var FirehoseProvider = class {
47808
48074
  RoleARN: kinesisConfig["RoleArn"] || kinesisConfig["RoleARN"]
47809
48075
  };
47810
48076
  }
48077
+ if (properties["DirectPutSourceConfiguration"] !== void 0) input.DirectPutSourceConfiguration = { ThroughputHintInMBs: properties["DirectPutSourceConfiguration"]["ThroughputHintInMBs"] };
47811
48078
  if (properties["HttpEndpointDestinationConfiguration"]) {
47812
48079
  const httpConfig = properties["HttpEndpointDestinationConfiguration"];
47813
48080
  const endpointConfig = httpConfig["EndpointConfiguration"];
@@ -48594,6 +48861,8 @@ var FirehoseProvider = class {
48594
48861
  if (src.RoleARN !== void 0) srcOut["RoleARN"] = src.RoleARN;
48595
48862
  if (Object.keys(srcOut).length > 0) result["KinesisStreamSourceConfiguration"] = srcOut;
48596
48863
  }
48864
+ const directPut = desc.Source?.DirectPutSourceDescription;
48865
+ if (directPut?.ThroughputHintInMBs !== void 0) result["DirectPutSourceConfiguration"] = { ThroughputHintInMBs: directPut.ThroughputHintInMBs };
48597
48866
  const dest = desc.Destinations?.[0];
48598
48867
  if (dest?.ExtendedS3DestinationDescription) result["ExtendedS3DestinationConfiguration"] = mapExtendedS3DescriptionToCfn(dest.ExtendedS3DestinationDescription);
48599
48868
  else if (dest?.S3DestinationDescription) result["S3DestinationConfiguration"] = mapS3DescriptionToCfn(dest.S3DestinationDescription);
@@ -48779,8 +49048,7 @@ function mapHttpEndpointDescriptionToCfn(desc) {
48779
49048
  return out;
48780
49049
  }
48781
49050
 
48782
- //#endregion
48783
- //#region src/provisioning/providers/cloudtrail-provider.ts
49051
+ // src/provisioning/providers/cloudtrail-provider.ts
48784
49052
  const DEFAULT_EVENT_SELECTORS = Object.freeze([Object.freeze({
48785
49053
  ReadWriteType: "All",
48786
49054
  IncludeManagementEvents: true
@@ -49335,8 +49603,7 @@ var CloudTrailProvider = class {
49335
49603
  }
49336
49604
  };
49337
49605
 
49338
- //#endregion
49339
- //#region src/provisioning/providers/codebuild-provider.ts
49606
+ // src/provisioning/providers/codebuild-provider.ts
49340
49607
  const DEFAULT_PROJECT_VISIBILITY = "PRIVATE";
49341
49608
  const DEFAULT_ENCRYPTION_KEY = "alias/aws/s3";
49342
49609
  function readVisibility(properties, mask) {
@@ -49860,8 +50127,7 @@ var CodeBuildProvider = class {
49860
50127
  }
49861
50128
  };
49862
50129
 
49863
- //#endregion
49864
- //#region src/provisioning/providers/codecommit-repository-provider.ts
50130
+ // src/provisioning/providers/codecommit-repository-provider.ts
49865
50131
  function toSdkTagMap(tags) {
49866
50132
  if (!tags || tags.length === 0) return void 0;
49867
50133
  const out = {};
@@ -50396,8 +50662,7 @@ var CodeCommitRepositoryProvider = class {
50396
50662
  }
50397
50663
  };
50398
50664
 
50399
- //#endregion
50400
- //#region src/provisioning/providers/dlm-lifecycle-policy-provider.ts
50665
+ // src/provisioning/providers/dlm-lifecycle-policy-provider.ts
50401
50666
  const KEPT_ON_REMOVAL = [
50402
50667
  "Description",
50403
50668
  "ExecutionRoleArn",
@@ -50684,8 +50949,7 @@ var DLMLifecyclePolicyProvider = class {
50684
50949
  }
50685
50950
  };
50686
50951
 
50687
- //#endregion
50688
- //#region src/provisioning/providers/s3-vectors-provider.ts
50952
+ // src/provisioning/providers/s3-vectors-provider.ts
50689
50953
  var S3VectorsProvider = class {
50690
50954
  client;
50691
50955
  createClient;
@@ -50905,8 +51169,7 @@ var S3VectorsProvider = class {
50905
51169
  }
50906
51170
  };
50907
51171
 
50908
- //#endregion
50909
- //#region src/provisioning/providers/s3-directory-bucket-provider.ts
51172
+ // src/provisioning/providers/s3-directory-bucket-provider.ts
50910
51173
  function notEmptyRefusalMessage(bucketName, maskSecrets) {
50911
51174
  const mask = maskerOrIdentity(maskSecrets);
50912
51175
  const secretDerived = mask(bucketName) !== bucketName;
@@ -51731,8 +51994,7 @@ var S3DirectoryBucketProvider = class {
51731
51994
  }
51732
51995
  };
51733
51996
 
51734
- //#endregion
51735
- //#region src/provisioning/providers/s3-tables-provider.ts
51997
+ // src/provisioning/providers/s3-tables-provider.ts
51736
51998
  const S3_TABLES_NAMESPACE_ID_FORMAT = {
51737
51999
  label: "S3 Tables Namespace",
51738
52000
  segments: ["tableBucketARN", "namespace"]
@@ -52949,8 +53211,7 @@ var S3TablesProvider = class {
52949
53211
  }
52950
53212
  };
52951
53213
 
52952
- //#endregion
52953
- //#region src/provisioning/providers/ecr-provider.ts
53214
+ // src/provisioning/providers/ecr-provider.ts
52954
53215
  var ECRProvider = class {
52955
53216
  client;
52956
53217
  createClient;
@@ -53243,8 +53504,7 @@ var ECRProvider = class {
53243
53504
  }
53244
53505
  };
53245
53506
 
53246
- //#endregion
53247
- //#region src/provisioning/nested-stack-messages.ts
53507
+ // src/provisioning/nested-stack-messages.ts
53248
53508
  function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedCount, alsoInterrupted, inspectCommand, holeNote = "") {
53249
53509
  const extra = [];
53250
53510
  if (alsoSkippedCount > 0) extra.push(`${alsoSkippedCount} resource(s) were also skipped`);
@@ -53252,8 +53512,7 @@ function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedC
53252
53512
  return `Nested stack ${childStackName} failed to destroy: ${errorCount} resource(s) failed to delete` + (extra.length > 0 ? ` (${extra.join("; ")})` : "") + ". The child's state is PRESERVED and still lists them — inspect it, resolve the failure, and re-run the destroy. The parent's record of this nested stack is kept so the child stays reachable." + holeNote + `\nInspect it with: ${inspectCommand}`;
53253
53513
  }
53254
53514
 
53255
- //#endregion
53256
- //#region src/provisioning/providers/nested-stack-provider.ts
53515
+ // src/provisioning/providers/nested-stack-provider.ts
53257
53516
  function isAbsoluteCrossPlatform(p) {
53258
53517
  return isAbsoluteAssetPath(p);
53259
53518
  }
@@ -53622,8 +53881,7 @@ function inheritedPhysicalNameCopiesOf(bag) {
53622
53881
  return copies === void 0 || copies.size === 0 ? void 0 : new Set(copies);
53623
53882
  }
53624
53883
 
53625
- //#endregion
53626
- //#region src/provisioning/providers/wait-condition-handle-provider.ts
53884
+ // src/provisioning/providers/wait-condition-handle-provider.ts
53627
53885
  var WaitConditionHandleProvider = class {
53628
53886
  logger = getLogger().child("WaitConditionHandleProvider");
53629
53887
  handledProperties = /* @__PURE__ */ new Map([["AWS::CloudFormation::WaitConditionHandle", /* @__PURE__ */ new Set([])]]);
@@ -53660,8 +53918,7 @@ var WaitConditionHandleProvider = class {
53660
53918
  }
53661
53919
  };
53662
53920
 
53663
- //#endregion
53664
- //#region src/provisioning/providers/acm-certificate-provider.ts
53921
+ // src/provisioning/providers/acm-certificate-provider.ts
53665
53922
  function certificateInUseByName(error) {
53666
53923
  let current = error;
53667
53924
  for (let depth = 0; depth < 5 && current instanceof Error; depth++) {
@@ -54059,6 +54316,5 @@ var ACMCertificateProvider = class {
54059
54316
  }
54060
54317
  };
54061
54318
 
54062
- //#endregion
54063
54319
  export { ACMCertificateProvider, ASGProvider, AgentCoreBrowserProvider, AgentCoreCodeInterpreterProvider, AgentCoreEvaluatorProvider, AgentCoreRuntimeProvider, ApiGatewayProvider, ApiGatewayV2Provider, AppSyncProvider, BudgetsBudgetProvider, CloudFrontDistributionProvider, CloudFrontOACProvider, CloudFrontOAIProvider, CloudTrailProvider, CloudWatchAlarmProvider, CloudWatchAnomalyDetectorProvider, CodeBuildProvider, CodeCommitRepositoryProvider, CognitoUserPoolProvider, DLMLifecyclePolicyProvider, DocDBProvider, DocDBSubnetGroupProvider, DynamoDBGlobalTableProvider, DynamoDBTableProvider, EC2Provider, ECRProvider, ECSProvider, EFSProvider, ELBv2Provider, EMRClusterProvider, EMRInstanceFleetConfigProvider, EMRInstanceGroupConfigProvider, ElastiCacheProvider, EventBridgeBusProvider, EventBridgeRuleProvider, FSxFileSystemProvider, FirehoseProvider, GlueConnectionProvider, GlueCrawlerProvider, GlueJobProvider, GlueProvider, GlueSecurityConfigurationProvider, GlueTriggerProvider, GlueWorkflowProvider, IAMAccessKeyProvider, IAMInstanceProfileProvider, IAMManagedPolicyProvider, IAMPolicyProvider, IAMRoleProvider, IAMUserGroupProvider, KMSProvider, KinesisStreamConsumerProvider, KinesisStreamProvider, LambdaEventInvokeConfigProvider, LambdaEventSourceMappingProvider, LambdaFunctionProvider, LambdaLayerVersionProvider, LambdaMicrovmImageProvider, LambdaNetworkConnectorProvider, LambdaPermissionProvider, LambdaUrlProvider, LambdaWebFunctionEndpointProvider, LambdaWebFunctionRevisionProvider, LogsLogGroupProvider, NeptuneProvider, NestedStackProvider, PipesPipeProvider, RDSDBProxyEndpointProvider, RDSDBProxyProvider, RDSDBProxyTargetGroupProvider, RDSProvider, Route53Provider, S3BucketPolicyProvider, S3BucketProvider, S3DirectoryBucketProvider, S3TablesProvider, S3VectorsProvider, SNSSubscriptionProvider, SNSTopicPolicyProvider, SNSTopicProvider, SQSQueuePolicyProvider, SQSQueueProvider, SSMParameterProvider, SchedulerScheduleProvider, SecretsManagerSecretProvider, ServiceDiscoveryProvider, StepFunctionsProvider, WAFv2WebACLProvider, WaitConditionHandleProvider };
54064
- //# sourceMappingURL=provider-classes-ZqxIefLl.js.map
54320
+ //# sourceMappingURL=provider-classes-ushrO6ri.js.map