@go-to-k/cdkd 0.320.0 → 0.322.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 (27) hide show
  1. package/dist/{asg-provider-B4XVfH0S.js → asg-provider-BymHNHgo.js} +2 -2
  2. package/dist/{asg-provider-B4XVfH0S.js.map → asg-provider-BymHNHgo.js.map} +1 -1
  3. package/dist/cli.js +4 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/{deploy-engine-BiJyU4j1.js → deploy-engine-BC5pwkqY.js} +217 -74
  6. package/dist/deploy-engine-BC5pwkqY.js.map +1 -0
  7. package/dist/{iam-role-provider-FsEgUieT.js → iam-role-provider-CHwvGLRj.js} +2 -2
  8. package/dist/{iam-role-provider-FsEgUieT.js.map → iam-role-provider-CHwvGLRj.js.map} +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/{neptune-provider-DjjNodrS.js → neptune-provider-BQ92M2BH.js} +2 -2
  12. package/dist/{neptune-provider-DjjNodrS.js.map → neptune-provider-BQ92M2BH.js.map} +1 -1
  13. package/dist/{program-Dm0hn2Sn.js → program-DdncAAar.js} +5 -15
  14. package/dist/program-DdncAAar.js.map +1 -0
  15. package/dist/{provider-classes-BTOXS3cs.js → provider-classes-HcyJmeJE.js} +221 -80
  16. package/dist/provider-classes-HcyJmeJE.js.map +1 -0
  17. package/dist/{rds-provider-C_r5q9NM.js → rds-provider-CFm779-M.js} +49 -5
  18. package/dist/rds-provider-CFm779-M.js.map +1 -0
  19. package/dist/version-BWH_L6He.js +19 -0
  20. package/dist/version-BWH_L6He.js.map +1 -0
  21. package/package.json +1 -1
  22. package/dist/deploy-engine-BiJyU4j1.js.map +0 -1
  23. package/dist/program-Dm0hn2Sn.js.map +0 -1
  24. package/dist/provider-classes-BTOXS3cs.js.map +0 -1
  25. package/dist/rds-provider-C_r5q9NM.js.map +0 -1
  26. package/dist/version-CrtjwYuX.js +0 -11
  27. package/dist/version-CrtjwYuX.js.map +0 -1
@@ -2,13 +2,13 @@ import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-DWp
2
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
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-CmrPwGge.js";
4
4
  import { c as ambientRegion } from "./aws-client-defaults-BLXFsfMa.js";
