@go-to-k/cdkd 0.302.2 → 0.302.3

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.
@@ -2,13 +2,13 @@ import { r as getAwsClients } from "./aws-clients-B_CEQGE1.js";
2
2
  import { B as SECRET_REF_MAX_CODE_POINTS, C as generateResourceName, D as getCurrentStackInstanceId, J as displayStackName, K as displayIdent, M as recordedGeneratedNameKept, Q as safeMsg, T as generatedNameFor, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify, i as isAwsAuthoredFailure, k as isBeforeStateRead, n as describeAwsFailure, q as displaySafe, r as describeAwsStatusReason, s as getLogger, w as generateResourceNameWithFallback } from "./aws-failure-text-e_ddrDDo.js";
3
3
  import { $ as protectedReplacementAdvice, $t as ambientCredentialConfig, A as isQuotableImportValue, B as isTerminalDeleteFailure, Bn as plainOrDescribed, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as commandHole, H as observeThenDisableProtection, In as hasClauseBreak, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as isInertUnquoted, M as quotedRemedyLogicalId, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nt as markSupersedesEarlierCreate, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qt as ambientClientDefaults, Rn as pasteableCommand, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Un as shellQuote, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wn as withheldTargetClause, X as WITHHELD_AWS_COMMAND, Y as UNNAMEABLE_ID_CLAUSE, Yn as isNameCollisionError, Z as isAwsCliLiteral, Zt as withPasteableAwsProfile, _ as RecentIdSet, _r as isThrottlingError, _t as createMaskedLogSinks, a as onlySecretDerived, at as startInterruptWatch, b as isInsideWindow, br as wrapMaskedAwsError, bt as maskDeep, c as recordedPrincipalsRepair, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, en as clientDefaultsFor, er as markNameCollision, et as renderDisableCommand, fr as isRetryableTransientError, ft as logicalIdShown, g as AmbiguousCreateLatch, gr as isMarkedNonRetryable, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hr as THROTTLING_ERROR_NAMES, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, k as isPlainImportValue, kt as isAuxiliaryFailure, lr as isAmbiguousOutcomeError, lt as compositeIdFormatMessage, nn as AccountIdUnavailableError, nr as relayedNameCollision, o as readPrincipalLists, or as explicitDenyPolicyKind, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pr as isTransientServerError, pt as packCompositeId, q as userPoolProtectionSite, qt as injectiveKeyPrefix, r as SECRET_DERIVED_READ_LIVE, tn as credentialFingerprint, tr as markReplayMayCollide, u as clearOnUpdateRemoval, ur as isExplicitDenyError, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vr as markNonRetryable, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xn as ResourceUpdateNotSupportedError, xt as maskerOrIdentity, y as createAttemptKey, yn as ProvisioningError, yr as markRedactedCause, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation } from "./iam-policy-targets-OtGPguLH.js";
4
4
  import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
