@go-to-k/cdkd 0.301.15 → 0.302.1

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 (34) hide show
  1. package/dist/{asg-provider-ClDYCUia.js → asg-provider-BpRcm_UB.js} +5 -5
  2. package/dist/asg-provider-BpRcm_UB.js.map +1 -0
  3. package/dist/{aws-failure-text-CdgZn80O.js → aws-failure-text-e_ddrDDo.js} +313 -35
  4. package/dist/aws-failure-text-e_ddrDDo.js.map +1 -0
  5. package/dist/cli.js +2 -2
  6. package/dist/{deploy-engine-Dy7N7-Il.js → deploy-engine-CYVt2NQR.js} +2189 -1104
  7. package/dist/deploy-engine-CYVt2NQR.js.map +1 -0
  8. package/dist/{iam-policy-targets-Dap4bLyq.js → iam-policy-targets-CmHNH1DY.js} +17 -4
  9. package/dist/iam-policy-targets-CmHNH1DY.js.map +1 -0
  10. package/dist/{iam-role-provider-C8Icvrf7.js → iam-role-provider-R1GC6KcT.js} +14 -5
  11. package/dist/iam-role-provider-R1GC6KcT.js.map +1 -0
  12. package/dist/index.d.ts +32 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/{neptune-provider-CtnwSAGM.js → neptune-provider-DzTl6-74.js} +7 -16
  16. package/dist/neptune-provider-DzTl6-74.js.map +1 -0
  17. package/dist/{program-CXvao3wc.js → program-CvRs5pV_.js} +172 -30
  18. package/dist/program-CvRs5pV_.js.map +1 -0
  19. package/dist/{provider-classes-CBbWGsK0.js → provider-classes-B2_u4Fg0.js} +268 -150
  20. package/dist/provider-classes-B2_u4Fg0.js.map +1 -0
  21. package/dist/{rds-provider-BMQvQTTS.js → rds-provider-CmKbYAvr.js} +7 -16
  22. package/dist/rds-provider-CmKbYAvr.js.map +1 -0
  23. package/dist/{version-DadUoJjK.js → version-CaejipV3.js} +2 -2
  24. package/dist/{version-DadUoJjK.js.map → version-CaejipV3.js.map} +1 -1
  25. package/package.json +1 -1
  26. package/dist/asg-provider-ClDYCUia.js.map +0 -1
  27. package/dist/aws-failure-text-CdgZn80O.js.map +0 -1
  28. package/dist/deploy-engine-Dy7N7-Il.js.map +0 -1
  29. package/dist/iam-policy-targets-Dap4bLyq.js.map +0 -1
  30. package/dist/iam-role-provider-C8Icvrf7.js.map +0 -1
  31. package/dist/neptune-provider-CtnwSAGM.js.map +0 -1
  32. package/dist/program-CXvao3wc.js.map +0 -1
  33. package/dist/provider-classes-CBbWGsK0.js.map +0 -1
  34. package/dist/rds-provider-BMQvQTTS.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { r as getAwsClients } from "./aws-clients-B_CEQGE1.js";
2
- import { A as SECRET_REF_MAX_CODE_POINTS, H as safeMsg, I as displayIdent, L as displaySafe, R as displayStackName, S as generateResourceNameWithFallback, V as plainIdentOr, a as safeStringify, i as isAwsAuthoredFailure, n as describeAwsFailure, r as describeAwsStatusReason, s as getLogger, x as generateResourceName, z as isPasteableIdent } from "./aws-failure-text-CdgZn80O.js";
3
- import { $ as protectedReplacementAdvice, $n as markReplayMayCollide, $t as ambientCredentialConfig, A as isQuotableImportValue, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, H as observeThenDisableProtection, Hn as withheldTargetClause, In as pasteableCommand, Kt as injectiveKey, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as commandHole, Nt as markSupersedesEarlierCreate, O as isPlainImportJson, P as remedyLogicalId, Pn as hasClauseBreak, Q as pasteableAwsCommand, Qn as markNameCollision, Qt as ambientClientDefaults, Rn as plainOrDescribed, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, V as logGroupProtectionSite, Vn as shellQuote, W as rdsFamilyProtectionSite, X as WITHHELD_AWS_COMMAND, Y as UNNAMEABLE_ID_CLAUSE, Z as isAwsCliLiteral, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as markRedactedCause, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, bn as ResourceUpdateNotSupportedError, bt as maskDeep, c as recordedPrincipalsRepair, cr as isExplicitDenyError, ct as canonicalizeRoute53QueryName, dr as isTransientServerError, dt as compositeIdSkipResult, en as clientDefaultsFor, er as relayedNameCollision, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as markNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as isThrottlingError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, ir as explicitDenyPolicyKind, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, mr as isMarkedNonRetryable, nn as AccountIdUnavailableError, o as readPrincipalLists, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as THROTTLING_ERROR_NAMES, pt as packCompositeId, q as userPoolProtectionSite, qn as isNameCollisionError, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, sr as isAmbiguousOutcomeError, tn as credentialFingerprint, u as clearOnUpdateRemoval, ur as isRetryableTransientError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vn as ProvisioningError, vr as wrapMaskedAwsError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation } from "./iam-policy-targets-Dap4bLyq.js";
2
+ import { B as SECRET_REF_MAX_CODE_POINTS, C as generateResourceName, D as getCurrentStackInstanceId, J as displayStackName, K as displayIdent, M as recordedGeneratedNameKept, Q as safeMsg, T as generatedNameFor, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify, i as isAwsAuthoredFailure, k as isBeforeStateRead, n as describeAwsFailure, q as displaySafe, r as describeAwsStatusReason, s as getLogger, w as generateResourceNameWithFallback } from "./aws-failure-text-e_ddrDDo.js";
3
+ import { $ as protectedReplacementAdvice, $t as ambientCredentialConfig, A as isQuotableImportValue, B as isTerminalDeleteFailure, Bn as plainOrDescribed, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as commandHole, H as observeThenDisableProtection, In as hasClauseBreak, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as isInertUnquoted, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nt as markSupersedesEarlierCreate, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qt as ambientClientDefaults, Rn as pasteableCommand, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Un as shellQuote, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wn as withheldTargetClause, X as WITHHELD_AWS_COMMAND, Y as UNNAMEABLE_ID_CLAUSE, Yn as isNameCollisionError, Z as isAwsCliLiteral, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as isThrottlingError, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, br as wrapMaskedAwsError, bt as maskDeep, c as recordedPrincipalsRepair, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, en as clientDefaultsFor, er as markNameCollision, et as renderDisableCommand, fr as isRetryableTransientError, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as isMarkedNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as THROTTLING_ERROR_NAMES, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, lr as isAmbiguousOutcomeError, lt as compositeIdFormatMessage, nn as AccountIdUnavailableError, nr as relayedNameCollision, o as readPrincipalLists, or as explicitDenyPolicyKind, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as isTransientServerError, pt as packCompositeId, q as userPoolProtectionSite, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, tn as credentialFingerprint, tr as markReplayMayCollide, u as clearOnUpdateRemoval, ur as isExplicitDenyError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vr as markNonRetryable, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xn as ResourceUpdateNotSupportedError, xt as maskerOrIdentity, y as createAttemptKey, yn as ProvisioningError, yr as markRedactedCause, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation } from "./iam-policy-targets-CmHNH1DY.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
5
- import { $r as reDisableInstanceApiTermination, Aa as refuseMalformedNestedChildOutputs, Ao as configStringRefusal, Bl as renderAssemblyPathEscape, Bo as canonicalLambdaFunctionName, Br as unchangedBehindSecretReference, C as hasCdkAutoDeleteTag, Co as isWarmThroughputDecrease, Cr as stringifyIfAssigned, Dl as canonicalizeRegion, Dn as getStackRecords, Do as coerceCfnInteger, Dt as isAccessDeniedError, E as markRefusedBeforeApplying, Eo as coerceCfnBoolean, Es as withoutPhysicalNameCopies, Et as chunks, F as findNestedTemplateTreeDefect, Fi as getAccountInfo, Fo as requireConfigString, Fs as physicalNameCopiesOf, Gi as parseWebACLArn, Gr as deleteSkipReason, Ho as sameLambdaFunctionAddress, I as isAbsoluteAssetPath, Is as recordAttributeIdCopy, Ji as passedParameterClassesOf, Jn as secretNamedAttributeNamesOf, Jr as markWaitAbandoned, Jt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Kr as withIndeterminateGuard, Kt as getCurrentProducerRegions, L as listNestedTemplateRows, Mo as replayWarn, No as requireConfigArray, Nr as getCurrentResourceSecrets, Ol as derivePartitionAndUrlSuffix, Oo as configBooleanRefusal, Os as dynamicReferenceTokens, Ot as lookupEachName, Po as requireConfigObject, Ps as recoverMaskedOutput, Qr as observeThenDisableInstanceApiTermination, R as renderNestedTemplateTreeDefect, Rl as describeFileReadFailure, S as S3_AUTO_DELETE_OBJECTS_TAG, So as coerceWarmThroughput$1, Sr as definedAttributes, T as getPriorAttempts, Tc as rewriteTemplateAssetReferences, Tn as awaitInFlightSibling, To as toFiniteNumber, Vl as resolveAssemblyPath, Vo as lambdaFunctionNameForMask, Xa as refuseMalformedResourcesForDestroy, Xr as ec2InstanceProtectionSite, Xt as redactedDeleteAddressFields, Yt as isRedactedRecordedValue, Zr as isTerminationProtectionPropagationError, Zt as redactedDeleteAddressSkip, _ as deleteTableWithIndexBusyRetry, _r as planTagDiff, ai as isSettledInstanceState, b as waitForIndexesSettled, bc as stringifyValue, br as tagMapAsList, c as DynamoDBGlobalTableProvider, ci as s3BucketDualStackDomainName, co as withheldAccountClause, cr as earliestDefined, cs as recordReferenceProvenanceEntry, ct as getNestedRevertRun, d as compensateRemovedDeletionProtection, dt as revertNestedChildFromJournal, ei as reEnableInstanceApiTermination, es as passedNoEchoParametersOf, f as deleteBudgetKey, fo as withoutSilentDropProperties, fr as acquireIdempotencyToken, fs as hasMaskableValues, g as INDEX_SETTLE_POLL_INTERVAL_MS, gr as DBPROXY_TAG_OPTIONS, gt as withNestedStackContext, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as outputReferenceProvenanceOf, hr as DBPROXY_TAGS_WHAT, ht as getCurrentNestedStackContext, jo as readConfigString, kn as replacedDeleteFailureVerdict, ko as configIntegerRefusal, kr as waitForLambdaFunctionActive, kt as withApiLimit, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as s3BucketRegionalDomainName, ls as snapshotPassProvenance, m as resolveDynamoDbDeleteBudgetMs, mr as markDeleteStarted, oi as s3BucketArn, os as markSameGenerationBag, p as resolveDynamoDbDeleteBudgetClock, pr as isRefusedByName, qr as isWaitAbandonedError, si as s3BucketDomainName, ss as redactForState, t as DeployEngine, ta as accountArgs, u as beginDeleteWait, ui as s3BucketWebsiteUrl, uo as findSilentDropProperties, ur as reserveStackCreateToken, v as maskedLogger, vr as readTagList, w as isTruthyCfnBoolean, wl as decodeListingKey, wo as toCfnInteger, x as ECR_AUTO_DELETE_IMAGES_TAG, xo as WARM_THROUGHPUT_MEMBERS, xr as tagPlanWarning, y as relayedIndexBusyDelete, yr as refuseMalformedDesiredTags, zl as displayAssemblyPath, zo as withRetry, zr as slowCcOperationTimeoutMs, zs as carriesSecretMask } from "./deploy-engine-Dy7N7-Il.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-C8Icvrf7.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-CXvao3wc.js";
8
- import { RDSProvider } from "./rds-provider-BMQvQTTS.js";
9
- import { NeptuneProvider } from "./neptune-provider-CtnwSAGM.js";
10
- import { ASGProvider } from "./asg-provider-ClDYCUia.js";
5
+ import { Ar as markDeleteStarted, Bo as toCfnInteger, C as hasCdkAutoDeleteTag, Ci as s3BucketDomainName, Cr as reserveStackCreateToken, Cs as redactForState, Dt as withApiLimit, E as markRefusedBeforeApplying, Ei as s3BucketWebsiteUrl, Eo as findSilentDropProperties, Et as lookupEachName, F as findNestedTemplateTreeDefect, Fr as refuseMalformedDesiredTags, Go as configIntegerRefusal, Gr as waitForLambdaFunctionActive, Ho as coerceCfnBoolean, Hs as withoutPhysicalNameCopies, I as isAbsoluteAssetPath, Ir as tagMapAsList, Jo as replayWarn, Jt as redactedDeleteAddressFields, Ka as refuseMalformedNestedChildOutputs, Kl as canonicalizeRegion, Ko as configStringRefusal, Kt as REDACTED_DELETE_ADDRESS_SKIP_REASON, L as listNestedTemplateRows, Lo as WARM_THROUGHPUT_MEMBERS, Lr as tagPlanWarning, Mr as DBPROXY_TAG_OPTIONS, Nn as replacedDeleteFailureVerdict, Nr as planTagDiff, Oo as withoutSilentDropProperties, Os as hasMaskableValues, Pr as readTagList, Qs as recordAttributeIdCopy, R as renderNestedTemplateTreeDefect, Ro as coerceWarmThroughput$1, Rr as definedAttributes, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as s3BucketArn, Ss as markSameGenerationBag, T as getPriorAttempts, Ti as s3BucketRegionalDomainName, Tr as acquireIdempotencyToken, Ts as snapshotPassProvenance, Tt as isAccessDeniedError, Ul as decodeListingKey, Uo as coerceCfnInteger, Vo as toFiniteNumber, Wc as rewriteTemplateAssetReferences, Wo as configBooleanRefusal, Ws as dynamicReferenceTokens, Wt as getCurrentProducerRegions, Xo as requireConfigObject, Xs as recoverMaskedOutput, Yo as requireConfigArray, Yr as getCurrentResourceSecrets, Yt as redactedDeleteAddressSkip, Zi as getAccountInfo, Zo as requireConfigString, Zs as physicalNameCopiesOf, _ as deleteTableWithIndexBusyRetry, _a as accountArgs, au as renderAssemblyPathEscape, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ci as withIndeterminateGuard, cr as secretNamedAttributeNamesOf, d as compensateRemovedDeletionProtection, f as deleteBudgetKey, fi as ec2InstanceProtectionSite, fo as refuseMalformedResourcesForDestroy, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reEnableInstanceApiTermination, gs as passedNoEchoParametersOf, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as reDisableInstanceApiTermination, is as sameLambdaFunctionAddress, iu as displayAssemblyPath, ji as outputReferenceProvenanceOf, jn as getStackRecords, jr as DBPROXY_TAGS_WHAT, kn as awaitInFlightSibling, kr as isRefusedByName, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as isWaitAbandonedError, lt as revertNestedChildFromJournal, m as resolveDynamoDbDeleteBudgetMs, mi as observeThenDisableInstanceApiTermination, mt as withNestedStackContext, ni as unchangedBehindSecretReference, ns as canonicalLambdaFunctionName, ot as getNestedRevertRun, ou as resolveAssemblyPath, p as resolveDynamoDbDeleteBudgetClock, pi as isTerminationProtectionPropagationError, pt as getCurrentNestedStackContext, ql as derivePartitionAndUrlSuffix, qo as readConfigString, qt as isRedactedRecordedValue, rs as lambdaFunctionNameForMask, ru as describeFileReadFailure, sa as parseWebACLArn, si as deleteSkipReason, t as DeployEngine, tc as carriesSecretMask, ti as slowCcOperationTimeoutMs, ts as withRetry, u as beginDeleteWait, ua as passedParameterClassesOf, ui as markWaitAbandoned, v as maskedLogger, w as isTruthyCfnBoolean, wi as s3BucketDualStackDomainName, wo as withheldAccountClause, ws as recordReferenceProvenanceEntry, wt as chunks, x as ECR_AUTO_DELETE_IMAGES_TAG, xi as isSettledInstanceState, xr as earliestDefined, y as relayedIndexBusyDelete, zc as stringifyValue, zo as isWarmThroughputDecrease, zr as stringifyIfAssigned } from "./deploy-engine-CYVt2NQR.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-R1GC6KcT.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-CvRs5pV_.js";
8
+ import { RDSProvider } from "./rds-provider-CmKbYAvr.js";
9
+ import { NeptuneProvider } from "./neptune-provider-DzTl6-74.js";
10
+ import { ASGProvider } from "./asg-provider-BpRcm_UB.js";
11
11
  import { createHash, randomUUID } from "node:crypto";
