@go-to-k/cdkd 0.315.0 → 0.317.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 (41) hide show
  1. package/dist/{asg-provider-DpNkEibf.js → asg-provider-WornuySB.js} +6 -7
  2. package/dist/{asg-provider-DpNkEibf.js.map → asg-provider-WornuySB.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-DWpHZk2l.js} +6 -8
  6. package/dist/aws-clients-DWpHZk2l.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-BpB3iPvn.js} +43 -67
  12. package/dist/created-resource-sink-BpB3iPvn.js.map +1 -0
  13. package/dist/{db-instance-modify-retry-B1NRKBSQ.js → db-instance-modify-retry-CspmK57I.js} +4 -5
  14. package/dist/{db-instance-modify-retry-B1NRKBSQ.js.map → db-instance-modify-retry-CspmK57I.js.map} +1 -1
  15. package/dist/{deploy-engine--bCIMkkk.js → deploy-engine-b0rYBotL.js} +423 -633
  16. package/dist/deploy-engine-b0rYBotL.js.map +1 -0
  17. package/dist/{iam-role-provider-s5--ZmBZ.js → iam-role-provider-gTpDZhfz.js} +47 -17
  18. package/dist/iam-role-provider-gTpDZhfz.js.map +1 -0
  19. package/dist/index.d.ts +1 -102
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +5 -5
  22. package/dist/{neptune-provider-BNxotnbp.js → neptune-provider-BfzktOKC.js} +8 -9
  23. package/dist/{neptune-provider-BNxotnbp.js.map → neptune-provider-BfzktOKC.js.map} +1 -1
  24. package/dist/{program-CMtAmRyw.js → program-BZ-VVfXu.js} +118 -228
  25. package/dist/program-BZ-VVfXu.js.map +1 -0
  26. package/dist/{provider-classes-B8kkAZqJ.js → provider-classes-DGFOKPO9.js} +538 -227
  27. package/dist/provider-classes-DGFOKPO9.js.map +1 -0
  28. package/dist/{rds-provider-Cm3dsmFW.js → rds-provider-BUNLNluC.js} +90 -20
  29. package/dist/rds-provider-BUNLNluC.js.map +1 -0
  30. package/dist/{version-Caty7J3x.js → version-BkSInxUL.js} +3 -4
  31. package/dist/{version-Caty7J3x.js.map → version-BkSInxUL.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/deploy-engine--bCIMkkk.js.map +0 -1
  38. package/dist/iam-role-provider-s5--ZmBZ.js.map +0 -1
  39. package/dist/program-CMtAmRyw.js.map +0 -1
  40. package/dist/provider-classes-B8kkAZqJ.js.map +0 -1
  41. package/dist/rds-provider-Cm3dsmFW.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, 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-QECX8C-Z.js";
4
- import { c as ambientRegion } from "./aws-client-defaults-BX9Y_fKp.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--bCIMkkk.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-s5--ZmBZ.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-CMtAmRyw.js";
8
- import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-B1NRKBSQ.js";
9
- import { RDSProvider } from "./rds-provider-Cm3dsmFW.js";
10
- import { NeptuneProvider } from "./neptune-provider-BNxotnbp.js";
11
- import { ASGProvider } from "./asg-provider-DpNkEibf.js";
1
+ import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-DWpHZk2l.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 isTerminalDeleteFailure, A as setBounded, Ar as isThrottlingError, At as stateOrphanRecordRemedy, B as normalizeAwsTagsToCfn, C as AmbiguousCreateLatch, Cr as isExplicitDenyError, Ct as compositeIdFormatMessage, D as isInsideWindow, Dt as packCompositeId, E as createAttemptKey, Er as isTransientServerError, Et as logicalIdShown, F as assertRegionMatch, Fn as ResourceUpdateNotSupportedError, Ft as maskerOrIdentity, Gt as markAuxiliaryFailure, H as refusalTypeShown, I as VALUE_NOT_SHOWN, It as withDerivedNameMasks, J as deleteAfterProtectionFlipWithFinalSnapshot, K as ProtectionFlipRegistry, Kt as markCreatedBeforeFailure, L as isPlainImportJson, M as RESOURCE_NOT_FOUND, Mr as markRedactedCause, Mt as createMaskedRetryLogger, Nn as ProvisioningError, Nr as wrapMaskedAwsError, Nt as isSecretDerivedValue, O as replayFollowedAmbiguousAttempt, Or as THROTTLING_ERROR_NAMES, P as markNotGone, Pt as maskDeep, Q as isTerminalDbWaitStatus, Qn as pasteableCommand, R as isPlainImportValue, S as AMBIGUOUS_LATCH_TTL_MS, Sr as isAmbiguousOutcomeError, St as canonicalizeRoute53QueryName, T as ambiguousAttemptLead, Tr as isRetryableTransientError, Tt as compositeIdSkipResult, U as remedyLogicalId, Ut as isAuxiliaryFailure, V as quotedRemedyLogicalId, W as resolveExplicitPhysicalId, Xn as hasClauseBreak, Y as deleteWithProtectionCompensation, Yn as commandHole, Z as isProceedDbStatus, Zn as isInertUnquoted, b as withRemovalDefaults, bt as isInterruptedWaitError, ct as UNNAMEABLE_ID_CLAUSE, d as onlySecretDerived, dn as withPasteableAwsProfile, dt as pasteableAwsCommand, er as plainOrDescribed, et as logGroupProtectionSite, f as readPrincipalLists, fn as ambientClientDefaults, ft as protectedReplacementAdvice, g as clearOnUpdateRemoval, gn as AccountIdUnavailableError, hn as credentialFingerprint, hr as relayedNameCollision, ht as ElapsedBudgetRegistry, i as reportCreatedResource, ir as withheldTargetClause, j as withoutServerErrorRetries, jr as markNonRetryable, jt as createMaskedLogSinks, k as replayedSendWindow, kr as isMarkedNonRetryable, kt as segmentAfterAnchor, l as SECRET_DERIVED_READ_LIVE, lt as WITHHELD_AWS_COMMAND, m as recordedPrincipalsRepair, mn as clientDefaultsFor, mr as markReplayMayCollide, mt as ElapsedBudget, nt as protectionFlipKey, o as retractCreatedResource, on as injectiveKey, ot as userPoolProtectionSite, pn as ambientCredentialConfig, pr as markNameCollision, pt as renderDisableCommand, qt as markSupersedesEarlierCreate, rr as shellQuote, rt as rdsFamilyProtectionSite, sn as injectiveKeyPrefix, tt as observeThenDisableProtection, u as holdsSecretDerivedEntry, ut as isAwsCliLiteral, vn as CdkdError, w as RecentIdSet, wt as compositeIdSeparatorRefusal, xt as startInterruptWatch, y as removedTemplateKeys, yr as explicitDenyPolicyKind, z as isQuotableImportValue, zt as clearCreatedBeforeFailure } from "./created-resource-sink-BpB3iPvn.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-b0rYBotL.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-gTpDZhfz.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-BZ-VVfXu.js";
8
+ import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-CspmK57I.js";
9
+ import { RDSProvider } from "./rds-provider-BUNLNluC.js";
10
+ import { NeptuneProvider } from "./neptune-provider-BfzktOKC.js";
11
+ import { ASGProvider } from "./asg-provider-WornuySB.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";
@@ -44,7 +44,7 @@ import * as zlib from "node:zlib";
44
44
  import { ApiGatewayV2Client, CreateApiCommand, CreateAuthorizerCommand as CreateAuthorizerCommand$1, CreateIntegrationCommand, CreateRouteCommand as CreateRouteCommand$1, CreateStageCommand as CreateStageCommand$1, DeleteAccessLogSettingsCommand, DeleteApiCommand, DeleteAuthorizerCommand as DeleteAuthorizerCommand$1, DeleteCorsConfigurationCommand, DeleteIntegrationCommand as DeleteIntegrationCommand$1, DeleteRouteCommand as DeleteRouteCommand$1, DeleteRouteRequestParameterCommand, DeleteRouteSettingsCommand, DeleteStageCommand as DeleteStageCommand$1, GetApiCommand, GetApisCommand, GetAuthorizerCommand as GetAuthorizerCommand$1, GetAuthorizersCommand as GetAuthorizersCommand$1, GetIntegrationCommand, GetIntegrationsCommand, GetRouteCommand, GetStageCommand as GetStageCommand$1, NotFoundException as NotFoundException$3, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateApiCommand, UpdateAuthorizerCommand as UpdateAuthorizerCommand$1, UpdateIntegrationCommand, UpdateRouteCommand, UpdateStageCommand as UpdateStageCommand$1 } from "@aws-sdk/client-apigatewayv2";
45
45
  import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$12, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$15, UpdateStateMachineCommand } from "@aws-sdk/client-sfn";
46
46
  import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, ListTaskDefinitionsCommand, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateClusterCommand, UpdateServiceCommand, waitUntilServicesStable } from "@aws-sdk/client-ecs";
47
- import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
47
+ import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DescribeGlobalClustersCommand as DescribeGlobalClustersCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveFromGlobalClusterCommand as RemoveFromGlobalClusterCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
48
48
  import { CreateWebACLCommand, DeleteWebACLCommand, GetWebACLCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateWebACLCommand, WAFNonexistentItemException, WAFV2Client } from "@aws-sdk/client-wafv2";
49
49
  import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$11, SetUserPoolMfaConfigCommand, UntagResourceCommand as UntagResourceCommand$18, UpdateUserPoolCommand } from "@aws-sdk/client-cognito-identity-provider";
50
50
  import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NamespaceNotFound, ResourceInUse, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$19, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
@@ -59,13 +59,13 @@ import { AssociateFileSystemAliasesCommand, CreateFileSystemCommand as CreateFil
59
59
  import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListClustersCommand, ListInstanceFleetsCommand, ListInstanceGroupsCommand, ModifyClusterCommand, ModifyInstanceFleetCommand, ModifyInstanceGroupsCommand, PutAutoScalingPolicyCommand, PutAutoTerminationPolicyCommand, PutManagedScalingPolicyCommand, RemoveAutoScalingPolicyCommand, RemoveAutoTerminationPolicyCommand, RemoveManagedScalingPolicyCommand, RemoveTagsCommand as RemoveTagsCommand$1, RunJobFlowCommand, SetTerminationProtectionCommand, SetUnhealthyNodeReplacementCommand, SetVisibleToAllUsersCommand, TerminateJobFlowsCommand } from "@aws-sdk/client-emr";
60
60
  import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$14, StartDeliveryStreamEncryptionCommand, StopDeliveryStreamEncryptionCommand, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
61
61
  import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventConfigurationCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$2, PutEventConfigurationCommand, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
62
- import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand, UpdateProjectVisibilityCommand } from "@aws-sdk/client-codebuild";
62
+ import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, CreateWebhookCommand, DeleteProjectCommand, DeleteWebhookCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand, UpdateProjectVisibilityCommand, UpdateWebhookCommand } from "@aws-sdk/client-codebuild";
63
63
  import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$26, UntagResourceCommand as UntagResourceCommand$27, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
64
64
  import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePoliciesCommand, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$16, TagResourceCommand as TagResourceCommand$27, UntagResourceCommand as UntagResourceCommand$28, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
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");
@@ -11119,15 +11096,15 @@ function buildCommonImageInput(properties) {
11119
11096
  return input;
11120
11097
  }
11121
11098
  function mapCodeArtifact(value) {
11122
- if (!isRecord$2(value)) return void 0;
11099
+ if (!isRecord$3(value)) return void 0;
11123
11100
  const uri = value["Uri"];
11124
11101
  return typeof uri === "string" ? { uri } : void 0;
11125
11102
  }