5
- import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, B as deleteTableWithIndexBusyRetry, Ba as s3BucketArn, Bc as passedNoEchoParametersOf, Bi as isRefusedByName, C as planContributorInsightsOp, Cl as recordAttributeIdCopy, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reDisableInstanceApiTermination, Dc as lambdaFunctionNameForMask, E as reverseMapIndexContributorInsights, Ea as observeThenDisableInstanceApiTermination, Ec as canonicalLambdaFunctionName, El as carriesSecretMask, Eo as parseWebACLArn, F as resolveDynamoDbDeleteBudgetClock, Fd as displayAssemblyPath, G as readbackVectorIndexes, Gi as readTagList, Gn as isRedactedRecordedValue, H as relayedIndexBusyDelete, Ha as s3BucketDualStackDomainName, Hi as DBPROXY_TAGS_WHAT, Hn as getCurrentProducerRegions, I as resolveDynamoDbDeleteBudgetMs, Id as renderAssemblyPathEscape, Ii as acquireIdempotencyToken, Io as accountArgs, J as vectorIndexesShapeDetail, Jc as recordReferenceProvenanceEntry, Ji as tagPlanWarning, Js as withoutSilentDropProperties, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as markSameGenerationBag, Ki as refuseMalformedDesiredTags, Kn as redactedDeleteAddressFields, Ks as findSilentDropProperties, L as DELETE_INDEX_WAIT_PROCEED_NOTE, Ld as resolveAssemblyPath, M as beginDeleteWait, Mi as earliestDefined, N as compensateRemovedDeletionProtection, O as stripIndexContributorInsights, Oa as reEnableInstanceApiTermination, Oc as sameLambdaFunctionAddress, P as deleteBudgetKey, Pd as describeFileReadFailure, Pi as reserveStackCreateToken, Q as readTtlSpec, Qc as hasMaskableValues, R as INDEX_SETTLE_POLL_INTERVAL_MS, S as indexDeclaresContributorInsights, Sa as markWaitAbandoned, Sc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, Sl as physicalNameCopiesOf, T as readContributorInsightsSpec, Ta as isTerminationProtectionPropagationError, Tc as emrClusterInstancesReplaced, U as waitForIndexesSettled, Ua as s3BucketRegionalDomainName, Ui as DBPROXY_TAG_OPTIONS, Ur as replacedDeleteFailureVerdict, Us as withheldAccountClause, V as maskedLogger, Va as s3BucketDomainName, Vi as markDeleteStarted, Vr as getStackRecords, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wa as s3BucketWebsiteUrl, Wi as planTagDiff, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Xi as stringifyIfAssigned, Y as isTtlAlreadyDisabled, Ya as outputReferenceProvenanceOf, Yc as snapshotPassProvenance, Yi as definedAttributes, Yt as withNestedStackContext, Z as planTimeToLive, _ as streamMemberRefusals, _c as requireConfigString, _d as decodeListingKey, _t as renderNestedTemplateTreeDefect, ac as isWarmThroughputDecrease, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as withIndeterminateGuard, bd as canonicalizeRegion, c as DynamoDBGlobalTableProvider, cc as coerceCfnBoolean, cn as withApiLimit, d as declaredStreamPolicyMember, dc as configIntegerRefusal, ds as refuseMalformedNestedChildOutputs, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as slowCcOperationTimeoutMs, fc as configStringRefusal, fl as withoutPhysicalNameCopies, g as streamDeclaresTags, gc as requireConfigObject, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigArray, ho as getAccountInfo, ht as isAbsoluteAssetPath, ic as coerceWarmThroughput$1, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ja as isUsableAttemptedName, js as refuseMalformedResourcesForDestroy, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, ko as passedParameterClassesOf, l as STREAM_POLICY_KEY, lc as coerceCfnInteger, m as reverseMapStreamPolicy, ma as unchangedBehindSecretReference, mc as replayWarn, ml as dynamicReferenceTokens, mt as findNestedTemplateTreeDefect, na as waitForLambdaFunctionActive, nt as hasCdkAutoDeleteTag, oa as getCurrentResourceSecrets, oc as toCfnInteger, on as isAccessDeniedError, p as planStreamMemberOps, pa as onlySecretReferencesDiffer, pc as readConfigString, pu as stringifyValue, q as vectorIndexesSettled, qc as redactForState, qi as tagMapAsList, qn as redactedDeleteAddressSkip, rc as WARM_THROUGHPUT_MEMBERS, rt as isTruthyCfnBoolean, sc as toFiniteNumber, sn as lookupEachName, t as DeployEngine, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configBooleanRefusal, uu as timePhase, v as streamPolicyMatchesDeclared, vu as rewriteTemplateAssetReferences, w as planIndexContributorInsightsOps, wa as ec2InstanceProtectionSite, wc as ecsServiceLaunchTypeSetOrChanged, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as isWaitAbandonedError, xc as withRetry, xd as derivePartitionAndUrlSuffix, xl as recoverMaskedOutput, y as streamTagsMatchDeclared, ya as deleteSkipReason, yi as secretNamedAttributeNamesOf, z as TABLE_INDEX_NOUN, za as isSettledInstanceState, zr as awaitInFlightSibling } from "./deploy-engine-BiJyU4j1.js";
6
- import { a as IamCreateClientCache, i as isEntityAlreadyExists, n as collectInlinePolicyNamesManagedBySiblings, r as iamEntityLeftByThisCreate, t as IAMRoleProvider } from "./iam-role-provider-FsEgUieT.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-Dm0hn2Sn.js";
5
+ import { $ as isTtlRateLimited, $i as stringifyIfAssigned, A as resolvedResourceTimeoutMs, Aa as reEnableInstanceApiTermination, Ac as sameLambdaFunctionAddress, B as DELETE_INDEX_WAIT_PROCEED_NOTE, C as planContributorInsightsOp, Ca as withIndeterminateGuard, Cc as withRetry, Cd as derivePartitionAndUrlSuffix, Cl as recoverMaskedOutput, D as reverseMapTableContributorInsights, Da as isTerminationProtectionPropagationError, Dc as emrClusterInstancesReplaced, Dt as enclosingDeadlineRemainingMs, E as reverseMapIndexContributorInsights, Ea as ec2InstanceProtectionSite, Ec as ecsServiceLaunchTypeSetOrChanged, Et as enclosingDeadlineExpired, F as beginDeleteWait, Fi as earliestDefined, G as relayedIndexBusyDelete, Ga as s3BucketRegionalDomainName, Gi as DBPROXY_TAGS_WHAT, Gn as getCurrentProducerRegions, Gs as withheldAccountClause, H as TABLE_INDEX_NOUN, Ha as s3BucketArn, Hc as passedNoEchoParametersOf, Hr as awaitInFlightSibling, I as compensateRemovedDeletionProtection, Id as describeFileReadFailure, J as readbackVectorIndexes, Jc as markSameGenerationBag, Ji as readTagList, Jn as isRedactedRecordedValue, Js as findSilentDropProperties, K as waitForIndexesSettled, Ka as s3BucketWebsiteUrl, Ki as DBPROXY_TAG_OPTIONS, Kr as replacedDeleteFailureVerdict, L as deleteBudgetKey, Ld as displayAssemblyPath, Li as reserveStackCreateToken, M as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, N as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Na as isUsableAttemptedName, Ns as refuseMalformedResourcesForDestroy, O as stripIndexContributorInsights, Oa as observeThenDisableInstanceApiTermination, Oc as canonicalLambdaFunctionName, Ol as carriesSecretMask, Oo as parseWebACLArn, P as DYNAMODB_DELETE_POLL_COST_MS, Q as isTtlAlreadyDisabled, Qi as definedAttributes, Qt as withNestedStackContext, R as resolveDynamoDbDeleteBudgetClock, Rd as renderAssemblyPathEscape, Ro as accountArgs, S as indexDeclaresContributorInsights, Sa as deleteSkipReason, Sd as canonicalizeRegion, Si as secretNamedAttributeNamesOf, T as readContributorInsightsSpec, Tl as recordAttributeIdCopy, U as deleteTableWithIndexBusyRetry, Ua as s3BucketDomainName, Ui as isRefusedByName, V as INDEX_SETTLE_POLL_INTERVAL_MS, Va as isSettledInstanceState, Vr as refuseRestoreFromItself, W as maskedLogger, Wa as s3BucketDualStackDomainName, Wi as markDeleteStarted, Wr as getStackRecords, Wt as getNestedRevertRun, X as vectorIndexesSettled, Xc as recordReferenceProvenanceEntry, Xi as tagMapAsList, Xn as redactedDeleteAddressSkip, Xs as withoutSilentDropProperties, Y as vectorIndexesForCreate, Yc as redactForState, Yi as refuseMalformedDesiredTags, Yn as redactedDeleteAddressFields, Z as vectorIndexesShapeDetail, Za as outputReferenceProvenanceOf, Zc as snapshotPassProvenance, Zi as tagPlanWarning, Zt as getCurrentNestedStackContext, _ as streamMemberRefusals, _a as unchangedBehindSecretReference, _c as requireConfigArray, _o as getAccountInfo, _t as findNestedTemplateTreeDefect, aa as waitForLambdaFunctionActive, ac as WARM_THROUGHPUT_MEMBERS, at as hasCdkAutoDeleteTag, b as CONTRIBUTOR_INSIGHTS_KEY, bt as renderNestedTemplateTreeDefect, bu as rewriteTemplateAssetReferences, c as DynamoDBGlobalTableProvider, cc as toCfnInteger, cn as chunks, ct as markRefusedBeforeApplying, d as declaredStreamPolicyMember, dc as coerceCfnInteger, dn as withApiLimit, el as hasMaskableValues, et as planTimeToLive, f as declaredStreamTagsMember, fc as configBooleanRefusal, fu as timePhase, g as streamDeclaresTags, ga as onlySecretReferencesDiffer, gc as replayWarn, gl as dynamicReferenceTokens, h as streamDeclaresPolicy, ha as slowCcOperationTimeoutMs, hc as readConfigString, hu as stringifyValue, it as S3_AUTO_DELETE_OBJECTS_TAG, jo as passedParameterClassesOf, k as waitForGoneAfterDelete, ka as reDisableInstanceApiTermination, kc as lambdaFunctionNameForMask, l as STREAM_POLICY_KEY, la as getCurrentResourceSecrets, lc as toFiniteNumber, ln as isAccessDeniedError, m as reverseMapStreamPolicy, mc as configStringRefusal, ml as withoutPhysicalNameCopies, nt as sendTtlWaitingOutRateLimit, oc as coerceWarmThroughput$1, ot as isTruthyCfnBoolean, p as planStreamMemberOps, pc as configIntegerRefusal, ps as refuseMalformedNestedChildOutputs, q as planVectorIndexUpdates, qi as planTagDiff, qn as REDACTED_DELETE_ADDRESS_SKIP_REASON, qt as revertNestedChildFromJournal, rt as ECR_AUTO_DELETE_IMAGES_TAG, sc as isWarmThroughputDecrease, st as getPriorAttempts, t as DeployEngine, tt as readTtlSpec, u as STREAM_TAGS_KEY, uc as coerceCfnBoolean, un as lookupEachName, v as streamPolicyMatchesDeclared, vc as requireConfigObject, vt as isAbsoluteAssetPath, w as planIndexContributorInsightsOps, wc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, wl as physicalNameCopiesOf, x as contributorInsightsRefusals, y as streamTagsMatchDeclared, yc as requireConfigString, yd as decodeListingKey, yt as listNestedTemplateRows, z as resolveDynamoDbDeleteBudgetMs, zd as resolveAssemblyPath, zi as acquireIdempotencyToken } from "./deploy-engine-BC5pwkqY.js";
6
+ import { a as IamCreateClientCache, i as isEntityAlreadyExists, n as collectInlinePolicyNamesManagedBySiblings, r as iamEntityLeftByThisCreate, t as IAMRoleProvider } from "./iam-role-provider-CHwvGLRj.js";
7
+ import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, t as canonicalizeIpv4Cidr } from "./program-DdncAAar.js";
8
8
  import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-DCLA_p9I.js";
