@go-to-k/cdkd 0.296.26 → 0.296.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +7 -2
  2. package/dist/{asg-provider-CbKWXl3P.js → asg-provider-B3zcS87C.js} +3 -3
  3. package/dist/{asg-provider-CbKWXl3P.js.map → asg-provider-B3zcS87C.js.map} +1 -1
  4. package/dist/cli.js +2 -2
  5. package/dist/{deploy-engine-DsF6NsaQ.js → deploy-engine-D4FdwPCi.js} +1715 -1592
  6. package/dist/deploy-engine-D4FdwPCi.js.map +1 -0
  7. package/dist/{iam-policy-targets-BoZuWtxK.js → iam-policy-targets-B61e5_Sk.js} +2 -2
  8. package/dist/{iam-policy-targets-BoZuWtxK.js.map → iam-policy-targets-B61e5_Sk.js.map} +1 -1
  9. package/dist/{iam-role-provider-ff8olbc5.js → iam-role-provider-0U4kMuzh.js} +3 -3
  10. package/dist/{iam-role-provider-ff8olbc5.js.map → iam-role-provider-0U4kMuzh.js.map} +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +3 -3
  14. package/dist/{neptune-provider-4HoOfrUS.js → neptune-provider-DF6Eh4Tl.js} +3 -3
  15. package/dist/{neptune-provider-4HoOfrUS.js.map → neptune-provider-DF6Eh4Tl.js.map} +1 -1
  16. package/dist/{program-CXVhqA7j.js → program-v_QNBjtZ.js} +46 -25
  17. package/dist/program-v_QNBjtZ.js.map +1 -0
  18. package/dist/{provider-classes-C2uFHLt7.js → provider-classes-wbKBBEol.js} +78 -15
  19. package/dist/provider-classes-wbKBBEol.js.map +1 -0
  20. package/dist/{rds-provider-CgIK1n7q.js → rds-provider-BfQsw4hw.js} +3 -3
  21. package/dist/{rds-provider-CgIK1n7q.js.map → rds-provider-BfQsw4hw.js.map} +1 -1
  22. package/dist/{version-BJxzX87A.js → version-B0JEGOLV.js} +2 -2
  23. package/dist/{version-BJxzX87A.js.map → version-B0JEGOLV.js.map} +1 -1
  24. package/package.json +10 -3
  25. package/dist/deploy-engine-DsF6NsaQ.js.map +0 -1
  26. package/dist/program-CXVhqA7j.js.map +0 -1
  27. package/dist/provider-classes-C2uFHLt7.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { r as getAwsClients } from "./aws-clients-CnmtbrxD.js";
