@go-to-k/cdkd 0.301.15 → 0.302.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 (33) hide show
  1. package/dist/{asg-provider-ClDYCUia.js → asg-provider-BRr_hsky.js} +5 -5
  2. package/dist/asg-provider-BRr_hsky.js.map +1 -0
  3. package/dist/{aws-failure-text-CdgZn80O.js → aws-failure-text-BDZdavf4.js} +310 -35
  4. package/dist/aws-failure-text-BDZdavf4.js.map +1 -0
  5. package/dist/cli.js +2 -2
  6. package/dist/{deploy-engine-Dy7N7-Il.js → deploy-engine-DU0BoQqo.js} +1479 -457
  7. package/dist/deploy-engine-DU0BoQqo.js.map +1 -0
  8. package/dist/{iam-policy-targets-Dap4bLyq.js → iam-policy-targets-Dnk6FCsr.js} +2 -2
  9. package/dist/{iam-policy-targets-Dap4bLyq.js.map → iam-policy-targets-Dnk6FCsr.js.map} +1 -1
  10. package/dist/{iam-role-provider-C8Icvrf7.js → iam-role-provider-WGsb9RxZ.js} +14 -5
  11. package/dist/iam-role-provider-WGsb9RxZ.js.map +1 -0
  12. package/dist/index.d.ts +31 -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-WE1O3kXY.js} +7 -16
  16. package/dist/neptune-provider-WE1O3kXY.js.map +1 -0
  17. package/dist/{program-CXvao3wc.js → program-BVLiidXb.js} +172 -30
  18. package/dist/program-BVLiidXb.js.map +1 -0
  19. package/dist/{provider-classes-CBbWGsK0.js → provider-classes-CXSiWJVn.js} +96 -89
  20. package/dist/provider-classes-CXSiWJVn.js.map +1 -0
  21. package/dist/{rds-provider-BMQvQTTS.js → rds-provider-6RgDTDCV.js} +7 -16
  22. package/dist/rds-provider-6RgDTDCV.js.map +1 -0
  23. package/dist/{version-DadUoJjK.js → version-C2XBsD-i.js} +2 -2
  24. package/dist/{version-DadUoJjK.js.map → version-C2XBsD-i.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-role-provider-C8Icvrf7.js.map +0 -1
  30. package/dist/neptune-provider-CtnwSAGM.js.map +0 -1
  31. package/dist/program-CXvao3wc.js.map +0 -1
  32. package/dist/provider-classes-CBbWGsK0.js.map +0 -1
  33. 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 { C as generateResourceName, G as displayIdent, J as isPasteableIdent, K as displaySafe, T as generatedNameFor, X as plainIdentOr, Z as safeMsg, a as safeStringify, i as isAwsAuthoredFailure, j as recordedGeneratedNameKept, n as describeAwsFailure, q as displayStackName, r as describeAwsStatusReason, s as getLogger, w as generateResourceNameWithFallback, z as SECRET_REF_MAX_CODE_POINTS } from "./aws-failure-text-BDZdavf4.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-Dnk6FCsr.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, Cs as redactForState, Dt as isAccessDeniedError, E as markRefusedBeforeApplying, Ei as s3BucketWebsiteUrl, Eo as findSilentDropProperties, Er as reserveStackCreateToken, Et as chunks, F as findNestedTemplateTreeDefect, Fn as replacedDeleteFailureVerdict, 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 REDACTED_DELETE_ADDRESS_SKIP_REASON, Ka as refuseMalformedNestedChildOutputs, Kl as canonicalizeRegion, Ko as configStringRefusal, Kt as getCurrentProducerRegions, L as listNestedTemplateRows, Lo as WARM_THROUGHPUT_MEMBERS, Lr as tagPlanWarning, Mr as DBPROXY_TAG_OPTIONS, Nn as getStackRecords, Nr as planTagDiff, Oo as withoutSilentDropProperties, Or as acquireIdempotencyToken, Os as hasMaskableValues, Ot as lookupEachName, 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, Ts as snapshotPassProvenance, Ul as decodeListingKey, Uo as coerceCfnInteger, Vo as toFiniteNumber, Wc as rewriteTemplateAssetReferences, Wo as configBooleanRefusal, Ws as dynamicReferenceTokens, Xo as requireConfigObject, Xs as recoverMaskedOutput, Xt as redactedDeleteAddressFields, Yo as requireConfigArray, Yr as getCurrentResourceSecrets, Yt as isRedactedRecordedValue, Zi as getAccountInfo, Zo as requireConfigString, Zs as physicalNameCopiesOf, Zt as redactedDeleteAddressSkip, _ as deleteTableWithIndexBusyRetry, _a as accountArgs, au as renderAssemblyPathEscape, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ci as withIndeterminateGuard, ct as getNestedRevertRun, d as compensateRemovedDeletionProtection, dt as revertNestedChildFromJournal, f as deleteBudgetKey, fi as ec2InstanceProtectionSite, fo as refuseMalformedResourcesForDestroy, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reEnableInstanceApiTermination, gs as passedNoEchoParametersOf, gt as withNestedStackContext, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as reDisableInstanceApiTermination, ht as getCurrentNestedStackContext, is as sameLambdaFunctionAddress, iu as displayAssemblyPath, ji as outputReferenceProvenanceOf, jn as awaitInFlightSibling, jr as DBPROXY_TAGS_WHAT, kr as isRefusedByName, kt as withApiLimit, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as isWaitAbandonedError, m as resolveDynamoDbDeleteBudgetMs, mi as observeThenDisableInstanceApiTermination, ni as unchangedBehindSecretReference, ns as canonicalLambdaFunctionName, ou as resolveAssemblyPath, p as resolveDynamoDbDeleteBudgetClock, pi as isTerminationProtectionPropagationError, ql as derivePartitionAndUrlSuffix, qo as readConfigString, 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, ur as secretNamedAttributeNamesOf, v as maskedLogger, w as isTruthyCfnBoolean, wi as s3BucketDualStackDomainName, wo as withheldAccountClause, wr as earliestDefined, ws as recordReferenceProvenanceEntry, x as ECR_AUTO_DELETE_IMAGES_TAG, xi as isSettledInstanceState, y as relayedIndexBusyDelete, zc as stringifyValue, zo as isWarmThroughputDecrease, zr as stringifyIfAssigned } from "./deploy-engine-DU0BoQqo.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-WGsb9RxZ.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-BVLiidXb.js";
8
+ import { RDSProvider } from "./rds-provider-6RgDTDCV.js";
9
+ import { NeptuneProvider } from "./neptune-provider-WE1O3kXY.js";
10
+ import { ASGProvider } from "./asg-provider-BRr_hsky.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";
@@ -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);
@@ -9576,7 +9589,7 @@ var LambdaLayerVersionProvider = class {
9576
9589
  });