9
- import { RDSProvider } from "./rds-provider-C_r5q9NM.js";
10
- import { NeptuneProvider } from "./neptune-provider-DjjNodrS.js";
11
- import { ASGProvider } from "./asg-provider-B4XVfH0S.js";
9
+ import { RDSProvider } from "./rds-provider-CFm779-M.js";
10
+ import { NeptuneProvider } from "./neptune-provider-BQ92M2BH.js";
11
+ import { ASGProvider } from "./asg-provider-BymHNHgo.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, 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";
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, DescribeDBClusterSnapshotsCommand, 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, RestoreDBClusterFromSnapshotCommand, RestoreDBClusterToPointInTimeCommand } 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";
@@ -12497,57 +12497,6 @@ function versionOfArn(arn) {
12497
12497
  return match ? Number(match[1]) : void 0;
12498
12498
  }
12499
12499
 
12500
- // src/provisioning/delete-gone-wait.ts
12501
- async function waitForGoneAfterDelete(opts) {
12502
- const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
12503
- const now = opts.now ?? Date.now;
12504
- const userTimeoutMs = resolvedResourceTimeoutMs(opts.resourceType);
12505
- const maxWaitMs = userTimeoutMs === void 0 ? opts.maxWaitMs : Math.min(opts.maxWaitMs, userTimeoutMs / 2);
12506
- const startedAt = now();
12507
- const stopped = `${opts.what}: the delete was ACCEPTED by AWS, but cdkd stopped waiting for it to disappear`;
12508
- const consequence = "AWS finishes the delete on its side; until it does, a create of the same name is refused with \"already exists\".";
12509
- const watch = startInterruptWatch(`${opts.what} deletion wait`);
12510
- try {
12511
- let lastStatus;
12512
- let sawNonFailedStatus = false;
12513
- for (;;) {
12514
- if (watch.isInterrupted()) {
12515
- opts.logger.warn(safeMsg`${stopped} (interrupted). ${consequence}`);
12516
- return;
12517
- }
12518
- try {
12519
- const status = await opts.describe();
12520
- if (status === void 0) {
12521
- opts.logger.debug(safeMsg`${opts.what} is gone`);
12522
- return;
12523
- }
12524
- const failure = opts.failedStatus?.(status);
12525
- if (failure !== void 0) {
12526
- if (sawNonFailedStatus || now() - startedAt >= opts.pollIntervalMs) throw markWaitAbandoned(failure);
12527
- } else sawNonFailedStatus = true;
12528
- lastStatus = status;
12529
- opts.logger.debug(safeMsg`${opts.what} status: ${status}, waiting for it to disappear`);
12530
- } catch (error) {
12531
- if (isWaitAbandonedError(error)) throw error;
12532
- if (!isThrottlingError(error) && !isTransientServerError(error)) {
12533
- opts.logger.debug(safeMsg`${opts.what}: status read failed: ${describeAwsFailure(error).detail}`);
12534
- opts.logger.warn(safeMsg`${stopped}: its status could not be read (${describeAwsFailure(error).summary}). ${consequence}`);
12535
- return;
12536
- }
12537
- opts.logger.debug(safeMsg`${opts.what}: status read throttled or failed transiently, re-polling`);
12538
- }
12539
- const remainingMs = maxWaitMs - (now() - startedAt);
12540
- if (remainingMs <= 0) {
12541
- opts.logger.warn(safeMsg`${stopped} after ${Math.round(maxWaitMs / 1e3)}s` + safeMsg`${lastStatus !== void 0 ? ` (last status: ${lastStatus})` : ""}. ${consequence}`);
12542
- return;
12543
- }
12544
- await sleep(Math.min(opts.pollIntervalMs, remainingMs));
12545
- }
12546
- } finally {
12547
- watch.dispose();
12548
- }
12549
- }
12550
-
12551
12500
  // src/provisioning/providers/dynamodb-table-provider.ts