11126
11103
  function mapLogging(value) {
11127
- if (!isRecord$2(value)) return void 0;
11104
+ if (!isRecord$3(value)) return void 0;
11128
11105
  if (value["Disabled"] === true) return { disabled: {} };
11129
11106
  const cloudWatch = value["CloudWatch"];
11130
- if (isRecord$2(cloudWatch)) {
11107
+ if (isRecord$3(cloudWatch)) {
11131
11108
  const cw = {};
11132
11109
  if (typeof cloudWatch["LogGroup"] === "string") cw.logGroup = cloudWatch["LogGroup"];
11133
11110
  if (typeof cloudWatch["LogStream"] === "string") cw.logStream = cloudWatch["LogStream"];
@@ -11136,37 +11113,36 @@ function mapLogging(value) {
11136
11113
  }
11137
11114
  function mapCpuConfigurations(value) {
11138
11115
  if (!Array.isArray(value)) return void 0;
11139
- return value.filter(isRecord$2).map((c) => ({ architecture: c["Architecture"] }));
11116
+ return value.filter(isRecord$3).map((c) => ({ architecture: c["Architecture"] }));
11140
11117
  }
11141
11118
  function mapResources(value) {
11142
11119
  if (!Array.isArray(value)) return void 0;
11143
- return value.filter(isRecord$2).map((r) => Number(r["MinimumMemoryInMiB"])).filter((n) => Number.isFinite(n)).map((minimumMemoryInMiB) => ({ minimumMemoryInMiB }));
11120
+ return value.filter(isRecord$3).map((r) => Number(r["MinimumMemoryInMiB"])).filter((n) => Number.isFinite(n)).map((minimumMemoryInMiB) => ({ minimumMemoryInMiB }));
11144
11121
  }
11145
11122
  function mapHooks(value) {
11146
- if (!isRecord$2(value)) return void 0;
11123
+ if (!isRecord$3(value)) return void 0;
11147
11124
  return lowerFirstKeysDeep(value);
11148
11125
  }
11149
11126
  function mapKeyValueListToRecord(value) {
11150
11127
  if (!Array.isArray(value)) return void 0;
11151
11128
  const out = {};
11152
- for (const entry of value) if (isRecord$2(entry) && typeof entry["Key"] === "string") out[entry["Key"]] = typeof entry["Value"] === "string" ? entry["Value"] : "";
11129
+ for (const entry of value) if (isRecord$3(entry) && typeof entry["Key"] === "string") out[entry["Key"]] = typeof entry["Value"] === "string" ? entry["Value"] : "";
11153
11130
  return Object.keys(out).length > 0 ? out : void 0;
11154
11131
  }
11155
11132
  function lowerFirstKeysDeep(value) {
11156
11133
  if (Array.isArray(value)) return value.map(lowerFirstKeysDeep);
11157
- if (isRecord$2(value)) {
11134
+ if (isRecord$3(value)) {
11158
11135
  const out = {};
11159
11136
  for (const [k, v] of Object.entries(value)) out[k.charAt(0).toLowerCase() + k.slice(1)] = lowerFirstKeysDeep(v);
11160
11137
  return out;
11161
11138
  }
11162
11139
  return value;
11163
11140
  }
11164
- function isRecord$2(value) {
11141
+ function isRecord$3(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
  }
@@ -14551,8 +14522,7 @@ function projectIndexesOnto(live, recorded, desired, attempted = /* @__PURE__ */
14551
14522
  return kept.length > 0 ? kept : void 0;
14552
14523
  }
14553
14524
 
14554
- //#endregion
14555
- //#region src/provisioning/providers/logs-loggroup-provider.ts
14525
+ // src/provisioning/providers/logs-loggroup-provider.ts
14556
14526
  const LOG_GROUP_TYPE = "AWS::Logs::LogGroup";
14557
14527
  function isLogGroupName(id) {
14558
14528
  return /^[A-Za-z0-9._/#-]{1,512}$/.test(id);
@@ -15051,8 +15021,7 @@ var LogsLogGroupProvider = class {
15051
15021
  }
15052
15022
  };
15053
15023
 
15054
- //#endregion
15055
- //#region src/provisioning/providers/cloudwatch-alarm-provider.ts
15024
+ // src/provisioning/providers/cloudwatch-alarm-provider.ts
15056
15025
  function isDefaultEvaluationWindow(value) {
15057
15026
  if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
15058
15027
  const keys = Object.keys(value);
@@ -15420,8 +15389,7 @@ var CloudWatchAlarmProvider = class {
15420
15389
  }
15421
15390
  };
15422
15391
 
15423
- //#endregion
15424
- //#region src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
15392
+ // src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
15425
15393
  const ID_ATTRIBUTES = ["AnomalyDetectorId", "Id"];
15426
15394
  var CloudWatchAnomalyDetectorProvider = class {
15427
15395
  cloudWatchClient;
@@ -15590,8 +15558,7 @@ function hasDescriptor(params) {
15590
15558
  return params.SingleMetricAnomalyDetector !== void 0 || params.MetricMathAnomalyDetector !== void 0 || params.Namespace !== void 0 || params.MetricName !== void 0;
15591
15559
  }
15592
15560
 
15593
- //#endregion
15594
- //#region src/provisioning/providers/secretsmanager-secret-provider.ts
15561
+ // src/provisioning/providers/secretsmanager-secret-provider.ts
15595
15562
  function asJson(value) {
15596
15563
  return value === void 0 ? void 0 : JSON.parse(JSON.stringify(value));
15597
15564
  }
@@ -16030,8 +15997,7 @@ var SecretsManagerSecretProvider = class {
16030
15997
  }
16031
15998
  };
16032
15999
 
16033
- //#endregion
16034
- //#region src/provisioning/providers/ssm-parameter-provider.ts
16000
+ // src/provisioning/providers/ssm-parameter-provider.ts
16035
16001
  var SSMParameterProvider = class SSMParameterProvider {
16036
16002
  ssmClient;
16037
16003
  createClient;
@@ -16321,8 +16287,7 @@ function ssmPoliciesParameter(policies) {
16321
16287
  return JSON.stringify(policies);
16322
16288
  }
16323
16289
 
16324
- //#endregion
16325
- //#region src/provisioning/providers/eventbridge-rule-provider.ts
16290
+ // src/provisioning/providers/eventbridge-rule-provider.ts
16326
16291
  var EventBridgeRuleProvider = class {
16327
16292
  eventBridgeClient;
16328
16293
  logger = getLogger().child("EventBridgeRuleProvider");
@@ -16763,8 +16728,7 @@ var EventBridgeRuleProvider = class {
16763
16728
  }
16764
16729
  };
16765
16730
 
16766
- //#endregion
16767
- //#region src/provisioning/providers/eventbridge-bus-provider.ts
16731
+ // src/provisioning/providers/eventbridge-bus-provider.ts
16768
16732
  function sanitizeDeadLetterConfig(value) {
16769
16733
  if (value === null || value === void 0) return void 0;
16770
16734
  if (typeof value !== "object") return void 0;
@@ -17050,8 +17014,7 @@ var EventBridgeBusProvider = class {
17050
17014
  }
17051
17015
  };
17052
17016
 
17053
- //#endregion
17054
- //#region src/provisioning/providers/ec2-provider.ts
17017
+ // src/provisioning/providers/ec2-provider.ts
17055
17018
  const EC2_VPC_GATEWAY_ATTACHMENT_ID_FORMAT = {
17056
17019
  label: "VPCGatewayAttachment",
17057
17020
  segments: ["gatewayId", "vpcId"]
@@ -21767,8 +21730,7 @@ function isDefaultEgressRule(rule) {
21767
21730
  return true;
21768
21731
  }
21769
21732
 
21770
- //#endregion
21771
- //#region src/provisioning/providers/apigateway-provider.ts
21733
+ // src/provisioning/providers/apigateway-provider.ts
21772
21734
  const createAuthorizerLatch$1 = new AmbiguousCreateLatch("apigateway:CreateAuthorizer");
21773
21735
  const createDeploymentLatch = new AmbiguousCreateLatch("apigateway:CreateDeployment");
21774
21736
  const authorizersCreatedByThisProcess$1 = new RecentIdSet();
@@ -23366,8 +23328,7 @@ function methodChildCalls(ids, desired, previous) {
23366
23328
  return calls;
23367
23329
  }
23368
23330
 
23369
- //#endregion
23370
- //#region src/provisioning/providers/apigatewayv2-provider.ts
23331
+ // src/provisioning/providers/apigatewayv2-provider.ts
23371
23332
  const createApiLatch = new AmbiguousCreateLatch("apigatewayv2:CreateApi");
23372
23333
  const createIntegrationLatch = new AmbiguousCreateLatch("apigatewayv2:CreateIntegration");
23373
23334
  const createAuthorizerLatch = new AmbiguousCreateLatch("apigatewayv2:CreateAuthorizer");
@@ -24836,8 +24797,7 @@ var ApiGatewayV2Provider = class ApiGatewayV2Provider {
24836
24797
  }
24837
24798
  };
24838
24799
 
24839
- //#endregion
24840
- //#region src/provisioning/providers/cloudfront-oai-provider.ts
24800
+ // src/provisioning/providers/cloudfront-oai-provider.ts
24841
24801
  var CloudFrontOAIProvider = class {
24842
24802
  cloudFrontClient;
24843
24803
  logger = getLogger().child("CloudFrontOAIProvider");
@@ -24986,8 +24946,7 @@ var CloudFrontOAIProvider = class {
24986
24946
  }
24987
24947
  };
24988
24948
 
24989
- //#endregion
24990
- //#region src/provisioning/providers/cloudfront-oac-provider.ts
24949
+ // src/provisioning/providers/cloudfront-oac-provider.ts
24991
24950
  var CloudFrontOACProvider = class {
24992
24951
  cloudFrontClient;
24993
24952
  createClient;
@@ -25152,8 +25111,7 @@ var CloudFrontOACProvider = class {
25152
25111
  }
25153
25112
  };
25154
25113
 
25155
- //#endregion
25156
- //#region src/provisioning/providers/cloudfront-distribution-provider.ts
25114
+ // src/provisioning/providers/cloudfront-distribution-provider.ts
25157
25115
  function shownId(id) {
25158
25116
  return isPlainImportValue(id) ? id : VALUE_NOT_SHOWN;
25159
25117
  }
@@ -25831,8 +25789,7 @@ var CloudFrontDistributionProvider = class {
25831
25789
  }
25832
25790
  };
25833
25791
 
25834
- //#endregion
25835
- //#region src/provisioning/providers/agentcore-case-convert.ts
25792
+ // src/provisioning/providers/agentcore-case-convert.ts
25836
25793
  function pascalToCamelCaseKeys(value, preserveKeys) {
25837
25794
  if (value === null || value === void 0) return value;
25838
25795
  if (Array.isArray(value)) return value.map((item) => pascalToCamelCaseKeys(item, preserveKeys));
@@ -25860,8 +25817,7 @@ function camelToPascalCaseKeys(value, preserveKeys) {
25860
25817
  return value;
25861
25818
  }
25862
25819
 
25863
- //#endregion
25864
- //#region src/provisioning/providers/agentcore-runtime-provider.ts
25820
+ // src/provisioning/providers/agentcore-runtime-provider.ts
25865
25821
  const CFN_MAP_KEYS = /* @__PURE__ */ new Set(["Tags", "AdvertisedScopeMapping"]);
25866
25822
  const SDK_MAP_KEYS = /* @__PURE__ */ new Set(["tags", "advertisedScopeMapping"]);
25867
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";
@@ -26155,8 +26111,7 @@ var AgentCoreRuntimeProvider = class {
26155
26111
  }
26156
26112
  };
26157
26113
 
26158
- //#endregion
26159
- //#region src/provisioning/providers/agentcore-browser-provider.ts
26114
+ // src/provisioning/providers/agentcore-browser-provider.ts
26160
26115
  const DEFAULT_BROWSER_ID = "aws.browser.v1";
26161
26116
  var AgentCoreBrowserProvider = class {
26162
26117
  client;
@@ -26230,8 +26185,7 @@ var AgentCoreBrowserProvider = class {
26230
26185
  }
26231
26186
  };
26232
26187
 
26233
- //#endregion
26234
- //#region src/provisioning/providers/agentcore-code-interpreter-provider.ts
26188
+ // src/provisioning/providers/agentcore-code-interpreter-provider.ts
26235
26189
  const DEFAULT_CODE_INTERPRETER_ID = "aws.codeinterpreter.v1";
26236
26190
  var AgentCoreCodeInterpreterProvider = class {
26237
26191
  client;
@@ -26300,8 +26254,7 @@ var AgentCoreCodeInterpreterProvider = class {
26300
26254
  }
26301
26255
  };
26302
26256
 
26303
- //#endregion
26304
- //#region src/provisioning/providers/agentcore-evaluator-provider.ts
26257
+ // src/provisioning/providers/agentcore-evaluator-provider.ts
26305
26258
  const CFN_PRESERVE_KEYS = /* @__PURE__ */ new Set(["AdditionalModelRequestFields"]);
26306
26259
  const SDK_PRESERVE_KEYS = /* @__PURE__ */ new Set(["additionalModelRequestFields"]);
26307
26260
  function evaluatorIdFromArn(arnOrId) {
@@ -26495,8 +26448,7 @@ var AgentCoreEvaluatorProvider = class {
26495
26448
  }
26496
26449
  };
26497
26450
 
26498
- //#endregion
26499
- //#region src/provisioning/providers/stepfunctions-provider.ts
26451
+ // src/provisioning/providers/stepfunctions-provider.ts
26500
26452
  function stateMachineRevisionId(described) {
26501
26453
  return described.revisionId ?? "INITIAL";
26502
26454
  }
@@ -26904,8 +26856,7 @@ function wasMeaningfullyConfigured(value, discriminatorKey) {
26904
26856
  return value[discriminatorKey] !== void 0;
26905
26857
  }
26906
26858
 
26907
- //#endregion
26908
- //#region src/provisioning/providers/ecs-provider.ts
26859
+ // src/provisioning/providers/ecs-provider.ts
26909
26860
  const registerTaskDefinitionLatch = new AmbiguousCreateLatch("ecs:RegisterTaskDefinition");
26910
26861
  const taskDefinitionsRegisteredByThisProcess = new RecentIdSet();
26911
26862
  function familyOfTaskDefinitionArn(arn) {
@@ -28522,8 +28473,7 @@ var ECSProvider = class {
28522
28473
  }
28523
28474
  };
28524
28475
 
28525
- //#endregion
28526
- //#region src/provisioning/providers/elbv2-provider.ts
28476
+ // src/provisioning/providers/elbv2-provider.ts
28527
28477
  function loadBalancerNameFromArn(arn) {
28528
28478
  return nameFromElbv2Arn(arn, ":loadbalancer/", 3);
28529
28479
  }
@@ -30033,8 +29983,7 @@ var ELBv2Provider = class {
30033
29983
  }
30034
29984
  };
30035
29985
 
30036
- //#endregion
30037
- //#region src/provisioning/providers/rds-dbproxy-provider.ts
29986
+ // src/provisioning/providers/rds-dbproxy-provider.ts
30038
29987
  const POLL_INTERVAL_MS$1 = 5e3;
30039
29988
  const POLL_TIMEOUT_MS$1 = 18e5;
30040
29989
  const RETAINED_ON_REMOVAL = [
@@ -30413,8 +30362,7 @@ var RDSDBProxyProvider = class {
30413
30362
  }
30414
30363
  };
30415
30364
 
30416
- //#endregion
30417
- //#region src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
30365
+ // src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
30418
30366
  const POLL_INTERVAL_MS = 5e3;
30419
30367
  const POLL_TIMEOUT_MS = 18e5;
30420
30368
  var RDSDBProxyEndpointProvider = class {
@@ -30716,8 +30664,7 @@ var RDSDBProxyEndpointProvider = class {
30716
30664
  }
30717
30665
  };
30718
30666
 
30719
- //#endregion
30720
- //#region src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
30667
+ // src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
30721
30668
  const RDS_TARGET_IDENTIFIER = /^[A-Za-z][A-Za-z0-9-]{0,62}$/;
30722
30669
  function readTargetLists(values) {
30723
30670
  const lists = {
@@ -31231,8 +31178,7 @@ function withoutKey(bag, key) {
31231
31178
  return rest;
31232
31179
  }
31233
31180
 
31234
- //#endregion
31235
- //#region src/provisioning/providers/docdb-shared.ts
31181
+ // src/provisioning/providers/docdb-shared.ts
31236
31182
  function wrapDocDBFailure(logger, mask, error, build) {
31237
31183
  const m = maskerOrIdentity(mask);
31238
31184
  const failure = describeAwsFailure(error);
@@ -31315,8 +31261,7 @@ async function attachDocDBTags(client, logger, result, arn) {
31315
31261
  }
31316
31262
  }
31317
31263
 
31318
- //#endregion
31319
- //#region src/provisioning/providers/docdb-provider.ts
31264
+ // src/provisioning/providers/docdb-provider.ts
31320
31265
  function masterUserPasswordToSend(properties, previousProperties, context) {
31321
31266
  const desired = properties["MasterUserPassword"];
31322
31267
  if (desired === void 0 || desired === null) return void 0;
@@ -31385,6 +31330,45 @@ const PORT_CHANGE_MEMBER_STATUSES = /* @__PURE__ */ new Set(["modifying", "reboo
31385
31330
  function numberOrUndefined(value) {
31386
31331
  return value == null ? void 0 : Number(value);
31387
31332
  }
31333
+ function docdbGlobalClusterId(value) {
31334
+ return typeof value === "string" && value.trim() !== "" ? value : void 0;
31335
+ }
31336
+ function withRecordedGlobalCluster(bag, previousProperties) {
31337
+ const { GlobalClusterIdentifier: _dropped, ...rest } = bag;
31338
+ const previous = previousProperties["GlobalClusterIdentifier"];
31339
+ return previous === void 0 ? rest : {
31340
+ ...rest,
31341
+ GlobalClusterIdentifier: previous
31342
+ };
31343
+ }
31344
+ function readableGlobalClusterId(value) {
31345
+ return value == null || typeof value === "string";
31346
+ }
31347
+ const DETACH_MAX_WAIT_MS = 18e5;
31348
+ const GLOBAL_CLUSTER_BUSY_MAX_WAIT_MS = 6e5;
31349
+ const TRANSIENT_DETACH_FAULTS = /* @__PURE__ */ new Set([
31350
+ "InvalidDBClusterStateFault",
31351
+ "InvalidGlobalClusterStateFault",
31352
+ "ThrottlingException",
31353
+ "Throttling",
31354
+ "RequestLimitExceeded"
31355
+ ]);
31356
+ function awsErrorName(error) {
31357
+ return error?.name ?? "";
31358
+ }
31359
+ var GlobalClusterDetachError = class extends Error {
31360
+ constructor(message) {
31361
+ super(message);
31362
+ this.name = "GlobalClusterDetachError";
31363
+ }
31364
+ };
31365
+ function docdbEngineVersionToSend(properties, previousProperties, context) {
31366
+ if (context?.replayingState === true) return void 0;
31367
+ const desired = properties["EngineVersion"];
31368
+ if (desired == null) return void 0;
31369
+ const previous = previousProperties["EngineVersion"];
31370
+ return previous != null && String(previous) === String(desired) ? void 0 : desired;
31371
+ }
31388
31372
  function clusterPortToSend(properties, previousProperties) {
31389
31373
  if (properties["Port"] != null) return Number(properties["Port"]);
31390
31374
  if (previousProperties["Port"] == null) return void 0;
@@ -31432,6 +31416,7 @@ var DocDBProvider = class {
31432
31416
  "Tags",
31433
31417
  "MasterUserPassword",
31434
31418
  "RotateMasterUserPassword",
31419
+ "GlobalClusterIdentifier",
31435
31420
  ...DOCDB_CLUSTER_KEPT_ON_REMOVAL,
31436
31421
  ...DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL
31437
31422
  ])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
@@ -31463,6 +31448,7 @@ var DocDBProvider = class {
31463
31448
  "AvailabilityZones",
31464
31449
  "CopyTagsToSnapshot",
31465
31450
  "EnableCloudwatchLogsExports",
31451
+ "GlobalClusterIdentifier",
31466
31452
  "ManageMasterUserPassword",
31467
31453
  "MasterUserSecretKmsKeyId",
31468
31454
  "NetworkType",
@@ -31513,9 +31499,9 @@ var DocDBProvider = class {
31513
31499
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
31514
31500
  }
31515
31501
  }
31516
- async delete(logicalId, physicalId, resourceType, _properties, context) {
31502
+ async delete(logicalId, physicalId, resourceType, properties, context) {
31517
31503
  switch (resourceType) {
31518
- case "AWS::DocDB::DBCluster": return this.deleteDBCluster(logicalId, physicalId, resourceType, context);
31504
+ case "AWS::DocDB::DBCluster": return this.deleteDBCluster(logicalId, physicalId, resourceType, properties, context);
31519
31505
  case "AWS::DocDB::DBInstance": return this.deleteDBInstance(logicalId, physicalId, resourceType, context);
31520
31506
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
31521
31507
  }
@@ -31534,6 +31520,11 @@ var DocDBProvider = class {
31534
31520
  const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, true);
31535
31521
  const managedPassword = this.readBooleanProperty("ManageMasterUserPassword", properties, resourceType, logicalId, origin);
31536
31522
  const password = this.passwordBesideManaged(managedPassword, false, properties["MasterUserPassword"], resourceType, logicalId, origin);
31523
+ if (!readableGlobalClusterId(properties["GlobalClusterIdentifier"])) {
31524
+ if (!replayingState) this.refuseBlock(logicalId, resourceType, void 0, "GlobalClusterIdentifier is not a string");
31525
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded GlobalClusterIdentifier is unusable, so it is not sent.`);
31526
+ }
31527
+ const globalClusterId = docdbGlobalClusterId(properties["GlobalClusterIdentifier"]);
31537
31528
  const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
31538
31529
  let clusterCreated = false;
31539
31530
  let createdResourceId;
@@ -31560,6 +31551,7 @@ var DocDBProvider = class {
31560
31551
  MasterUserSecretKmsKeyId: properties["MasterUserSecretKmsKeyId"],
31561
31552
  NetworkType: properties["NetworkType"],
31562
31553
  StorageType: properties["StorageType"],
31554
+ ...globalClusterId !== void 0 && { GlobalClusterIdentifier: globalClusterId },
31563
31555
  ...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
31564
31556
  ...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
31565
31557
  ...tags.length > 0 && { Tags: tags }
@@ -31588,7 +31580,9 @@ var DocDBProvider = class {
31588
31580
  physicalId
31589
31581
  };
31590
31582
  const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, false);
31583
+ const globalClusterPlan = await this.planGlobalClusterUpdate(physicalId, properties, previousProperties, resourceType, logicalId, origin, context?.desiredFromAwsReadback === true);
31591
31584
  const logExportConfig = logTypes === void 0 ? void 0 : docdbLogExportChange(logTypes, docdbStringList(previousProperties["EnableCloudwatchLogsExports"]) ?? []);
31585
+ let detachedFrom;
31592
31586
  try {
31593
31587
  const credentials = await this.planMasterCredentials(physicalId, properties, previousProperties, resourceType, logicalId, context, origin);
31594
31588
  const vpcSgIds = properties["VpcSecurityGroupIds"];
@@ -31602,10 +31596,16 @@ var DocDBProvider = class {
31602
31596
  const storageChange = declaredChange(storageType, previousProperties["StorageType"], live?.StorageType ?? DOCDB_DEFAULT_STORAGE_TYPE);
31603
31597
  const previousScaling = docdbServerlessScaling(previousProperties["ServerlessV2ScalingConfiguration"]);
31604
31598
  const scalingChange = scaling != null && (scaling.MinCapacity !== previousScaling?.MinCapacity || scaling.MaxCapacity !== previousScaling?.MaxCapacity);
31599
+ if (globalClusterPlan.kind === "detach") {
31600
+ if (await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterPlan.globalClusterId, {
31601
+ beforeDelete: false,
31602
+ removeProtection: false
31603
+ }, { stripped: false }, maskerOrIdentity(context?.maskSecrets))) detachedFrom = globalClusterPlan.globalClusterId;
31604
+ }
31605
31605
  this.markChangedUnsettled(CLUSTER_MODIFY_UNSETTLED_KEYS, properties, previousProperties, context);
31606
31606
  await this.getClient().send(new ModifyDBClusterCommand$1({
31607
31607
  DBClusterIdentifier: physicalId,
31608
- EngineVersion: properties["EngineVersion"],
31608
+ EngineVersion: docdbEngineVersionToSend(properties, previousProperties, context),
31609
31609
  DeletionProtection: properties["DeletionProtection"],
31610
31610
  BackupRetentionPeriod: properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0,
31611
31611
  PreferredBackupWindow: properties["PreferredBackupWindow"],
@@ -31666,19 +31666,21 @@ var DocDBProvider = class {
31666
31666
  ...described,
31667
31667
  Port: portToSend
31668
31668
  } : described),
31669
- ...credentials.effectiveProperties !== void 0 && { effectiveProperties: credentials.effectiveProperties }
31669
+ ...(credentials.effectiveProperties !== void 0 || globalClusterPlan.kind === "keep") && { effectiveProperties: globalClusterPlan.kind === "keep" ? withRecordedGlobalCluster(credentials.effectiveProperties ?? properties, previousProperties) : credentials.effectiveProperties }
31670
31670
  };
31671
31671
  } catch (error) {
31672
31672
  if (error instanceof ProvisioningError) throw error;
31673
+ if (error instanceof GlobalClusterDetachError) throw markNonRetryable(new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${error.message}`, resourceType, logicalId, physicalId, error));
31673
31674
  const cause = error instanceof Error ? error : void 0;
31674
- throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
31675
+ const detachedNote = detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : "";
31676
+ throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${text}${detachedNote}`, resourceType, logicalId, physicalId, cause));
31675
31677
  }
31676
31678
  }
31677
- async deleteDBCluster(logicalId, physicalId, resourceType, context) {
31679
+ async deleteDBCluster(logicalId, physicalId, resourceType, properties, context) {
31678
31680
  await deleteWithProtectionCompensation({
31679
31681
  registry: this.protectionFlips,
31680
31682
  key: protectionFlipKey(resourceType, physicalId, context?.expectedRegion),
31681
- run: (flip) => this.deleteDBClusterOnce(logicalId, physicalId, resourceType, context, flip),
31683
+ run: (flip) => this.deleteDBClusterOnce(logicalId, physicalId, resourceType, properties, context, flip),
31682
31684
  compensation: {
31683
31685
  logicalId,
31684
31686
  physicalId,
@@ -31702,8 +31704,10 @@ var DocDBProvider = class {
31702
31704
  }
31703
31705
  });
31704
31706
  }
31705
- async deleteDBClusterOnce(logicalId, physicalId, resourceType, context, flip) {
31707
+ async deleteDBClusterOnce(logicalId, physicalId, resourceType, properties, context, flip) {
31706
31708
  this.logger.debug(`Deleting DocDB DBCluster ${logicalId}`);
31709
+ let detachedFrom;
31710
+ const progress = { stripped: false };
31707
31711
  try {
31708
31712
  if (context?.removeProtection === true) try {
31709
31713
  await observeThenDisableProtection({
@@ -31725,6 +31729,11 @@ var DocDBProvider = class {
31725
31729
  } catch (disableError) {
31726
31730
  if (!isDocDBNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for DocDB DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`));
31727
31731
  }
31732
+ const globalClusterId = docdbGlobalClusterId(properties?.["GlobalClusterIdentifier"]);
31733
+ if (globalClusterId !== void 0) detachedFrom = await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterId, {
31734
+ beforeDelete: true,
31735
+ removeProtection: context?.removeProtection === true
31736
+ }, progress, maskerOrIdentity(context?.maskSecrets)) ? globalClusterId : void 0;
31728
31737
  const finalSnapshotId = context?.finalSnapshotIdentifier;
31729
31738
  const sendDelete = () => this.getClient().send(new DeleteDBClusterCommand$1({
31730
31739
  DBClusterIdentifier: physicalId,
@@ -31740,6 +31749,10 @@ var DocDBProvider = class {
31740
31749
  this.logger.debug(`Successfully initiated deletion of DocDB DBCluster ${logicalId}`);
31741
31750
  await this.waitForClusterDeleted(logicalId, physicalId);
31742
31751
  } catch (error) {
31752
+ if (error instanceof GlobalClusterDetachError) {
31753
+ const detachFailure = markNotGone(markNonRetryable(new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${error.message}`, resourceType, logicalId, physicalId, error)));
31754
+ throw progress.stripped ? markDeleteStarted(detachFailure) : detachFailure;
31755
+ }
31743
31756
  if (isDocDBNotFoundError(error, "DBClusterNotFoundFault")) {
31744
31757
  const clientRegion = await this.getClient().config.region();
31745
31758
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
@@ -31748,7 +31761,95 @@ var DocDBProvider = class {
31748
31761
  return;
31749
31762
  }
31750
31763
  const cause = error instanceof Error ? error : void 0;
31751
- throw this.wrapDeleteError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
31764
+ const detachedNote = detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : "";
31765
+ const failure = this.wrapDeleteError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${text}${detachedNote}`, resourceType, logicalId, physicalId, cause));
31766
+ throw progress.stripped ? markDeleteStarted(failure) : failure;
31767
+ }
31768
+ }
31769
+ wrapGlobalClusterDetachError(error, mask, build) {
31770
+ const failure = describeAwsFailure(error);
31771
+ if (failure.redacted) this.logger.debug(mask(build(mask(failure.detail))));
31772
+ return new GlobalClusterDetachError(build(mask(failure.summary)));
31773
+ }
31774
+ async detachFromGlobalCluster(logicalId, physicalId, globalClusterId, { beforeDelete, removeProtection }, progress, mask) {
31775
+ let cluster = await this.describeDBCluster(physicalId);
31776
+ for (let i = 0; removeProtection && cluster?.DeletionProtection === true && i < 6; i++) {
31777
+ await this.sleep(5e3);
31778
+ cluster = await this.describeDBCluster(physicalId);
31779
+ }
31780
+ if (cluster === void 0) return false;
31781
+ if (beforeDelete && cluster.DeletionProtection === true) throw new GlobalClusterDetachError(safeMsg`${physicalId} has deletion protection on, so cdkd did not detach it from global cluster ${globalClusterId}; turn it off (cdkd destroy --remove-protection does) and re-run`);
31782
+ const clusterArn = cluster.DBClusterArn;
31783
+ if (typeof clusterArn !== "string" || clusterArn === "") throw new GlobalClusterDetachError(safeMsg`could not read the ARN of ${physicalId} to detach it from global cluster ${globalClusterId}`);
31784
+ const startTime = Date.now();
31785
+ let delay = 5e3;
31786
+ const backOff = async () => {
31787
+ if (Date.now() - startTime >= DETACH_MAX_WAIT_MS) throw new GlobalClusterDetachError(safeMsg`timed out waiting for ${physicalId} to leave global cluster ${globalClusterId}`);
31788
+ await this.sleep(delay);
31789
+ delay = Math.min(delay * 2, 1e4);
31790
+ };
31791
+ const readMembers = async (build) => {
31792
+ try {
31793
+ return (await this.getClient().send(new DescribeGlobalClustersCommand$1({ GlobalClusterIdentifier: globalClusterId }))).GlobalClusters?.[0]?.GlobalClusterMembers ?? [];
31794
+ } catch (error) {
31795
+ const name = awsErrorName(error);
31796
+ if (name === "GlobalClusterNotFoundFault") return [];
31797
+ if (TRANSIENT_DETACH_FAULTS.has(name)) return void 0;
31798
+ throw this.wrapGlobalClusterDetachError(error, mask, build);
31799
+ }
31800
+ };
31801
+ const isMember = async (build) => {
31802
+ return (await readMembers(build))?.some((member) => member.DBClusterArn === clusterArn);
31803
+ };
31804
+ for (;;) {
31805
+ const members = await readMembers((text) => safeMsg`could not read whether ${physicalId} is a member of global cluster ${globalClusterId} (${text})`);
31806
+ if (members !== void 0) {
31807
+ const own = members.find((member) => member.DBClusterArn === clusterArn);
31808
+ if (own === void 0) return false;
31809
+ const others = members.filter((member) => member.DBClusterArn !== clusterArn).map((member) => /^arn:[^:]*:rds:[^:]*:[^:]*:cluster:(.+)$/.exec(member.DBClusterArn ?? "")?.[1] ?? "(unnamed)");
31810
+ if (own.IsWriter === true && others.length > 0) throw new GlobalClusterDetachError(safeMsg`${physicalId} is the primary of global cluster ${globalClusterId}, which still has other members (${others.join(", ")}); detach or delete them first, then re-run`);
31811
+ break;
31812
+ }
31813
+ await backOff();
31814
+ }
31815
+ let globalBusySince;
31816
+ for (;;) try {
31817
+ await this.getClient().send(new RemoveFromGlobalClusterCommand$1({
31818
+ GlobalClusterIdentifier: globalClusterId,
31819
+ DbClusterIdentifier: clusterArn
31820
+ }));
31821
+ progress.stripped = true;
31822
+ this.logger.info(beforeDelete ? safeMsg`Detaching DocDB DBCluster ${logicalId} from global cluster ${globalClusterId} before the delete` : safeMsg`Detaching DocDB DBCluster ${logicalId} from global cluster ${globalClusterId}: GlobalClusterIdentifier was removed`);
31823
+ break;
31824
+ } catch (error) {
31825
+ const name = awsErrorName(error);
31826
+ if (name === "GlobalClusterNotFoundFault") return false;
31827
+ if (name === "DBClusterNotFoundFault") {
31828
+ progress.stripped = true;
31829
+ break;
31830
+ }
31831
+ if (name === "InvalidGlobalClusterStateFault") {
31832
+ globalBusySince ??= Date.now();
31833
+ if (Date.now() - globalBusySince >= GLOBAL_CLUSTER_BUSY_MAX_WAIT_MS) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${text})`);
31834
+ }
31835
+ if (!TRANSIENT_DETACH_FAULTS.has(name)) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${text})`);
31836
+ await backOff();
31837
+ }
31838
+ for (;;) {
31839
+ if (await isMember((text) => safeMsg`could not confirm ${physicalId} left global cluster ${globalClusterId} (${text})`) === false) {
31840
+ let after;
31841
+ try {
31842
+ after = await this.describeDBCluster(physicalId);
31843
+ } catch (error) {
31844
+ if (!TRANSIENT_DETACH_FAULTS.has(awsErrorName(error))) throw error;
31845
+ await backOff();
31846
+ continue;
31847
+ }
31848
+ if (after === void 0) return true;
31849
+ this.logger.debug(safeMsg`DocDB DBCluster ${physicalId} status after the detach: ${after.Status}`);
31850
+ if (after.Status === "available") return true;
31851
+ }
31852
+ await backOff();
31752
31853
  }
31753
31854
  }
31754
31855
  async createDBInstance(logicalId, resourceType, properties, mask, replayingState) {
@@ -31864,6 +31965,53 @@ var DocDBProvider = class {
31864
31965
  refuseBlock(logicalId, resourceType, physicalId, text) {
31865
31966
  throw markNonRetryable(new ProvisioningError(safeMsg`${resourceType === "AWS::DocDB::DBInstance" ? "DocDB DBInstance" : "DocDB DBCluster"} ${logicalId}: ${text}; nothing was changed.`, resourceType, logicalId, physicalId));
31866
31967
  }
31968
+ async planGlobalClusterUpdate(physicalId, properties, previousProperties, resourceType, logicalId, origin, fromReadback) {
31969
+ const desired = properties["GlobalClusterIdentifier"];
31970
+ if (fromReadback && desired === void 0) return previousProperties["GlobalClusterIdentifier"] !== void 0 ? { kind: "keep" } : { kind: "none" };
31971
+ const readable = readableGlobalClusterId(desired);
31972
+ const desiredId = docdbGlobalClusterId(desired);
31973
+ const previousId = docdbGlobalClusterId(previousProperties["GlobalClusterIdentifier"]);
31974
+ if (readable && desiredId === previousId) return { kind: "none" };
31975
+ if (readable && desiredId === void 0 && previousId !== void 0) {
31976
+ if (origin.stateBorne) {
31977
+ const member = await this.liveGlobalClusterMatches(physicalId, previousId);
31978
+ if (member === void 0) this.logger.warn(safeMsg`${logicalId} (${resourceType}): the cluster's membership of global cluster ${previousId} could not be read, so the record treats it as absent; if it is still a member, a later destroy may need aws docdb remove-from-global-cluster first.`);
31979
+ if (member !== true) return { kind: "none" };
31980
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): the restored state has no GlobalClusterIdentifier, but cdkd did not add the cluster to global cluster ${previousId} (it was already a member), so it leaves it there.`);
31981
+ return { kind: "keep" };
31982
+ }
31983
+ return {
31984
+ kind: "detach",
31985
+ globalClusterId: previousId
31986
+ };
31987
+ }
31988
+ if (readable && await this.liveGlobalClusterMatches(physicalId, desiredId) === true) return { kind: "none" };
31989
+ const text = readable ? "Changing GlobalClusterIdentifier to a different global cluster is not supported unless the cluster is already part of the target global cluster (CloudFormation refuses it too). To join a different global cluster, replace the cluster, for example with a new DBClusterIdentifier" : "GlobalClusterIdentifier is not a string";
31990
+ if (!origin.stateBorne) this.refuseBlock(logicalId, resourceType, physicalId, text);
31991
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${text}; the cluster keeps its current global cluster membership.`);
31992
+ return { kind: "keep" };
31993
+ }
31994
+ async liveGlobalClusterMatches(physicalId, desiredId) {
31995
+ try {
31996
+ const arn = (await this.describeDBCluster(physicalId))?.DBClusterArn;
31997
+ if (typeof arn !== "string" || arn === "") return void 0;
31998
+ let liveId;
31999
+ let marker;
32000
+ do {
32001
+ const page = await this.getClient().send(new DescribeGlobalClustersCommand$1({ ...marker !== void 0 && { Marker: marker } }));
32002
+ const holder = (page.GlobalClusters ?? []).find((global) => (global.GlobalClusterMembers ?? []).some((member) => member.DBClusterArn === arn));
32003
+ if (holder !== void 0) {
32004
+ liveId = holder.GlobalClusterIdentifier;
32005
+ break;
32006
+ }
32007
+ marker = page.Marker;
32008
+ } while (marker);
32009
+ return liveId === desiredId;
32010
+ } catch (error) {
32011
+ this.logger.debug(safeMsg`Could not read a DocDB cluster's global cluster membership: ${describeAwsFailure(error).summary}`);
32012
+ return;
32013
+ }
32014
+ }
31867
32015
  readClusterBlocks(properties, resourceType, logicalId, origin, creating) {
31868
32016
  const leaveOut = (key) => {
31869
32017
  this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded ${key} is unusable, so it is not sent.`);
@@ -32149,6 +32297,7 @@ var DocDBProvider = class {
32149
32297
  getDriftUnknownPaths(resourceType) {
32150
32298
  if (resourceType === "AWS::DocDB::DBCluster") return [
32151
32299
  "AvailabilityZones",
32300
+ "GlobalClusterIdentifier",
32152
32301
  "MasterUserSecretKmsKeyId",
32153
32302
  "RotateMasterUserPassword"
32154
32303
  ];
@@ -32307,8 +32456,7 @@ function securityGroupListChanged(sent, previous) {
32307
32456
  return [...sent].sort().join(" ") !== [...before].sort().join(" ");
32308
32457
  }
32309
32458
 
32310
- //#endregion
32311
- //#region src/provisioning/providers/docdb-subnet-group-provider.ts
32459
+ // src/provisioning/providers/docdb-subnet-group-provider.ts
32312
32460
  var DocDBSubnetGroupProvider = class {
32313
32461
  docdbClient;
32314
32462
  createClient;
@@ -32445,8 +32593,7 @@ var DocDBSubnetGroupProvider = class {
32445
32593
  }
32446
32594
  };
32447
32595
 
32448
- //#endregion
32449
- //#region src/provisioning/providers/route53-provider.ts
32596
+ // src/provisioning/providers/route53-provider.ts
32450
32597
  function isZoneDisabledForMutationError(error) {
32451
32598
  return error instanceof Error && error.message.includes("is marked disabled for mutation");
32452
32599
  }
@@ -33601,8 +33748,7 @@ var Route53Provider = class {
33601
33748
  }
33602
33749
  };
33603
33750
 
33604
- //#endregion
33605
- //#region src/provisioning/providers/wafv2-provider.ts
33751
+ // src/provisioning/providers/wafv2-provider.ts
33606
33752
  function sanitizeDescription(value) {
33607
33753
  if (value === void 0 || value === null) return void 0;
33608
33754
  if (typeof value === "string" && value.length === 0) return void 0;
@@ -34068,8 +34214,7 @@ var WAFv2WebACLProvider = class {
34068
34214
  }
34069
34215
  };
34070
34216
 
34071
- //#endregion
34072
- //#region src/provisioning/providers/cognito-provider.ts
34217
+ // src/provisioning/providers/cognito-provider.ts
34073
34218
  const USER_POOL_ECHO_MEMBERS = [
34074
34219
  "LambdaConfig",
34075
34220
  "UserPoolAddOns",
@@ -35216,11 +35361,11 @@ var CognitoUserPoolProvider = class {
35216
35361
  }
35217
35362
  };
35218
35363
 
35219
- //#endregion
35220
- //#region src/provisioning/providers/elasticache-provider.ts
35364
+ // src/provisioning/providers/elasticache-provider.ts
35221
35365
  const CACHE_DELETE_WAIT_MS = Math.max(6e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "DELETE"));
35222
35366
  const NODE_TYPE_MODIFY_WAIT_MS = Math.max(36e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "UPDATE"));
35223
35367
  const MODIFY_DROPPED_AFTER_MS = 12e4;
35368
+ const TERMINAL_CLUSTER_STATUSES = /* @__PURE__ */ new Set(["restore-failed", "incompatible-network"]);
35224
35369
  function availabilityZonesNotCovered(a, b) {
35225
35370
  const remaining = [...b];
35226
35371
  const out = [];
@@ -35325,6 +35470,7 @@ var ElastiCacheProvider = class {
35325
35470
  "Tags",
35326
35471
  "NotificationTopicArn",
35327
35472
  "SnapshotName",
35473
+ "SnapshotArns",
35328
35474
  "LogDeliveryConfigurations",
35329
35475
  "NetworkType",
35330
35476
  "IpDiscovery",
@@ -35476,6 +35622,7 @@ var ElastiCacheProvider = class {
35476
35622
  AutoMinorVersionUpgrade: properties["AutoMinorVersionUpgrade"],
35477
35623
  NotificationTopicArn: properties["NotificationTopicArn"],
35478
35624
  SnapshotName: properties["SnapshotName"],
35625
+ SnapshotArns: properties["SnapshotArns"],
35479
35626
  LogDeliveryConfigurations: properties["LogDeliveryConfigurations"],
35480
35627
  NetworkType: properties["NetworkType"],
35481
35628
  IpDiscovery: properties["IpDiscovery"],
@@ -35725,6 +35872,7 @@ var ElastiCacheProvider = class {
35725
35872
  const cluster = await this.describeCacheCluster(cacheClusterId);
35726
35873
  const status = cluster?.CacheClusterStatus;
35727
35874
  this.logger.debug(`CacheCluster ${cacheClusterId} status: ${status}`);
35875
+ if (status !== void 0 && TERMINAL_CLUSTER_STATUSES.has(status)) throw new Error(safeMsg`CacheCluster ${cacheClusterId} is ${status} and will not become available. Check the cluster's events (aws elasticache describe-events --source-type cache-cluster --source-identifier ${cacheClusterId}) for the reason.`);
35728
35876
  const liveNodeType = cluster?.CacheNodeType;
35729
35877
  const removalDone = removedNodeIds.length === 0 || cluster?.CacheNodes !== void 0 && !cluster.CacheNodes.some((n) => n.CacheNodeId !== void 0 && removedNodeIds.includes(n.CacheNodeId));
35730
35878
  if (status === "available" && removalDone && (expectedNodeType === void 0 || liveNodeType === expectedNodeType)) return;
@@ -35756,6 +35904,9 @@ var ElastiCacheProvider = class {
35756
35904
  sleep(ms) {
35757
35905
  return new Promise((resolve) => setTimeout(resolve, ms));
35758
35906
  }
35907
+ getDriftUnknownPaths(resourceType) {
35908
+ return resourceType === "AWS::ElastiCache::CacheCluster" ? ["SnapshotArns", "SnapshotName"] : [];
35909
+ }
35759
35910
  async readCurrentState(physicalId, _logicalId, resourceType) {
35760
35911
  switch (resourceType) {
35761
35912
  case "AWS::ElastiCache::CacheCluster": return this.readCacheCluster(physicalId);
@@ -35863,8 +36014,7 @@ var ElastiCacheProvider = class {
35863
36014
  }
35864
36015
  };
35865
36016
 
35866
- //#endregion
35867
- //#region src/provisioning/providers/servicediscovery-provider.ts
36017
+ // src/provisioning/providers/servicediscovery-provider.ts
35868
36018
  const PUBLIC_DNS_NAMESPACE_DEFAULT_SOA_TTL = 60;
35869
36019
  const PRIVATE_DNS_NAMESPACE_DEFAULT_SOA_TTL = 15;
35870
36020
  const CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES = 9;
@@ -36797,8 +36947,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
36797
36947
  }
36798
36948
  };
36799
36949
 
36800
- //#endregion
36801
- //#region src/provisioning/providers/appsync-provider.ts
36950
+ // src/provisioning/providers/appsync-provider.ts
36802
36951
  const createGraphqlApiLatch = new AmbiguousCreateLatch("CreateGraphqlApi");
36803
36952
  const graphqlApisCreatedByThisProcess = new RecentIdSet();
36804
36953
  const MAX_GRAPHQL_API_LIST_PAGES = 40;
@@ -38460,8 +38609,7 @@ var AppSyncProvider = class {
38460
38609
  }
38461
38610
  };
38462
38611
 
38463
- //#endregion
38464
- //#region src/provisioning/providers/glue-provider.ts
38612
+ // src/provisioning/providers/glue-provider.ts
38465
38613
  const GLUE_TABLE_ID_FORMAT = {
38466
38614
  label: "Glue Table",
38467
38615
  segments: ["databaseName", "tableName"]
@@ -40802,8 +40950,7 @@ var GlueTriggerProvider = class {
40802
40950
  }
40803
40951
  };
40804
40952
 
40805
- //#endregion
40806
- //#region src/provisioning/providers/kms-provider.ts
40953
+ // src/provisioning/providers/kms-provider.ts
40807
40954
  const createKeyLatch = new AmbiguousCreateLatch("CreateKey");
40808
40955
  const keysCreatedByThisProcess = new RecentIdSet();
40809
40956
  const pendingKeys = /* @__PURE__ */ new Map();
@@ -41434,8 +41581,7 @@ function templateBool(value) {
41434
41581
  return Boolean(value);
41435
41582
  }
41436
41583
 
41437
- //#endregion
41438
- //#region src/provisioning/providers/budgets-budget-provider.ts
41584
+ // src/provisioning/providers/budgets-budget-provider.ts
41439
41585
  const BUDGET_LIST_WHAT = {
41440
41586
  NotificationsWithSubscribers: "entries with a Notification (NotificationType, ComparisonOperator, numeric Threshold) and Subscribers (SubscriptionType, Address)",
41441
41587
  ResourceTags: "tags with a string Key"
@@ -42170,8 +42316,7 @@ var BudgetsBudgetProvider = class {
42170
42316
  }
42171
42317
  };
42172
42318
 
42173
- //#endregion
42174
- //#region src/provisioning/providers/kinesis-provider.ts
42319
+ // src/provisioning/providers/kinesis-provider.ts
42175
42320
  function isKmsEncryption(value) {
42176
42321
  if (!value) return false;
42177
42322
  return value["EncryptionType"] === "KMS";
@@ -42831,8 +42976,7 @@ var KinesisStreamProvider = class {
42831
42976
  }
42832
42977
  };
42833
42978
 
42834
- //#endregion
42835
- //#region src/provisioning/providers/kinesis-streamconsumer-provider.ts
42979
+ // src/provisioning/providers/kinesis-streamconsumer-provider.ts
42836
42980
  function consumerArnParts(consumerArn) {
42837
42981
  const at = consumerArn.lastIndexOf("/consumer/");
42838
42982
  if (at <= 0) return void 0;
@@ -43053,8 +43197,7 @@ function tagListToMap(tags) {
43053
43197
  return Object.fromEntries(tags.map((t) => [t.Key, t.Value]));
43054
43198
  }
43055
43199
 
43056
- //#endregion
43057
- //#region src/provisioning/providers/scheduler-schedule-provider.ts
43200
+ // src/provisioning/providers/scheduler-schedule-provider.ts
43058
43201
  const RECORDED_CREATION_DATE_KEY = "cdkd:CreationDate";
43059
43202
  function recordedCreationDate(attributes) {
43060
43203
  const value = attributes?.[RECORDED_CREATION_DATE_KEY];
@@ -43490,8 +43633,7 @@ var SchedulerScheduleProvider = class {
43490
43633
  }
43491
43634
  };
43492
43635
 
43493
- //#endregion
43494
- //#region src/provisioning/providers/pipes-provider.ts
43636
+ // src/provisioning/providers/pipes-provider.ts
43495
43637
  const PIPE_TYPE = "AWS::Pipes::Pipe";
43496
43638
  function isPipeName(id) {
43497
43639
  return /^[.\-_A-Za-z0-9]{1,64}$/.test(id);
@@ -44125,8 +44267,7 @@ var PipesPipeProvider = class {
44125
44267
  }
44126
44268
  };
44127
44269
 
44128
- //#endregion
44129
- //#region src/provisioning/providers/server-clock.ts
44270
+ // src/provisioning/providers/server-clock.ts
44130
44271
  const SERVER_CLOCK_MARGIN_MS = 5e3;
44131
44272
  const CLOCK_FALLBACK_MARGIN_MS = 3e5;
44132
44273
  const readings = /* @__PURE__ */ new WeakMap();
@@ -44163,8 +44304,7 @@ function earliestOwnCreationTime(firstSentLocalMs, reading) {
44163
44304
  return firstSentLocalMs + (reading.serverDateMs - reading.receivedAtMs) - SERVER_CLOCK_MARGIN_MS;
44164
44305
  }
44165
44306
 
44166
- //#endregion
44167
- //#region src/provisioning/providers/efs-provider.ts
44307
+ // src/provisioning/providers/efs-provider.ts
44168
44308
  function samePosixUser(requested, described) {
44169
44309
  if (requested == null || described == null) return requested == null && described == null;
44170
44310
  const gids = (user) => JSON.stringify([...new Set(user.SecondaryGids ?? [])].sort((a, b) => a - b));
@@ -45006,8 +45146,7 @@ var EFSProvider = class {
45006
45146
  }
45007
45147
  };
45008
45148
 
45009
- //#endregion
45010
- //#region src/provisioning/providers/fsx-filesystem-provider.ts
45149
+ // src/provisioning/providers/fsx-filesystem-provider.ts
45011
45150
  const DEFAULT_MAX_WAIT_MS$3 = 36e5;
45012
45151
  const DEFAULT_POLL_INTERVAL_MS$3 = 15e3;
45013
45152
  const FILE_SYSTEM_ID_PATTERN = /^fs-[0-9a-f]+$/;
@@ -46237,13 +46376,12 @@ var FSxFileSystemProvider = class {
46237
46376
  }
46238
46377
  };
46239
46378
 
46240
- //#endregion
46241
- //#region src/provisioning/emr-configuration.ts
46242
- function isRecord$1(value) {
46379
+ // src/provisioning/emr-configuration.ts
46380
+ function isRecord$2(value) {
46243
46381
  return typeof value === "object" && value !== null && !Array.isArray(value);
46244
46382
  }
46245
46383
  function toSdkConfiguration(raw) {
46246
- if (!isRecord$1(raw)) return raw;
46384
+ if (!isRecord$2(raw)) return raw;
46247
46385
  const { ConfigurationProperties, Configurations, ...rest } = raw;
46248
46386
  return {
46249
46387
  ...rest,
@@ -46260,9 +46398,9 @@ function toSdkStepConfigs(value) {
46260
46398
  if (value === void 0) return void 0;
46261
46399
  if (!Array.isArray(value)) return value;
46262
46400
  return value.map((step) => {
46263
- if (!isRecord$1(step)) return step;
46401
+ if (!isRecord$2(step)) return step;
46264
46402
  const hadoopJarStep = step["HadoopJarStep"];
46265
- if (!isRecord$1(hadoopJarStep) || hadoopJarStep["StepProperties"] === void 0) return step;
46403
+ if (!isRecord$2(hadoopJarStep) || hadoopJarStep["StepProperties"] === void 0) return step;
46266
46404
  const { StepProperties, ...restHadoopJarStep } = hadoopJarStep;
46267
46405
  return {
46268
46406
  ...step,
@@ -46277,7 +46415,7 @@ function toSdkInstanceTypeConfigs(value) {
46277
46415
  if (value === void 0) return void 0;
46278
46416
  if (!Array.isArray(value)) return value;
46279
46417
  return value.map((instanceTypeConfig) => {
46280
- if (!isRecord$1(instanceTypeConfig) || instanceTypeConfig["Configurations"] === void 0) return instanceTypeConfig;
46418
+ if (!isRecord$2(instanceTypeConfig) || instanceTypeConfig["Configurations"] === void 0) return instanceTypeConfig;
46281
46419
  return {
46282
46420
  ...instanceTypeConfig,
46283
46421
  Configurations: toSdkConfigurations(instanceTypeConfig["Configurations"])
@@ -46285,8 +46423,7 @@ function toSdkInstanceTypeConfigs(value) {
46285
46423
  });
46286
46424
  }
46287
46425
 
46288
- //#endregion
46289
- //#region src/provisioning/providers/emr-instance-group-config-provider.ts
46426
+ // src/provisioning/providers/emr-instance-group-config-provider.ts
46290
46427
  const DEFAULT_MAX_WAIT_MS$2 = 36e5;
46291
46428
  const DEFAULT_POLL_INTERVAL_MS$2 = 15e3;
46292
46429
  const READY_STATES$1 = /* @__PURE__ */ new Set(["RUNNING"]);
@@ -46660,8 +46797,7 @@ var EMRInstanceGroupConfigProvider = class {
46660
46797
  }
46661
46798
  };
46662
46799
 
46663
- //#endregion
46664
- //#region src/provisioning/providers/emr-instance-fleet-config-provider.ts
46800
+ // src/provisioning/providers/emr-instance-fleet-config-provider.ts
46665
46801
  const DEFAULT_MAX_WAIT_MS$1 = 36e5;
46666
46802
  const DEFAULT_POLL_INTERVAL_MS$1 = 15e3;
46667
46803
  const READY_STATES = /* @__PURE__ */ new Set(["RUNNING"]);
@@ -47009,8 +47145,7 @@ var EMRInstanceFleetConfigProvider = class {
47009
47145
  }
47010
47146
  };
47011
47147
 
47012
- //#endregion
47013
- //#region src/provisioning/providers/emr-cluster-provider.ts
47148
+ // src/provisioning/providers/emr-cluster-provider.ts
47014
47149
  const DEFAULT_MAX_WAIT_MS = 36e5;
47015
47150
  const DEFAULT_POLL_INTERVAL_MS = 15e3;
47016
47151
  const CREATE_READY_STATES = /* @__PURE__ */ new Set(["WAITING", "RUNNING"]);
@@ -48012,8 +48147,7 @@ var EMRClusterProvider = class {
48012
48147
  }
48013
48148
  };
48014
48149
 
48015
- //#endregion
48016
- //#region src/provisioning/providers/firehose-provider.ts
48150
+ // src/provisioning/providers/firehose-provider.ts
48017
48151
  const ENCRYPTION_KEY = "DeliveryStreamEncryptionConfigurationInput";
48018
48152
  function readEncryptionInput(value, emptyIsAbsent) {
48019
48153
  if (value === void 0 || value === null) return { kind: "absent" };
@@ -48106,7 +48240,8 @@ var FirehoseProvider = class {
48106
48240
  "AmazonopensearchserviceDestinationConfiguration",
48107
48241
  "SplunkDestinationConfiguration",
48108
48242
  "AmazonOpenSearchServerlessDestinationConfiguration",
48109
- "DeliveryStreamEncryptionConfigurationInput"
48243
+ "DeliveryStreamEncryptionConfigurationInput",
48244
+ "IcebergDestinationConfiguration"
48110
48245
  ])]]);
48111
48246
  getClient() {
48112
48247
  if (!this.client) {
@@ -48258,6 +48393,7 @@ var FirehoseProvider = class {
48258
48393
  VpcConfiguration: aossConfig["VpcConfiguration"]
48259
48394
  };
48260
48395
  }
48396
+ if (properties["IcebergDestinationConfiguration"]) input.IcebergDestinationConfiguration = this.mapIcebergDestinationConfiguration(properties["IcebergDestinationConfiguration"]);
48261
48397
  if (properties["DeliveryStreamEncryptionConfigurationInput"]) {
48262
48398
  const encConfig = properties["DeliveryStreamEncryptionConfigurationInput"];
48263
48399
  input.DeliveryStreamEncryptionConfigurationInput = {
@@ -48837,6 +48973,15 @@ var FirehoseProvider = class {
48837
48973
  IcebergDestinationUpdate: this.mapIcebergConfigToUpdate(nextConfig)
48838
48974
  }));
48839
48975
  }
48976
+ mapIcebergDestinationConfiguration(config) {
48977
+ const result = this.mapIcebergConfigToUpdate(config);
48978
+ const catalog = config["CatalogConfiguration"];
48979
+ if (catalog !== void 0) result.CatalogConfiguration = {
48980
+ ...catalog["CatalogArn"] !== void 0 && { CatalogARN: catalog["CatalogArn"] },
48981
+ ...catalog["WarehouseLocation"] !== void 0 && { WarehouseLocation: catalog["WarehouseLocation"] }
48982
+ };
48983
+ return result;
48984
+ }
48840
48985
  mapIcebergConfigToUpdate(config) {
48841
48986
  const result = {};
48842
48987
  if (config["DestinationTableConfigurationList"] !== void 0) result.DestinationTableConfigurationList = config["DestinationTableConfigurationList"];
@@ -48845,12 +48990,11 @@ var FirehoseProvider = class {
48845
48990
  if (config["BufferingHints"] !== void 0) result.BufferingHints = config["BufferingHints"];
48846
48991
  if (config["CloudWatchLoggingOptions"] !== void 0) result.CloudWatchLoggingOptions = config["CloudWatchLoggingOptions"];
48847
48992
  if (config["ProcessingConfiguration"] !== void 0) result.ProcessingConfiguration = config["ProcessingConfiguration"];
48848
- if (config["S3BackupMode"] !== void 0) result.S3BackupMode = config["S3BackupMode"];
48993
+ if (config["s3BackupMode"] !== void 0) result.S3BackupMode = config["s3BackupMode"];
48849
48994
  if (config["RetryOptions"] !== void 0) result.RetryOptions = config["RetryOptions"];
48850
48995
  const roleArn = config["RoleARN"] ?? config["RoleArn"];
48851
48996
  if (roleArn !== void 0) result.RoleARN = roleArn;
48852
48997
  if (config["AppendOnly"] !== void 0) result.AppendOnly = config["AppendOnly"];
48853
- if (config["CatalogConfiguration"] !== void 0) result.CatalogConfiguration = config["CatalogConfiguration"];
48854
48998
  if (config["S3Configuration"] !== void 0) result.S3Configuration = this.mapS3DestinationConfiguration(config["S3Configuration"]);
48855
48999
  return result;
48856
49000
  }
@@ -48942,6 +49086,7 @@ var FirehoseProvider = class {
48942
49086
  if (directPut?.ThroughputHintInMBs !== void 0) result["DirectPutSourceConfiguration"] = { ThroughputHintInMBs: directPut.ThroughputHintInMBs };
48943
49087
  const dest = desc.Destinations?.[0];
48944
49088
  if (dest?.ExtendedS3DestinationDescription) result["ExtendedS3DestinationConfiguration"] = mapExtendedS3DescriptionToCfn(dest.ExtendedS3DestinationDescription);
49089
+ else if (dest?.IcebergDestinationDescription) result["IcebergDestinationConfiguration"] = mapIcebergDescriptionToCfn(dest.IcebergDestinationDescription);
48945
49090
  else if (dest?.S3DestinationDescription) result["S3DestinationConfiguration"] = mapS3DescriptionToCfn(dest.S3DestinationDescription);
48946
49091
  else if (dest?.RedshiftDestinationDescription) result["RedshiftDestinationConfiguration"] = mapRedshiftDescriptionToCfn(dest.RedshiftDestinationDescription);
48947
49092
  else if (dest?.ElasticsearchDestinationDescription) result["ElasticsearchDestinationConfiguration"] = mapNonS3DestinationToCfn(dest.ElasticsearchDestinationDescription);
@@ -49104,6 +49249,31 @@ function mapRedshiftDescriptionToCfn(desc) {
49104
49249
  if (desc["S3BackupDescription"]) out["S3BackupConfiguration"] = mapS3DescriptionToCfn(desc["S3BackupDescription"]);
49105
49250
  return out;
49106
49251
  }
49252
+ function mapIcebergDescriptionToCfn(desc) {
49253
+ const out = {};
49254
+ for (const k of [
49255
+ "DestinationTableConfigurationList",
49256
+ "SchemaEvolutionConfiguration",
49257
+ "TableCreationConfiguration",
49258
+ "BufferingHints",
49259
+ "CloudWatchLoggingOptions",
49260
+ "ProcessingConfiguration",
49261
+ "RetryOptions",
49262
+ "RoleARN",
49263
+ "AppendOnly"
49264
+ ]) {
49265
+ const v = pickDefinedDeep(desc[k]);
49266
+ if (v !== void 0) out[k] = v;
49267
+ }
49268
+ if (desc["S3BackupMode"] !== void 0) out["s3BackupMode"] = desc["S3BackupMode"];
49269
+ const catalog = desc["CatalogConfiguration"];
49270
+ if (catalog) out["CatalogConfiguration"] = {
49271
+ ...catalog["CatalogARN"] !== void 0 && { CatalogArn: catalog["CatalogARN"] },
49272
+ ...catalog["WarehouseLocation"] !== void 0 && { WarehouseLocation: catalog["WarehouseLocation"] }
49273
+ };
49274
+ if (desc["S3DestinationDescription"]) out["S3Configuration"] = mapS3DescriptionToCfn(desc["S3DestinationDescription"]);
49275
+ return out;
49276
+ }
49107
49277
  function mapHttpEndpointDescriptionToCfn(desc) {
49108
49278
  const out = {};
49109
49279
  for (const k of [
@@ -49125,8 +49295,7 @@ function mapHttpEndpointDescriptionToCfn(desc) {
49125
49295
  return out;
49126
49296
  }
49127
49297
 
49128
- //#endregion
49129
- //#region src/provisioning/providers/cloudtrail-provider.ts
49298
+ // src/provisioning/providers/cloudtrail-provider.ts
49130
49299
  const DEFAULT_EVENT_SELECTORS = Object.freeze([Object.freeze({
49131
49300
  ReadWriteType: "All",
49132
49301
  IncludeManagementEvents: true
@@ -49681,8 +49850,7 @@ var CloudTrailProvider = class {
49681
49850
  }
49682
49851
  };
49683
49852
 
49684
- //#endregion
49685
- //#region src/provisioning/providers/codebuild-provider.ts
49853
+ // src/provisioning/providers/codebuild-provider.ts
49686
49854
  const DEFAULT_PROJECT_VISIBILITY = "PRIVATE";
49687
49855
  const DEFAULT_ENCRYPTION_KEY = "alias/aws/s3";
49688
49856
  function readVisibility(properties, mask) {
@@ -49700,6 +49868,89 @@ function readVisibility(properties, mask) {
49700
49868
  ...typeof role === "string" && role !== "" && { resourceAccessRole: role }
49701
49869
  };
49702
49870
  }
49871
+ const DEFAULT_WEBHOOK_BUILD_TYPE = "BUILD";
49872
+ const NEW_PROJECT_WEBHOOK_ATTEMPTS = 4;
49873
+ const NEW_PROJECT_WEBHOOK_RETRY_BASE_MS = 2e3;
49874
+ const DEFAULT_WEBHOOK_SOURCE_LOCATION = "CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION";
49875
+ const DEFAULT_WEBHOOK_SCOPE = "GITHUB_ORGANIZATION";
49876
+ function relayedConnectionRace(error, detail) {
49877
+ if (!(error instanceof Error) || error.name !== "OAuthProviderException") return "";
49878
+ if (detail.includes("security token included in the request is invalid")) return " (The security token included in the request is invalid. (Service: CodeBuild))";
49879
+ if (detail.includes("not authorized to access connection")) return " (The service role is not authorized to perform access to the connection Source.Auth names)";
49880
+ return "";
49881
+ }
49882
+ function isRecord$1(value) {
49883
+ return typeof value === "object" && value !== null && !Array.isArray(value);
49884
+ }
49885
+ function readTriggers(properties, mask) {
49886
+ const triggers = properties["Triggers"];
49887
+ if (triggers == null) return { kind: "unmanaged" };
49888
+ const refuse = (key, expected, value) => ({
49889
+ kind: "unusable",
49890
+ reason: `AWS::CodeBuild::Project ${key} must be ${expected}, got ${JSON.stringify(maskDeep(value, mask))}`
49891
+ });
49892
+ if (!isRecord$1(triggers)) return refuse("Triggers", "an object", triggers);
49893
+ const declared = triggers["Webhook"];
49894
+ const webhook = declared == null ? void 0 : coerceCfnBoolean(declared);
49895
+ if (declared != null && webhook === void 0) return refuse("Triggers.Webhook", "a boolean", declared);
49896
+ const groups = triggers["FilterGroups"];
49897
+ const buildType = triggers["BuildType"];
49898
+ if (webhook !== true) {
49899
+ for (const [key, value, noun] of [[
49900
+ "FilterGroups",
49901
+ groups,
49902
+ "filter groups"
49903
+ ], [
49904
+ "BuildType",
49905
+ buildType,
49906
+ "build type"
49907
+ ]]) if (value != null) return {
49908
+ kind: "unusable",
49909
+ reason: `AWS::CodeBuild::Project Triggers.${key}: cannot specify ${noun} when webhook is disabled`
49910
+ };
49911
+ return { kind: webhook === false ? "disabled" : "unmanaged" };
49912
+ }
49913
+ if (buildType != null && typeof buildType !== "string") return refuse("Triggers.BuildType", "a string", buildType);
49914
+ let filterGroups;
49915
+ if (groups != null) {
49916
+ if (!Array.isArray(groups) || !groups.every(Array.isArray)) return refuse("Triggers.FilterGroups", "a list of filter lists", groups);
49917
+ const rows = groups;
49918
+ if (!rows.every((group) => group.every(isRecord$1))) return refuse("Triggers.FilterGroups", "a list of filter lists", groups);
49919
+ filterGroups = rows.map((group) => group.map((filter) => {
49920
+ const excluded = filter["ExcludeMatchedPattern"];
49921
+ return {
49922
+ type: filter["Type"],
49923
+ pattern: filter["Pattern"],
49924
+ ...excluded != null && { excludeMatchedPattern: coerceCfnBoolean(excluded) ?? excluded }
49925
+ };
49926
+ }));
49927
+ }
49928
+ const policy = triggers["PullRequestBuildPolicy"];
49929
+ if (policy != null && !isRecord$1(policy)) return refuse("Triggers.PullRequestBuildPolicy", "an object", policy);
49930
+ const scope = triggers["ScopeConfiguration"];
49931
+ if (scope != null && !isRecord$1(scope)) return refuse("Triggers.ScopeConfiguration", "an object", scope);
49932
+ if (scope != null) {
49933
+ const source = properties["Source"];
49934
+ if (!isRecord$1(source) || source["Location"] !== DEFAULT_WEBHOOK_SOURCE_LOCATION) return {
49935
+ kind: "unusable",
49936
+ reason: `AWS::CodeBuild::Project Triggers.ScopeConfiguration: cannot specify a scope when the project source location is not ${DEFAULT_WEBHOOK_SOURCE_LOCATION}`
49937
+ };
49938
+ }
49939
+ return {
49940
+ kind: "enabled",
49941
+ ...filterGroups !== void 0 && { filterGroups },
49942
+ ...buildType != null && { buildType },
49943
+ ...scope != null && { scopeConfiguration: {
49944
+ name: scope["Name"],
49945
+ scope: scope["Scope"] ?? DEFAULT_WEBHOOK_SCOPE,
49946
+ ...scope["Domain"] != null && { domain: scope["Domain"] }
49947
+ } },
49948
+ ...policy != null && { pullRequestBuildPolicy: {
49949
+ requiresCommentApproval: policy["RequiresCommentApproval"],
49950
+ ...policy["ApproverRoles"] != null && { approverRoles: policy["ApproverRoles"] }
49951
+ } }
49952
+ };
49953
+ }
49703
49954
  var CodeBuildProvider = class {
49704
49955
  client;
49705
49956
  createClient;
@@ -49730,7 +49981,8 @@ var CodeBuildProvider = class {
49730
49981
  "SourceVersion",
49731
49982
  "AutoRetryLimit",
49732
49983
  "Visibility",
49733
- "ResourceAccessRole"
49984
+ "ResourceAccessRole",
49985
+ "Triggers"
49734
49986
  ])]]);
49735
49987
  getClient() {
49736
49988
  if (!this.client) {
@@ -49928,6 +50180,11 @@ var CodeBuildProvider = class {
49928
50180
  if (context?.replayingState !== true) throw new ProvisioningError(visibilityRead.reason, resourceType, logicalId);
49929
50181
  this.logger.warn(mask(`${visibilityRead.reason}. Replaying a state record, so CodeBuild Project ${logicalId} is left ${DEFAULT_PROJECT_VISIBILITY} with no resource access role rather than refusing the restore`));
49930
50182
  }
50183
+ const triggersRead = readTriggers(properties, mask);
50184
+ if (triggersRead.kind === "unusable") {
50185
+ if (context?.replayingState !== true) throw new ProvisioningError(triggersRead.reason, resourceType, logicalId);
50186
+ this.logger.warn(mask(`${triggersRead.reason}. Replaying a state record, so CodeBuild Project ${logicalId} gets no webhook rather than refusing the restore`));
50187
+ }
49931
50188
  let createdName;
49932
50189
  try {
49933
50190
  const input = this.mapProperties(() => generatedNameFor("AWS::CodeBuild::Project", logicalId), properties);
@@ -49936,6 +50193,7 @@ var CodeBuildProvider = class {
49936
50193
  const projectArn = result.project.arn;
49937
50194
  createdName = projectName;
49938
50195
  reportCreatedResource(logicalId, resourceType, createdName);
50196
+ if (triggersRead.kind === "enabled") await this.createWebhookOnNewProject(projectName, triggersRead);
49939
50197
  if (visibilityRead.kind === "usable" && (visibilityRead.visibility !== DEFAULT_PROJECT_VISIBILITY || visibilityRead.resourceAccessRole !== void 0)) await this.applyVisibility(projectArn, visibilityRead);
49940
50198
  this.logger.debug(`Successfully created CodeBuild Project ${logicalId}: ${projectName}`);
49941
50199
  return {
@@ -49945,11 +50203,67 @@ var CodeBuildProvider = class {
49945
50203
  } catch (error) {
49946
50204
  if (createdName !== void 0) markAuxiliaryFailure(error, logicalId);
49947
50205
  const cause = error instanceof Error ? error : void 0;
49948
- const thrown = this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
50206
+ const thrown = this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause), createdName === void 0);
49949
50207
  if (createdName !== void 0) markCreatedBeforeFailure(thrown, logicalId, resourceType, createdName);
49950
50208
  throw thrown;
49951
50209
  }
49952
50210
  }
50211
+ async createWebhook(projectName, read) {
50212
+ await this.getCreateClient().send(new CreateWebhookCommand({
50213
+ projectName,
50214
+ ...read.filterGroups !== void 0 && { filterGroups: read.filterGroups },
50215
+ ...read.buildType !== void 0 && { buildType: read.buildType },
50216
+ ...read.scopeConfiguration !== void 0 && { scopeConfiguration: read.scopeConfiguration },
50217
+ ...read.pullRequestBuildPolicy !== void 0 && { pullRequestBuildPolicy: read.pullRequestBuildPolicy }
50218
+ }));
50219
+ }
50220
+ async createWebhookOnNewProject(projectName, read) {
50221
+ const watch = startInterruptWatch(`The webhook of CodeBuild Project ${projectName}`);
50222
+ let mayHaveLanded = false;
50223
+ try {
50224
+ for (let attempt = 1;; attempt++) try {
50225
+ await this.createWebhook(projectName, read);
50226
+ return;
50227
+ } catch (error) {
50228
+ if (!(error instanceof Error)) throw error;
50229
+ if (mayHaveLanded && error.name === "ResourceAlreadyExistsException") return;
50230
+ const ambiguous = isAmbiguousOutcomeError(error);
50231
+ mayHaveLanded ||= ambiguous;
50232
+ if (!(ambiguous || isRetryableTransientError(error, error.message)) || attempt === NEW_PROJECT_WEBHOOK_ATTEMPTS) throw markNonRetryable(error);
50233
+ let remaining = NEW_PROJECT_WEBHOOK_RETRY_BASE_MS * 2 ** (attempt - 1);
50234
+ while (remaining > 0) {
50235
+ if (watch.isInterrupted()) throw watch.onInterrupted();
50236
+ const chunk = Math.min(1e3, remaining);
50237
+ await this.sleep(chunk);
50238
+ remaining -= chunk;
50239
+ }
50240
+ if (watch.isInterrupted()) throw watch.onInterrupted();
50241
+ }
50242
+ } finally {
50243
+ watch.dispose();
50244
+ }
50245
+ }
50246
+ sleep(ms) {
50247
+ return new Promise((resolve) => setTimeout(resolve, ms));
50248
+ }
50249
+ async reconcileWebhook(projectName, read, liveWebhook) {
50250
+ if (read.kind === "disabled" && liveWebhook) {
50251
+ await this.getClient().send(new DeleteWebhookCommand({ projectName }));
50252
+ return;
50253
+ }
50254
+ if (read.kind !== "enabled") return;
50255
+ if (!liveWebhook) {
50256
+ await this.createWebhook(projectName, read);
50257
+ return;
50258
+ }
50259
+ await this.getClient().send(new UpdateWebhookCommand({
50260
+ projectName,
50261
+ filterGroups: read.filterGroups ?? [],
50262
+ buildType: read.buildType ?? DEFAULT_WEBHOOK_BUILD_TYPE,
50263
+ rotateSecret: false,
50264
+ ...read.pullRequestBuildPolicy !== void 0 && { pullRequestBuildPolicy: read.pullRequestBuildPolicy }
50265
+ }));
50266
+ }
49953
50267
  async applyVisibility(projectArn, read) {
49954
50268
  await this.getClient().send(new UpdateProjectVisibilityCommand({
49955
50269
  projectArn,
@@ -49961,6 +50275,11 @@ var CodeBuildProvider = class {
49961
50275
  this.logger.debug(`Updating CodeBuild Project ${logicalId}: ${physicalId}`);
49962
50276
  const mask = maskerOrIdentity(context?.maskSecrets);
49963
50277
  assertRegionMatch(context?.expectedRegion ? await this.getClient().config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
50278
+ const triggersRead = readTriggers(properties, mask);
50279
+ if (triggersRead.kind === "unusable") {
50280
+ if (context?.replayingState !== true) throw new ProvisioningError(triggersRead.reason, resourceType, logicalId, physicalId);
50281
+ this.logger.warn(mask(`${triggersRead.reason}. Replaying a state record, so the webhook of CodeBuild Project ${physicalId} is left unchanged`));
50282
+ }
49964
50283
  try {
49965
50284
  const input = this.mapProperties(() => physicalId, properties);
49966
50285
  input.name = physicalId;
@@ -49969,6 +50288,9 @@ var CodeBuildProvider = class {
49969
50288
  if (!declaredKey(properties["EncryptionKey"]) && declaredKey(previousProperties["EncryptionKey"])) input.encryptionKey = DEFAULT_ENCRYPTION_KEY;
49970
50289
  if (properties["Tags"] == null && previousProperties["Tags"] != null) input.tags = [];
49971
50290
  const updated = await this.getClient().send(new UpdateProjectCommand(input));
50291
+ const liveWebhook = updated.project?.webhook;
50292
+ await this.reconcileWebhook(physicalId, triggersRead, liveWebhook != null);
50293
+ if (triggersRead.kind === "enabled" && triggersRead.scopeConfiguration !== void 0 && liveWebhook != null && Object.entries(triggersRead.scopeConfiguration).some(([key, value]) => liveWebhook.scopeConfiguration?.[key] !== value)) this.logger.warn(mask(`The Triggers.ScopeConfiguration of CodeBuild Project ${physicalId} differs from its live webhook, which cannot change scope: the webhook keeps its scope. Delete it with Webhook: false, then deploy Webhook: true to apply the new one`));
49972
50294
  const desiredVisibility = readVisibility(properties, mask);
49973
50295
  const recorded = readVisibility(previousProperties, mask);
49974
50296
  if (desiredVisibility.kind === "unusable") {
@@ -49986,14 +50308,14 @@ var CodeBuildProvider = class {
49986
50308
  };
49987
50309
  } catch (error) {
49988
50310
  const cause = error instanceof Error ? error : void 0;
49989
- throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to update CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
50311
+ throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to update CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), true);
49990
50312
  }
49991
50313
  }
49992
- wrapCaughtError(mask, error, build) {
50314
+ wrapCaughtError(mask, error, build, retryConnectionRace) {
49993
50315
  const failure = describeAwsFailure(error);
49994
50316
  if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
49995
50317
  this.logger.debug(mask(build(mask(failure.detail)).message));
49996
- const wrapped = build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`);
50318
+ const wrapped = build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}` + (retryConnectionRace ? relayedConnectionRace(error, failure.detail) : ""));
49997
50319
  return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
49998
50320
  }
49999
50321
  async delete(logicalId, physicalId, resourceType, _properties, context) {
@@ -50009,7 +50331,7 @@ var CodeBuildProvider = class {
50009
50331
  return;
50010
50332
  }
50011
50333
  const cause = error instanceof Error ? error : void 0;
50012
- const thrown = this.wrapCaughtError(maskerOrIdentity(context?.maskSecrets), error, (text) => new ProvisioningError(`Failed to delete CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
50334
+ const thrown = this.wrapCaughtError(maskerOrIdentity(context?.maskSecrets), error, (text) => new ProvisioningError(`Failed to delete CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), false);
50013
50335
  throw error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
50014
50336
  }
50015
50337
  }
@@ -50189,7 +50511,7 @@ var CodeBuildProvider = class {
50189
50511
  return result;
50190
50512
  }
50191
50513
  getDriftUnknownPaths() {
50192
- return ["Source.Auth"];
50514
+ return ["Source.Auth", "Triggers"];
50193
50515
  }
50194
50516
  async import(input) {
50195
50517
  const explicit = resolveExplicitPhysicalId(input, "Name");
@@ -50206,8 +50528,7 @@ var CodeBuildProvider = class {
50206
50528
  }
50207
50529
  };
50208
50530
 
50209
- //#endregion
50210
- //#region src/provisioning/providers/codecommit-repository-provider.ts
50531
+ // src/provisioning/providers/codecommit-repository-provider.ts
50211
50532
  function toSdkTagMap(tags) {
50212
50533
  if (!tags || tags.length === 0) return void 0;
50213
50534
  const out = {};
@@ -50742,8 +51063,7 @@ var CodeCommitRepositoryProvider = class {
50742
51063
  }
50743
51064
  };
50744
51065
 
50745
- //#endregion
50746
- //#region src/provisioning/providers/dlm-lifecycle-policy-provider.ts
51066
+ // src/provisioning/providers/dlm-lifecycle-policy-provider.ts
50747
51067
  const KEPT_ON_REMOVAL = [
50748
51068
  "Description",
50749
51069
  "ExecutionRoleArn",
@@ -51030,8 +51350,7 @@ var DLMLifecyclePolicyProvider = class {
51030
51350
  }
51031
51351
  };
51032
51352
 
51033
- //#endregion
51034
- //#region src/provisioning/providers/s3-vectors-provider.ts
51353
+ // src/provisioning/providers/s3-vectors-provider.ts
51035
51354
  var S3VectorsProvider = class {
51036
51355
  client;
51037
51356
  createClient;
@@ -51251,8 +51570,7 @@ var S3VectorsProvider = class {
51251
51570
  }
51252
51571
  };
51253
51572
 
51254
- //#endregion
51255
- //#region src/provisioning/providers/s3-directory-bucket-provider.ts
51573
+ // src/provisioning/providers/s3-directory-bucket-provider.ts
51256
51574
  function notEmptyRefusalMessage(bucketName, maskSecrets) {
51257
51575
  const mask = maskerOrIdentity(maskSecrets);
51258
51576
  const secretDerived = mask(bucketName) !== bucketName;
@@ -52077,8 +52395,7 @@ var S3DirectoryBucketProvider = class {
52077
52395
  }
52078
52396
  };
52079
52397
 
52080
- //#endregion
52081
- //#region src/provisioning/providers/s3-tables-provider.ts
52398
+ // src/provisioning/providers/s3-tables-provider.ts
52082
52399
  const S3_TABLES_NAMESPACE_ID_FORMAT = {
52083
52400
  label: "S3 Tables Namespace",
52084
52401
  segments: ["tableBucketARN", "namespace"]
@@ -53295,8 +53612,7 @@ var S3TablesProvider = class {
53295
53612
  }
53296
53613
  };
53297
53614
 
53298
- //#endregion
53299
- //#region src/provisioning/providers/ecr-provider.ts
53615
+ // src/provisioning/providers/ecr-provider.ts
53300
53616
  var ECRProvider = class {
53301
53617
  client;
53302
53618
  createClient;
@@ -53589,8 +53905,7 @@ var ECRProvider = class {
53589
53905
  }
53590
53906
  };
53591
53907
 
53592
- //#endregion
53593
- //#region src/provisioning/nested-stack-messages.ts
53908
+ // src/provisioning/nested-stack-messages.ts
53594
53909
  function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedCount, alsoInterrupted, inspectCommand, holeNote = "") {
53595
53910
  const extra = [];
53596
53911
  if (alsoSkippedCount > 0) extra.push(`${alsoSkippedCount} resource(s) were also skipped`);
@@ -53598,8 +53913,7 @@ function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedC
53598
53913
  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}`;
53599
53914
  }
53600
53915
 
53601
- //#endregion
53602
- //#region src/provisioning/providers/nested-stack-provider.ts
53916
+ // src/provisioning/providers/nested-stack-provider.ts
53603
53917
  function isAbsoluteCrossPlatform(p) {
53604
53918
  return isAbsoluteAssetPath(p);
53605
53919
  }
@@ -53968,8 +54282,7 @@ function inheritedPhysicalNameCopiesOf(bag) {
53968
54282
  return copies === void 0 || copies.size === 0 ? void 0 : new Set(copies);
53969
54283
  }
53970
54284
 
53971
- //#endregion
53972
- //#region src/provisioning/providers/wait-condition-handle-provider.ts
54285
+ // src/provisioning/providers/wait-condition-handle-provider.ts
53973
54286
  var WaitConditionHandleProvider = class {
53974
54287
  logger = getLogger().child("WaitConditionHandleProvider");
53975
54288
  handledProperties = /* @__PURE__ */ new Map([["AWS::CloudFormation::WaitConditionHandle", /* @__PURE__ */ new Set([])]]);
@@ -54006,8 +54319,7 @@ var WaitConditionHandleProvider = class {
54006
54319
  }
54007
54320
  };
54008
54321
 
54009
- //#endregion
54010
- //#region src/provisioning/providers/acm-certificate-provider.ts
54322
+ // src/provisioning/providers/acm-certificate-provider.ts
54011
54323
  function certificateInUseByName(error) {
54012
54324
  let current = error;
54013
54325
  for (let depth = 0; depth < 5 && current instanceof Error; depth++) {
@@ -54405,6 +54717,5 @@ var ACMCertificateProvider = class {
54405
54717
  }
54406
54718
  };
54407
54719
 
54408
- //#endregion
54409
54720
  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 };
54410
- //# sourceMappingURL=provider-classes-B8kkAZqJ.js.map
54721
+ //# sourceMappingURL=provider-classes-DGFOKPO9.js.map