12
12
  import { CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client } from "@aws-sdk/client-s3";
13
13
  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, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
@@ -17,7 +17,7 @@ import { AddPermissionCommand, CreateEventSourceMappingCommand, CreateFunctionCo
17
17
  import { GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
18
18
  import { AllocateAddressCommand, AssociateAddressCommand, AssociateIamInstanceProfileCommand, AssociateRouteTableCommand, AttachInternetGatewayCommand, AuthorizeSecurityGroupEgressCommand, AuthorizeSecurityGroupIngressCommand, CreateInternetGatewayCommand, CreateNatGatewayCommand, CreateNetworkAclCommand, CreateNetworkAclEntryCommand, CreateRouteCommand, CreateRouteTableCommand, CreateSecurityGroupCommand, CreateSubnetCommand, CreateTagsCommand, CreateVpcCommand, DeleteInternetGatewayCommand, DeleteNatGatewayCommand, DeleteNetworkAclCommand, DeleteNetworkAclEntryCommand, DeleteNetworkInterfaceCommand, DeleteRouteCommand, DeleteRouteTableCommand, DeleteSecurityGroupCommand, DeleteSubnetCommand, DeleteTagsCommand, DeleteVpcCommand, DescribeAddressesCommand, DescribeAvailabilityZonesCommand, DescribeIamInstanceProfileAssociationsCommand, DescribeInstanceAttributeCommand, DescribeInstanceCreditSpecificationsCommand, DescribeInstancesCommand, DescribeInternetGatewaysCommand, DescribeNatGatewaysCommand, DescribeNetworkAclsCommand, DescribeNetworkInterfacesCommand, DescribeRouteTablesCommand, DescribeSecurityGroupRulesCommand, DescribeSecurityGroupsCommand, DescribeSubnetsCommand, DescribeVolumesCommand, DescribeVpcAttributeCommand, DescribeVpcsCommand, DetachInternetGatewayCommand, DisassociateAddressCommand, DisassociateRouteTableCommand, EC2Client, ModifyInstanceAttributeCommand, ModifyInstanceCreditSpecificationCommand, ModifyInstanceMetadataOptionsCommand, ModifySubnetAttributeCommand, ModifyVpcAttributeCommand, MonitorInstancesCommand, ReleaseAddressCommand, ReplaceNetworkAclAssociationCommand, ReplaceNetworkAclEntryCommand, ReplaceRouteCommand, RevokeSecurityGroupEgressCommand, RevokeSecurityGroupIngressCommand, RunInstancesCommand, TerminateInstancesCommand, UnmonitorInstancesCommand, waitUntilInstanceRunning, waitUntilInstanceTerminated, waitUntilNatGatewayAvailable, waitUntilNatGatewayDeleted } from "@aws-sdk/client-ec2";
19
19
  import { CreateTableCommand, DeleteResourcePolicyCommand, DeleteTableCommand, DescribeContinuousBackupsCommand, DescribeContributorInsightsCommand, DescribeKinesisStreamingDestinationCommand, DescribeTableCommand, DescribeTimeToLiveCommand, DisableKinesisStreamingDestinationCommand, DynamoDBClient, EnableKinesisStreamingDestinationCommand, GetResourcePolicyCommand, ListTagsOfResourceCommand, PolicyNotFoundException, PutResourcePolicyCommand, ResourceNotFoundException as ResourceNotFoundException$1, TagResourceCommand as TagResourceCommand$2, UntagResourceCommand as UntagResourceCommand$2, UpdateContinuousBackupsCommand, UpdateContributorInsightsCommand, UpdateTableCommand, UpdateTimeToLiveCommand } from "@aws-sdk/client-dynamodb";
20
- import { APIGatewayClient, CreateAuthorizerCommand, CreateDeploymentCommand, CreateResourceCommand, CreateStageCommand, DeleteAuthorizerCommand, DeleteDeploymentCommand, DeleteMethodCommand, DeleteResourceCommand, DeleteStageCommand, GetAccountCommand, GetAuthorizerCommand, GetAuthorizersCommand, GetDeploymentCommand, GetDeploymentsCommand, GetMethodCommand, GetResourceCommand, GetStageCommand, NotFoundException as NotFoundException$1, PutIntegrationCommand, PutIntegrationResponseCommand, PutMethodCommand, PutMethodResponseCommand, TagResourceCommand as TagResourceCommand$3, UntagResourceCommand as UntagResourceCommand$3, UpdateAccountCommand, UpdateAuthorizerCommand, UpdateMethodCommand, UpdateStageCommand } from "@aws-sdk/client-api-gateway";
20
+ import { APIGatewayClient, CreateAuthorizerCommand, CreateDeploymentCommand, CreateResourceCommand, CreateStageCommand, DeleteAuthorizerCommand, DeleteDeploymentCommand, DeleteIntegrationCommand, DeleteIntegrationResponseCommand, DeleteMethodCommand, DeleteMethodResponseCommand, DeleteResourceCommand, DeleteStageCommand, GetAccountCommand, GetAuthorizerCommand, GetAuthorizersCommand, GetDeploymentCommand, GetDeploymentsCommand, GetMethodCommand, GetResourceCommand, GetStageCommand, NotFoundException as NotFoundException$1, PutIntegrationCommand, PutIntegrationResponseCommand, PutMethodCommand, PutMethodResponseCommand, TagResourceCommand as TagResourceCommand$3, UntagResourceCommand as UntagResourceCommand$3, UpdateAccountCommand, UpdateAuthorizerCommand, UpdateMethodCommand, UpdateStageCommand } from "@aws-sdk/client-api-gateway";
21
21
  import { CreateEventBusCommand, DeleteEventBusCommand, DeleteRuleCommand, DescribeEventBusCommand, DescribeRuleCommand, EventBridgeClient, ListRulesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$1, ListTargetsByRuleCommand, PutPermissionCommand, PutRuleCommand, PutTargetsCommand, RemoveTargetsCommand, ResourceNotFoundException as ResourceNotFoundException$2, TagResourceCommand as TagResourceCommand$4, UntagResourceCommand as UntagResourceCommand$4, UpdateEventBusCommand } from "@aws-sdk/client-eventbridge";
22
22
  import { CreateSecretCommand, DeleteSecretCommand, DescribeSecretCommand, RemoveRegionsFromReplicationCommand, ReplicateSecretToRegionsCommand, ResourceNotFoundException as ResourceNotFoundException$3, SecretsManagerClient, TagResourceCommand as TagResourceCommand$5, UntagResourceCommand as UntagResourceCommand$5, UpdateSecretCommand } from "@aws-sdk/client-secrets-manager";
23
23
  import { AddTagsToResourceCommand, DeleteParameterCommand, DescribeParametersCommand, GetParameterCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$2, ParameterNotFound, PutParameterCommand, RemoveTagsFromResourceCommand, SSMClient } from "@aws-sdk/client-ssm";
@@ -39,7 +39,7 @@ import { CreateRepositoryCommand, DeleteLifecyclePolicyCommand, DeleteRepository
39
39
  import { isDeepStrictEqual } from "node:util";
40
40
  import { AddTagsToResourceCommand as AddTagsToResourceCommand$2, CreateDBProxyCommand, CreateDBProxyEndpointCommand, DBProxyEndpointNotFoundFault, DBProxyNotFoundFault, DBProxyTargetGroupNotFoundFault, DBProxyTargetNotFoundFault, DeleteDBProxyCommand, DeleteDBProxyEndpointCommand, DeregisterDBProxyTargetsCommand, DescribeDBProxiesCommand, DescribeDBProxyEndpointsCommand, DescribeDBProxyTargetGroupsCommand, DescribeDBProxyTargetsCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$10, ModifyDBProxyCommand, ModifyDBProxyEndpointCommand, ModifyDBProxyTargetGroupCommand, RDSClient, RegisterDBProxyTargetsCommand, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$2 } from "@aws-sdk/client-rds";
41
41
  import * as zlib from "node:zlib";
42
- import { ApiGatewayV2Client, CreateApiCommand, CreateAuthorizerCommand as CreateAuthorizerCommand$1, CreateIntegrationCommand, CreateRouteCommand as CreateRouteCommand$1, CreateStageCommand as CreateStageCommand$1, DeleteAccessLogSettingsCommand, DeleteApiCommand, DeleteAuthorizerCommand as DeleteAuthorizerCommand$1, DeleteCorsConfigurationCommand, DeleteIntegrationCommand, 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, UpdateApiCommand, UpdateAuthorizerCommand as UpdateAuthorizerCommand$1, UpdateIntegrationCommand, UpdateRouteCommand, UpdateStageCommand as UpdateStageCommand$1 } from "@aws-sdk/client-apigatewayv2";
42
+ 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, UpdateApiCommand, UpdateAuthorizerCommand as UpdateAuthorizerCommand$1, UpdateIntegrationCommand, UpdateRouteCommand, UpdateStageCommand as UpdateStageCommand$1 } from "@aws-sdk/client-apigatewayv2";
43
43
  import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$11, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$13, UntagResourceCommand as UntagResourceCommand$13, UpdateStateMachineCommand } from "@aws-sdk/client-sfn";
44
44
  import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, ListTaskDefinitionsCommand, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateClusterCommand, UpdateServiceCommand, waitUntilServicesStable } from "@aws-sdk/client-ecs";