12552
12501
  function isTableName(id) {
12553
12502
  return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
@@ -31761,6 +31710,82 @@ function instanceAttributes(instance) {
31761
31710
  function isDbIdentifier(id) {
31762
31711
  return id.length <= 63 && /^[A-Za-z](?:-?[A-Za-z0-9])*$/.test(id);
31763
31712
  }
31713
+ const ZONED_TIMESTAMP = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:z|[+-]\d{2}:?\d{2})$/i;
31714
+ function readDocDBClusterRestore(properties, resourceType, logicalId) {
31715
+ const refuse = (reason) => {
31716
+ throw markNonRetryable(new ProvisioningError(safeMsg`DocDB DBCluster ${logicalId}: ${reason}, as CloudFormation requires; nothing was changed.`, resourceType, logicalId));
31717
+ };
31718
+ const identifier = (key) => {
31719
+ const value = properties[key];
31720
+ if (value == null) return void 0;
31721
+ return typeof value === "string" ? value || void 0 : refuse(`${key} must be a string`);
31722
+ };
31723
+ const snapshotIdentifier = identifier("SnapshotIdentifier");
31724
+ const sourceDBClusterIdentifier = identifier("SourceDBClusterIdentifier");
31725
+ if (snapshotIdentifier !== void 0 && sourceDBClusterIdentifier !== void 0) return refuse("SnapshotIdentifier and SourceDBClusterIdentifier cannot both be set");
31726
+ if (sourceDBClusterIdentifier === void 0) return snapshotIdentifier === void 0 ? void 0 : {
31727
+ kind: "snapshot",
31728
+ snapshotIdentifier
31729
+ };
31730
+ const declaredTime = properties["RestoreToTime"];
31731
+ let restoreToTime;
31732
+ if (declaredTime != null && declaredTime !== "") {
31733
+ restoreToTime = typeof declaredTime === "string" && ZONED_TIMESTAMP.test(declaredTime) ? new Date(declaredTime) : void 0;
31734
+ if (restoreToTime === void 0 || Number.isNaN(restoreToTime.getTime())) return refuse("RestoreToTime must be a timestamp with a time zone, such as 2026-01-01T00:00:00Z");
31735
+ }
31736
+ const declaredLatest = properties["UseLatestRestorableTime"];
31737
+ const latest = declaredLatest == null ? false : coerceCfnBoolean(declaredLatest);
31738
+ if (latest === void 0) return refuse("UseLatestRestorableTime must be a boolean");
31739
+ if (restoreToTime !== void 0 && latest) return refuse("RestoreToTime and UseLatestRestorableTime: true cannot both be set");
31740
+ if (restoreToTime === void 0 && !latest) return refuse("a SourceDBClusterIdentifier restore needs RestoreToTime or UseLatestRestorableTime: true");
31741
+ const restoreType = properties["RestoreType"];
31742
+ if (restoreType != null && typeof restoreType !== "string") return refuse("RestoreType must be a string");
31743
+ return {
31744
+ kind: "point-in-time",
31745
+ sourceDBClusterIdentifier,
31746
+ restoreToTime
31747
+ };
31748
+ }
31749
+ function unusedRestoreKeys(properties, restore) {
31750
+ return (restore?.kind === "point-in-time" ? ["GlobalClusterIdentifier", "AvailabilityZones"] : [
31751
+ "RestoreType",
31752
+ "RestoreToTime",
31753
+ "UseLatestRestorableTime",
31754
+ ...restore === void 0 ? [] : ["GlobalClusterIdentifier"]
31755
+ ]).filter((key) => properties[key] != null && properties[key] !== "" && properties[key] !== false);
31756
+ }
31757
+ const CLUSTER_AVAILABLE_MAX_WAIT_MS = 18e5;
31758
+ function restoreWaitMs() {
31759
+ const remaining = enclosingDeadlineRemainingMs() - DEADLINE_MARGIN_MS;
31760
+ return Number.isFinite(remaining) ? Math.max(CLUSTER_AVAILABLE_MAX_WAIT_MS, remaining) : CLUSTER_AVAILABLE_MAX_WAIT_MS;
31761
+ }
31762
+ const RESTORE_VALUE_REFUSALS = /* @__PURE__ */ new Set(["InvalidParameterValue", "InvalidParameterCombination"]);
31763
+ function docdbRestoreFollowUp(properties, restore, password, managedPassword) {
31764
+ const nonEmpty = (members) => Object.values(members).some((value) => value !== void 0) ? members : void 0;
31765
+ const retention = numberOrUndefined(properties["BackupRetentionPeriod"]);
31766
+ const windows = {
31767
+ PreferredBackupWindow: properties["PreferredBackupWindow"],
31768
+ PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"]
31769
+ };
31770
+ const snapshot = restore.kind === "snapshot";
31771
+ return {
31772
+ parity: nonEmpty({
31773
+ DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
31774
+ ...snapshot && {
31775
+ BackupRetentionPeriod: retention,
31776
+ ...windows
31777
+ }
31778
+ }),
31779
+ declared: [
31780
+ ...snapshot ? [] : [nonEmpty({ BackupRetentionPeriod: retention }), nonEmpty(windows)],
31781
+ nonEmpty({ MasterUserPassword: password }),
31782
+ nonEmpty({
31783
+ ManageMasterUserPassword: managedPassword === true ? true : void 0,
31784
+ MasterUserSecretKmsKeyId: managedPassword === true ? properties["MasterUserSecretKmsKeyId"] : void 0
31785
+ })
31786
+ ].filter((group) => group !== void 0)
31787
+ };
31788
+ }
31764
31789
  var DocDBProvider = class {
31765
31790
  docdbClient;
31766
31791
  createClient;
@@ -31780,6 +31805,11 @@ var DocDBProvider = class {
31780
31805
  "MasterUserPassword",
31781
31806
  "RotateMasterUserPassword",
31782
31807
  "GlobalClusterIdentifier",
31808
+ "SnapshotIdentifier",
31809
+ "SourceDBClusterIdentifier",
31810
+ "RestoreToTime",
31811
+ "RestoreType",
31812
+ "UseLatestRestorableTime",
31783
31813
  ...DOCDB_CLUSTER_KEPT_ON_REMOVAL,
31784
31814
  ...DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL
31785
31815
  ])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
@@ -31817,7 +31847,12 @@ var DocDBProvider = class {
31817
31847
  "NetworkType",
31818
31848
  "RotateMasterUserPassword",
31819
31849
  "ServerlessV2ScalingConfiguration",
31820
- "StorageType"
31850
+ "StorageType",
31851
+ "RestoreToTime",
31852
+ "RestoreType",
31853
+ "SnapshotIdentifier",
31854
+ "SourceDBClusterIdentifier",
31855
+ "UseLatestRestorableTime"
31821
31856
  ])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