9577
9590
  }
9578
9591
  async create(logicalId, resourceType, properties, context) {
9579
- const layerName = properties["LayerName"] || generateResourceName(logicalId, { maxLength: 64 });
9592
+ const layerName = properties["LayerName"] || generatedNameFor("AWS::Lambda::LayerVersion", logicalId);
9580
9593
  const log = withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), [[properties["LayerName"], layerName], [properties["LayerName"], layerNameSegment(layerName)]]);
9581
9594
  log.debug(`Creating Lambda layer version ${logicalId}`);
9582
9595
  const content = properties["Content"];
@@ -11080,7 +11093,7 @@ var LambdaNetworkConnectorProvider = class {
11080
11093
  async create(logicalId, resourceType, properties, context) {
11081
11094
  this.logger.debug(safeMsg`Creating Lambda network connector ${logicalId}`);
11082
11095
  const tagList = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
11083
- const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] : generateResourceName(logicalId, { maxLength: 64 });
11096
+ const name = typeof properties["Name"] === "string" && properties["Name"] !== "" ? properties["Name"] : generatedNameFor("AWS::Lambda::NetworkConnector", logicalId);
11084
11097
  const vpc = this.readVpcEgress(properties, logicalId, resourceType, void 0);
11085
11098
  const createToken = acquireIdempotencyToken({
11086
11099
  scope: "CreateNetworkConnector",
@@ -11964,6 +11977,10 @@ const deleteTableRetryDelays = {};
11964
11977
  function maskLeafValue(value, maskSecrets) {
11965
11978
  return maskDeep(value, maskSecrets);
11966
11979
  }
11980
+ const tableNameReleaseWait = {
11981
+ maxPolls: 600,
11982
+ intervalMs: INDEX_SETTLE_POLL_INTERVAL_MS
11983
+ };
11967
11984
  var DynamoDBTableProvider = class {
11968
11985
  dynamoDBClient;
11969
11986
  createClient;
@@ -12024,7 +12041,7 @@ var DynamoDBTableProvider = class {
12024
12041
  const debug = (message) => this.logger.debug(maskSecrets(message));
12025
12042
  this.logger.debug(`Creating DynamoDB table ${logicalId}`);
12026
12043
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
12027
- const tableName = properties["TableName"] || generateResourceName(logicalId, { maxLength: 255 });
12044
+ const tableName = properties["TableName"] || generatedNameFor("AWS::DynamoDB::Table", logicalId);
12028
12045
  const keySchema = properties["KeySchema"];
12029
12046
  const attributeDefinitions = properties["AttributeDefinitions"];
12030
12047
  if (!keySchema) throw new ProvisioningError(`KeySchema is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
@@ -12372,6 +12389,22 @@ var DynamoDBTableProvider = class {
12372
12389
  throw this.wrapCaughtError(maskSecrets, error, (text) => new ProvisioningError(`Failed to update DynamoDB table ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
12373
12390
  }
12374
12391
  }
12392
+ async waitForNameReleased(logicalId, physicalId, _resourceType, context) {
12393
+ const mask = context.maskSecrets ?? ((text) => text);
12394
+ this.logger.info(mask(` Waiting for the deleted DynamoDB table ${physicalId} to release its name...`));
12395
+ for (let poll = 0; poll < tableNameReleaseWait.maxPolls; poll++) {
12396
+ if (context.isInterrupted()) return;
12397
+ try {
12398
+ await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
12399
+ } catch (error) {
12400
+ if (error instanceof ResourceNotFoundException$1) return;
12401
+ this.logger.debug(mask(`DynamoDB table ${logicalId}: name-release check failed: ${describeAwsFailure(error).detail}`));
12402
+ if (!isThrottlingError(error) && !isTransientServerError(error)) return;
12403
+ }
12404
+ await new Promise((resolve) => setTimeout(resolve, tableNameReleaseWait.intervalMs));
12405
+ }
12406
+ this.logger.debug(mask(`DynamoDB table ${logicalId} (${physicalId}) still held its name after the wait`));
12407
+ }
12375
12408
  async delete(logicalId, physicalId, resourceType, _properties, context) {
12376
12409
  const flip = this.protectionFlips.acquire(deleteBudgetKey(physicalId, context?.expectedRegion), DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, resolveDynamoDbDeleteBudgetClock());
12377
12410
  try {
@@ -13433,10 +13466,7 @@ var LogsLogGroupProvider = class {
13433
13466
  }
13434
13467
  generatedCreateName(_resourceType, logicalId, properties) {
13435
13468
  if (properties["LogGroupName"]) return void 0;
13436
- return `/cdkd/${generateResourceName(logicalId, {
13437
- maxLength: 506,
13438
- allowedPattern: /[^a-zA-Z0-9-/_]/g
13439
- })}`;
13469
+ return generatedNameFor("AWS::Logs::LogGroup", logicalId);
13440
13470
  }
13441
13471
  async holderCreatedAt(_resourceType, physicalId) {
13442
13472
  const group = (await this.logsClient.send(new DescribeLogGroupsCommand({ logGroupNamePrefix: physicalId }))).logGroups?.find((g) => g.logGroupName === physicalId);
@@ -14127,7 +14157,7 @@ var CloudWatchAlarmProvider = class {
14127
14157
  }
14128
14158
  generatedCreateName(_resourceType, logicalId, properties) {
14129
14159
  if (properties["AlarmName"]) return void 0;
14130
- return generateResourceName(logicalId, { maxLength: 256 });
14160
+ return generatedNameFor("AWS::CloudWatch::Alarm", logicalId);
14131
14161
  }
14132
14162
  async lookupNames(_resourceType, names) {
14133
14163
  const wanted = new Set(names);
@@ -14446,10 +14476,7 @@ var SecretsManagerSecretProvider = class {
14446
14476
  const { value: v } = log;
14447
14477
  log.debug(`Creating secret ${logicalId}`);
14448
14478
  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
- });
14479
+ const name = properties["Name"] || generatedNameFor("AWS::SecretsManager::Secret", logicalId);
14453
14480
  try {
14454
14481
  let secretString;
14455
14482
  const rawGenerate = properties["GenerateSecretString"];
@@ -14800,10 +14827,7 @@ var SSMParameterProvider = class SSMParameterProvider {
14800
14827
  const ssmTags = SSMParameterProvider.desiredSsmTags(properties["Tags"], resourceType, logicalId);
14801
14828
  const debug = (message) => this.logger.debug(mask(message));
14802
14829
  debug(`Creating SSM parameter ${displaySafe(logicalId)}`);
14803
- const name = properties["Name"] || `/${generateResourceName(logicalId, {
14804
- maxLength: 1023,
14805
- allowedPattern: /[^a-zA-Z0-9-/_]/g
14806
- })}`;
14830
+ const name = properties["Name"] || generatedNameFor("AWS::SSM::Parameter", logicalId);
14807
14831
  const type = properties["Type"] || "String";
14808
14832
  const value = properties["Value"];
14809
14833
  if (!value) throw new ProvisioningError(`Value is required for SSM parameter ${displaySafe(logicalId)}`, resourceType, logicalId);
@@ -15191,7 +15215,8 @@ var EventBridgeRuleProvider = class {
15191
15215
  this.logger.debug(`Updating EventBridge rule ${logicalId}: ${physicalId}`);
15192
15216
  assertRegionMatch(context?.expectedRegion ? await this.eventBridgeClient.config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
15193
15217
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
15194
- const ruleName = properties["Name"] || generateResourceName(logicalId, { maxLength: 64 });
15218
+ const recordedRuleName = physicalId.split("/").pop() ?? "";
15219
+ const ruleName = properties["Name"] || recordedRuleName || generatedNameFor("AWS::Events::Rule", logicalId);
15195
15220
  const newTargets = properties["Targets"];
15196
15221
  const oldTargets = previousProperties["Targets"];
15197
15222
  try {
@@ -15354,7 +15379,7 @@ var EventBridgeRuleProvider = class {
15354
15379
  }
15355
15380
  generatedCreateName(_resourceType, logicalId, properties) {
15356
15381
  if (properties["Name"]) return void 0;
15357
- return generateResourceName(logicalId, { maxLength: 64 });
15382
+ return generatedNameFor("AWS::Events::Rule", logicalId);
15358
15383
  }
15359
15384
  lookupNeedsResolvedProperties(_resourceType, properties) {
15360
15385
  const bus = properties["EventBusName"];
@@ -17289,7 +17314,7 @@ var EC2Provider = class {
17289
17314
  try {
17290
17315
  const createClient = await this.getCreateClient();
17291
17316
  const { response, tagsApplied } = await this.sendTaggedCreate(logicalId, "security-group", desiredTags, (TagSpecifications) => createClient.send(new CreateSecurityGroupCommand({
17292
- GroupName: properties["GroupName"] ?? logicalId,
17317
+ GroupName: properties["GroupName"] ?? generatedNameFor("AWS::EC2::SecurityGroup", logicalId),
17293
17318
  Description: groupDescription,
17294
17319
  VpcId: properties["VpcId"] ?? void 0,
17295
17320
  ...TagSpecifications && { TagSpecifications }
@@ -23852,7 +23877,7 @@ var StepFunctionsProvider = class {
23852
23877
  }
23853
23878
  generatedCreateName(_resourceType, logicalId, properties) {
23854
23879
  if (properties["StateMachineName"]) return void 0;
23855
- return generateResourceName(logicalId, { maxLength: 80 });
23880
+ return generatedNameFor("AWS::StepFunctions::StateMachine", logicalId);
23856
23881
  }
23857
23882
  async holderCreatedAt(_resourceType, physicalId) {
23858
23883
  const resp = await this.getClient().send(new DescribeStateMachineCommand({ stateMachineArn: physicalId }));
@@ -24355,7 +24380,7 @@ var ECSProvider = class {
24355
24380
  async createTaskDefinition(logicalId, resourceType, properties, log) {
24356
24381
  log.debug(`Creating ECS task definition ${logicalId}`);
24357
24382
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
24358
- const family = properties["Family"] || generateResourceName(logicalId, { maxLength: 255 });
24383
+ const family = properties["Family"] || generatedNameFor("AWS::ECS::TaskDefinition", logicalId);
24359
24384
  try {
24360
24385
  const orphanWindow = registerTaskDefinitionLatch.take(logicalId);
24361
24386
  if (orphanWindow !== void 0) await this.reportPossibleOrphanTaskDefinitions(logicalId, family, orphanWindow, log);
@@ -24432,7 +24457,7 @@ var ECSProvider = class {
24432
24457
  log.debug(`Creating ECS service ${logicalId}`);
24433
24458
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
24434
24459
  const client = this.getClient();
24435
- const serviceName = properties["ServiceName"] || generateResourceName(logicalId, { maxLength: 255 });
24460
+ const serviceName = properties["ServiceName"] || generatedNameFor("AWS::ECS::Service", logicalId);
24436
24461
  let survivorArn;
24437
24462
  try {
24438
24463
  const heldBefore = process.env["CDKD_FULL_WAIT"] === "true" ? await nameHeldBefore(() => this.serviceNameHeld(properties["Cluster"], serviceName), (error) => hasErrorName(error, ["ClusterNotFoundException"])) : "free";
@@ -25368,7 +25393,7 @@ var ECSProvider = class {
25368
25393
  }
25369
25394
  generatedCreateName(resourceType, logicalId, properties) {
25370
25395
  if (resourceType !== "AWS::ECS::Cluster" || properties["ClusterName"]) return void 0;
25371
- return generateResourceName(logicalId, { maxLength: 255 });
25396
+ return generatedNameFor("AWS::ECS::Cluster", logicalId);
25372
25397
  }
25373
25398
  async lookupNames(resourceType, names) {
25374
25399
  const found = /* @__PURE__ */ new Map();
@@ -26930,7 +26955,7 @@ var RDSDBProxyProvider = class {
26930
26955
  }
26931
26956
  async create(logicalId, resourceType, properties) {
26932
26957
  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 });
26958
+ const dbProxyName = properties["DBProxyName"] ?? generatedNameFor("AWS::RDS::DBProxy", logicalId);
26934
26959
  const engineFamily = properties["EngineFamily"];
26935
26960
  if (!engineFamily) throw new ProvisioningError(`EngineFamily is required for AWS::RDS::DBProxy ${logicalId}`, resourceType, logicalId);
26936
26961
  const auth = properties["Auth"];
@@ -27253,7 +27278,7 @@ var RDSDBProxyEndpointProvider = class {
27253
27278
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, void 0, "Tags", DBPROXY_TAGS_WHAT, DBPROXY_TAG_OPTIONS);
27254
27279
  const dbProxyName = properties["DBProxyName"];
27255
27280
  if (!dbProxyName) throw new ProvisioningError(`DBProxyName is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
27256
- const dbProxyEndpointName = properties["DBProxyEndpointName"] ?? generateResourceName(logicalId, { maxLength: 64 });
27281
+ const dbProxyEndpointName = properties["DBProxyEndpointName"] ?? generatedNameFor("AWS::RDS::DBProxyEndpoint", logicalId);
27257
27282
  const vpcSubnetIds = properties["VpcSubnetIds"];
27258
27283
  if (!vpcSubnetIds || vpcSubnetIds.length === 0) throw new ProvisioningError(`VpcSubnetIds (at least one) is required for AWS::RDS::DBProxyEndpoint ${logicalId}`, resourceType, logicalId);
27259
27284
  const client = this.getClient();
@@ -28145,10 +28170,7 @@ var DocDBProvider = class {
28145
28170
  async createDBCluster(logicalId, resourceType, properties) {
28146
28171
  this.logger.debug(`Creating DocDB DBCluster ${logicalId}`);
28147
28172
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28148
- const dbClusterIdentifier = properties["DBClusterIdentifier"] || generateResourceName(logicalId, {
28149
- maxLength: 63,
28150
- lowercase: true
28151
- });
28173
+ const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
28152
28174
  let clusterCreated = false;
28153
28175
  let createdResourceId;
28154
28176
  try {
@@ -28294,10 +28316,7 @@ var DocDBProvider = class {
28294
28316
  async createDBInstance(logicalId, resourceType, properties) {
28295
28317
  this.logger.debug(`Creating DocDB DBInstance ${logicalId}`);
28296
28318
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28297
- const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generateResourceName(logicalId, {
28298
- maxLength: 63,
28299
- lowercase: true
28300
- });
28319
+ const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generatedNameFor("AWS::DocDB::DBInstance", logicalId);
28301
28320
  let instanceCreated = false;
28302
28321
  let createdResourceId;
28303
28322
  try {
@@ -28613,10 +28632,7 @@ var DocDBSubnetGroupProvider = class {
28613
28632
  this.assertType(resourceType, logicalId);
28614
28633
  this.logger.debug(safeMsg`Creating DocDB DBSubnetGroup ${logicalId}`);
28615
28634
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
28616
- const dbSubnetGroupName = properties["DBSubnetGroupName"] || generateResourceName(logicalId, {
28617
- maxLength: 255,
28618
- lowercase: true
28619
- });
28635
+ const dbSubnetGroupName = properties["DBSubnetGroupName"] || generatedNameFor("AWS::DocDB::DBSubnetGroup", logicalId);
28620
28636
  try {
28621
28637
  await this.getCreateClient().send(new CreateDBSubnetGroupCommand$1({
28622
28638
  DBSubnetGroupName: dbSubnetGroupName,
@@ -30024,7 +30040,7 @@ var WAFv2WebACLProvider = class {
30024
30040
  async create(logicalId, resourceType, properties, context) {
30025
30041
  this.logger.debug(`Creating WAFv2 WebACL ${logicalId}`);
30026
30042
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
30027
- const name = properties["Name"] || generateResourceName(logicalId, { maxLength: 128 });
30043
+ const name = properties["Name"] || generatedNameFor("AWS::WAFv2::WebACL", logicalId);
30028
30044
  const scope = requireConfigString(properties["Scope"], "REGIONAL", "AWS::WAFv2::WebACL Scope", replayWarn(this.logger, context));
30029
30045
  this.warnOnSdkUnsupportedRuleKeys(logicalId, properties["Rules"]);
30030
30046
  try {
@@ -30563,7 +30579,7 @@ var CognitoUserPoolProvider = class {
30563
30579
  }
30564
30580
  async create(logicalId, resourceType, properties, context) {
30565
30581
  this.logger.debug(`Creating Cognito User Pool ${logicalId}`);
30566
- const poolName = properties["UserPoolName"] || generateResourceName(logicalId, { maxLength: 128 });
30582
+ const poolName = properties["UserPoolName"] || generatedNameFor("AWS::Cognito::UserPool", logicalId);
30567
30583
  let mfaConfiguration;
30568
30584
  try {
30569
30585
  mfaConfiguration = readDeclaredMfaConfiguration(properties["MfaConfiguration"], replayWarn(this.logger, context));
@@ -31326,10 +31342,7 @@ var ElastiCacheProvider = class {
31326
31342
  async createSubnetGroup(logicalId, resourceType, properties) {
31327
31343
  this.logger.debug(`Creating CacheSubnetGroup ${logicalId}`);
31328
31344
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31329
- const cacheSubnetGroupName = properties["CacheSubnetGroupName"] || generateResourceName(logicalId, {
31330
- maxLength: 255,
31331
- lowercase: true
31332
- });
31345
+ const cacheSubnetGroupName = properties["CacheSubnetGroupName"] || generatedNameFor("AWS::ElastiCache::SubnetGroup", logicalId);
31333
31346
  try {
31334
31347
  await this.getCreateClient().send(new CreateCacheSubnetGroupCommand({
31335
31348
  CacheSubnetGroupName: cacheSubnetGroupName,
@@ -31393,10 +31406,7 @@ var ElastiCacheProvider = class {
31393
31406
  async createCacheCluster(logicalId, resourceType, properties) {
31394
31407
  this.logger.debug(`Creating CacheCluster ${logicalId}`);
31395
31408
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
31396
- const cacheClusterId = properties["ClusterName"] || generateResourceName(logicalId, {
31397
- maxLength: 40,
31398
- lowercase: true
31399
- });
31409
+ const cacheClusterId = properties["ClusterName"] || generatedNameFor("AWS::ElastiCache::CacheCluster", logicalId);
31400
31410
  let clusterCreated = false;
31401
31411
  try {
31402
31412
  await this.getCreateClient().send(new CreateCacheClusterCommand({
@@ -35557,7 +35567,7 @@ var GlueJobProvider = class {
35557
35567
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
35558
35568
  const { value: v } = log;
35559
35569
  log.debug(`Creating Glue Job ${logicalId}`);
35560
- const name = properties["Name"] ?? logicalId;
35570
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Job", logicalId);
35561
35571
  const role = properties["Role"];
35562
35572
  const command = properties["Command"];
35563
35573
  if (!role) throw new ProvisioningError(`Role is required for Glue Job ${logicalId}`, resourceType, logicalId);
@@ -35845,7 +35855,7 @@ var GlueCrawlerProvider = class {
35845
35855
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
35846
35856
  const { value: v } = log;
35847
35857
  log.debug(`Creating Glue Crawler ${logicalId}`);
35848
- const name = properties["Name"] ?? logicalId;
35858
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Crawler", logicalId);
35849
35859
  const role = properties["Role"];
35850
35860
  const targets = properties["Targets"];
35851
35861
  if (!role) throw new ProvisioningError(`Role is required for Glue Crawler ${logicalId}`, resourceType, logicalId);
@@ -36095,7 +36105,7 @@ var GlueConnectionProvider = class {
36095
36105
  log.debug(`Creating Glue Connection ${logicalId}`);
36096
36106
  const connectionInput = properties["ConnectionInput"];
36097
36107
  if (!connectionInput) throw new ProvisioningError(`ConnectionInput is required for Glue Connection ${logicalId}`, resourceType, logicalId);
36098
- const name = connectionInput["Name"] ?? logicalId;
36108
+ const name = connectionInput["Name"] ?? generatedNameFor("AWS::Glue::Connection", logicalId);
36099
36109
  const catalogId = properties["CatalogId"];
36100
36110
  try {
36101
36111
  await this.getCreateClient().send(new CreateConnectionCommand({
@@ -36300,7 +36310,7 @@ var GlueTriggerProvider = class {
36300
36310
  const log = glueOperationSinks(this.logger, context?.maskSecrets, secretNamePairs([properties["Name"]]));
36301
36311
  const { value: v } = log;
36302
36312
  log.debug(`Creating Glue Trigger ${logicalId}`);
36303
- const name = properties["Name"] ?? logicalId;
36313
+ const name = properties["Name"] ?? generatedNameFor("AWS::Glue::Trigger", logicalId);
36304
36314
  const type = properties["Type"];
36305
36315
  const actions = properties["Actions"];
36306
36316
  if (!type) throw new ProvisioningError(`Type is required for Glue Trigger ${logicalId}`, resourceType, logicalId);
@@ -37709,7 +37719,7 @@ var KinesisStreamProvider = class {
37709
37719
  const warn = (message) => this.logger.warn(mask(message));
37710
37720
  this.logger.debug(`Creating Kinesis stream ${logicalId}`);
37711
37721
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
37712
- const streamName = properties["Name"] || generateResourceName(logicalId, { maxLength: 128 });
37722
+ const streamName = properties["Name"] || generatedNameFor("AWS::Kinesis::Stream", logicalId);
37713
37723
  const desiredRead = readShardLevelMetrics(properties["DesiredShardLevelMetrics"], mask);
37714
37724
  if (desiredRead.kind === "unusable") {
37715
37725
  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 +38465,7 @@ var SchedulerScheduleProvider = class {
38455
38465
  return result;
38456
38466
  }
38457
38467
  async create(logicalId, resourceType, properties) {
38458
- const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
38468
+ const name = properties["Name"] ?? generatedNameFor("AWS::Scheduler::Schedule", logicalId);
38459
38469
  const groupName = this.groupNameOf(properties);
38460
38470
  this.logger.debug(`Creating Schedule ${logicalId}: ${name}${groupName ? ` (group: ${groupName})` : ""}`);
38461
38471
  try {
@@ -38995,7 +39005,7 @@ var PipesPipeProvider = class {
38995
39005
  }
38996
39006
  async create(logicalId, resourceType, properties, context) {
38997
39007
  const mask = maskerOrIdentity(context?.maskSecrets);
38998
- const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
39008
+ const name = properties["Name"] ?? generatedNameFor("AWS::Pipes::Pipe", logicalId);
38999
39009
  const tags = desiredTagMap(properties["Tags"], logicalId);
39000
39010
  this.logger.debug(mask(`Creating Pipe ${logicalId}: ${name}`));
39001
39011
  let createdIdentity;
@@ -41165,7 +41175,7 @@ const leftInPlaceWarning$1 = (logicalId, names, caller) => {
41165
41175
  const one = names.length === 1;
41166
41176
  const subject = one ? "property" : "properties";
41167
41177
  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.`;
41178
+ 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
41179
  };
41170
41180
  const toNumber$2 = (v) => {
41171
41181
  if (v === void 0) return void 0;
@@ -42297,7 +42307,7 @@ const leftInPlaceWarning = (logicalId, names, caller) => {
42297
42307
  const one = names.length === 1;
42298
42308
  const subject = one ? "property" : "properties";
42299
42309
  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.`;
42310
+ 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
42311
  };
42302
42312
  const addInstanceFleetLatch = new AmbiguousCreateLatch("emr:AddInstanceFleet");
42303
42313
  const fleetsCreatedByThisProcess = new RecentIdSet();
@@ -42682,7 +42692,7 @@ var FirehoseProvider = class {
42682
42692
  let createdStreamName;
42683
42693
  try {
42684
42694
  const input = {
42685
- DeliveryStreamName: deliveryStreamName || logicalId,
42695
+ DeliveryStreamName: deliveryStreamName || generatedNameFor("AWS::KinesisFirehose::DeliveryStream", logicalId),
42686
42696
  DeliveryStreamType: deliveryStreamType
42687
42697
  };
42688
42698
  if (properties["S3DestinationConfiguration"]) {
@@ -43578,7 +43588,7 @@ var CloudTrailProvider = class {
43578
43588
  let createdTrailArn;
43579
43589
  try {
43580
43590
  const result = await this.getCreateClient().send(new CreateTrailCommand({
43581
- Name: trailName ?? logicalId,
43591
+ Name: trailName ?? generatedNameFor("AWS::CloudTrail::Trail", logicalId),
43582
43592
  S3BucketName: s3BucketName,
43583
43593
  S3KeyPrefix: s3KeyPrefix,
43584
43594
  IsMultiRegionTrail: isMultiRegionTrail,
@@ -43923,8 +43933,8 @@ var CodeBuildProvider = class {
43923
43933
  artifactIdentifier: artifacts["ArtifactIdentifier"]
43924
43934
  };
43925
43935
  }
43926
- mapProperties(logicalId, properties) {
43927
- const name = properties["Name"] ?? logicalId;
43936
+ mapProperties(undeclaredName, properties) {
43937
+ const name = properties["Name"] ?? undeclaredName();
43928
43938
  const source = properties["Source"];
43929
43939
  const environment = properties["Environment"];
43930
43940
  const sanitizeOptionalString = (value) => {
@@ -44053,7 +44063,7 @@ var CodeBuildProvider = class {
44053
44063
  async create(logicalId, resourceType, properties) {
44054
44064
  this.logger.debug(`Creating CodeBuild Project ${logicalId}`);
44055
44065
  try {
44056
- const input = this.mapProperties(logicalId, properties);
44066
+ const input = this.mapProperties(() => generatedNameFor("AWS::CodeBuild::Project", logicalId), properties);
44057
44067
  const result = await this.getCreateClient().send(new CreateProjectCommand(input));
44058
44068
  const projectName = result.project.name;
44059
44069
  const projectArn = result.project.arn;
@@ -44071,7 +44081,7 @@ var CodeBuildProvider = class {
44071
44081
  this.logger.debug(`Updating CodeBuild Project ${logicalId}: ${physicalId}`);
44072
44082
  assertRegionMatch(context?.expectedRegion ? await this.getClient().config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
44073
44083
  try {
44074
- const input = this.mapProperties(logicalId, properties);
44084
+ const input = this.mapProperties(() => physicalId, properties);
44075
44085
  input.name = physicalId;
44076
44086
  if (properties["BuildBatchConfig"] == null && previousProperties["BuildBatchConfig"] != null) input.buildBatchConfig = {};
44077
44087
  await this.getClient().send(new UpdateProjectCommand(input));
@@ -44425,7 +44435,7 @@ var CodeCommitRepositoryProvider = class {
44425
44435
  }
44426
44436
  async create(logicalId, resourceType, properties) {
44427
44437
  this.logger.debug(`Creating CodeCommit Repository ${logicalId}`);
44428
- const repositoryName = properties["RepositoryName"] || generateResourceName(logicalId, { maxLength: 100 });
44438
+ const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::CodeCommit::Repository", logicalId);
44429
44439
  const lists = this.readDesiredLists(logicalId, resourceType, {
44430
44440
  Triggers: properties["Triggers"],
44431
44441
  Tags: properties["Tags"]
@@ -45367,10 +45377,7 @@ var S3DirectoryBucketProvider = class {
45367
45377
  const azName = properties["LocationName"]?.replace(/--x-s3$/, "") || "us-east-1a";
45368
45378
  const azId = await this.getAzId(azName);
45369
45379
  let bucketName = properties["BucketName"];
45370
- if (!bucketName) bucketName = `${generateResourceName(logicalId, {
45371
- maxLength: 64,
45372
- lowercase: true
45373
- })}--${azId}--x-s3`;
45380
+ if (!bucketName) bucketName = generatedNameFor("AWS::S3Express::DirectoryBucket", logicalId, { zoneId: azId });
45374
45381
  const tags = desiredTags;
45375
45382
  const includeTags = tags.length > 0;
45376
45383
  try {
@@ -46304,7 +46311,7 @@ var ECRProvider = class {
46304
46311
  async create(logicalId, resourceType, properties) {
46305
46312
  this.logger.debug(`Creating ECR Repository ${logicalId}`);
46306
46313
  const desiredTags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
46307
- const repositoryName = properties["RepositoryName"] || generateResourceName(logicalId, { maxLength: 256 }).toLowerCase();
46314
+ const repositoryName = properties["RepositoryName"] || generatedNameFor("AWS::ECR::Repository", logicalId);
46308
46315
  let repositoryCreated = false;
46309
46316
  try {
46310
46317
  const tags = properties["Tags"] !== void 0 && properties["Tags"] !== null ? desiredTags : void 0;
@@ -47292,4 +47299,4 @@ var ACMCertificateProvider = class {
47292
47299
 
47293
47300
  //#endregion
47294
47301
  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
47302
+ //# sourceMappingURL=provider-classes-CXSiWJVn.js.map