45
45
  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$12, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
@@ -133,7 +133,7 @@ var IAMPolicyProvider = class {
133
133
  const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
134
134
  const { value: v } = log;
135
135
  log.debug(`Creating IAM policy ${logicalId}`);
136
- const policyName = properties["PolicyName"] || generateResourceName(logicalId, { maxLength: 64 });
136
+ const policyName = properties["PolicyName"] || generatedNameFor("AWS::IAM::Policy", logicalId);
137
137
  const policyDocument = properties["PolicyDocument"];
138
138
  const targets = readPolicyTargetLists(properties);
139
139
  if ("malformed" in targets) throw new ProvisioningError(`${targets.malformed.join(" / ")} of IAM policy ${logicalId} is not a list of IAM names — no inline policy was attached`, resourceType, logicalId);
@@ -239,7 +239,15 @@ var IAMPolicyProvider = class {
239
239
  const log = withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), [[previousProperties["PolicyName"], oldPolicyName]]);
240
240
  const { value: v } = log;
241
241
  log.debug(`Updating IAM policy ${logicalId}: ${v(physicalId)}`);
242
- const newPolicyName = properties["PolicyName"] || generateResourceName(logicalId, { maxLength: 64 });
242
+ const derivedPolicyName = properties["PolicyName"] || generatedNameFor("AWS::IAM::Policy", logicalId);
243
+ const newPolicyName = oldPolicyName !== void 0 && recordedGeneratedNameKept({
244
+ recorded: oldPolicyName,
245
+ derived: derivedPolicyName,
246
+ declaredName: properties["PolicyName"],
247
+ previousDeclaredName: previousProperties["PolicyName"],
248
+ logicalId,
249
+ options: { maxLength: 64 }
250
+ }) ? oldPolicyName : derivedPolicyName;
243
251
  const recordedPolicyName = previousProperties["PolicyName"];
244
252
  const oldPolicyNames = [...new Set([oldPolicyName, recordedPolicyName].filter((name) => typeof name === "string" && IAM_POLICY_NAME.test(name)))];
245
253
  const newTargets = readPolicyTargetLists(properties);