5
- import { An as awaitInFlightSibling, Ar as isRefusedByName, Bc as decodeListingKey, Bo as isWarmThroughputDecrease, Br as stringifyIfAssigned, C as hasCdkAutoDeleteTag, Ci as s3BucketArn, Di as s3BucketWebsiteUrl, Do as findSilentDropProperties, Dt as lookupEachName, E as markRefusedBeforeApplying, Ei as s3BucketRegionalDomainName, Er as acquireIdempotencyToken, Et as isAccessDeniedError, F as findNestedTemplateTreeDefect, Fr as readTagList, Go as configBooleanRefusal, Gt as getCurrentProducerRegions, Ho as toFiniteNumber, I as isAbsoluteAssetPath, Ir as refuseMalformedDesiredTags, Is as stringifyValue, Jo as readConfigString, Jt as isRedactedRecordedValue, Ko as configIntegerRefusal, Kr as waitForLambdaFunctionActive, L as listNestedTemplateRows, Lr as tagMapAsList, Mi as outputReferenceProvenanceOf, Mn as getStackRecords, Mr as DBPROXY_TAGS_WHAT, Nr as DBPROXY_TAG_OPTIONS, Ot as withApiLimit, Pn as replacedDeleteFailureVerdict, Pr as planTagDiff, Qi as getAccountInfo, Qo as requireConfigString, R as renderNestedTemplateTreeDefect, Ro as WARM_THROUGHPUT_MEMBERS, Rr as tagPlanWarning, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as isSettledInstanceState, Sr as earliestDefined, T as getPriorAttempts, Ti as s3BucketDualStackDomainName, To as withheldAccountClause, Tt as chunks, Uc as canonicalizeRegion, Uo as coerceCfnBoolean, Vo as toCfnInteger, Vs as rewriteTemplateAssetReferences, W as enclosingDeadlineRemainingMs, Wc as derivePartitionAndUrlSuffix, Wo as coerceCfnInteger, Xo as requireConfigArray, Xr as getCurrentResourceSecrets, Xt as redactedDeleteAddressSkip, Yo as replayWarn, Yt as redactedDeleteAddressFields, Zo as requireConfigObject, _ as deleteTableWithIndexBusyRetry, _i as reEnableInstanceApiTermination, as as sameLambdaFunctionAddress, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ca as parseWebACLArn, ci as deleteSkipReason, d as compensateRemovedDeletionProtection, da as passedParameterClassesOf, di as markWaitAbandoned, el as describeFileReadFailure, f as deleteBudgetKey, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reDisableInstanceApiTermination, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as observeThenDisableInstanceApiTermination, ht as withNestedStackContext, is as lambdaFunctionNameForMask, jr as markDeleteStarted, ko as withoutSilentDropProperties, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as withIndeterminateGuard, lr as secretNamedAttributeNamesOf, m as resolveDynamoDbDeleteBudgetMs, mi as isTerminationProtectionPropagationError, mt as getCurrentNestedStackContext, ni as slowCcOperationTimeoutMs, nl as renderAssemblyPathEscape, ns as withRetry, p as resolveDynamoDbDeleteBudgetClock, pi as ec2InstanceProtectionSite, po as refuseMalformedResourcesForDestroy, qa as refuseMalformedNestedChildOutputs, qo as configStringRefusal, qt as REDACTED_DELETE_ADDRESS_SKIP_REASON, ri as unchangedBehindSecretReference, rl as resolveAssemblyPath, rs as canonicalLambdaFunctionName, st as getNestedRevertRun, t as DeployEngine, tl as displayAssemblyPath, u as beginDeleteWait, ui as isWaitAbandonedError, ut as revertNestedChildFromJournal, v as maskedLogger, va as accountArgs, w as isTruthyCfnBoolean, wi as s3BucketDomainName, wr as reserveStackCreateToken, x as ECR_AUTO_DELETE_IMAGES_TAG, y as relayedIndexBusyDelete, zo as coerceWarmThroughput$1, zr as definedAttributes } from "./deploy-engine-B_xWnZ4Q.js";
5
+ import { An as awaitInFlightSibling, Ar as isRefusedByName, Bc as decodeListingKey, Bo as isWarmThroughputDecrease, Br as stringifyIfAssigned, C as hasCdkAutoDeleteTag, Ci as s3BucketArn, Di as s3BucketWebsiteUrl, Do as findSilentDropProperties, Dt as lookupEachName, E as markRefusedBeforeApplying, Ei as s3BucketRegionalDomainName, Er as acquireIdempotencyToken, Et as isAccessDeniedError, F as findNestedTemplateTreeDefect, Fr as readTagList, Go as configBooleanRefusal, Gt as getCurrentProducerRegions, Ho as toFiniteNumber, I as isAbsoluteAssetPath, Ir as refuseMalformedDesiredTags, Is as stringifyValue, Jo as readConfigString, Jt as isRedactedRecordedValue, Ko as configIntegerRefusal, Kr as waitForLambdaFunctionActive, L as listNestedTemplateRows, Lr as tagMapAsList, Mi as outputReferenceProvenanceOf, Mn as getStackRecords, Mr as DBPROXY_TAGS_WHAT, Nr as DBPROXY_TAG_OPTIONS, Ot as withApiLimit, Pn as replacedDeleteFailureVerdict, Pr as planTagDiff, Qi as getAccountInfo, Qo as requireConfigString, R as renderNestedTemplateTreeDefect, Ro as WARM_THROUGHPUT_MEMBERS, Rr as tagPlanWarning, S as S3_AUTO_DELETE_OBJECTS_TAG, Si as isSettledInstanceState, Sr as earliestDefined, T as getPriorAttempts, Ti as s3BucketDualStackDomainName, To as withheldAccountClause, Tt as chunks, Uc as canonicalizeRegion, Uo as coerceCfnBoolean, Vo as toCfnInteger, Vs as rewriteTemplateAssetReferences, W as enclosingDeadlineRemainingMs, Wc as derivePartitionAndUrlSuffix, Wo as coerceCfnInteger, Xo as requireConfigArray, Xr as getCurrentResourceSecrets, Xt as redactedDeleteAddressSkip, Yo as replayWarn, Yt as redactedDeleteAddressFields, Zo as requireConfigObject, _ as deleteTableWithIndexBusyRetry, _i as reEnableInstanceApiTermination, as as sameLambdaFunctionAddress, b as waitForIndexesSettled, c as DynamoDBGlobalTableProvider, ca as parseWebACLArn, ci as deleteSkipReason, d as compensateRemovedDeletionProtection, da as passedParameterClassesOf, di as markWaitAbandoned, el as describeFileReadFailure, f as deleteBudgetKey, g as INDEX_SETTLE_POLL_INTERVAL_MS, gi as reDisableInstanceApiTermination, h as DELETE_INDEX_WAIT_PROCEED_NOTE, hi as observeThenDisableInstanceApiTermination, ht as withNestedStackContext, is as lambdaFunctionNameForMask, jr as markDeleteStarted, ko as withoutSilentDropProperties, l as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, li as withIndeterminateGuard, lr as secretNamedAttributeNamesOf, m as resolveDynamoDbDeleteBudgetMs, mi as isTerminationProtectionPropagationError, mt as getCurrentNestedStackContext, ni as slowCcOperationTimeoutMs, nl as renderAssemblyPathEscape, ns as withRetry, p as resolveDynamoDbDeleteBudgetClock, pi as ec2InstanceProtectionSite, po as refuseMalformedResourcesForDestroy, qa as refuseMalformedNestedChildOutputs, qo as configStringRefusal, qt as REDACTED_DELETE_ADDRESS_SKIP_REASON, ri as unchangedBehindSecretReference, rl as resolveAssemblyPath, rs as canonicalLambdaFunctionName, st as getNestedRevertRun, t as DeployEngine, tl as displayAssemblyPath, u as beginDeleteWait, ui as isWaitAbandonedError, ut as revertNestedChildFromJournal, v as maskedLogger, va as accountArgs, w as isTruthyCfnBoolean, wi as s3BucketDomainName, wr as reserveStackCreateToken, x as ECR_AUTO_DELETE_IMAGES_TAG, y as relayedIndexBusyDelete, zo as coerceWarmThroughput$1, zr as definedAttributes } from "./deploy-engine-D9SDE-Pj.js";
6
6
  import { D as markSameGenerationBag, F as redactForState, H as recordReferenceProvenanceEntry, Jt as physicalNameCopiesOf, Tt as dynamicReferenceTokens, W as snapshotPassProvenance, Y as hasMaskableValues, Yt as recordAttributeIdCopy, m as passedNoEchoParametersOf, nn as carriesSecretMask, qt as recoverMaskedOutput, xt as withoutPhysicalNameCopies } from "./secret-redaction-BHWS-PZK.js";
7
- import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-TdX7t0Ac.js";
8
- import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DDJHp1K3.js";
9
- import { RDSProvider } from "./rds-provider-Bxh9YW5y.js";
10
- import { NeptuneProvider } from "./neptune-provider-CUoBJ6Ys.js";
11
- import { ASGProvider } from "./asg-provider-B5RKfCs2.js";
7
+ import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-Q1sv3tF1.js";
8
+ import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-DSbJoNKe.js";
9
+ import { RDSProvider } from "./rds-provider-ByCpdpUq.js";
10
+ import { NeptuneProvider } from "./neptune-provider-DjVgEWGf.js";
11
+ import { ASGProvider } from "./asg-provider-DCrwgSCZ.js";
12
12
  import { createHash, randomUUID } from "node:crypto";
13
13
  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";