31822
31857
  "DBInstanceIdentifier",
31823
31858
  "DBInstanceClass",
@@ -31888,43 +31923,75 @@ var DocDBProvider = class {
31888
31923
  this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded GlobalClusterIdentifier is unusable, so it is not sent.`);
31889
31924
  }
31890
31925
  const globalClusterId = docdbGlobalClusterId(properties["GlobalClusterIdentifier"]);
31926
+ const restore = readDocDBClusterRestore(properties, resourceType, logicalId);
31927
+ const unused = unusedRestoreKeys(properties, restore);
31928
+ if (unused.length > 0) {
31929
+ const call = restore === void 0 ? "create" : restore.kind === "snapshot" ? "snapshot restore" : "point-in-time restore";
31930
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): this ${call} does not use ${unused.join(", ")}, as in CloudFormation.`);
31931
+ }
31891
31932
  const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
31933
+ if (!String(properties["SourceDBClusterIdentifier"]).startsWith("arn:")) refuseRestoreFromItself(resourceType, properties, dbClusterIdentifier, logicalId, { region: this.providerRegion });
31934
+ const port = properties["Port"] != null ? Number(properties["Port"]) : void 0;
31935
+ const kmsKeyId = properties["KmsKeyId"];
31936
+ const sharedInput = {
31937
+ DBClusterIdentifier: dbClusterIdentifier,
31938
+ VpcSecurityGroupIds: properties["VpcSecurityGroupIds"],
31939
+ DBSubnetGroupName: properties["DBSubnetGroupName"],
31940
+ KmsKeyId: kmsKeyId,
31941
+ DeletionProtection: properties["DeletionProtection"],
31942
+ CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
31943
+ NetworkType: properties["NetworkType"],
31944
+ StorageType: properties["StorageType"],
31945
+ ...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
31946
+ ...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
31947
+ ...tags.length > 0 && { Tags: tags }
31948
+ };
31949
+ const restorePort = port ?? DOCDB_DEFAULT_PORT;
31950
+ if (restore !== void 0) await this.refuseUnencryptedRestoreSource(properties, restore, resourceType, logicalId, mask);
31892
31951
  let clusterCreated = false;