2
2
  import { F as displayStackName, I as isPasteableIdent, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, a as getLogger, b as generateResourceNameWithFallback, n as isAwsAuthoredFailure, r as safeStringify, t as describeAwsFailure, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
3
- import { $ as protectedReplacementAdvice, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, H as observeThenDisableProtection, Jn as markNameCollision, Jt as withPasteableAwsProfile, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, Rn as shellQuote, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Ut as injectiveKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKeyPrefix, X as WITHHELD_AWS_COMMAND, Xt as ambientCredentialConfig, Y as UNNAMEABLE_ID_CLAUSE, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Z as isAwsCliLiteral, Zt as clientDefaultsFor, _ as RecentIdSet, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isThrottlingError, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, er as isRetryableTransientError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as hasClauseBreak, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, o as readPrincipalLists, or as markNonRetryable, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, rr as THROTTLING_ERROR_NAMES, sr as markRedactedCause, tn as CdkdError, tr as isTransientServerError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause } from "./iam-policy-targets-BoZuWtxK.js";
3
+ import { $ as protectedReplacementAdvice, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, H as observeThenDisableProtection, Jn as markNameCollision, Jt as withPasteableAwsProfile, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, Rn as shellQuote, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Ut as injectiveKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKeyPrefix, X as WITHHELD_AWS_COMMAND, Xt as ambientCredentialConfig, Y as UNNAMEABLE_ID_CLAUSE, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Z as isAwsCliLiteral, Zt as clientDefaultsFor, _ as RecentIdSet, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isThrottlingError, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, er as isRetryableTransientError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as hasClauseBreak, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, o as readPrincipalLists, or as markNonRetryable, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, rr as THROTTLING_ERROR_NAMES, sr as markRedactedCause, tn as CdkdError, tr as isTransientServerError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause } from "./iam-policy-targets-B61e5_Sk.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { $n as definedAttributes, At as awaitInFlightSibling, B as INDEX_SETTLE_POLL_INTERVAL_MS, Ba as toCfnInteger, Co as hasMaskableValues, Cr as observeThenDisableInstanceApiTermination, Ea as findSilentDropProperties, F as compensateRemovedDeletionProtection, Fo as redactSecretsForState, G as hasCdkAutoDeleteTag, Ga as configIntegerRefusal, Gc as renderAssemblyPathEscape, Gn as acquireIdempotencyToken, Go as carriesSecretMask, Gr as s3BucketDomainName, H as waitForIndexesSettled, Ha as coerceCfnBoolean, I as deleteBudgetKey, J as markRefusedBeforeApplying, Ja as replayWarn, Jn as planTagDiff, Jr as s3BucketWebsiteUrl, K as isTruthyCfnBoolean, Ka as configStringRefusal, Kc as resolveAssemblyPath, Ki as refuseMalformedNestedChildOutputs, Kn as DBPROXY_TAGS_WHAT, Kr as s3BucketDualStackDomainName, L as resolveDynamoDbDeleteBudgetClock, La as WARM_THROUGHPUT_MEMBERS, M as DynamoDBGlobalTableProvider, Mc as canonicalizeRegion, Mt as getStackRecords, N as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Nc as derivePartitionAndUrlSuffix, Oa as withoutSilentDropProperties, P as beginDeleteWait, Po as markSameGenerationBag, Qn as tagPlanWarning, Qr as getAccountInfo, Qt as redactedDeleteAddressSkip, R as resolveDynamoDbDeleteBudgetMs, Ra as coerceWarmThroughput$1, Ro as dynamicReferenceTokens, Sr as isTerminationProtectionPropagationError, Tr as reEnableInstanceApiTermination, U as ECR_AUTO_DELETE_IMAGES_TAG, Ua as coerceCfnInteger, Uc as describeFileReadFailure, Un as reserveStackCreateToken, Ur as isSettledInstanceState, V as deleteTableWithIndexBusyRetry, Va as toFiniteNumber, Vn as earliestDefined, W as S3_AUTO_DELETE_OBJECTS_TAG, Wa as configBooleanRefusal, Wc as displayAssemblyPath, Wo as recoverMaskedOutput, Wr as s3BucketArn, Xa as requireConfigObject, Xn as refuseMalformedDesiredTags, Xt as isRedactedRecordedValue, Ya as requireConfigArray, Yn as readTagList, Yt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Za as requireConfigString, Zn as tagMapAsList, Zt as redactedDeleteAddressFields, _i as accountArgs, _r as withIndeterminateGuard, a as findNestedTemplateTreeDefect, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, ci as parseWebACLArn, di as passedParameterClassesOf, er as stringifyIfAssigned, fa as refuseMalformedResourcesForDestroy, fr as slowCcOperationTimeoutMs, go as passedNoEchoParametersOf, gr as deleteSkipReason, gt as revertNestedChildFromJournal, io as sameLambdaFunctionAddress, kc as decodeListingKey, ks as rewriteTemplateAssetReferences, lr as getCurrentResourceSecrets, no as canonicalLambdaFunctionName, o as isAbsoluteAssetPath, pr as unchangedBehindSecretReference, pt as getNestedRevertRun, q as getPriorAttempts, qa as readConfigString, qn as DBPROXY_TAG_OPTIONS, qr as s3BucketRegionalDomainName, qt as getCurrentProducerRegions, ro as lambdaFunctionNameForMask, s as listNestedTemplateRows, t as DeployEngine, to as withRetry, vr as isWaitAbandonedError, wa as withheldAccountClause, wr as reDisableInstanceApiTermination, ws as stringifyValue, xr as ec2InstanceProtectionSite, yr as markWaitAbandoned, yt as getCurrentNestedStackContext, z as DELETE_INDEX_WAIT_PROCEED_NOTE, za as isWarmThroughputDecrease } from "./deploy-engine-DsF6NsaQ.js";
6
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-ff8olbc5.js";
7
- import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-CXVhqA7j.js";
8
- import { RDSProvider } from "./rds-provider-CgIK1n7q.js";
9
- import { NeptuneProvider } from "./neptune-provider-4HoOfrUS.js";
10
- import { ASGProvider } from "./asg-provider-CbKWXl3P.js";
5
+ import { $n as tagPlanWarning, $r as getAccountInfo, $t as redactedDeleteAddressSkip, Ac as decodeListingKey, As as rewriteTemplateAssetReferences, At as awaitInFlightSibling, B as INDEX_SETTLE_POLL_INTERVAL_MS, Ba as isWarmThroughputDecrease, Cr as isTerminationProtectionPropagationError, Da as findSilentDropProperties, Er as reEnableInstanceApiTermination, F as compensateRemovedDeletionProtection, Fo as markSameGenerationBag, G as hasCdkAutoDeleteTag, Ga as configBooleanRefusal, Gc as displayAssemblyPath, Go as recoverMaskedOutput, Gr as s3BucketArn, H as waitForIndexesSettled, Ha as toFiniteNumber, Hn as earliestDefined, I as deleteBudgetKey, Io as redactSecretsForState, J as markRefusedBeforeApplying, Ja as readConfigString, Jn as DBPROXY_TAG_OPTIONS, Jr as s3BucketRegionalDomainName, Jt as getCurrentProducerRegions, K as isTruthyCfnBoolean, Ka as configIntegerRefusal, Kc as renderAssemblyPathEscape, Kn as acquireIdempotencyToken, Ko as carriesSecretMask, Kr as s3BucketDomainName, L as resolveDynamoDbDeleteBudgetClock, M as DynamoDBGlobalTableProvider, Mt as getStackRecords, N as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Nc as canonicalizeRegion, P as beginDeleteWait, Pc as derivePartitionAndUrlSuffix, Qa as requireConfigString, Qn as tagMapAsList, Qt as redactedDeleteAddressFields, R as resolveDynamoDbDeleteBudgetMs, Ra as WARM_THROUGHPUT_MEMBERS, Sr as ec2InstanceProtectionSite, Ta as withheldAccountClause, Tr as reDisableInstanceApiTermination, Ts as stringifyValue, U as ECR_AUTO_DELETE_IMAGES_TAG, Ua as coerceCfnBoolean, V as deleteTableWithIndexBusyRetry, Va as toCfnInteger, W as S3_AUTO_DELETE_OBJECTS_TAG, Wa as coerceCfnInteger, Wc as describeFileReadFailure, Wn as reserveStackCreateToken, Wr as isSettledInstanceState, Xa as requireConfigArray, Xn as readTagList, Xt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Ya as replayWarn, Yn as planTagDiff, Yr as s3BucketWebsiteUrl, Za as requireConfigObject, Zn as refuseMalformedDesiredTags, Zt as isRedactedRecordedValue, _o as passedNoEchoParametersOf, _r as deleteSkipReason, a as findNestedTemplateTreeDefect, ao as sameLambdaFunctionAddress, br as markWaitAbandoned, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, er as definedAttributes, fi as passedParameterClassesOf, gt as revertNestedChildFromJournal, io as lambdaFunctionNameForMask, ka as withoutSilentDropProperties, li as parseWebACLArn, mr as unchangedBehindSecretReference, no as withRetry, o as isAbsoluteAssetPath, pa as refuseMalformedResourcesForDestroy, pr as slowCcOperationTimeoutMs, pt as getNestedRevertRun, q as getPriorAttempts, qa as configStringRefusal, qc as resolveAssemblyPath, qi as refuseMalformedNestedChildOutputs, qn as DBPROXY_TAGS_WHAT, qr as s3BucketDualStackDomainName, ro as canonicalLambdaFunctionName, s as listNestedTemplateRows, t as DeployEngine, tr as stringifyIfAssigned, ur as getCurrentResourceSecrets, vi as accountArgs, vr as withIndeterminateGuard, wo as hasMaskableValues, wr as observeThenDisableInstanceApiTermination, yr as isWaitAbandonedError, yt as getCurrentNestedStackContext, z as DELETE_INDEX_WAIT_PROCEED_NOTE, za as coerceWarmThroughput$1, zo as dynamicReferenceTokens } from "./deploy-engine-D4FdwPCi.js";
6
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-0U4kMuzh.js";
7
+ import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-v_QNBjtZ.js";
8
+ import { RDSProvider } from "./rds-provider-BfQsw4hw.js";
9
+ import { NeptuneProvider } from "./neptune-provider-DF6Eh4Tl.js";
10
+ import { ASGProvider } from "./asg-provider-B3zcS87C.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";
@@ -10095,6 +10095,9 @@ function canonicalJson(value) {
10095
10095
 
10096
10096
  //#endregion
10097
10097
  //#region src/provisioning/providers/dynamodb-table-provider.ts
10098
+ function isTableName(id) {
10099
+ return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
10100
+ }
10098
10101
  function mapSSESpecification(raw) {
10099
10102
  if (raw === null || typeof raw !== "object") return;
10100
10103
  const cfn = raw;
@@ -10453,6 +10456,7 @@ var DynamoDBTableProvider = class {
10453
10456
  if (!keySchema) throw new ProvisioningError(`KeySchema is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
10454
10457
  if (!attributeDefinitions) throw new ProvisioningError(`AttributeDefinitions is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
10455
10458
  let tableCreated = false;
10459
+ let createdTableId;
10456
10460
  try {
10457
10461
  const billingMode = requireConfigString(properties["BillingMode"], "PROVISIONED", "AWS::DynamoDB::Table BillingMode", replayWarn(this.logger, context));
10458
10462
  if (context?.replayingState !== true) {
@@ -10500,8 +10504,9 @@ var DynamoDBTableProvider = class {
10500
10504
  if (properties["TableClass"]) createParams.TableClass = properties["TableClass"];
10501
10505
  const createResourcePolicyDoc = this.extractResourcePolicyDocument(properties["ResourcePolicy"]);
10502
10506
  if (createResourcePolicyDoc !== void 0) createParams.ResourcePolicy = createResourcePolicyDoc;
10503
- await (await this.getCreateClient()).send(new CreateTableCommand(createParams));
10507
+ const createOut = await (await this.getCreateClient()).send(new CreateTableCommand(createParams));
10504
10508
  tableCreated = true;
10509
+ createdTableId = createOut?.TableDescription?.TableId;
10505
10510
  this.logger.debug(`CreateTable initiated for ${tableName}, waiting for ACTIVE status`);
10506
10511
  const tableInfo = await this.waitForTableActive(tableName);
10507
10512
  await this.applyPointInTimeRecovery(tableName, properties["PointInTimeRecoverySpecification"], void 0, maskSecrets);
@@ -10533,7 +10538,7 @@ var DynamoDBTableProvider = class {
10533
10538
  markAuxiliaryFailure(error, logicalId);
10534
10539
  }
10535
10540
  const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to create DynamoDB table ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, tableName, error instanceof Error ? error : void 0);
10536
- if (tableLeftBehind) markCreatedBeforeFailure(thrown, logicalId, resourceType, tableName);
10541
+ if (tableLeftBehind) markCreatedBeforeFailure(thrown, logicalId, resourceType, tableName, createdTableId);
10537
10542
  throw thrown;
10538
10543
  }
10539
10544
  }
@@ -10877,7 +10882,8 @@ var DynamoDBTableProvider = class {
10877
10882
  if (error instanceof ResourceNotFoundException$1) {
10878
10883
  const clientRegion = await this.dynamoDBClient.config.region();
10879
10884
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
10880
- this.logger.debug(`DynamoDB table ${physicalId} does not exist, skipping deletion`);
10885
+ if (context?.failedCreateOrphan === true) this.logger.info(safeMsg` DynamoDB table ${physicalId} (${logicalId}), which a failed deploy created, is already gone; nothing to delete`);
10886
+ else this.logger.debug(`DynamoDB table ${physicalId} does not exist, skipping deletion`);
10881
10887
  this.deleteBudgets.release(deleteBudgetKey(physicalId, context?.expectedRegion));
10882
10888
  this.protectionFlips.release(deleteBudgetKey(physicalId, context?.expectedRegion));
10883
10889
  return;
@@ -11413,6 +11419,36 @@ var DynamoDBTableProvider = class {
11413
11419
  throw err;
11414
11420
  }
11415
11421
  }
11422
+ async isSameResource(journaledPhysicalId, record, resourceType, context) {
11423
+ if (resourceType !== "AWS::DynamoDB::Table") return "unknown";
11424
+ if (!isTableName(journaledPhysicalId) || !isTableName(record.physicalId)) return "unknown";
11425
+ if (journaledPhysicalId === record.physicalId) return "same";
11426
+ if (await this.dynamoDBClient.config.region() !== context.expectedRegion) return "unknown";
11427
+ const recordTableId = await this.readTableIdIfExists(record.physicalId);
11428
+ if (recordTableId === void 0) return "unknown";
11429
+ const journaledTableId = await this.readTableIdIfExists(journaledPhysicalId);
11430
+ if (journaledTableId === void 0) return "different";
11431
+ return journaledTableId === recordTableId ? "same" : "different";
11432
+ }
11433
+ async resourceIdentity(physicalId, resourceType, context) {
11434
+ if (resourceType !== "AWS::DynamoDB::Table" || !isTableName(physicalId)) return void 0;
11435
+ if (await this.dynamoDBClient.config.region() !== context.expectedRegion) return void 0;
11436
+ const live = await this.readTableIdIfExists(physicalId);
11437
+ return live === void 0 ? RESOURCE_NOT_FOUND : live;
11438
+ }
11439
+ async readTableIdIfExists(tableName) {
11440
+ let response;
11441
+ try {
11442
+ response = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
11443
+ } catch (error) {
11444
+ if (error instanceof ResourceNotFoundException$1) return void 0;
11445
+ throw error;
11446
+ }
11447
+ if (response.Table?.TableName !== tableName) throw new Error("DescribeTable answered for another table than the one asked for");
11448
+ const tableId = response.Table.TableId;
11449
+ if (typeof tableId !== "string" || tableId === "") throw new Error("DescribeTable returned no TableId");
11450
+ return tableId;
11451
+ }
11416
11452
  skipWarmThroughputDecrease(logicalId, physicalId, desired, live, maskSecrets) {
11417
11453
  const warn = (message) => this.logger.warn(maskSecrets(message));
11418
11454
  if (!isWarmThroughputDecrease(desired, live)) return false;
@@ -11896,7 +11932,7 @@ var LogsLogGroupProvider = class {
11896
11932
  maskSecrets: maskerOrIdentity(context?.maskSecrets)
11897
11933
  });
11898
11934
  const disableStep = disableCommand ? `Then disable deletion protection — \`${disableCommand}\`, or via the console — and re-deploy with ${replaceFlags}` : `${UNNAMEABLE_ID_CLAUSE} Then re-deploy with ${replaceFlags}`;
11899
- const remedy = deletionProtected ? `cdkd's recorded properties for this log group carry DeletionProtectionEnabled, so ${replaceFlags} alone will NOT succeed while AWS still has it on: the replacement normally deletes the log group, AWS refuses that delete while protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one). Read "Deletion protection blocks a replacement" in docs/cli-deploy-safety.md BEFORE you disable anything: whether disabling helps at all, and what the flag ends up as, depend on your UpdateReplacePolicy and on whether the deploy completes — neither of which this refusal can see. ${disableStep} to delete + recreate the log group under the new class (its stored log events are lost). Setting DeletionProtectionEnabled: false in the template does NOT clear it in the same deploy: this refusal fires before that property is applied, so that route needs its own deploy with the LogGroupClass change reverted. Or revert the LogGroupClass change and keep the current class.` : `Re-deploy with ${replaceFlags} to delete + recreate the log group under the new class (its stored log events are lost), or revert the LogGroupClass change.`;
11935
+ const remedy = deletionProtected ? `cdkd's recorded properties for this log group carry DeletionProtectionEnabled, so ${replaceFlags} alone will NOT succeed while AWS still has it on: the replacement normally deletes the log group, AWS refuses that delete while protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one). Read "Deletion protection blocks a replacement" at https://cdkd.dev/cli-deploy-safety/#deletion-protection-blocks-a-replacement-and-deploy-cannot-clear-it BEFORE you disable anything: whether disabling helps at all, and what the flag ends up as, depend on your UpdateReplacePolicy and on whether the deploy completes — neither of which this refusal can see. ${disableStep} to delete + recreate the log group under the new class (its stored log events are lost). Setting DeletionProtectionEnabled: false in the template does NOT clear it in the same deploy: this refusal fires before that property is applied, so that route needs its own deploy with the LogGroupClass change reverted. Or revert the LogGroupClass change and keep the current class.` : `Re-deploy with ${replaceFlags} to delete + recreate the log group under the new class (its stored log events are lost), or revert the LogGroupClass change.`;
11900
11936
  const shownClass = (c) => plainIdentOr(c, "a class value that is not a plain identifier");
11901
11937
  throw new ResourceUpdateNotSupportedError("AWS::Logs::LogGroup", logicalId, `the LogGroupClass (from ${shownClass(prevClass)} to ${shownClass(nextClass)}) cannot be changed after creation. ${remedy} Note --force-stateful-recreation has NO per-resource granularity: it clears the data guard for every replacement target in the run`);
11902
11938
  }
@@ -12142,6 +12178,9 @@ var LogsLogGroupProvider = class {
12142
12178
 
12143
12179
  //#endregion
12144
12180
  //#region src/provisioning/providers/cloudwatch-alarm-provider.ts
12181
+ function isAlarmWriteThrottle(error) {
12182
+ return isThrottlingError(error) || error instanceof Error && error.message.includes("Rate exceeded");
12183
+ }
12145
12184
  var CloudWatchAlarmProvider = class {
12146
12185
  cloudWatchClient;
12147
12186
  logger = getLogger().child("CloudWatchAlarmProvider");
@@ -12184,7 +12223,7 @@ var CloudWatchAlarmProvider = class {
12184
12223
  Key,
12185
12224
  Value
12186
12225
  }));
12187
- await this.cloudWatchClient.send(new PutMetricAlarmCommand(createParams));
12226
+ await this.sendWithThrottleRetry("PutMetricAlarm", logicalId, () => this.cloudWatchClient.send(new PutMetricAlarmCommand(createParams)));
12188
12227
  this.logger.debug(`Successfully created CloudWatch alarm ${logicalId}: ${alarmName}`);
12189
12228
  return {
12190
12229
  physicalId: alarmName,
@@ -12199,7 +12238,7 @@ var CloudWatchAlarmProvider = class {
12199
12238
  this.logger.debug(`Updating CloudWatch alarm ${logicalId}: ${physicalId}`);
12200
12239
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
12201
12240
  try {
12202
- await this.cloudWatchClient.send(new PutMetricAlarmCommand(this.buildAlarmParams(physicalId, properties)));
12241
+ await this.sendWithThrottleRetry("PutMetricAlarm", logicalId, () => this.cloudWatchClient.send(new PutMetricAlarmCommand(this.buildAlarmParams(physicalId, properties))));
12203
12242
  this.logger.debug(`Successfully updated CloudWatch alarm ${logicalId}`);
12204
12243
  const alarmArn = await this.getAlarmArn(physicalId);
12205
12244
  await this.applyTagDiff(alarmArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
@@ -12213,10 +12252,34 @@ var CloudWatchAlarmProvider = class {
12213
12252
  throw new ProvisioningError(`Failed to update CloudWatch alarm ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
12214
12253
  }
12215
12254
  }
12255
+ throttleDelaysMs = [
12256
+ 1e3,
12257
+ 2e3,
12258
+ 4e3,
12259
+ 8e3,
12260
+ 16e3,
12261
+ 2e4,
12262
+ 2e4,
12263
+ 2e4
12264
+ ];
12265
+ throttleJitter = () => Math.random();
12266
+ throttleSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
12267
+ async sendWithThrottleRetry(label, logicalId, send) {
12268
+ for (let retry = 0;; retry++) try {
12269
+ await send();
12270
+ return;
12271
+ } catch (error) {
12272
+ const ceiling = this.throttleDelaysMs[retry];
12273
+ if (ceiling === void 0 || !isAlarmWriteThrottle(error)) throw error;
12274
+ const delay = Math.round(ceiling / 2 + this.throttleJitter() * ceiling / 2);
12275
+ this.logger.debug(safeMsg`${label} for ${logicalId} was throttled; retrying in ${delay}ms (retry ${retry + 1}/${this.throttleDelaysMs.length})`);
12276
+ await this.throttleSleep(delay);
12277
+ }
12278
+ }
12216
12279
  async delete(logicalId, physicalId, resourceType, _properties, context) {
12217
12280
  this.logger.debug(`Deleting CloudWatch alarm ${logicalId}: ${physicalId}`);
12218
12281
  try {
12219
- await this.cloudWatchClient.send(new DeleteAlarmsCommand({ AlarmNames: [physicalId] }));
12282
+ await this.sendWithThrottleRetry("DeleteAlarms", logicalId, () => this.cloudWatchClient.send(new DeleteAlarmsCommand({ AlarmNames: [physicalId] })));
12220
12283
  this.logger.debug(`Successfully deleted CloudWatch alarm ${logicalId}`);
12221
12284
  } catch (error) {
12222
12285
  if (error instanceof Error && error.name === "ResourceNotFound") {
@@ -44511,4 +44574,4 @@ var ACMCertificateProvider = class {
44511
44574
 
44512
44575
  //#endregion
44513
44576
  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, LambdaPermissionProvider, LambdaUrlProvider, 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 };
44514
- //# sourceMappingURL=provider-classes-C2uFHLt7.js.map
44577
+ //# sourceMappingURL=provider-classes-wbKBBEol.js.map