14
14
  import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateAccessKeyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetAccessKeyLastUsedCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateAccessKeyCommand, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
@@ -49,8 +49,8 @@ import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPo
49
49
  import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, NamespaceNotFound, ResourceInUse, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
50
50
  import { AppSyncClient, CreateApiKeyCommand, CreateDataSourceCommand, CreateGraphqlApiCommand, CreateResolverCommand, DeleteApiKeyCommand, DeleteDataSourceCommand, DeleteGraphqlApiCommand, DeleteResolverCommand, GetDataSourceCommand, GetGraphqlApiCommand, GetGraphqlApiEnvironmentVariablesCommand, GetIntrospectionSchemaCommand, GetResolverCommand, ListApiKeysCommand, ListGraphqlApisCommand, NotFoundException as NotFoundException$4, PutGraphqlApiEnvironmentVariablesCommand, StartSchemaCreationCommand, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateApiKeyCommand, UpdateDataSourceCommand, UpdateGraphqlApiCommand, UpdateResolverCommand } from "@aws-sdk/client-appsync";
51
51
  import { ConcurrentModificationException, CrawlerRunningException, CreateConnectionCommand, CreateCrawlerCommand, CreateDatabaseCommand, CreateJobCommand, CreateSecurityConfigurationCommand, CreateTableCommand as CreateTableCommand$1, CreateTriggerCommand, CreateWorkflowCommand, DeleteConnectionCommand, DeleteCrawlerCommand, DeleteDatabaseCommand, DeleteJobCommand, DeleteSecurityConfigurationCommand, DeleteTableCommand as DeleteTableCommand$1, DeleteTriggerCommand, DeleteWorkflowCommand, EntityNotFoundException, GetConnectionCommand, GetCrawlerCommand, GetDatabaseCommand, GetJobCommand, GetSecurityConfigurationCommand, GetTableCommand, GetTagsCommand, GetTriggerCommand, GetWorkflowCommand, GlueClient, StartCrawlerScheduleCommand, StartTriggerCommand, StopCrawlerCommand, StopCrawlerScheduleCommand, StopTriggerCommand, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$18, UpdateConnectionCommand, UpdateCrawlerCommand, UpdateDatabaseCommand, UpdateJobCommand, UpdateTableCommand as UpdateTableCommand$1, UpdateTriggerCommand, UpdateWorkflowCommand } from "@aws-sdk/client-glue";
52
- import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DuplicateRecordException, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
53
- import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, DisableEnhancedMonitoringCommand, EnableEnhancedMonitoringCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$15, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$12, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateMaxRecordSizeCommand, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
52
+ import { BudgetsClient, CreateBudgetCommand, CreateNotificationCommand, CreateSubscriberCommand, DeleteBudgetCommand, DeleteNotificationCommand, DeleteSubscriberCommand, DescribeBudgetCommand, DescribeNotificationsForBudgetCommand, DescribeSubscribersForNotificationCommand, DuplicateRecordException, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NotFoundException as NotFoundException$5, TagResourceCommand as TagResourceCommand$19, UntagResourceCommand as UntagResourceCommand$19, UpdateBudgetCommand } from "@aws-sdk/client-budgets";
53
+ import { AddTagsToStreamCommand, CreateStreamCommand, DecreaseStreamRetentionPeriodCommand, DeleteStreamCommand, DeregisterStreamConsumerCommand, DescribeStreamCommand, DescribeStreamConsumerCommand, DescribeStreamSummaryCommand, DisableEnhancedMonitoringCommand, EnableEnhancedMonitoringCommand, IncreaseStreamRetentionPeriodCommand, KinesisClient, ListTagsForResourceCommand as ListTagsForResourceCommand$16, ListTagsForStreamCommand, RegisterStreamConsumerCommand, RemoveTagsFromStreamCommand, ResourceNotFoundException as ResourceNotFoundException$12, StartStreamEncryptionCommand, StopStreamEncryptionCommand, TagResourceCommand as TagResourceCommand$20, UntagResourceCommand as UntagResourceCommand$20, UpdateMaxRecordSizeCommand, UpdateShardCountCommand, UpdateStreamModeCommand } from "@aws-sdk/client-kinesis";
54
54
  import { CreateScheduleCommand, DeleteScheduleCommand, GetScheduleCommand, ListSchedulesCommand, ResourceNotFoundException as ResourceNotFoundException$13, SchedulerClient, UpdateScheduleCommand } from "@aws-sdk/client-scheduler";
55
55
  import { CreatePipeCommand, DeletePipeCommand, DescribePipeCommand, NotFoundException as NotFoundException$6, PipesClient, TagResourceCommand as TagResourceCommand$21, UntagResourceCommand as UntagResourceCommand$21, UpdatePipeCommand } from "@aws-sdk/client-pipes";
56
56
  import { AccessPointAlreadyExists, AccessPointNotFound, CreateAccessPointCommand, CreateFileSystemCommand, CreateMountTargetCommand, DeleteAccessPointCommand, DeleteFileSystemCommand, DeleteMountTargetCommand, DescribeAccessPointsCommand, DescribeBackupPolicyCommand, DescribeFileSystemPolicyCommand, DescribeFileSystemsCommand, DescribeLifecycleConfigurationCommand, DescribeMountTargetSecurityGroupsCommand, DescribeMountTargetsCommand, EFSClient, FileSystemAlreadyExists, FileSystemNotFound, ModifyMountTargetSecurityGroupsCommand, MountTargetNotFound, PutBackupPolicyCommand, PutFileSystemPolicyCommand, PutLifecycleConfigurationCommand, UpdateFileSystemCommand, UpdateFileSystemProtectionCommand } from "@aws-sdk/client-efs";
@@ -59,11 +59,11 @@ import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as Ad
59
59
  import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$14, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
60
60
  import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$2, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
61
61
  import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand } from "@aws-sdk/client-codebuild";
62
- import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$16, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$23, UntagResourceCommand as UntagResourceCommand$23, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
62
+ import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$23, UntagResourceCommand as UntagResourceCommand$23, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
63
63
  import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePoliciesCommand, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$16, TagResourceCommand as TagResourceCommand$24, UntagResourceCommand as UntagResourceCommand$24, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