31893
31952
  let createdResourceId;
31894
31953
  try {
31895
- const response = await this.getCreateClient().send(new CreateDBClusterCommand$1({
31896
- DBClusterIdentifier: dbClusterIdentifier,
31954
+ const response = await (restore === void 0 ? this.getCreateClient().send(new CreateDBClusterCommand$1({
31955
+ ...sharedInput,
31897
31956
  Engine: "docdb",
31898
31957
  EngineVersion: properties["EngineVersion"],
31899
31958
  MasterUsername: properties["MasterUsername"],
31900
31959
  MasterUserPassword: password,
31901
- Port: properties["Port"] != null ? Number(properties["Port"]) : void 0,
31902
- VpcSecurityGroupIds: properties["VpcSecurityGroupIds"],
31903
- DBSubnetGroupName: properties["DBSubnetGroupName"],
31960
+ Port: port,
31904
31961
  StorageEncrypted: properties["StorageEncrypted"],
31905
- KmsKeyId: properties["KmsKeyId"],
31906
- BackupRetentionPeriod: properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0,
31962
+ BackupRetentionPeriod: numberOrUndefined(properties["BackupRetentionPeriod"]),
31907
31963
  PreferredBackupWindow: properties["PreferredBackupWindow"],
31908
31964
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
31909
31965
  DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
31910
- DeletionProtection: properties["DeletionProtection"],
31911
31966
  AvailabilityZones: properties["AvailabilityZones"],
31912
- CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
31913
31967
  ManageMasterUserPassword: managedPassword,
31914
31968
  MasterUserSecretKmsKeyId: properties["MasterUserSecretKmsKeyId"],
31915
- NetworkType: properties["NetworkType"],
31916
- StorageType: properties["StorageType"],
31917
- ...globalClusterId !== void 0 && { GlobalClusterIdentifier: globalClusterId },
31918
- ...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
31919
- ...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
31920
- ...tags.length > 0 && { Tags: tags }
31921
- }));
31969
+ ...globalClusterId !== void 0 && { GlobalClusterIdentifier: globalClusterId }
31970
+ })) : restore.kind === "snapshot" ? this.getCreateClient().send(new RestoreDBClusterFromSnapshotCommand({
31971
+ ...sharedInput,
31972
+ SnapshotIdentifier: restore.snapshotIdentifier,
31973
+ Engine: "docdb",
31974
+ EngineVersion: properties["EngineVersion"],
31975
+ Port: restorePort,
31976
+ AvailabilityZones: properties["AvailabilityZones"]
31977
+ })) : this.getCreateClient().send(new RestoreDBClusterToPointInTimeCommand({
31978
+ ...sharedInput,
31979
+ SourceDBClusterIdentifier: restore.sourceDBClusterIdentifier,
31980
+ RestoreType: properties["RestoreType"],
31981
+ ...restore.restoreToTime !== void 0 ? { RestoreToTime: restore.restoreToTime } : { UseLatestRestorableTime: true },
31982
+ Port: restorePort
31983
+ })));
31922
31984
  clusterCreated = true;
31923
31985
  createdResourceId = response.DBCluster?.DbClusterResourceId;
31924
31986
  reportCreatedResource(logicalId, resourceType, dbClusterIdentifier, createdResourceId);
31925
- if (!response.DBCluster) throw new Error("CreateDBCluster did not return DBCluster");
31987
+ const cluster = response.DBCluster;
31988
+ if (!cluster) throw new Error("The create call did not return DBCluster");
31926
31989
  this.logger.debug(`Successfully created DocDB DBCluster ${logicalId}: ${dbClusterIdentifier}`);
31927
- if (process.env["CDKD_NO_WAIT"] !== "true") await this.waitForClusterAvailable(logicalId, dbClusterIdentifier);
31990
+ const followUp = restore === void 0 ? void 0 : docdbRestoreFollowUp(properties, restore, password, managedPassword);
31991
+ const followingUp = followUp !== void 0 && (followUp.parity !== void 0 || followUp.declared.length > 0);
31992
+ if (followingUp || process.env["CDKD_NO_WAIT"] !== "true") await this.waitForClusterAvailable(logicalId, dbClusterIdentifier, restore === void 0 ? void 0 : restoreWaitMs());
31993
+ if (followUp !== void 0 && followingUp) await this.sendRestoreFollowUp(logicalId, resourceType, dbClusterIdentifier, followUp, mask);
31994
+ if (restore !== void 0) this.warnRestoredDifferences(logicalId, resourceType, properties, restore, cluster);
31928
31995
  return {
31929
31996
  physicalId: dbClusterIdentifier,
31930
31997
  attributes: clusterAttributes(await this.describeDBCluster(dbClusterIdentifier))
@@ -31935,6 +32002,74 @@ var DocDBProvider = class {
31935
32002
  throw thrown;
31936
32003
  }
31937
32004
  }
32005
+ async refuseUnencryptedRestoreSource(properties, restore, resourceType, logicalId, mask) {
32006
+ if (coerceCfnBoolean(properties["StorageEncrypted"]) !== true) return;
32007
+ if (properties["KmsKeyId"] != null && properties["KmsKeyId"] !== "") return;
32008
+ let encrypted;
32009
+ try {
32010
+ if (restore.kind === "snapshot") {
32011
+ const snapshot = (await this.getClient().send(new DescribeDBClusterSnapshotsCommand({
32012
+ DBClusterSnapshotIdentifier: restore.snapshotIdentifier,
32013
+ IncludeShared: true,
32014
+ IncludePublic: true
32015
+ }))).DBClusterSnapshots?.[0];
32016
+ if (snapshot === void 0) return;
32017
+ encrypted = snapshot.StorageEncrypted;
32018
+ } else {
32019
+ const source = await this.describeDBCluster(restore.sourceDBClusterIdentifier);
32020
+ if (source === void 0) return;
32021
+ encrypted = source.StorageEncrypted;
32022
+ }
32023
+ } catch (error) {
32024
+ const fault = restore.kind === "snapshot" ? "DBClusterSnapshotNotFoundFault" : "DBClusterNotFoundFault";
32025
+ if (isDocDBNotFoundError(error, fault)) return;
32026
+ throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create DocDB DBCluster ${logicalId}: reading whether the restore source is encrypted failed, so nothing was changed: ${text}`, resourceType, logicalId, void 0, error instanceof Error ? error : void 0));
32027
+ }
32028
+ if (encrypted === true) return;
32029
+ throw markNonRetryable(new ProvisioningError(safeMsg`DocDB DBCluster ${logicalId}: StorageEncrypted is true, but the restore source does not read as encrypted and no KmsKeyId is set. Set KmsKeyId (alias/aws/rds is the default key), as CloudFormation requires; nothing was changed.`, resourceType, logicalId));
32030
+ }
32031
+ async sendRestoreFollowUp(logicalId, resourceType, physicalId, followUp, mask) {
32032
+ const send = (members) => modifyDbInstanceWhenAvailable({
32033
+ send: () => this.getClient().send(new ModifyDBClusterCommand$1({
32034
+ DBClusterIdentifier: physicalId,
32035
+ ...members,
32036
+ ApplyImmediately: true
32037
+ })),
32038
+ readStatus: async () => (await this.describeDBCluster(physicalId))?.Status,
32039
+ sleep: (ms) => this.sleep(ms),
32040
+ logger: this.logger,
32041
+ label: "DocDB DBCluster",
32042
+ subject: "cluster",
32043
+ logicalId,
32044
+ remainingMs: enclosingDeadlineRemainingMs()
32045
+ });
32046
+ if (followUp.parity !== void 0) await send(followUp.parity);
32047
+ const refused = async (members) => {
32048
+ try {
32049
+ await send(members);
32050
+ return false;
32051
+ } catch (error) {
32052
+ if (error instanceof Error && RESTORE_VALUE_REFUSALS.has(error.name)) {
32053
+ this.logger.debug(safeMsg`${error.name} after restoring ${logicalId}: ${maskerOrIdentity(mask)(error.message)}`);
32054
+ return true;
32055
+ }
32056
+ throw error;
32057
+ }
32058
+ };
32059
+ const { declared } = followUp;
32060
+ if (declared.length > 0 && await refused(Object.assign({}, ...declared))) {
32061
+ const keys = [];
32062
+ for (const group of declared) if (declared.length === 1 || await refused(group)) keys.push(...Object.keys(group).filter((key) => group[key] !== void 0));
32063
+ if (keys.length > 0) this.logger.warn(safeMsg`${logicalId} (${resourceType}): AWS refused ${keys.join(", ")} after the restore, so the cluster keeps its restored values. The record holds the declared ones, so drift does not report the difference. An update sends a declared BackupRetentionPeriod or window again; the password settings only once the template changes them.`);
32064
+ }
32065
+ if (process.env["CDKD_NO_WAIT"] !== "true") await this.waitForClusterAvailable(logicalId, physicalId, restoreWaitMs());
32066
+ }
32067
+ warnRestoredDifferences(logicalId, resourceType, properties, restore, cluster) {
32068
+ const differs = (key, live) => properties[key] != null && live !== void 0 && String(properties[key]) !== live;
32069
+ const keys = [...differs("MasterUsername", cluster.MasterUsername) ? ["MasterUsername"] : [], ...restore.kind === "point-in-time" && differs("EngineVersion", cluster.EngineVersion) ? ["EngineVersion"] : []];
32070
+ if (keys.length === 0) return;
32071
+ this.logger.warn(safeMsg`${logicalId} (${resourceType}): the restored cluster keeps its source's ${keys.join(", ")}, not the template's, as in CloudFormation: a restore does not set ${keys.length === 1 ? "it" : "them"}. cdkd drift does not report the difference: its baseline is the readback taken at deploy.`);
32072
+ }
31938
32073
  async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context) {
31939
32074
  this.logger.debug(`Updating DocDB DBCluster ${logicalId}: ${physicalId}`);
31940
32075
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
@@ -32592,7 +32727,7 @@ var DocDBProvider = class {
32592
32727
  remainingMs: enclosingDeadlineRemainingMs()
32593
32728
  });
32594
32729
  }
32595
- async waitForClusterAvailable(logicalId, dbClusterIdentifier, maxWaitMs = 18e5) {
32730
+ async waitForClusterAvailable(logicalId, dbClusterIdentifier, maxWaitMs = CLUSTER_AVAILABLE_MAX_WAIT_MS) {
32596
32731
  const startTime = Date.now();
32597
32732
  let delay = 5e3;
32598
32733
  while (Date.now() - startTime < maxWaitMs) {
@@ -32662,7 +32797,12 @@ var DocDBProvider = class {
32662
32797
  "AvailabilityZones",
32663
32798
  "GlobalClusterIdentifier",
32664
32799
  "MasterUserSecretKmsKeyId",
32665
- "RotateMasterUserPassword"
32800
+ "RestoreToTime",
32801
+ "RestoreType",
32802
+ "RotateMasterUserPassword",
32803
+ "SnapshotIdentifier",
32804
+ "SourceDBClusterIdentifier",
32805
+ "UseLatestRestorableTime"
32666
32806
  ];
32667
32807
  if (resourceType === "AWS::DocDB::DBInstance") return ["CertificateRotationRestart"];
32668
32808
  return [];
@@ -48638,6 +48778,7 @@ var FirehoseProvider = class {
48638
48778
  "IcebergDestinationConfiguration",
48639
48779
  "MSKSourceConfiguration"
48640
48780
  ])]]);
48781
+ unhandledByDesign = /* @__PURE__ */ new Map([["AWS::KinesisFirehose::DeliveryStream", /* @__PURE__ */ new Map([["DatabaseSourceConfiguration", "Database as a source was a public preview AWS removed on 2025-09-24 (Firehose document history); CreateDeliveryStream refused DeliveryStreamType DatabaseAsSource in every region probed, so an SDK path could not be verified. Stays on Cloud Control"], ["SnowflakeDestinationConfiguration", "Proving the wire shape live needs a real Snowflake account, and the block carries key material (PrivateKey, KeyPassphrase). Stays on Cloud Control"]])]]);
48641
48782
  getClient() {
48642
48783
  if (!this.client) {
48643
48784
  this.client = new FirehoseClient({
@@ -55158,4 +55299,4 @@ var ACMCertificateProvider = class {
55158
55299
  };
55159
55300
 
55160
55301
  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 };
55161
- //# sourceMappingURL=provider-classes-BTOXS3cs.js.map
55302
+ //# sourceMappingURL=provider-classes-HcyJmeJE.js.map