@@ -675,7 +683,16 @@ var IAMManagedPolicyProvider = class {
675
683
  log.debug(`Updating IAM managed policy ${logicalId}: ${v(physicalId)}`);
676
684
  const revertKeepsName = context?.desiredFromAwsReadback === true && derivedPolicyName !== oldPolicyName;
677
685
  if (revertKeepsName) log.warn(`IAM managed policy ${logicalId}: ManagedPolicyName is not reverted — the policy ${v(oldPolicyName)} keeps its name (the reverted properties derive ${v(derivedPolicyName)}), since a drift revert never replaces a policy. 'cdkd drift' keeps reporting the name until 'cdkd drift --accept' records the live one; only a deploy renames the policy.`);
678
- const newPolicyName = revertKeepsName ? oldPolicyName : derivedPolicyName;
686
+ const generatedNameKept = recordedGeneratedNameKept({
687
+ recorded: oldPolicyName,
688
+ derived: derivedPolicyName,
689
+ declaredName: properties["ManagedPolicyName"],
690
+ previousDeclaredName: previousProperties["ManagedPolicyName"],
691
+ logicalId,
692
+ options: { maxLength: 128 }
693
+ });
694
+ if (generatedNameKept) log.debug(`IAM managed policy ${logicalId}: keeping its generated name ${v(oldPolicyName)} (the template names no policy)`);
695
+ const newPolicyName = revertKeepsName || generatedNameKept ? oldPolicyName : derivedPolicyName;
679
696
  const newPrincipals = principalsOf(properties);
680
697
  const oldPrincipals = principalsOf(previousProperties);
681
698
  const liveKinds = !("malformed" in newPrincipals) && onlySecretDerived(oldPrincipals) ? oldPrincipals.malformed : [];
@@ -5403,11 +5420,7 @@ var S3BucketProvider = class S3BucketProvider {
5403
5420
  }
5404
5421
  generatedCreateName(_resourceType, logicalId, properties) {
5405
5422
  if (properties["BucketName"]) return void 0;
5406
- return generateResourceName(logicalId, {
5407
- maxLength: 63,
5408
- lowercase: true,
5409
- allowedPattern: /[^a-z0-9.-]/g
5410
- });
5423
+ return generatedNameFor("AWS::S3::Bucket", logicalId);
5411
5424
  }
5412
5425
  async import(input) {
5413
5426
  const explicit = resolveExplicitPhysicalId(input, "BucketName");
@@ -5754,7 +5767,7 @@ var SQSQueueProvider = class {
5754
5767
  }
5755
5768
  generatedCreateName(_resourceType, logicalId, properties) {
5756
5769
  if (properties["QueueName"]) return void 0;
5757
- return generateResourceName(logicalId, { maxLength: 80 });
5770
+ return generatedNameFor("AWS::SQS::Queue", logicalId);
5758
5771
  }
5759
5772
  async holderCreatedAt(_resourceType, physicalId) {
5760
5773
  const resp = await this.sqsClient.send(new GetQueueAttributesCommand({
@@ -5835,7 +5848,7 @@ var SQSQueueProvider = class {
5835
5848
  QueueUrl: physicalId,
5836
5849
  AttributeNames: ["QueueArn"]
5837
5850
  }));
5838
- const queueName = properties["QueueName"] || generateResourceName(logicalId, { maxLength: 80 });
5851
+ const queueName = properties["QueueName"] || physicalId.split("/").pop() || generatedNameFor("AWS::SQS::Queue", logicalId);
5839
5852
  return {
5840
5853
  physicalId,
5841
5854
  wasReplaced: false,
@@ -6845,7 +6858,7 @@ var SNSTopicProvider = class {
6845
6858
  }
6846
6859
  generatedCreateName(_resourceType, logicalId, properties) {
6847
6860
  if (properties["TopicName"]) return void 0;
6848
- return generateResourceName(logicalId, { maxLength: 256 });
6861
+ return generatedNameFor("AWS::SNS::Topic", logicalId);
6849
6862
  }
6850
6863
  async import(input) {
6851
6864
  if (input.knownPhysicalId) try {
@@ -7837,7 +7850,7 @@ var LambdaFunctionProvider = class {
7837
7850
  this.ec2Client = awsClients.ec2;
7838
7851
  }
7839
7852
  async create(logicalId, resourceType, properties, context) {
7840
- const functionName = properties["FunctionName"] || generateResourceName(logicalId, { maxLength: 64 });
7853
+ const functionName = properties["FunctionName"] || generatedNameFor("AWS::Lambda::Function", logicalId);
7841
7854
  const log = lambdaOperationSinks(this.logger, context?.maskSecrets, [[properties["FunctionName"], functionName]], properties);
7842
7855
  log.debug(`Creating Lambda function ${logicalId}`);
7843
7856
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
@@ -8596,13 +8609,7 @@ var LambdaPermissionProvider = class {
8596
8609
  if (!action) throw new ProvisioningError(`Action is required for Lambda permission ${logicalId}`, resourceType, logicalId);
8597
8610
  const principal = properties["Principal"];
8598
8611
  if (!principal) throw new ProvisioningError(`Principal is required for Lambda permission ${logicalId}`, resourceType, logicalId);
8599
- let statementId = logicalId.replace(/[^a-zA-Z0-9_-]/g, "");
8600
- if (statementId.length > 100) {
8601
- let hashNum = 0;
8602
- for (let i = 0; i < logicalId.length; i++) hashNum = (hashNum << 5) - hashNum + logicalId.charCodeAt(i) | 0;
8603
- const hash = Math.abs(hashNum).toString(16).padStart(8, "0").substring(0, 8);
8604
- statementId = `${statementId.substring(0, 91)}-${hash}`;
8605
- }
8612
+ const statementId = permissionStatementId(logicalId);
8606
8613
  try {
8607
8614
  const addParams = {
8608
8615
  FunctionName: functionName,
@@ -8768,6 +8775,20 @@ var LambdaPermissionProvider = class {
8768
8775
  return null;
8769
8776
  }
8770
8777
  };
8778
+ function permissionStatementId(logicalId) {
8779
+ if (getCurrentStackInstanceId() !== void 0 || isBeforeStateRead()) return generateResourceName(logicalId, {
8780
+ maxLength: 100,
8781
+ allowedPattern: /[^a-zA-Z0-9_-]/g
8782
+ });
8783
+ let statementId = logicalId.replace(/[^a-zA-Z0-9_-]/g, "");
8784
+ if (statementId.length > 100) {
8785
+ let hashNum = 0;
8786
+ for (let i = 0; i < logicalId.length; i++) hashNum = (hashNum << 5) - hashNum + logicalId.charCodeAt(i) | 0;
8787
+ const hash = Math.abs(hashNum).toString(16).padStart(8, "0").substring(0, 8);
8788
+ statementId = `${statementId.substring(0, 91)}-${hash}`;
8789
+ }
8790
+ return statementId;
8791
+ }
8771
8792
 
8772
8793
  //#endregion
8773
8794
  //#region src/provisioning/providers/lambda-url-provider.ts
@@ -9576,7 +9597,7 @@ var LambdaLayerVersionProvider = class {
9576
9597
  });
9577
9598
  }
9578
9599
  async create(logicalId, resourceType, properties, context) {
9579
- const layerName = properties["LayerName"] || generateResourceName(logicalId, { maxLength: 64 });
9600
+ const layerName = properties["LayerName"] || generatedNameFor("AWS::Lambda::LayerVersion", logicalId);
9580
9601
  const log = withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), [[properties["LayerName"], layerName], [properties["LayerName"], layerNameSegment(layerName)]]);
9581
9602
  log.debug(`Creating Lambda layer version ${logicalId}`);
9582
9603
  const content = properties["Content"];
@@ -11080,7 +11101,7 @@ var LambdaNetworkConnectorProvider = class {
11080
11101
  async create(logicalId, resourceType, properties, context) {
11081
11102
  this.logger.debug(safeMsg`Creating Lambda network connector ${logicalId}`);
11082
11103
  const tagList = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
11083
- const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] : generateResourceName(logicalId, { maxLength: 64 });
11104
+ const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] : generatedNameFor("AWS::Lambda::NetworkConnector", logicalId);
11084
11105
  const vpc = this.readVpcEgress(properties, logicalId, resourceType, void 0);
11085
11106
  const createToken = acquireIdempotencyToken({
11086
11107
  scope: "CreateNetworkConnector",
@@ -11964,6 +11985,10 @@ const deleteTableRetryDelays = {};
11964
11985
  function maskLeafValue(value, maskSecrets) {
11965
11986
  return maskDeep(value, maskSecrets);
11966
11987
  }
11988
+ const tableNameReleaseWait = {
11989
+ maxPolls: 600,
11990
+ intervalMs: INDEX_SETTLE_POLL_INTERVAL_MS
11991
+ };
11967
11992
  var DynamoDBTableProvider = class {
11968
11993
  dynamoDBClient;
11969
11994
  createClient;
@@ -12024,7 +12049,7 @@ var DynamoDBTableProvider = class {
12024
12049
  const debug = (message) => this.logger.debug(maskSecrets(message));
12025
12050
  this.logger.debug(`Creating DynamoDB table ${logicalId}`);
12026
12051
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
12027
- const tableName = properties["TableName"] || generateResourceName(logicalId, { maxLength: 255 });
12052
+ const tableName = properties["TableName"] || generatedNameFor("AWS::DynamoDB::Table", logicalId);
12028
12053
  const keySchema = properties["KeySchema"];
12029
12054
  const attributeDefinitions = properties["AttributeDefinitions"];
12030
12055
  if (!keySchema) throw new ProvisioningError(`KeySchema is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
@@ -12372,6 +12397,22 @@ var DynamoDBTableProvider = class {
12372
12397
  throw this.wrapCaughtError(maskSecrets, error, (text) => new ProvisioningError(`Failed to update DynamoDB table ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
12373
12398
  }
12374
12399
  }
12400
+ async waitForNameReleased(logicalId, physicalId, _resourceType, context) {
12401
+ const mask = context.maskSecrets ?? ((text) => text);
12402
+ this.logger.info(mask(` Waiting for the deleted DynamoDB table ${physicalId} to release its name...`));
12403
+ for (let poll = 0; poll < tableNameReleaseWait.maxPolls; poll++) {
12404
+ if (context.isInterrupted()) return;
12405
+ try {
12406
+ await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
12407
+ } catch (error) {
12408
+ if (error instanceof ResourceNotFoundException$1) return;
12409
+ this.logger.debug(mask(`DynamoDB table ${logicalId}: name-release check failed: ${describeAwsFailure(error).detail}`));
12410
+ if (!isThrottlingError(error) && !isTransientServerError(error)) return;
12411
+ }
12412
+ await new Promise((resolve) => setTimeout(resolve, tableNameReleaseWait.intervalMs));
12413
+ }
12414
+ this.logger.debug(mask(`DynamoDB table ${logicalId} (${physicalId}) still held its name after the wait`));
12415
+ }
12375
12416
  async delete(logicalId, physicalId, resourceType, _properties, context) {
12376
12417
  const flip = this.protectionFlips.acquire(deleteBudgetKey(physicalId, context?.expectedRegion), DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, resolveDynamoDbDeleteBudgetClock());
12377
12418
  try {
@@ -13433,10 +13474,7 @@ var LogsLogGroupProvider = class {
13433
13474
  }
13434
13475
  generatedCreateName(_resourceType, logicalId, properties) {
13435
13476
  if (properties["LogGroupName"]) return void 0;
13436
- return `/cdkd/${generateResourceName(logicalId, {
13437
- maxLength: 506,
13438
- allowedPattern: /[^a-zA-Z0-9-/_]/g
13439
- })}`;
13477
+ return generatedNameFor("AWS::Logs::LogGroup", logicalId);
13440
13478
  }
13441
13479
  async holderCreatedAt(_resourceType, physicalId) {
13442
13480
  const group = (await this.logsClient.send(new DescribeLogGroupsCommand({ logGroupNamePrefix: physicalId }))).logGroups?.find((g) => g.logGroupName === physicalId);
@@ -14127,7 +14165,7 @@ var CloudWatchAlarmProvider = class {
14127
14165
  }
14128
14166
  generatedCreateName(_resourceType, logicalId, properties) {
14129
14167
  if (properties["AlarmName"]) return void 0;
14130
- return generateResourceName(logicalId, { maxLength: 256 });
14168
+ return generatedNameFor("AWS::CloudWatch::Alarm", logicalId);
14131
14169
  }
14132
14170
  async lookupNames(_resourceType, names) {
14133
14171
  const wanted = new Set(names);
@@ -14446,10 +14484,7 @@ var SecretsManagerSecretProvider = class {
14446
14484
  const { value: v } = log;
14447
14485
  log.debug(`Creating secret ${logicalId}`);
14448
14486
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
14449
- const name = properties["Name"] || generateResourceName(logicalId, {
14450
- maxLength: 512,
14451
- allowedPattern: /[^a-zA-Z0-9-/_]/g
14452
- });
14487
+ const name = properties["Name"] || generatedNameFor("AWS::SecretsManager::Secret", logicalId);
14453
14488
  try {
14454
14489
  let secretString;
14455
14490
  const rawGenerate = properties["GenerateSecretString"];
@@ -14800,10 +14835,7 @@ var SSMParameterProvider = class SSMParameterProvider {
14800
14835
  const ssmTags = SSMParameterProvider.desiredSsmTags(properties["Tags"], resourceType, logicalId);
14801
14836
  const debug = (message) => this.logger.debug(mask(message));
14802
14837
  debug(`Creating SSM parameter ${displaySafe(logicalId)}`);
14803
- const name = properties["Name"] || `/${generateResourceName(logicalId, {
14804
- maxLength: 1023,
14805
- allowedPattern: /[^a-zA-Z0-9-/_]/g
14806
- })}`;
14838
+ const name = properties["Name"] || generatedNameFor("AWS::SSM::Parameter", logicalId);
14807
14839
  const type = properties["Type"] || "String";
14808
14840
  const value = properties["Value"];
14809
14841
  if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${displaySafe(logicalId)}`, resourceType, logicalId);
@@ -15191,7 +15223,8 @@ var EventBridgeRuleProvider = class {
15191
15223
  this.logger.debug(`Updating EventBridge rule ${logicalId}: ${physicalId}`);
15192
15224
  assertRegionMatch(context?.expectedRegion ? await this.eventBridgeClient.config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
15193
15225
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
15194
- const ruleName = properties["Name"] || generateResourceName(logicalId, { maxLength: 64 });
15226
+ const recordedRuleName = physicalId.split("/").pop() ?? "";
15227
+ const ruleName = properties["Name"] || recordedRuleName || generatedNameFor("AWS::Events::Rule", logicalId);
15195
15228
  const newTargets = properties["Targets"];
15196
15229
  const oldTargets = previousProperties["Targets"];
15197
15230
  try {
@@ -15354,7 +15387,7 @@ var EventBridgeRuleProvider = class {
15354
15387
  }
15355
15388
  generatedCreateName(_resourceType, logicalId, properties) {
15356
15389
  if (properties["Name"]) return void 0;
15357
- return generateResourceName(logicalId, { maxLength: 64 });
15390
+ return generatedNameFor("AWS::Events::Rule", logicalId);
15358
15391
  }
15359
15392
  lookupNeedsResolvedProperties(_resourceType, properties) {
15360
15393
  const bus = properties["EventBusName"];
@@ -17289,7 +17322,7 @@ var EC2Provider = class {
17289
17322
  try {
17290
17323
  const createClient = await this.getCreateClient();
17291
17324
  const { response, tagsApplied } = await this.sendTaggedCreate(logicalId, "security-group", desiredTags, (TagSpecifications) => createClient.send(new CreateSecurityGroupCommand({
17292
- GroupName: properties["GroupName"] ?? logicalId,
17325
+ GroupName: properties["GroupName"] ?? generatedNameFor("AWS::EC2::SecurityGroup", logicalId),
17293
17326
  Description: groupDescription,
17294
17327
  VpcId: properties["VpcId"] ?? void 0,
17295
17328
  ...TagSpecifications && { TagSpecifications }
@@ -20330,53 +20363,24 @@ var ApiGatewayProvider = class ApiGatewayProvider {
20330
20363
  }));
20331
20364
  try {
20332
20365
  const integration = properties["Integration"];
20333
- if (integration) await this.apiGatewayClient.send(new PutIntegrationCommand({
20366
+ if (integration) await this.apiGatewayClient.send(new PutIntegrationCommand(putIntegrationInput({
20334
20367
  restApiId,
20335
20368
  resourceId,
20336
- httpMethod,
20337
- type: integration["Type"],
20338
- integrationHttpMethod: integration["IntegrationHttpMethod"],
20339
- uri: integration["Uri"],
20340
- connectionType: integration["ConnectionType"],
20341
- connectionId: integration["ConnectionId"],
20342
- credentials: integration["Credentials"],
20343
- requestParameters: integration["RequestParameters"],
20344
- requestTemplates: integration["RequestTemplates"],
20345
- passthroughBehavior: integration["PassthroughBehavior"],
20346
- contentHandling: integration["ContentHandling"],
20347
- timeoutInMillis: integration["TimeoutInMillis"],
20348
- cacheNamespace: integration["CacheNamespace"],
20349
- cacheKeyParameters: integration["CacheKeyParameters"],
20350
- tlsConfig: integration["TlsConfig"] ? { insecureSkipVerification: integration["TlsConfig"]["InsecureSkipVerification"] } : void 0,
20351
- responseTransferMode: integration["ResponseTransferMode"]
20352
- }));
20369
+ httpMethod
20370
+ }, integration)));
20353
20371
  const methodResponses = properties["MethodResponses"];
20354
- if (methodResponses) for (const resp of methodResponses) {
20355
- const statusCode = String(resp["StatusCode"]);
20356
- await this.apiGatewayClient.send(new PutMethodResponseCommand({
20357
- restApiId,
20358
- resourceId,
20359
- httpMethod,
20360
- statusCode,
20361
- responseModels: resp["ResponseModels"],
20362
- responseParameters: resp["ResponseParameters"]
20363
- }));
20364
- }
20372
+ if (methodResponses) for (const resp of methodResponses) await this.apiGatewayClient.send(new PutMethodResponseCommand(putMethodResponseInput({
20373
+ restApiId,
20374
+ resourceId,
20375
+ httpMethod
20376
+ }, resp)));
20365
20377
  if (integration) {
20366
20378
  const integrationResponses = integration["IntegrationResponses"];
20367
- if (integrationResponses) for (const ir of integrationResponses) {
20368
- const statusCode = String(ir["StatusCode"]);
20369
- await this.apiGatewayClient.send(new PutIntegrationResponseCommand({
20370
- restApiId,
20371
- resourceId,
20372
- httpMethod,
20373
- statusCode,
20374
- selectionPattern: ir["SelectionPattern"],
20375
- responseParameters: ir["ResponseParameters"],
20376
- responseTemplates: ir["ResponseTemplates"],
20377
- contentHandling: ir["ContentHandling"]
20378
- }));
20379
- }
20379
+ if (integrationResponses) for (const ir of integrationResponses) await this.apiGatewayClient.send(new PutIntegrationResponseCommand(putIntegrationResponseInput({
20380
+ restApiId,
20381
+ resourceId,
20382
+ httpMethod
20383
+ }, ir)));
20380
20384
  }
20381
20385
  } catch (innerError) {
20382
20386
  try {
@@ -20449,7 +20453,12 @@ var ApiGatewayProvider = class ApiGatewayProvider {
20449
20453
  path: "/authorizationScopes",
20450
20454
  value: (newScopes ?? []).join(",")
20451
20455
  });
20452
- if (patchOperations.length === 0) {
20456
+ const childCalls = methodChildCalls({
20457
+ restApiId,
20458
+ resourceId,
20459
+ httpMethod
20460
+ }, properties, previousProperties);
20461
+ if (patchOperations.length === 0 && childCalls.length === 0) {
20453
20462
  log.debug(`No changes detected for API Gateway Method ${logicalId}`);
20454
20463
  return {
20455
20464
  physicalId,
@@ -20457,13 +20466,18 @@ var ApiGatewayProvider = class ApiGatewayProvider {
20457
20466
  };
20458
20467
  }
20459
20468
  try {
20460
- await this.apiGatewayClient.send(new UpdateMethodCommand({
20469
+ if (patchOperations.length > 0) await this.apiGatewayClient.send(new UpdateMethodCommand({
20461
20470
  restApiId,
20462
20471
  resourceId,
20463
20472
  httpMethod,
20464
20473
  patchOperations
20465
20474
  }));
20466
- log.debug(`Successfully updated API Gateway Method ${logicalId} (${patchOperations.length} patch ops)`);
20475
+ for (const call of childCalls) try {
20476
+ await this.apiGatewayClient.send(call.command);
20477
+ } catch (error) {
20478
+ if (!(call.kind === "delete" && error instanceof NotFoundException$1)) throw error;
20479
+ }
20480
+ log.debug(`Successfully updated API Gateway Method ${logicalId} (${patchOperations.length} patch ops, ${childCalls.length} sub-resource calls)`);
20467
20481
  return {
20468
20482
  physicalId,
20469
20483
  wasReplaced: false
@@ -20823,6 +20837,127 @@ function appendMapPatchOps(ops, basePath, next, prev) {
20823
20837
  path: `${basePath}/${escape(key)}`
20824
20838
  });
20825
20839
  }
20840
+ function putIntegrationInput(ids, integration) {
20841
+ return {
20842
+ ...ids,
20843
+ type: integration["Type"],
20844
+ integrationHttpMethod: integration["IntegrationHttpMethod"],
20845
+ uri: integration["Uri"],
20846
+ connectionType: integration["ConnectionType"],
20847
+ connectionId: integration["ConnectionId"],
20848
+ credentials: integration["Credentials"],
20849
+ requestParameters: integration["RequestParameters"],
20850
+ requestTemplates: integration["RequestTemplates"],
20851
+ passthroughBehavior: integration["PassthroughBehavior"],
20852
+ contentHandling: integration["ContentHandling"],
20853
+ timeoutInMillis: integration["TimeoutInMillis"],
20854
+ cacheNamespace: integration["CacheNamespace"],
20855
+ cacheKeyParameters: integration["CacheKeyParameters"],
20856
+ tlsConfig: integration["TlsConfig"] ? { insecureSkipVerification: integration["TlsConfig"]["InsecureSkipVerification"] } : void 0,
20857
+ responseTransferMode: integration["ResponseTransferMode"]
20858
+ };
20859
+ }
20860
+ function putMethodResponseInput(ids, resp) {
20861
+ return {
20862
+ ...ids,
20863
+ statusCode: String(resp["StatusCode"]),
20864
+ responseModels: resp["ResponseModels"],
20865
+ responseParameters: resp["ResponseParameters"]
20866
+ };
20867
+ }
20868
+ function putIntegrationResponseInput(ids, ir) {
20869
+ return {
20870
+ ...ids,
20871
+ statusCode: String(ir["StatusCode"]),
20872
+ selectionPattern: ir["SelectionPattern"],
20873
+ responseParameters: ir["ResponseParameters"],
20874
+ responseTemplates: ir["ResponseTemplates"],
20875
+ contentHandling: ir["ContentHandling"]
20876
+ };
20877
+ }
20878
+ function isCfnMethodChildShape(props) {
20879
+ const integration = integrationBlock(props["Integration"]);
20880
+ if (integration !== void 0 && !("Type" in integration)) return false;
20881
+ const responses = props["MethodResponses"];
20882
+ return responses === void 0 || Array.isArray(responses);
20883
+ }
20884
+ function responsesByStatus(value) {
20885
+ const out = /* @__PURE__ */ new Map();
20886
+ if (!Array.isArray(value)) return out;
20887
+ for (const entry of value) if (entry !== null && typeof entry === "object" && !Array.isArray(entry)) {
20888
+ const record = entry;
20889
+ out.set(String(record["StatusCode"]), record);
20890
+ }
20891
+ return out;
20892
+ }
20893
+ function integrationBlock(value) {
20894
+ return value !== null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length > 0 ? value : void 0;
20895
+ }
20896
+ function methodChildCalls(ids, desired, previous) {
20897
+ if (!isCfnMethodChildShape(desired) || !isCfnMethodChildShape(previous)) return [];
20898
+ const newInt = integrationBlock(desired["Integration"]);
20899
+ const oldInt = integrationBlock(previous["Integration"]);
20900
+ const newMr = responsesByStatus(desired["MethodResponses"]);
20901
+ const oldMr = responsesByStatus(previous["MethodResponses"]);
20902
+ const newIr = responsesByStatus(newInt?.["IntegrationResponses"]);
20903
+ const oldIr = responsesByStatus(oldInt?.["IntegrationResponses"]);
20904
+ const withoutResponses = (b) => {
20905
+ if (b === void 0) return void 0;
20906
+ const { IntegrationResponses: _dropped, ...rest } = b;
20907
+ return rest;
20908
+ };
20909
+ const integrationChanged = !isDeepStrictEqual(withoutResponses(newInt), withoutResponses(oldInt));
20910
+ const mrGoing = [...oldMr.keys()].filter((code) => !newMr.has(code) || !isDeepStrictEqual(newMr.get(code), oldMr.get(code)));
20911
+ const mrComing = [...newMr.keys()].filter((code) => !oldMr.has(code) || !isDeepStrictEqual(newMr.get(code), oldMr.get(code)));
20912
+ const calls = [];
20913
+ const liveIr = new Map(oldInt === void 0 ? [] : oldIr);
20914
+ if (oldInt !== void 0 && newInt === void 0) {
20915
+ calls.push({
20916
+ kind: "delete",
20917
+ command: new DeleteIntegrationCommand(ids)
20918
+ });
20919
+ liveIr.clear();
20920
+ } else if (oldInt !== void 0) {
20921
+ for (const code of oldIr.keys()) if (!newIr.has(code) || mrGoing.includes(code)) {
20922
+ calls.push({
20923
+ kind: "delete",
20924
+ command: new DeleteIntegrationResponseCommand({
20925
+ ...ids,
20926
+ statusCode: code
20927
+ })
20928
+ });
20929
+ liveIr.delete(code);
20930
+ }
20931
+ }
20932
+ for (const code of mrGoing) calls.push({
20933
+ kind: "delete",
20934
+ command: new DeleteMethodResponseCommand({
20935
+ ...ids,
20936
+ statusCode: code
20937
+ })
20938
+ });
20939
+ for (const code of mrComing) calls.push({
20940
+ kind: "put",
20941
+ command: new PutMethodResponseCommand(putMethodResponseInput(ids, newMr.get(code)))
20942
+ });
20943
+ if (newInt !== void 0) {
20944
+ if (integrationChanged) {
20945
+ calls.push({
20946
+ kind: "put",
20947
+ command: new PutIntegrationCommand(putIntegrationInput(ids, newInt))
20948
+ });
20949
+ liveIr.clear();
20950
+ }
20951
+ for (const [code, ir] of newIr) {
20952
+ if (liveIr.has(code) && isDeepStrictEqual(liveIr.get(code), ir)) continue;
20953
+ calls.push({
20954
+ kind: "put",
20955
+ command: new PutIntegrationResponseCommand(putIntegrationResponseInput(ids, ir))
20956
+ });
20957
+ }
20958
+ }
20959
+ return calls;
20960
+ }
20826
20961
 
20827
20962
  //#endregion
20828
20963
  //#region src/provisioning/providers/apigatewayv2-provider.ts
@@ -21247,7 +21382,7 @@ var ApiGatewayV2Provider = class {
21247
21382
  const apiId = properties?.["ApiId"];
21248
21383
  if (!apiId) throw new ProvisioningError(`ApiId is required to delete Integration ${logicalId}`, resourceType, logicalId, physicalId);
21249
21384
  try {
21250
- await this.getClient().send(new DeleteIntegrationCommand({
21385
+ await this.getClient().send(new DeleteIntegrationCommand$1({
21251
21386
  ApiId: apiId,
21252
21387
  IntegrationId: physicalId
21253
21388
  }));
@@ -23852,7 +23987,7 @@ var StepFunctionsProvider = class {
23852
23987
  }
23853
23988
  generatedCreateName(_resourceType, logicalId, properties) {
23854
23989
  if (properties["StateMachineName"]) return void 0;
23855
- return generateResourceName(logicalId, { maxLength: 80 });
23990
+ return generatedNameFor("AWS::StepFunctions::StateMachine", logicalId);
23856
23991
  }
23857
23992
  async holderCreatedAt(_resourceType, physicalId) {
23858
23993
  const resp = await this.getClient().send(new DescribeStateMachineCommand({ stateMachineArn: physicalId }));
@@ -24355,7 +24490,7 @@ var ECSProvider = class {
24355
24490
  async createTaskDefinition(logicalId, resourceType, properties, log) {
24356
24491
  log.debug(`Creating ECS task definition ${logicalId}`);
24357
24492
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
24358
- const family = properties["Family"] || generateResourceName(logicalId, { maxLength: 255 });
24493
+ const family = properties["Family"] || generatedNameFor("AWS::ECS::TaskDefinition", logicalId);
24359
24494
  try {
24360
24495
  const orphanWindow = registerTaskDefinitionLatch.take(logicalId);
24361
24496
  if (orphanWindow !== void 0) await this.reportPossibleOrphanTaskDefinitions(logicalId, family, orphanWindow, log);
@@ -24432,7 +24567,7 @@ var ECSProvider = class {
24432
24567
  log.debug(`Creating ECS service ${logicalId}`);
24433
24568
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
24434
24569
  const client = this.getClient();
24435
- const serviceName = properties["ServiceName"] || generateResourceName(logicalId, { maxLength: 255 });
24570
+ const serviceName = properties["ServiceName"] || generatedNameFor("AWS::ECS::Service", logicalId);
24436
24571
  let survivorArn;
24437
24572
  try {
24438
24573
  const heldBefore = process.env["CDKD_FULL_WAIT"] === "true" ? await nameHeldBefore(() => this.serviceNameHeld(properties["Cluster"], serviceName), (error) => hasErrorName(error, ["ClusterNotFoundException"])) : "free";
@@ -25368,7 +25503,7 @@ var ECSProvider = class {
25368
25503
  }
25369
25504
  generatedCreateName(resourceType, logicalId, properties) {
25370
25505
  if (resourceType !== "AWS::ECS::Cluster" || properties["ClusterName"]) return void 0;
25371
- return generateResourceName(logicalId, { maxLength: 255 });
25506
+ return generatedNameFor("AWS::ECS::Cluster", logicalId);
25372
25507
  }
25373
25508
  async lookupNames(resourceType, names) {
25374
25509
  const found = /* @__PURE__ */ new Map();
@@ -26930,7 +27065,7 @@ var RDSDBProxyProvider = class {
26930
27065
  }
26931
27066
  async create(logicalId, resourceType, properties) {
26932
27067
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, void 0, "Tags", DBPROXY_TAGS_WHAT, DBPROXY_TAG_OPTIONS);
26933
- const dbProxyName = properties["DBProxyName"] ?? generateResourceName(logicalId, { maxLength: 64 });
27068
+ const dbProxyName = properties["DBProxyName"] ?? generatedNameFor("AWS::RDS::DBProxy", logicalId);
26934
27069
  const engineFamily = properties["EngineFamily"];
26935
27070
  if (!engineFamily) throw new ProvisioningError(`EngineFamily is required for AWS::RDS::DBProxy ${logicalId}`, resourceType, logicalId);
26936
27071
  const auth = properties["Auth"];
@@ -27253,7 +27388,7 @@ var RDSDBProxyEndpointProvider = class {
27253
27388
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, void 0, "Tags", DBPROXY_TAGS_WHAT, DBPROXY_TAG_OPTIONS);
27254
27389
  const dbProxyName = properties["DBProxyName"];
27255
27390
  if (!dbProxyName) throw new ProvisioningError(`DBProxyName is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
27256
- const dbProxyEndpointName = properties["DBProxyEndpointName"] ?? generateResourceName(logicalId, { maxLength: 64 });
27391
+ const dbProxyEndpointName = properties["DBProxyEndpointName"] ?? generatedNameFor("AWS::RDS::DBProxyEndpoint", logicalId);
27257
27392
  const vpcSubnetIds = properties["VpcSubnetIds"];
27258
27393
  if (!vpcSubnetIds || vpcSubnetIds.length === 0) throw new ProvisioningError(`VpcSubnetIds (at least one) is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
27259
27394
  const client = this.getClient();
@@ -28145,10 +28280,7 @@ var DocDBProvider = class {
28145
28280
  async createDBCluster(logicalId, resourceType, properties) {
28146
28281
  this.logger.debug(`Creating DocDB DBCluster ${logicalId}`);
28147
28282
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28148
- const dbClusterIdentifier = properties["DBClusterIdentifier"] || generateResourceName(logicalId, {
28149
- maxLength: 63,
28150
- lowercase: true
28151
- });
28283
+ const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
28152
28284
  let clusterCreated = false;
28153
28285
  let createdResourceId;
28154
28286
  try {
@@ -28294,10 +28426,7 @@ var DocDBProvider = class {
28294
28426
  async createDBInstance(logicalId, resourceType, properties) {
28295
28427
  this.logger.debug(`Creating DocDB DBInstance ${logicalId}`);
28296
28428
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28297
- const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generateResourceName(logicalId, {
28298
- maxLength: 63,
28299
- lowercase: true
28300
- });
28429
+ const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generatedNameFor("AWS::DocDB::DBInstance", logicalId);
28301
28430
  let instanceCreated = false;
28302
28431
  let createdResourceId;
28303
28432
  try {
@@ -28613,10 +28742,7 @@ var DocDBSubnetGroupProvider = class {
28613
28742
  this.assertType(resourceType, logicalId);
28614
28743
  this.logger.debug(safeMsg`Creating DocDB DBSubnetGroup ${logicalId}`);
28615
28744
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28616
- const dbSubnetGroupName = properties["DBSubnetGroupName"] || generateResourceName(logicalId, {
28617
- maxLength: 255,
28618
- lowercase: true
28619
- });
28745
+ const dbSubnetGroupName = properties["DBSubnetGroupName"] || generatedNameFor("AWS::DocDB::DBSubnetGroup", logicalId);
28620
28746
  try {
28621
28747
  await this.getCreateClient().send(new CreateDBSubnetGroupCommand$1({
28622
28748
  DBSubnetGroupName: dbSubnetGroupName,
@@ -30024,7 +30150,7 @@ var WAFv2WebACLProvider = class {
30024
30150
  async create(logicalId, resourceType, properties, context) {
30025
30151
  this.logger.debug(`Creating WAFv2 WebACL ${logicalId}`);
30026
30152
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
30027
- const name = properties["Name"] || generateResourceName(logicalId, { maxLength: 128 });
30153
+ const name = properties["Name"] || generatedNameFor("AWS::WAFv2::WebACL", logicalId);
30028
30154
  const scope = requireConfigString(properties["Scope"], "REGIONAL", "AWS::WAFv2::WebACL Scope", replayWarn(this.logger, context));
30029
30155
  this.warnOnSdkUnsupportedRuleKeys(logicalId, properties["Rules"]);
30030
30156
  try {
@@ -30563,7 +30689,7 @@ var CognitoUserPoolProvider = class {
30563
30689
  }
30564
30690
  async create(logicalId, resourceType, properties, context) {
30565
30691
  this.logger.debug(`Creating Cognito User Pool ${logicalId}`);
30566
- const poolName = properties["UserPoolName"] || generateResourceName(logicalId, { maxLength: 128 });
30692
+ const poolName = properties["UserPoolName"] || generatedNameFor("AWS::Cognito::UserPool", logicalId);
30567
30693
  let mfaConfiguration;
30568
30694
  try {
30569
30695
  mfaConfiguration = readDeclaredMfaConfiguration(properties["MfaConfiguration"], replayWarn(this.logger, context));
@@ -31326,10 +31452,7 @@ var ElastiCacheProvider = class {
31326
31452
  async createSubnetGroup(logicalId, resourceType, properties) {
31327
31453
  this.logger.debug(`Creating CacheSubnetGroup ${logicalId}`);
31328
31454
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31329
- const cacheSubnetGroupName = properties["CacheSubnetGroupName"] || generateResourceName(logicalId, {
31330
- maxLength: 255,
31331
- lowercase: true
31332
- });
31455
+ const cacheSubnetGroupName = properties["CacheSubnetGroupName"] || generatedNameFor("AWS::ElastiCache::SubnetGroup", logicalId);
31333
31456
  try {
31334
31457
  await this.getCreateClient().send(new CreateCacheSubnetGroupCommand({
31335
31458
  CacheSubnetGroupName: cacheSubnetGroupName,
@@ -31393,10 +31516,7 @@ var ElastiCacheProvider = class {
31393
31516
  async createCacheCluster(logicalId, resourceType, properties) {
31394
31517
  this.logger.debug(`Creating CacheCluster ${logicalId}`);
31395
31518
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31396
- const cacheClusterId = properties["ClusterName"] || generateResourceName(logicalId, {
31397
- maxLength: 40,
31398
- lowercase: true
31399
- });
31519
+ const cacheClusterId = properties["ClusterName"] || generatedNameFor("AWS::ElastiCache::CacheCluster", logicalId);
31400
31520
  let clusterCreated = false;
31401
31521
  try {
31402
31522
  await this.getCreateClient().send(new CreateCacheClusterCommand({
@@ -31861,7 +31981,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
31861
31981
  case "AWS::ServiceDiscovery::PrivateDnsNamespace": return this.updateNamespace(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets);
31862
31982
  case "AWS::ServiceDiscovery::HttpNamespace": return this.updateHttpNamespace(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets);
31863
31983
  case "AWS::ServiceDiscovery::PublicDnsNamespace": return this.updatePublicDnsNamespace(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets);
31864
- case "AWS::ServiceDiscovery::Service": return this.updateService(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets);
31984
+ case "AWS::ServiceDiscovery::Service": return this.updateService(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets, context?.changedProperties);
31865
31985
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
31866
31986
  }
31867
31987
  }
@@ -32196,11 +32316,11 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
32196
32316
  throw thrown;
32197
32317
  }
32198
32318
  }
32199
- async updateService(logicalId, physicalId, resourceType, properties, previousProperties, maskSecrets) {
32319
+ async updateService(logicalId, physicalId, resourceType, properties, previousProperties, maskSecrets, changedProperties) {
32200
32320
  this.logger.debug(`Updating service discovery service ${logicalId}: ${physicalId}`);
32201
32321
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
32202
32322
  const client = this.getClient();
32203
- const servicePlan = this.planServiceChange(properties, previousProperties);
32323
+ const servicePlan = this.planServiceChange(properties, previousProperties, changedProperties);
32204
32324
  const serviceChange = servicePlan?.change ?? {};
32205
32325
  const newAttrs = this.normalizeServiceAttributes(properties["ServiceAttributes"]);
32206
32326
  const oldAttrs = this.normalizeServiceAttributes(previousProperties["ServiceAttributes"]);
@@ -32286,8 +32406,9 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
32286
32406
  throw this.wrapMaskedError(maskerOrIdentity(maskSecrets), error, (text) => new ProvisioningError(`Failed to update service discovery service ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
32287
32407
  }
32288
32408
  }
32289
- planServiceChange(properties, previousProperties) {
32290
- const declaredDiffers = (key) => properties[key] !== void 0 && !sameAsRecorded(properties[key], previousProperties[key]);
32409
+ planServiceChange(properties, previousProperties, changedProperties) {
32410
+ const changed = (key) => changedProperties !== void 0 ? changedProperties.has(key) : !sameAsRecorded(properties[key], previousProperties[key]);
32411
+ const declaredDiffers = (key) => properties[key] !== void 0 && changed(key);
32291
32412
  const change = {};
32292
32413
  if (properties["Description"] !== void 0) change.Description = properties["Description"];
32293
32414
  const desiredRecords = properties["DnsConfig"]?.DnsRecords;
@@ -32298,7 +32419,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
32298
32419
  change,
32299
32420
  keepRemovedFromLive: false
32300
32421
  };
32301
- if (desiredRecords !== void 0 && !sameAsRecorded(desiredRecords, previousRecords)) return {
32422
+ if (desiredRecords !== void 0 && (changedProperties === void 0 || changedProperties.has("DnsConfig")) && !sameAsRecorded(desiredRecords, previousRecords)) return {
32302
32423
  change,
32303
32424
  keepRemovedFromLive: true
32304
32425
  };
@@ -35557,7 +35678,7 @@ var GlueJobProvider = class {
35557
35678
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
35558
35679
  const { value: v } = log;
35559
35680
  log.debug(`Creating Glue Job ${logicalId}`);
35560
- const name = properties["Name"] ?? logicalId;
35681
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Job", logicalId);
35561
35682
  const role = properties["Role"];
35562
35683
  const command = properties["Command"];
35563
35684
  if (!role) throw new ProvisioningError(`Role is required for Glue Job ${logicalId}`, resourceType, logicalId);
@@ -35845,7 +35966,7 @@ var GlueCrawlerProvider = class {
35845
35966
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
35846
35967
  const { value: v } = log;
35847
35968
  log.debug(`Creating Glue Crawler ${logicalId}`);
35848
- const name = properties["Name"] ?? logicalId;
35969
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Crawler", logicalId);
35849
35970
  const role = properties["Role"];
35850
35971
  const targets = properties["Targets"];
35851
35972
  if (!role) throw new ProvisioningError(`Role is required for Glue Crawler ${logicalId}`, resourceType, logicalId);
@@ -36095,7 +36216,7 @@ var GlueConnectionProvider = class {
36095
36216
  log.debug(`Creating Glue Connection ${logicalId}`);
36096
36217
  const connectionInput = properties["ConnectionInput"];
36097
36218
  if (!connectionInput) throw new ProvisioningError(`ConnectionInput is required for Glue Connection ${logicalId}`, resourceType, logicalId);
36098
- const name = connectionInput["Name"] ?? logicalId;
36219
+ const name = connectionInput["Name"] ?? generatedNameFor("AWS::Glue::Connection", logicalId);
36099
36220
  const catalogId = properties["CatalogId"];
36100
36221
  try {
36101
36222
  await this.getCreateClient().send(new CreateConnectionCommand({
@@ -36300,7 +36421,7 @@ var GlueTriggerProvider = class {
36300
36421
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
36301
36422
  const { value: v } = log;
36302
36423
  log.debug(`Creating Glue Trigger ${logicalId}`);
36303
- const name = properties["Name"] ?? logicalId;
36424
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Trigger", logicalId);
36304
36425
  const type = properties["Type"];
36305
36426
  const actions = properties["Actions"];
36306
36427
  if (!type) throw new ProvisioningError(`Type is required for Glue Trigger ${logicalId}`, resourceType, logicalId);
@@ -37709,7 +37830,7 @@ var KinesisStreamProvider = class {
37709
37830
  const warn = (message) => this.logger.warn(mask(message));
37710
37831
  this.logger.debug(`Creating Kinesis stream ${logicalId}`);
37711
37832
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
37712
- const streamName = properties["Name"] || generateResourceName(logicalId, { maxLength: 128 });
37833
+ const streamName = properties["Name"] || generatedNameFor("AWS::Kinesis::Stream", logicalId);
37713
37834
  const desiredRead = readShardLevelMetrics(properties["DesiredShardLevelMetrics"], mask);
37714
37835
  if (desiredRead.kind === "unusable") {
37715
37836
  if (context?.replayingState === true) warn(`${desiredRead.reason}. Replaying a state record, so the shard-level metrics are left unset on ${streamName} rather than refusing the restore`);
@@ -38455,7 +38576,7 @@ var SchedulerScheduleProvider = class {
38455
38576
  return result;
38456
38577
  }
38457
38578
  async create(logicalId, resourceType, properties) {
38458
- const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
38579
+ const name = properties["Name"] ?? generatedNameFor("AWS::Scheduler::Schedule", logicalId);
38459
38580
  const groupName = this.groupNameOf(properties);
38460
38581
  this.logger.debug(`Creating Schedule ${logicalId}: ${name}${groupName ? ` (group: ${groupName})` : ""}`);
38461
38582
  try {
@@ -38995,7 +39116,7 @@ var PipesPipeProvider = class {
38995
39116
  }
38996
39117
  async create(logicalId, resourceType, properties, context) {
38997
39118
  const mask = maskerOrIdentity(context?.maskSecrets);
38998
- const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
39119
+ const name = properties["Name"] ?? generatedNameFor("AWS::Pipes::Pipe", logicalId);
38999
39120
  const tags = desiredTagMap(properties["Tags"], logicalId);
39000
39121
  this.logger.debug(mask(`Creating Pipe ${logicalId}: ${name}`));
39001
39122
  let createdIdentity;
@@ -41165,7 +41286,7 @@ const leftInPlaceWarning$1 = (logicalId, names, caller) => {
41165
41286
  const one = names.length === 1;
41166
41287
  const subject = one ? "property" : "properties";
41167
41288
  const verb = one ? "is" : "are";
41168
- return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyCluster keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template; ModifyCluster keeps a setting it is not sent and cdkd sends no reset, so the current AWS value stays in place. Declare the intended value explicitly to change it.`;
41289
+ return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyCluster keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::Cluster): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template and ${one ? "keeps its" : "keep their"} current AWS value, as CloudFormation leaves ${one ? "it" : "them"}; ModifyCluster keeps a setting it is not sent. Declare the intended value explicitly to change it.`;
41169
41290
  };
41170
41291
  const toNumber$2 = (v) => {
41171
41292
  if (v === void 0) return void 0;
@@ -42297,7 +42418,7 @@ const leftInPlaceWarning = (logicalId, names, caller) => {
42297
42418
  const one = names.length === 1;
42298
42419
  const subject = one ? "property" : "properties";
42299
42420
  const verb = one ? "is" : "are";
42300
- return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyInstanceFleet keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template; ModifyInstanceFleet keeps a setting it is not sent and cdkd sends no reset, so the current AWS value stays in place. Declare the intended value explicitly to change it.`;
42421
+ return caller === "rollback" ? safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${verb} absent from the state being restored; ModifyInstanceFleet keeps a setting it is not sent, so the rollback leaves the value the failed deploy applied in place.` : safeMsg`${logicalId} (AWS::EMR::InstanceFleetConfig): ${subject} ${names.join(", ")} ${one ? "was" : "were"} removed from the template and ${one ? "keeps its" : "keep their"} current AWS value, as CloudFormation leaves ${one ? "it" : "them"}; ModifyInstanceFleet keeps a setting it is not sent. Declare the intended value explicitly to change it.`;
42301
42422
  };
42302
42423
  const addInstanceFleetLatch = new AmbiguousCreateLatch("emr:AddInstanceFleet");
42303
42424
  const fleetsCreatedByThisProcess = new RecentIdSet();
@@ -42682,7 +42803,7 @@ var FirehoseProvider = class {
42682
42803
  let createdStreamName;
42683
42804
  try {
42684
42805
  const input = {
42685
- DeliveryStreamName: deliveryStreamName || logicalId,
42806
+ DeliveryStreamName: deliveryStreamName || generatedNameFor("AWS::KinesisFirehose::DeliveryStream", logicalId),
42686
42807
  DeliveryStreamType: deliveryStreamType
42687
42808
  };
42688
42809
  if (properties["S3DestinationConfiguration"]) {
@@ -43578,7 +43699,7 @@ var CloudTrailProvider = class {
43578
43699
  let createdTrailArn;
43579
43700
  try {
43580
43701
  const result = await this.getCreateClient().send(new CreateTrailCommand({
43581
- Name: trailName ?? logicalId,
43702
+ Name: trailName ?? generatedNameFor("AWS::CloudTrail::Trail", logicalId),
43582
43703
  S3BucketName: s3BucketName,
43583
43704
  S3KeyPrefix: s3KeyPrefix,
43584
43705
  IsMultiRegionTrail: isMultiRegionTrail,
@@ -43923,8 +44044,8 @@ var CodeBuildProvider = class {
43923
44044
  artifactIdentifier: artifacts["ArtifactIdentifier"]
43924
44045
  };
43925
44046
  }
43926
- mapProperties(logicalId, properties) {
43927
- const name = properties["Name"] ?? logicalId;
44047
+ mapProperties(undeclaredName, properties) {
44048
+ const name = properties["Name"] ?? undeclaredName();
43928
44049
  const source = properties["Source"];
43929
44050
  const environment = properties["Environment"];
43930
44051
  const sanitizeOptionalString = (value) => {
@@ -44053,7 +44174,7 @@ var CodeBuildProvider = class {
44053
44174
  async create(logicalId, resourceType, properties) {
44054
44175
  this.logger.debug(`Creating CodeBuild Project ${logicalId}`);
44055
44176
  try {
44056
- const input = this.mapProperties(logicalId, properties);
44177
+ const input = this.mapProperties(() => generatedNameFor("AWS::CodeBuild::Project", logicalId), properties);
44057
44178
  const result = await this.getCreateClient().send(new CreateProjectCommand(input));
44058
44179
  const projectName = result.project.name;
44059
44180
  const projectArn = result.project.arn;
@@ -44071,7 +44192,7 @@ var CodeBuildProvider = class {
44071
44192
  this.logger.debug(`Updating CodeBuild Project ${logicalId}: ${physicalId}`);
44072
44193
  assertRegionMatch(context?.expectedRegion ? await this.getClient().config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
44073
44194
  try {
44074
- const input = this.mapProperties(logicalId, properties);
44195
+ const input = this.mapProperties(() => physicalId, properties);
44075
44196
  input.name = physicalId;
44076
44197
  if (properties["BuildBatchConfig"] == null && previousProperties["BuildBatchConfig"] != null) input.buildBatchConfig = {};
44077
44198
  await this.getClient().send(new UpdateProjectCommand(input));
@@ -44425,7 +44546,7 @@ var CodeCommitRepositoryProvider = class {
44425
44546
  }
44426
44547
  async create(logicalId, resourceType, properties) {
44427
44548
  this.logger.debug(`Creating CodeCommit Repository ${logicalId}`);
44428
- const repositoryName = properties["RepositoryName"] || generateResourceName(logicalId, { maxLength: 100 });
44549
+ const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::CodeCommit::Repository", logicalId);
44429
44550
  const lists = this.readDesiredLists(logicalId, resourceType, {
44430
44551
  Triggers: properties["Triggers"],
44431
44552
  Tags: properties["Tags"]
@@ -45367,10 +45488,7 @@ var S3DirectoryBucketProvider = class {
45367
45488
  const azName = properties["LocationName"]?.replace(/--x-s3$/, "") || "us-east-1a";
45368
45489
  const azId = await this.getAzId(azName);
45369
45490
  let bucketName = properties["BucketName"];
45370
- if (!bucketName) bucketName = `${generateResourceName(logicalId, {
45371
- maxLength: 64,
45372
- lowercase: true
45373
- })}--${azId}--x-s3`;
45491
+ if (!bucketName) bucketName = generatedNameFor("AWS::S3Express::DirectoryBucket", logicalId, { zoneId: azId });
45374
45492
  const tags = desiredTags;
45375
45493
  const includeTags = tags.length > 0;
45376
45494
  try {
@@ -46304,7 +46422,7 @@ var ECRProvider = class {
46304
46422
  async create(logicalId, resourceType, properties) {
46305
46423
  this.logger.debug(`Creating ECR Repository ${logicalId}`);
46306
46424
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
46307
- const repositoryName = properties["RepositoryName"] || generateResourceName(logicalId, { maxLength: 256 }).toLowerCase();
46425
+ const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::ECR::Repository", logicalId);
46308
46426
  let repositoryCreated = false;
46309
46427
  try {
46310
46428
  const tags = properties["Tags"] !== void 0 && properties["Tags"] !== null ? desiredTags : void 0;
@@ -47292,4 +47410,4 @@ var ACMCertificateProvider = class {
47292
47410
 
47293
47411
  //#endregion
47294
47412
  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 };
47295
- //# sourceMappingURL=provider-classes-CBbWGsK0.js.map
47413
+ //# sourceMappingURL=provider-classes-B2_u4Fg0.js.map