64
- import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$17, S3VectorsClient, TagResourceCommand as TagResourceCommand$25, UntagResourceCommand as UntagResourceCommand$25 } from "@aws-sdk/client-s3vectors";
65
- import { ListTagsForResourceCommand as ListTagsForResourceCommand$18, S3ControlClient, TagResourceCommand as TagResourceCommand$26, UntagResourceCommand as UntagResourceCommand$26 } from "@aws-sdk/client-s3-control";
66
- import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$19, NotFoundException as NotFoundException$7, S3TablesClient, TagResourceCommand as TagResourceCommand$27, UntagResourceCommand as UntagResourceCommand$27 } from "@aws-sdk/client-s3tables";
64
+ import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, S3VectorsClient, TagResourceCommand as TagResourceCommand$25, UntagResourceCommand as UntagResourceCommand$25 } from "@aws-sdk/client-s3vectors";
65
+ import { ListTagsForResourceCommand as ListTagsForResourceCommand$19, S3ControlClient, TagResourceCommand as TagResourceCommand$26, UntagResourceCommand as UntagResourceCommand$26 } from "@aws-sdk/client-s3-control";
66
+ import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableCommand as GetTableCommand$1, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$20, NotFoundException as NotFoundException$7, S3TablesClient, TagResourceCommand as TagResourceCommand$27, UntagResourceCommand as UntagResourceCommand$27 } from "@aws-sdk/client-s3tables";
67
67
 
68
68
  //#region src/provisioning/providers/iam-policy-provider.ts
69
69
  const POLICY_NAME_SKIP_REASON = "no policy name in state — no delete issued";
@@ -117,7 +117,11 @@ var IAMPolicyProvider = class {
117
117
  iamClient;
118
118
  logger = getLogger().child("IAMPolicyProvider");
119
119
  wrapMaskedError(mask, error, build) {
120
- return wrapMaskedAwsError(mask, error, build);
120
+ const failure = describeAwsFailure(error);
121
+ if (!(error instanceof Error)) return build(mask(failure.detail));
122
+ if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
123
+ this.logger.debug(mask(build(mask(failure.detail)).message));
124
+ return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
121
125
  }
122
126
  handledProperties = /* @__PURE__ */ new Map([["AWS::IAM::Policy", /* @__PURE__ */ new Set([
123
127
  "PolicyName",
@@ -516,7 +520,8 @@ var IAMPolicyProvider = class {
516
520
  this.logger.debug(`Successfully deleted IAM policy ${logicalId}`);
517
521
  } catch (error) {
518
522
  const cause = error instanceof Error ? error : void 0;
519
- const failure = new ProvisioningError(`Failed to delete IAM policy ${logicalId}: ${mask(describeAwsFailure(error).detail)}`, resourceType, logicalId, physicalId, cause);
523
+ const opMask = createMaskedLogSinks(this.logger, context?.maskSecrets).mask;
524
+ const failure = this.wrapMaskedError((text) => mask(opMask(text)), error, (text) => new ProvisioningError(`Failed to delete IAM policy ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
520
525
  throw maskError(removedAny ? markDeleteStarted(failure) : failure);
521
526
  }
522
527
  }
@@ -1213,7 +1218,11 @@ var IAMInstanceProfileProvider = class {
1213
1218
  createClient = new IamCreateClientCache(() => this.iamClient);
1214
1219
  logger = getLogger().child("IAMInstanceProfileProvider");
1215
1220
  wrapMaskedError(mask, error, build) {
1216
- return wrapMaskedAwsError(mask, error, build);
1221
+ const failure = describeAwsFailure(error);
1222
+ if (!(error instanceof Error)) return build(mask(failure.detail));
1223
+ if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
1224
+ this.logger.debug(mask(build(mask(failure.detail)).message));
1225
+ return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
1217
1226
  }
1218
1227
  handledProperties = /* @__PURE__ */ new Map([["AWS::IAM::InstanceProfile", /* @__PURE__ */ new Set([
1219
1228
  "InstanceProfileName",
@@ -1346,7 +1355,8 @@ var IAMInstanceProfileProvider = class {
1346
1355
  }
1347
1356
  }
1348
1357
  async delete(logicalId, physicalId, resourceType, _properties, context) {
1349
- this.logger.debug(`Deleting IAM instance profile ${logicalId}: ${physicalId}`);
1358
+ const log = createMaskedLogSinks(this.logger, context?.maskSecrets);
1359
+ log.debug(`Deleting IAM instance profile ${logicalId}: ${physicalId}`);
1350
1360
  let stripped = false;
1351
1361
  try {
1352
1362
  let roles = [];
@@ -1356,7 +1366,7 @@ var IAMInstanceProfileProvider = class {
1356
1366
  if (error instanceof NoSuchEntityException) {
1357
1367
  const clientRegion = await this.iamClient.config.region();
1358
1368
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
1359
- this.logGoneOnDelete(logicalId, physicalId, context);
1369
+ this.logGoneOnDelete(logicalId, physicalId, context, log);
1360
1370
  return;
1361
1371
  }
1362
1372
  throw error;
@@ -1367,27 +1377,28 @@ var IAMInstanceProfileProvider = class {
1367
1377
  RoleName: roleName
1368
1378
  }));
1369
1379
  stripped = true;
1370
- this.logger.debug(`Removed role ${roleName} from instance profile ${physicalId}`);
1380
+ log.debug(`Removed role ${roleName} from instance profile ${physicalId}`);
1371
1381
  } catch (error) {
1372
1382
  if (!(error instanceof NoSuchEntityException)) throw error;
1373
1383
  }
1374
1384
  await this.iamClient.send(new DeleteInstanceProfileCommand({ InstanceProfileName: physicalId }));
1375
- this.logger.debug(`Successfully deleted IAM instance profile ${logicalId}`);
1385
+ log.debug(`Successfully deleted IAM instance profile ${logicalId}`);
1376
1386
  } catch (error) {
1377
1387
  if (error instanceof NoSuchEntityException) {
1378
1388
  const clientRegion = await this.iamClient.config.region();
1379
1389
  assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
1380
- this.logGoneOnDelete(logicalId, physicalId, context);
1390
+ this.logGoneOnDelete(logicalId, physicalId, context, log);
1381
1391
  return;
1382
1392
  }
1383
1393
  const cause = error instanceof Error ? error : void 0;
1384
- const failure = new ProvisioningError(`Failed to delete IAM instance profile ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
1394
+ const { mask } = log;
1395
+ const failure = this.wrapMaskedError(mask, error, (text) => new ProvisioningError(mask(`Failed to delete IAM instance profile ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
1385
1396
  throw stripped ? markDeleteStarted(failure) : failure;
1386
1397
  }
1387
1398
  }
1388
- logGoneOnDelete(logicalId, physicalId, context) {
1399
+ logGoneOnDelete(logicalId, physicalId, context, log) {
1389
1400
  if (context?.failedCreateOrphan === true) this.logger.info(safeMsg` IAM instance profile ${physicalId} (${logicalId}), which a failed deploy created, is already gone; nothing to delete`);
1390
- else this.logger.debug(`Instance profile ${physicalId} does not exist, skipping deletion`);
1401
+ else log.debug(`Instance profile ${log.value(physicalId)} does not exist, skipping deletion`);
1391
1402
  }
1392
1403
  async isSameResource(journaledPhysicalId, record, resourceType, context) {
1393
1404
  if (resourceType !== INSTANCE_PROFILE_TYPE) return "unknown";
@@ -1825,7 +1836,11 @@ var IAMUserGroupProvider = class {
1825
1836
  createClient = new IamCreateClientCache(() => this.iamClient);
1826
1837
  logger = getLogger().child("IAMUserGroupProvider");
1827
1838
  wrapMaskedError(mask, error, build) {
1828
- return wrapMaskedAwsError(mask, error, build);
1839
+ const failure = describeAwsFailure(error);
1840
+ if (!(error instanceof Error)) return build(mask(failure.detail));
1841
+ if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
1842
+ this.logger.debug(mask(build(mask(failure.detail)).message));
1843
+ return markRedactedCause(build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`));
1829
1844
  }
1830
1845
  handledProperties = /* @__PURE__ */ new Map([
1831
1846
  ["AWS::IAM::User", /* @__PURE__ */ new Set([
@@ -2086,7 +2101,7 @@ var IAMUserGroupProvider = class {
2086
2101
  log.debug(`Successfully deleted IAM user ${logicalId}`);
2087
2102
  } catch (error) {
2088
2103
  const cause = error instanceof Error ? error : void 0;
2089
- const failure = new ProvisioningError(log.mask(`Failed to delete IAM user ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
2104
+ const failure = this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(log.mask(`Failed to delete IAM user ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
2090
2105
  throw progress.stripped ? markDeleteStarted(failure) : failure;
2091
2106
  }
2092
2107
  }
@@ -2367,7 +2382,7 @@ var IAMUserGroupProvider = class {
2367
2382
  return;
2368
2383
  }
2369
2384
  const cause = error instanceof Error ? error : void 0;
2370
- const failure = new ProvisioningError(log.mask(`Failed to delete IAM group ${logicalId}: ${describeAwsFailure(error).detail}`), resourceType, logicalId, physicalId, cause);
2385
+ const failure = this.wrapMaskedError(log.mask, error, (text) => new ProvisioningError(log.mask(`Failed to delete IAM group ${logicalId}: ${text}`), resourceType, logicalId, physicalId, cause));
2371
2386
  throw progress.stripped ? markDeleteStarted(failure) : failure;
2372
2387
  }
2373
2388
  }
@@ -2651,7 +2666,8 @@ var IAMUserGroupProvider = class {
2651
2666
  this.logger.debug(`Successfully deleted IAM UserToGroupAddition ${logicalId}`);
2652
2667
  } catch (error) {
2653
2668
  const cause = error instanceof Error ? error : void 0;
2654
- const failure = new ProvisioningError(`Failed to delete IAM UserToGroupAddition ${logicalId}: ${mask(describeAwsFailure(error).detail)}`, resourceType, logicalId, physicalId, cause);
2669
+ const opMask = createMaskedLogSinks(this.logger, context?.maskSecrets).mask;
2670
+ const failure = this.wrapMaskedError((text) => mask(opMask(text)), error, (text) => new ProvisioningError(`Failed to delete IAM UserToGroupAddition ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
2655
2671
  throw maskError(removedAny ? markDeleteStarted(failure) : failure);
2656
2672
  }
2657
2673
  }
@@ -24788,7 +24804,7 @@ var ECSProvider = class {
24788
24804
  const serviceConnectConfigurationInput = JSON.stringify(previousProperties["ServiceConnectConfiguration"] ?? null) !== JSON.stringify(properties["ServiceConnectConfiguration"] ?? null) ? clearOnUpdateRemoval(this.convertServiceConnectConfiguration(properties["ServiceConnectConfiguration"]), previousProperties["ServiceConnectConfiguration"], { enabled: false }) : void 0;
24789
24805
  const volumeConfigurationsInput = JSON.stringify(previousProperties["VolumeConfigurations"] ?? null) !== JSON.stringify(properties["VolumeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertServiceVolumeConfigurations(properties["VolumeConfigurations"]), previousProperties["VolumeConfigurations"], []) : void 0;
24790
24806
  const vpcLatticeConfigurationsInput = JSON.stringify(previousProperties["VpcLatticeConfigurations"] ?? null) !== JSON.stringify(properties["VpcLatticeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertVpcLatticeConfigurations(properties["VpcLatticeConfigurations"]), previousProperties["VpcLatticeConfigurations"], []) : void 0;
24791
- const monitoringInput = JSON.stringify(previousProperties["Monitoring"] ?? null) !== JSON.stringify(properties["Monitoring"] ?? null) && properties["Monitoring"] != null ? this.convertMonitoringConfiguration(properties["Monitoring"]) : void 0;
24807
+ const monitoringInput = JSON.stringify(previousProperties["Monitoring"] ?? null) !== JSON.stringify(properties["Monitoring"] ?? null) ? clearOnUpdateRemoval(this.convertMonitoringConfiguration(properties["Monitoring"]), previousProperties["Monitoring"], { metricConfigurations: [] }) : void 0;
24792
24808
  const forceNewDeploymentInput = this.resolveForceNewDeployment(properties, previousProperties, log);
24793
24809
  const deploymentConfigurationInput = this.resolveDeploymentConfiguration(properties, previousProperties);
24794
24810
  try {
@@ -37428,6 +37444,117 @@ function removableRecorded(kind, items) {
37428
37444
  Subscribers: e["Subscribers"].filter((s) => !holdsSecretDerivedEntry(s["Address"]))
37429
37445
  } : e);
37430
37446
  }
37447
+ function finiteNumber(value) {
37448
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
37449
+ if (typeof value === "string" && value.trim() !== "") {
37450
+ const n = Number(value);
37451
+ return Number.isFinite(n) ? n : void 0;
37452
+ }
37453
+ }
37454
+ function isoDate(value) {
37455
+ let date;
37456
+ if (typeof value === "number") date = new Date(value < 0xe8d4a51000 ? value * 1e3 : value);
37457
+ else if (typeof value === "string" && /^\d+$/.test(value)) {
37458
+ const n = Number(value);
37459
+ date = new Date(n < 0xe8d4a51000 ? n * 1e3 : n);
37460
+ } else if (typeof value === "string") date = new Date(value);
37461
+ else if (value instanceof Date) date = value;
37462
+ else return void 0;
37463
+ return Number.isNaN(date.getTime()) ? void 0 : date.toISOString();
37464
+ }
37465
+ function canonicalSpend(spend) {
37466
+ if (!isPlainRecord(spend)) return spend;
37467
+ const amount = finiteNumber(spend["Amount"]);
37468
+ return amount === void 0 || amount === spend["Amount"] ? spend : {
37469
+ ...spend,
37470
+ Amount: amount
37471
+ };
37472
+ }
37473
+ function canonicalizeBudgetDriftBag(side) {
37474
+ let out = side;
37475
+ const budget = side["Budget"];
37476
+ if (isPlainRecord(budget)) {
37477
+ let nextBudget = budget;
37478
+ const set = (key, value) => {
37479
+ if (value === nextBudget[key]) return;
37480
+ if (nextBudget === budget) nextBudget = { ...budget };
37481
+ nextBudget[key] = value;
37482
+ };
37483
+ set("BudgetLimit", canonicalSpend(budget["BudgetLimit"]));
37484
+ const planned = budget["PlannedBudgetLimits"];
37485
+ if (isPlainRecord(planned)) {
37486
+ const entries = Object.entries(planned).map(([key, spend]) => [key, canonicalSpend(spend)]);
37487
+ if (entries.some(([key, spend]) => spend !== planned[key])) set("PlannedBudgetLimits", Object.fromEntries(entries));
37488
+ }
37489
+ const period = budget["TimePeriod"];
37490
+ if (isPlainRecord(period)) {
37491
+ let nextPeriod = period;
37492
+ for (const key of ["Start", "End"]) {
37493
+ if (period[key] === void 0) continue;
37494
+ const iso = isoDate(period[key]);
37495
+ if (iso === void 0 || iso === period[key]) continue;
37496
+ if (nextPeriod === period) nextPeriod = { ...period };
37497
+ nextPeriod[key] = iso;
37498
+ }
37499
+ set("TimePeriod", nextPeriod);
37500
+ }
37501
+ if (nextBudget !== budget) out = {
37502
+ ...out,
37503
+ Budget: nextBudget
37504
+ };
37505
+ }
37506
+ const list = side["NotificationsWithSubscribers"];
37507
+ if (Array.isArray(list)) {
37508
+ let changed = false;
37509
+ const nextList = list.map((entry) => {
37510
+ if (!isPlainRecord(entry) || !isPlainRecord(entry["Notification"])) return entry;
37511
+ const notification = entry["Notification"];
37512
+ const threshold = finiteNumber(notification["Threshold"]);
37513
+ const fillType = notification["ThresholdType"] == null;
37514
+ const fixThreshold = threshold !== void 0 && threshold !== notification["Threshold"];
37515
+ if (!fillType && !fixThreshold) return entry;
37516
+ changed = true;
37517
+ return {
37518
+ ...entry,
37519
+ Notification: {
37520
+ ...notification,
37521
+ ...fixThreshold && { Threshold: threshold },
37522
+ ...fillType && { ThresholdType: "PERCENTAGE" }
37523
+ }
37524
+ };
37525
+ });
37526
+ if (changed) out = {
37527
+ ...out,
37528
+ NotificationsWithSubscribers: nextList
37529
+ };
37530
+ }
37531
+ return out;
37532
+ }
37533
+ function declaresLegacyFilterShape(properties) {
37534
+ const budget = properties?.["Budget"];
37535
+ if (!isPlainRecord(budget)) return false;
37536
+ const legacy = budget["CostFilters"] != null || budget["CostTypes"] != null;
37537
+ const current = budget["FilterExpression"] != null || budget["Metrics"] != null;
37538
+ return legacy && !current;
37539
+ }
37540
+ function dropElapsedPlannedLimits(baseline, aws, nowMs) {
37541
+ const budget = baseline["Budget"];
37542
+ const awsBudget = aws["Budget"];
37543
+ if (!isPlainRecord(budget) || !isPlainRecord(awsBudget)) return baseline;
37544
+ const planned = budget["PlannedBudgetLimits"];
37545
+ if (!isPlainRecord(planned)) return baseline;
37546
+ const awsPlanned = isPlainRecord(awsBudget["PlannedBudgetLimits"]) ? awsBudget["PlannedBudgetLimits"] : {};
37547
+ const elapsed = (key) => !Object.hasOwn(awsPlanned, key) && /^\d+$/.test(key) && Number(key) * 1e3 < nowMs;
37548
+ const kept = Object.entries(planned).filter(([key]) => !elapsed(key));
37549
+ if (kept.length === Object.keys(planned).length) return baseline;
37550
+ return {
37551
+ ...baseline,
37552
+ Budget: {
37553
+ ...budget,
37554
+ PlannedBudgetLimits: Object.fromEntries(kept)
37555
+ }
37556
+ };
37557
+ }
37431
37558
  var BudgetsBudgetProvider = class {
37432
37559
  client;
37433
37560
  createClient;
@@ -37820,6 +37947,166 @@ var BudgetsBudgetProvider = class {
37820
37947
  throw this.wrapMaskedError(maskerOrIdentity(void 0), error, (text) => new ProvisioningError(`Failed to resolve Arn for budget ${physicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
37821
37948
  }
37822
37949
  }
37950
+ async readCurrentState(physicalId, _logicalId, resourceType, properties) {
37951
+ if (resourceType !== "AWS::Budgets::Budget") return void 0;
37952
+ const accountId = await this.resolveAccountId();
37953
+ const client = this.getClient();
37954
+ const describe = async () => {
37955
+ try {
37956
+ return (await client.send(new DescribeBudgetCommand({
37957
+ AccountId: accountId,
37958
+ BudgetName: physicalId,
37959
+ ShowFilterExpression: !declaresLegacyFilterShape(properties)
37960
+ }))).Budget;
37961
+ } catch (error) {
37962
+ if (error instanceof NotFoundException$5) return RESOURCE_NOT_FOUND;
37963
+ throw error;
37964
+ }
37965
+ };
37966
+ const budget = await describe();
37967
+ if (budget === RESOURCE_NOT_FOUND || budget === void 0) return budget;
37968
+ const notifications = await this.listNotifications(accountId, physicalId);
37969
+ if (notifications === void 0 && await describe() === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
37970
+ const notificationsWithSubscribers = (await Promise.all((notifications ?? []).map(async (notification) => {
37971
+ const subscribers = await this.listSubscribers(accountId, physicalId, notification);
37972
+ return subscribers === void 0 ? void 0 : {
37973
+ notification,
37974
+ subscribers
37975
+ };
37976
+ }))).filter((e) => e !== void 0).map(({ notification, subscribers }) => ({
37977
+ Notification: {
37978
+ NotificationType: notification.NotificationType,
37979
+ ComparisonOperator: notification.ComparisonOperator,
37980
+ Threshold: notification.Threshold,
37981
+ ...notification.ThresholdType !== void 0 && notification.ThresholdType !== "PERCENTAGE" && { ThresholdType: notification.ThresholdType }
37982
+ },
37983
+ Subscribers: subscribers.map((s) => ({
37984
+ SubscriptionType: s.SubscriptionType,
37985
+ Address: s.Address
37986
+ }))
37987
+ }));
37988
+ let tags;
37989
+ try {
37990
+ tags = await client.send(new ListTagsForResourceCommand$15({ ResourceARN: await this.budgetArn(accountId, physicalId) }));
37991
+ } catch (error) {
37992
+ if (error instanceof NotFoundException$5 && await describe() === RESOURCE_NOT_FOUND) return RESOURCE_NOT_FOUND;
37993
+ throw error;
37994
+ }
37995
+ return {
37996
+ Budget: this.budgetFromSdk(budget),
37997
+ NotificationsWithSubscribers: notificationsWithSubscribers,
37998
+ ResourceTags: (tags.ResourceTags ?? []).map((t) => ({
37999
+ Key: t.Key,
38000
+ Value: t.Value
38001
+ }))
38002
+ };
38003
+ }
38004
+ async listNotifications(accountId, budgetName) {
38005
+ const out = [];
38006
+ let token;
38007
+ try {
38008
+ do {
38009
+ const page = await this.getClient().send(new DescribeNotificationsForBudgetCommand({
38010
+ AccountId: accountId,
38011
+ BudgetName: budgetName,
38012
+ MaxResults: 100,
38013
+ ...token !== void 0 && { NextToken: token }
38014
+ }));
38015
+ out.push(...page.Notifications ?? []);
38016
+ token = page.NextToken;
38017
+ } while (token);
38018
+ } catch (error) {
38019
+ if (error instanceof NotFoundException$5) return void 0;
38020
+ throw error;
38021
+ }
38022
+ return out;
38023
+ }
38024
+ async listSubscribers(accountId, budgetName, notification) {
38025
+ const out = [];
38026
+ let token;
38027
+ try {
38028
+ do {
38029
+ const page = await this.getClient().send(new DescribeSubscribersForNotificationCommand({
38030
+ AccountId: accountId,
38031
+ BudgetName: budgetName,
38032
+ Notification: {
38033
+ NotificationType: notification.NotificationType,
38034
+ ComparisonOperator: notification.ComparisonOperator,
38035
+ Threshold: notification.Threshold,
38036
+ ...notification.ThresholdType !== void 0 && { ThresholdType: notification.ThresholdType }
38037
+ },
38038
+ MaxResults: 100,
38039
+ ...token !== void 0 && { NextToken: token }
38040
+ }));
38041
+ out.push(...page.Subscribers ?? []);
38042
+ token = page.NextToken;
38043
+ } while (token);
38044
+ } catch (error) {
38045
+ if (error instanceof NotFoundException$5) return void 0;
38046
+ throw error;
38047
+ }
38048
+ return out;
38049
+ }
38050
+ budgetFromSdk(budget) {
38051
+ const raw = budget;
38052
+ const spend = (s) => s === void 0 ? void 0 : {
38053
+ Amount: finiteNumber(s.Amount) ?? s.Amount,
38054
+ Unit: s.Unit
38055
+ };
38056
+ const out = {
38057
+ BudgetName: budget.BudgetName,
38058
+ BudgetType: raw["BudgetType"],
38059
+ TimeUnit: budget.TimeUnit
38060
+ };
38061
+ if (budget.BudgetLimit) out["BudgetLimit"] = spend(budget.BudgetLimit);
38062
+ if (budget.PlannedBudgetLimits && Object.keys(budget.PlannedBudgetLimits).length > 0) out["PlannedBudgetLimits"] = Object.fromEntries(Object.entries(budget.PlannedBudgetLimits).map(([key, s]) => [key, spend(s)]));
38063
+ if (budget.TimePeriod) out["TimePeriod"] = {
38064
+ ...budget.TimePeriod.Start && { Start: isoDate(budget.TimePeriod.Start) },
38065
+ ...budget.TimePeriod.End && { End: isoDate(budget.TimePeriod.End) }
38066
+ };
38067
+ if (budget.CostFilters && Object.keys(budget.CostFilters).length > 0) out["CostFilters"] = budget.CostFilters;
38068
+ if (budget.CostTypes) out["CostTypes"] = { ...budget.CostTypes };
38069
+ const autoAdjust = raw["AutoAdjustData"];
38070
+ if (isPlainRecord(autoAdjust)) {
38071
+ const historical = autoAdjust["HistoricalOptions"];
38072
+ out["AutoAdjustData"] = {
38073
+ AutoAdjustType: autoAdjust["AutoAdjustType"],
38074
+ ...isPlainRecord(historical) && { HistoricalOptions: { BudgetAdjustmentPeriod: historical["BudgetAdjustmentPeriod"] } }
38075
+ };
38076
+ }
38077
+ if (raw["FilterExpression"] !== void 0) out["FilterExpression"] = raw["FilterExpression"];
38078
+ if (Array.isArray(raw["Metrics"]) && raw["Metrics"].length > 0) out["Metrics"] = raw["Metrics"];
38079
+ if (raw["BillingViewArn"] !== void 0) out["BillingViewArn"] = raw["BillingViewArn"];
38080
+ return out;
38081
+ }
38082
+ getDriftUnorderedPaths(resourceType) {
38083
+ return resourceType === "AWS::Budgets::Budget" ? ["NotificationsWithSubscribers"] : [];
38084
+ }
38085
+ getDriftUnknownPaths(resourceType, properties) {
38086
+ if (resourceType !== "AWS::Budgets::Budget") return [];
38087
+ const budget = properties?.["Budget"];
38088
+ if (!isPlainRecord(budget)) return [];
38089
+ const paths = [];
38090
+ if (budget["AutoAdjustData"] != null || budget["PlannedBudgetLimits"] != null) paths.push("Budget.BudgetLimit");
38091
+ if (budget["FilterExpression"] != null || budget["Metrics"] != null) {
38092
+ if (budget["CostTypes"] != null) paths.push("Budget.CostTypes");
38093
+ if (budget["CostFilters"] != null) paths.push("Budget.CostFilters");
38094
+ }
38095
+ return paths;
38096
+ }
38097
+ canonicalizeDriftProperties(resourceType, side) {
38098
+ return resourceType === "AWS::Budgets::Budget" ? canonicalizeBudgetDriftBag(side) : side;
38099
+ }
38100
+ async canonicalizeDriftPair(resourceType, baseline, aws) {
38101
+ if (resourceType !== "AWS::Budgets::Budget") return {
38102
+ baseline,
38103
+ aws
38104
+ };
38105
+ return {
38106
+ baseline: dropElapsedPlannedLimits(baseline, aws, Date.now()),
38107
+ aws
38108
+ };
38109
+ }
37823
38110
  async import(input) {
37824
38111
  const rawBudget = input.properties["Budget"] ?? {};
37825
38112
  const explicit = input.knownPhysicalId ?? (typeof rawBudget["BudgetName"] === "string" && rawBudget["BudgetName"].length > 0 ? rawBudget["BudgetName"] : void 0);
@@ -38595,7 +38882,7 @@ var KinesisStreamConsumerProvider = class {
38595
38882
  if (desc.ConsumerName !== void 0) result["ConsumerName"] = desc.ConsumerName;
38596
38883
  if (desc.StreamARN !== void 0) result["StreamARN"] = desc.StreamARN;
38597
38884
  try {
38598
- const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$15({ ResourceARN: physicalId }));
38885
+ const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$16({ ResourceARN: physicalId }));
38599
38886
  result["Tags"] = normalizeAwsTagsToCfn(tagsResp.Tags);
38600
38887
  } catch (err) {
38601
38888
  if (err instanceof ResourceNotFoundException$12) return RESOURCE_NOT_FOUND;
@@ -45097,7 +45384,7 @@ var CodeCommitRepositoryProvider = class {
45097
45384
  if (!metadata) return void 0;
45098
45385
  let tags = [];
45099
45386
  if (metadata.Arn) try {
45100
- const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$16({ resourceArn: metadata.Arn }));
45387
+ const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$17({ resourceArn: metadata.Arn }));
45101
45388
  tags = normalizeAwsTagsToCfn(tagsResp.tags);
45102
45389
  } catch (err) {
45103
45390
  if (err instanceof RepositoryDoesNotExistException) return RESOURCE_NOT_FOUND;
@@ -45613,7 +45900,7 @@ var S3VectorsProvider = class {
45613
45900
  if (Object.keys(enc).length > 0) result["EncryptionConfiguration"] = enc;
45614
45901
  }
45615
45902
  if (bucket?.vectorBucketArn) try {
45616
- const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$17({ resourceArn: bucket.vectorBucketArn }));
45903
+ const tagsResp = await this.getClient().send(new ListTagsForResourceCommand$18({ resourceArn: bucket.vectorBucketArn }));
45617
45904
  result["Tags"] = normalizeAwsTagsToCfn(tagsResp.tags);
45618
45905
  } catch (err) {
45619
45906
  this.logger.debug(`S3Vectors ListTagsForResource(${bucket.vectorBucketArn}) failed: ${describeAwsFailure(err).detail}`);
@@ -45885,7 +46172,7 @@ var S3DirectoryBucketProvider = class {
45885
46172
  async readTags(bucketName) {
45886
46173
  const accountId = await this.getAccountId();
45887
46174
  const resourceArn = await this.buildBucketArn(bucketName, accountId);
45888
- const resp = await this.getS3ControlClient().send(new ListTagsForResourceCommand$18({
46175
+ const resp = await this.getS3ControlClient().send(new ListTagsForResourceCommand$19({
45889
46176
  AccountId: accountId,
45890
46177
  ResourceArn: resourceArn
45891
46178
  }));
@@ -46540,7 +46827,7 @@ var S3TablesProvider = class {
46540
46827
  }
46541
46828
  async readTagsBestEffort(resourceArn) {
46542
46829
  try {
46543
- const tags = (await this.getClient().send(new ListTagsForResourceCommand$19({ resourceArn }))).tags ?? {};
46830
+ const tags = (await this.getClient().send(new ListTagsForResourceCommand$20({ resourceArn }))).tags ?? {};
46544
46831
  const out = [];
46545
46832
  for (const [Key, Value] of Object.entries(tags)) out.push({
46546
46833
  Key,
@@ -47665,4 +47952,4 @@ var ACMCertificateProvider = class {
47665
47952
 
47666
47953
  //#endregion
47667
47954
  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 };
47668
- //# sourceMappingURL=provider-classes-CUKmyCQ8.js.map
47955
+ //# sourceMappingURL=provider-classes-CDtquwkU.js.map