@go-to-k/cdkd 0.296.3 → 0.296.5
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.
- package/dist/{asg-provider-CksS_6jO.js → asg-provider-DhyYUns2.js} +4 -4
- package/dist/{asg-provider-CksS_6jO.js.map → asg-provider-DhyYUns2.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-Dre6eDNJ.js → deploy-engine-Cm7z6aQk.js} +263 -84
- package/dist/deploy-engine-Cm7z6aQk.js.map +1 -0
- package/dist/{iam-policy-targets-DSDSdxXz.js → iam-policy-targets-td1X_kKN.js} +2 -2
- package/dist/{iam-policy-targets-DSDSdxXz.js.map → iam-policy-targets-td1X_kKN.js.map} +1 -1
- package/dist/{iam-role-provider-D9wk9Bnh.js → iam-role-provider-CXGJXY5J.js} +4 -4
- package/dist/{iam-role-provider-D9wk9Bnh.js.map → iam-role-provider-CXGJXY5J.js.map} +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/{logger-Dvc7ddKe.js → logger-DAaB7GFO.js} +2 -2
- package/dist/{logger-Dvc7ddKe.js.map → logger-DAaB7GFO.js.map} +1 -1
- package/dist/{neptune-provider-B1GRQ6UO.js → neptune-provider-DCgJR2NX.js} +4 -4
- package/dist/{neptune-provider-B1GRQ6UO.js.map → neptune-provider-DCgJR2NX.js.map} +1 -1
- package/dist/{program-DFehMfoh.js → program-DPk5db_j.js} +43 -24
- package/dist/program-DPk5db_j.js.map +1 -0
- package/dist/{provider-classes-Ca6o5by0.js → provider-classes-oZ8a4BHE.js} +287 -17
- package/dist/provider-classes-oZ8a4BHE.js.map +1 -0
- package/dist/{rds-provider-Dl--9uQU.js → rds-provider-B0JrOskT.js} +4 -4
- package/dist/{rds-provider-Dl--9uQU.js.map → rds-provider-B0JrOskT.js.map} +1 -1
- package/dist/{version-B5LYpWJH.js → version-CjMP26Dj.js} +2 -2
- package/dist/{version-B5LYpWJH.js.map → version-CjMP26Dj.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-Dre6eDNJ.js.map +0 -1
- package/dist/program-DFehMfoh.js.map +0 -1
- package/dist/provider-classes-Ca6o5by0.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as getAwsClients } from "./aws-clients-CnmtbrxD.js";
|
|
2
|
-
import { A as
|
|
3
|
-
import { $ as compositeIdFormatMessage, $n as markRedactedCause, A as isTerminalDeleteFailure, B as WITHHELD_AWS_COMMAND, C as refusalTypeShown, D as ProtectionFlipRegistry, Dn as shellQuote, H as pasteableAwsCommand, Ht as AccountIdUnavailableError, J as isInterruptedWaitError, Jn as safeStringify, Kn as describeAwsFailure, L as userPoolProtectionSite, Ln as markNameCollision, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mt as injectiveKey, N as protectionFlipKey, Nt as injectiveKeyPrefix, On as withheldTargetClause, P as rdsFamilyProtectionSite, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, T as resolveExplicitPhysicalId, U as protectedReplacementAdvice, Un as isRetryableTransientError, V as isAwsCliLiteral, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, W as renderDisableCommand, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Y as startInterruptWatch, Yn as THROTTLING_ERROR_NAMES, Zn as isThrottlingError, _ as VALUE_NOT_SHOWN, a as onlySecretDerived, at as segmentAfterAnchor, b as isQuotableImportValue, bn as hasClauseBreak, bt as markAuxiliaryFailure, c as recordedPrincipalsRepair, ct as createMaskedRetryLogger, dt as maskerOrIdentity, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, ft as withDerivedNameMasks, g as assertRegionMatch, h as RESOURCE_NOT_FOUND, ht as clearCreatedBeforeFailure, i as holdsSecretDerivedEntry, in as ProvisioningError, j as logGroupProtectionSite, k as deleteWithProtectionCompensation, lt as isSecretDerivedValue, nt as logicalIdShown, o as readPrincipalLists, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, p as withRemovalDefaults, qn as isAwsAuthoredFailure, r as SECRET_DERIVED_READ_LIVE, rt as packCompositeId, st as createMaskedLogSinks, tt as compositeIdSkipResult, u as clearOnUpdateRemoval, ut as maskDeep, v as isPlainImportJson, w as remedyLogicalId, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, y as isPlainImportValue, yn as commandHole, z as UNNAMEABLE_ID_CLAUSE, zt as ambientCredentialConfig } from "./iam-policy-targets-
|
|
2
|
+
import { A as displayIdent, F as plainIdentOr, I as safeMsg, M as displayStackName, N as isPasteableIdent, T as SECRET_REF_MAX_CODE_POINTS, _ as generateResourceNameWithFallback, g as generateResourceName, j as displaySafe, n as getLogger, y as getCurrentStackName } from "./logger-DAaB7GFO.js";
|
|
3
|
+
import { $ as compositeIdFormatMessage, $n as markRedactedCause, A as isTerminalDeleteFailure, B as WITHHELD_AWS_COMMAND, C as refusalTypeShown, D as ProtectionFlipRegistry, Dn as shellQuote, H as pasteableAwsCommand, Ht as AccountIdUnavailableError, J as isInterruptedWaitError, Jn as safeStringify, Kn as describeAwsFailure, L as userPoolProtectionSite, Ln as markNameCollision, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mt as injectiveKey, N as protectionFlipKey, Nt as injectiveKeyPrefix, On as withheldTargetClause, P as rdsFamilyProtectionSite, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, T as resolveExplicitPhysicalId, U as protectedReplacementAdvice, Un as isRetryableTransientError, V as isAwsCliLiteral, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, W as renderDisableCommand, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Xn as isMarkedNonRetryable, Y as startInterruptWatch, Yn as THROTTLING_ERROR_NAMES, Zn as isThrottlingError, _ as VALUE_NOT_SHOWN, a as onlySecretDerived, at as segmentAfterAnchor, b as isQuotableImportValue, bn as hasClauseBreak, bt as markAuxiliaryFailure, c as recordedPrincipalsRepair, ct as createMaskedRetryLogger, dt as maskerOrIdentity, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, ft as withDerivedNameMasks, g as assertRegionMatch, h as RESOURCE_NOT_FOUND, ht as clearCreatedBeforeFailure, i as holdsSecretDerivedEntry, in as ProvisioningError, j as logGroupProtectionSite, k as deleteWithProtectionCompensation, lt as isSecretDerivedValue, nt as logicalIdShown, o as readPrincipalLists, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, p as withRemovalDefaults, qn as isAwsAuthoredFailure, r as SECRET_DERIVED_READ_LIVE, rt as packCompositeId, st as createMaskedLogSinks, tt as compositeIdSkipResult, u as clearOnUpdateRemoval, ut as maskDeep, v as isPlainImportJson, w as remedyLogicalId, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, y as isPlainImportValue, yn as commandHole, z as UNNAMEABLE_ID_CLAUSE, zt as ambientCredentialConfig } from "./iam-policy-targets-td1X_kKN.js";
|
|
4
4
|
import { s as ambientRegion } from "./aws-client-defaults-D0q0z4dG.js";
|
|
5
|
-
import { $
|
|
6
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, t as IAMRoleProvider } from "./iam-role-provider-
|
|
7
|
-
import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-
|
|
8
|
-
import { RDSProvider } from "./rds-provider-
|
|
9
|
-
import { NeptuneProvider } from "./neptune-provider-
|
|
10
|
-
import { ASGProvider } from "./asg-provider-
|
|
5
|
+
import { $n as isWaitAbandonedError, A as resolveDynamoDbDeleteBudgetClock, An as DBPROXY_TAG_OPTIONS, B as getPriorAttempts, Ca as configIntegerRefusal, Cr as isSettledInstanceState, D as beginDeleteWait, Da as requireConfigArray, Dr as s3BucketRegionalDomainName, Dt as getStackRecords, E as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Ea as replayWarn, En as reserveStackCreateToken, Er as s3BucketDualStackDomainName, F as waitForIndexesSettled, Fa as lambdaFunctionNameForMask, Fn as tagPlanWarning, Gi as refuseMalformedResourcesForDestroy, Gr as passedParameterClassesOf, Ho as stringifyValue, Hr as parseWebACLArn, I as ECR_AUTO_DELETE_IMAGES_TAG, Ia as sameLambdaFunctionAddress, In as definedAttributes, Jn as unchangedBehindSecretReference, Kn as slowCcOperationTimeoutMs, L as S3_AUTO_DELETE_OBJECTS_TAG, Ln as stringifyIfAssigned, M as DELETE_INDEX_WAIT_PROCEED_NOTE, Mn as readTagList, Mr as getAccountInfo, N as INDEX_SETTLE_POLL_INTERVAL_MS, Na as withRetry, Nn as refuseMalformedDesiredTags, O as compensateRemovedDeletionProtection, Oa as requireConfigObject, On as acquireIdempotencyToken, Or as s3BucketWebsiteUrl, P as deleteTableWithIndexBusyRetry, Pa as canonicalLambdaFunctionName, Pn as tagMapAsList, Qn as withIndeterminateGuard, Qt as redactedDeleteAddressSkip, R as hasCdkAutoDeleteTag, Rt as getCurrentProducerRegions, Sa as configBooleanRefusal, St as withNestedStackContext, T as DynamoDBGlobalTableProvider, Ta as readConfigString, Ti as refuseMalformedNestedChildOutputs, Tr as s3BucketDomainName, Tt as awaitInFlightSibling, Un as getCurrentResourceSecrets, V as markRefusedBeforeApplying, Wa as hasMaskableValues, Xs as canonicalizeRegion, Xt as isRedactedRecordedValue, Yt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Zn as deleteSkipReason, Zs as derivePartitionAndUrlSuffix, Zt as redactedDeleteAddressFields, _a as isWarmThroughputDecrease, a as findNestedTemplateTreeDefect, ar as reDisableInstanceApiTermination, ba as coerceCfnBoolean, c as renderNestedTemplateTreeDefect, cc as displayAssemblyPath, er as markWaitAbandoned, ga as coerceWarmThroughput$1, ha as WARM_THROUGHPUT_MEMBERS, ht as getNestedRevertRun, ia as findSilentDropProperties, io as recoverMaskedOutput, ir as observeThenDisableInstanceApiTermination, j as resolveDynamoDbDeleteBudgetMs, jn as planTagDiff, k as deleteBudgetKey, ka as requireConfigString, kn as DBPROXY_TAGS_WHAT, lc as renderAssemblyPathEscape, no as redactSecretsForState, nr as ec2InstanceProtectionSite, o as isAbsoluteAssetPath, oa as withoutSilentDropProperties, oo as dynamicReferenceTokens, or as reEnableInstanceApiTermination, qo as rewriteTemplateAssetReferences, qs as decodeListingKey, rr as isTerminationProtectionPropagationError, s as listNestedTemplateRows, sc as describeFileReadFailure, t as DeployEngine, to as markSameGenerationBag, uc as resolveAssemblyPath, uo as carriesSecretMask, va as toCfnInteger, vt as revertNestedChildFromJournal, wa as configStringRefusal, wn as earliestDefined, wr as s3BucketArn, xa as coerceCfnInteger, xt as getCurrentNestedStackContext, ya as toFiniteNumber, z as isTruthyCfnBoolean } from "./deploy-engine-Cm7z6aQk.js";
|
|
6
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, t as IAMRoleProvider } from "./iam-role-provider-CXGJXY5J.js";
|
|
7
|
+
import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-DPk5db_j.js";
|
|
8
|
+
import { RDSProvider } from "./rds-provider-B0JrOskT.js";
|
|
9
|
+
import { NeptuneProvider } from "./neptune-provider-DCgJR2NX.js";
|
|
10
|
+
import { ASGProvider } from "./asg-provider-DhyYUns2.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, 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";
|
|
@@ -5488,8 +5488,144 @@ var SQSQueueProvider = class {
|
|
|
5488
5488
|
}
|
|
5489
5489
|
};
|
|
5490
5490
|
|
|
5491
|
+
//#endregion
|
|
5492
|
+
//#region src/provisioning/policy-document-content.ts
|
|
5493
|
+
const MASK = "***";
|
|
5494
|
+
const PERMANENT_CDKD_CODES = /* @__PURE__ */ new Set(["ROLLBACK_SECRET_TOKEN_SCAN_MISMATCH"]);
|
|
5495
|
+
const MARKED_PERMANENT_CODE_PREFIXES = ["INTRINSIC_RESOLUTION_REFUSAL", "ROLLBACK_SECRET_REGION_AMBIGUOUS"];
|
|
5496
|
+
const NOT_FOUND_ERROR_NAMES = /* @__PURE__ */ new Set([
|
|
5497
|
+
"ResourceNotFoundException",
|
|
5498
|
+
"ParameterNotFound",
|
|
5499
|
+
"ParameterVersionNotFound"
|
|
5500
|
+
]);
|
|
5501
|
+
function holdsUnresolvedValue(document) {
|
|
5502
|
+
let root = document;
|
|
5503
|
+
if (typeof document === "string") try {
|
|
5504
|
+
root = JSON.parse(document);
|
|
5505
|
+
} catch {
|
|
5506
|
+
root = document;
|
|
5507
|
+
}
|
|
5508
|
+
const walk = (v) => {
|
|
5509
|
+
if (typeof v === "string") return v === MASK || v.includes("{{resolve:");
|
|
5510
|
+
if (Array.isArray(v)) return v.some(walk);
|
|
5511
|
+
if (v !== null && typeof v === "object") return Object.values(v).some(walk);
|
|
5512
|
+
return false;
|
|
5513
|
+
};
|
|
5514
|
+
return walk(root);
|
|
5515
|
+
}
|
|
5516
|
+
function isPermanentResolutionError(error) {
|
|
5517
|
+
let current = error;
|
|
5518
|
+
for (let depth = 0; depth < 5 && current != null; depth++) {
|
|
5519
|
+
const e = current;
|
|
5520
|
+
if (typeof e.name === "string" && NOT_FOUND_ERROR_NAMES.has(e.name)) return true;
|
|
5521
|
+
if (typeof e.code === "string") {
|
|
5522
|
+
if (PERMANENT_CDKD_CODES.has(e.code)) return true;
|
|
5523
|
+
const code = e.code;
|
|
5524
|
+
if (MARKED_PERMANENT_CODE_PREFIXES.some((p) => code.startsWith(p)) && isMarkedNonRetryable(current)) return true;
|
|
5525
|
+
}
|
|
5526
|
+
if (typeof e.message === "string" && e.message.startsWith("Dynamic reference: ")) return true;
|
|
5527
|
+
current = e.cause;
|
|
5528
|
+
}
|
|
5529
|
+
return false;
|
|
5530
|
+
}
|
|
5531
|
+
function errorName(error) {
|
|
5532
|
+
const name = error?.name;
|
|
5533
|
+
return typeof name === "string" && /^[\w.-]{1,128}$/.test(name) ? name : "error";
|
|
5534
|
+
}
|
|
5535
|
+
async function attemptedPolicyDocument(recorded, resolve) {
|
|
5536
|
+
let document = recorded;
|
|
5537
|
+
if (resolve) try {
|
|
5538
|
+
document = await resolve();
|
|
5539
|
+
} catch (error) {
|
|
5540
|
+
return isPermanentResolutionError(error) ? {
|
|
5541
|
+
kind: "unusable",
|
|
5542
|
+
why: "a secret it references does not exist or cannot be used"
|
|
5543
|
+
} : {
|
|
5544
|
+
kind: "retry",
|
|
5545
|
+
errorName: errorName(error)
|
|
5546
|
+
};
|
|
5547
|
+
}
|
|
5548
|
+
if (!(typeof document === "string" && document.length > 0 || document !== null && typeof document === "object")) return {
|
|
5549
|
+
kind: "unusable",
|
|
5550
|
+
why: "no policy document it attempted is recorded"
|
|
5551
|
+
};
|
|
5552
|
+
if (holdsUnresolvedValue(document)) return {
|
|
5553
|
+
kind: "unusable",
|
|
5554
|
+
why: "its policy document still holds a secret reference or masked value"
|
|
5555
|
+
};
|
|
5556
|
+
return {
|
|
5557
|
+
kind: "document",
|
|
5558
|
+
document
|
|
5559
|
+
};
|
|
5560
|
+
}
|
|
5561
|
+
const ACCOUNT_ID = /^\d{12}$/;
|
|
5562
|
+
const ACCOUNT_ROOT_ARN = /^arn:[a-z-]+:iam::(\d{12}):root$/;
|
|
5563
|
+
const LIST_KEYS = [
|
|
5564
|
+
"Action",
|
|
5565
|
+
"NotAction",
|
|
5566
|
+
"Resource",
|
|
5567
|
+
"NotResource"
|
|
5568
|
+
];
|
|
5569
|
+
const PRINCIPAL_KEYS = ["Principal", "NotPrincipal"];
|
|
5570
|
+
function unwrapSingle(value) {
|
|
5571
|
+
return Array.isArray(value) && value.length === 1 ? value[0] : value;
|
|
5572
|
+
}
|
|
5573
|
+
function accountKey(value) {
|
|
5574
|
+
if (typeof value !== "string") return value;
|
|
5575
|
+
if (ACCOUNT_ID.test(value)) return `account:${value}`;
|
|
5576
|
+
const m = ACCOUNT_ROOT_ARN.exec(value);
|
|
5577
|
+
return m ? `account:${m[1]}` : value;
|
|
5578
|
+
}
|
|
5579
|
+
const ANYONE = "anyone:*";
|
|
5580
|
+
function normalizePrincipal(principal) {
|
|
5581
|
+
if (principal === "*") return ANYONE;
|
|
5582
|
+
if (principal === null || typeof principal !== "object" || Array.isArray(principal)) return principal;
|
|
5583
|
+
const keys = Object.keys(principal);
|
|
5584
|
+
if (keys.length === 1 && keys[0] === "AWS" && unwrapSingle(principal["AWS"]) === "*") return ANYONE;
|
|
5585
|
+
const out = {};
|
|
5586
|
+
for (const [key, raw] of Object.entries(principal)) out[key] = unwrapSingle(key === "AWS" ? Array.isArray(raw) ? raw.map(accountKey) : accountKey(raw) : raw);
|
|
5587
|
+
return out;
|
|
5588
|
+
}
|
|
5589
|
+
function normalizeStatement(statement) {
|
|
5590
|
+
if (statement === null || typeof statement !== "object" || Array.isArray(statement)) return statement;
|
|
5591
|
+
const out = { ...statement };
|
|
5592
|
+
for (const key of LIST_KEYS) if (Object.prototype.hasOwnProperty.call(out, key)) out[key] = unwrapSingle(out[key]);
|
|
5593
|
+
for (const key of PRINCIPAL_KEYS) if (Object.prototype.hasOwnProperty.call(out, key)) out[key] = normalizePrincipal(out[key]);
|
|
5594
|
+
return out;
|
|
5595
|
+
}
|
|
5596
|
+
function canonicalJson$3(value) {
|
|
5597
|
+
const sortKeys = (v) => {
|
|
5598
|
+
if (Array.isArray(v)) return v.map(sortKeys);
|
|
5599
|
+
if (v !== null && typeof v === "object") {
|
|
5600
|
+
const out = Object.create(null);
|
|
5601
|
+
for (const key of Object.keys(v).sort()) out[key] = sortKeys(v[key]);
|
|
5602
|
+
return out;
|
|
5603
|
+
}
|
|
5604
|
+
return v;
|
|
5605
|
+
};
|
|
5606
|
+
return JSON.stringify(sortKeys(value));
|
|
5607
|
+
}
|
|
5608
|
+
function policyContentKey(document) {
|
|
5609
|
+
let value = document;
|
|
5610
|
+
if (typeof document === "string") try {
|
|
5611
|
+
value = JSON.parse(document);
|
|
5612
|
+
} catch {
|
|
5613
|
+
return `raw:${document}`;
|
|
5614
|
+
}
|
|
5615
|
+
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
5616
|
+
const doc = { ...value };
|
|
5617
|
+
if (Object.prototype.hasOwnProperty.call(doc, "Statement")) doc["Statement"] = (Array.isArray(doc["Statement"]) ? doc["Statement"] : [doc["Statement"]]).map(normalizeStatement);
|
|
5618
|
+
value = doc;
|
|
5619
|
+
}
|
|
5620
|
+
return canonicalJson$3(value);
|
|
5621
|
+
}
|
|
5622
|
+
|
|
5491
5623
|
//#endregion
|
|
5492
5624
|
//#region src/provisioning/providers/sqs-queue-policy-provider.ts
|
|
5625
|
+
const QUEUE_POLICY_UNREADABLE_SKIP_REASON = "the policy of a queue it wrote could not be read, so whether that queue still carries it is unknown";
|
|
5626
|
+
const QUEUE_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its queues with";
|
|
5627
|
+
const QUEUE_POLICY_MISMATCH_LEFT_REASON = "a queue it wrote carries a policy that does not match the document it attempted, so that queue was not cleared";
|
|
5628
|
+
const QUEUE_POLICY_NOT_COMPARED_LEFT_REASON = "the document it attempted is missing, masked, or references a secret that does not exist or cannot be used, so none of its queues was cleared";
|
|
5493
5629
|
var SQSQueuePolicyProvider = class {
|
|
5494
5630
|
sqsClient;
|
|
5495
5631
|
logger = getLogger().child("SQSQueuePolicyProvider");
|
|
@@ -5560,6 +5696,7 @@ var SQSQueuePolicyProvider = class {
|
|
|
5560
5696
|
}
|
|
5561
5697
|
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
5562
5698
|
this.logger.debug(`Deleting SQS queue policy ${logicalId}: ${physicalId}`);
|
|
5699
|
+
if (context?.failedCreateOrphan === true) return this.deleteFailedCreateOrphan(logicalId, physicalId, resourceType, properties, context);
|
|
5563
5700
|
const named = physicalId.includes(",") ? splitQueueUrls(physicalId) : recordedQueues(physicalId, context?.recordedAttributes);
|
|
5564
5701
|
const queueUrls = [...physicalId.includes(",") ? [] : await this.queuesCarryingDocument(listedQueues(properties ?? {}).filter((url) => !named.includes(url)), properties?.["PolicyDocument"], logicalId), ...named];
|
|
5565
5702
|
if (queueUrls.length === 0) throw new ProvisioningError(`Failed to delete SQS queue policy ${logicalId}: its physical id names no queue URL`, resourceType, logicalId, physicalId);
|
|
@@ -5572,6 +5709,63 @@ var SQSQueuePolicyProvider = class {
|
|
|
5572
5709
|
}
|
|
5573
5710
|
this.logger.debug(`Successfully deleted SQS queue policy ${logicalId}`);
|
|
5574
5711
|
}
|
|
5712
|
+
async deleteFailedCreateOrphan(logicalId, physicalId, resourceType, properties, context) {
|
|
5713
|
+
const named = splitQueueUrls(physicalId);
|
|
5714
|
+
if (named.length === 0) throw new ProvisioningError(`Failed to delete SQS queue policy ${logicalId}: its physical id names no queue URL`, resourceType, logicalId, physicalId);
|
|
5715
|
+
const resolve = context.resolveAttemptedProperties;
|
|
5716
|
+
const attempted = await attemptedPolicyDocument(properties?.["PolicyDocument"], resolve && (async () => (await resolve())?.["PolicyDocument"]));
|
|
5717
|
+
if (attempted.kind === "retry") {
|
|
5718
|
+
this.logger.warn(safeMsg`The policy document ${logicalId} attempted could not be resolved (${attempted.errorName}), so no queue it wrote is cleared; the entry is kept for a re-run once that is fixed.`);
|
|
5719
|
+
return {
|
|
5720
|
+
outcome: "skipped",
|
|
5721
|
+
reason: QUEUE_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON
|
|
5722
|
+
};
|
|
5723
|
+
}
|
|
5724
|
+
if (attempted.kind === "unusable") {
|
|
5725
|
+
this.logger.warn(safeMsg`${logicalId} is not cleared from any queue it wrote (${attempted.why}); check each by hand and remove its policy where it still grants what ${logicalId} declared: ${named.join(", ")}.`);
|
|
5726
|
+
return {
|
|
5727
|
+
outcome: "deleted",
|
|
5728
|
+
leftInPlace: QUEUE_POLICY_NOT_COMPARED_LEFT_REASON
|
|
5729
|
+
};
|
|
5730
|
+
}
|
|
5731
|
+
const reference = policyContentKey(attempted.document);
|
|
5732
|
+
const fresh = new Set((context.writtenThisRun ?? []).flatMap((r) => r.resourceType === resourceType && typeof r.physicalId === "string" ? [...recordedQueues(r.physicalId, r.attributes !== null && typeof r.attributes === "object" ? r.attributes : void 0), ...listedQueues(r.properties !== null && typeof r.properties === "object" ? r.properties : {})] : []));
|
|
5733
|
+
let unreadable = false;
|
|
5734
|
+
let mismatched = false;
|
|
5735
|
+
for (const queueUrl of named) {
|
|
5736
|
+
if (fresh.has(queueUrl)) {
|
|
5737
|
+
mismatched = true;
|
|
5738
|
+
this.logger.warn(safeMsg`Queue ${queueUrl} was written by a QueuePolicy of this deploy, so it is not cleared: its policy may not read back current yet; if it still grants what ${logicalId} declared, remove it manually.`);
|
|
5739
|
+
continue;
|
|
5740
|
+
}
|
|
5741
|
+
const current = await this.readPolicyForWidening(queueUrl);
|
|
5742
|
+
if (current.kind === "gone") {
|
|
5743
|
+
const clientRegion = await this.sqsClient.config.region();
|
|
5744
|
+
assertRegionMatch(clientRegion, context.expectedRegion, resourceType, logicalId, queueUrl, "not-found");
|
|
5745
|
+
this.logger.debug(safeMsg`Queue ${queueUrl} does not exist; nothing to clear`);
|
|
5746
|
+
} else if (current.kind === "unreadable") {
|
|
5747
|
+
unreadable = true;
|
|
5748
|
+
this.logger.warn(safeMsg`Could not read the policy of queue ${queueUrl} (${current.reason}), so it is not cleared: it may still carry the policy of ${logicalId}.`);
|
|
5749
|
+
} else if (current.kind === "none" || policyContentKey(current.policy) === reference) try {
|
|
5750
|
+
await this.clearQueuePolicy(queueUrl, resourceType, logicalId, context.expectedRegion);
|
|
5751
|
+
} catch (error) {
|
|
5752
|
+
if (error instanceof ProvisioningError) throw error;
|
|
5753
|
+
throw new ProvisioningError(`Failed to delete SQS queue policy ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
|
|
5754
|
+
}
|
|
5755
|
+
else {
|
|
5756
|
+
mismatched = true;
|
|
5757
|
+
this.logger.warn(safeMsg`Queue ${queueUrl} carries a policy that does not match the document ${logicalId} attempted (a later write, or AWS stored it in another form), so it is not cleared; if it still grants what ${logicalId} declared, remove it manually.`);
|
|
5758
|
+
}
|
|
5759
|
+
}
|
|
5760
|
+
if (unreadable) return {
|
|
5761
|
+
outcome: "skipped",
|
|
5762
|
+
reason: QUEUE_POLICY_UNREADABLE_SKIP_REASON
|
|
5763
|
+
};
|
|
5764
|
+
if (mismatched) return {
|
|
5765
|
+
outcome: "deleted",
|
|
5766
|
+
leftInPlace: QUEUE_POLICY_MISMATCH_LEFT_REASON
|
|
5767
|
+
};
|
|
5768
|
+
}
|
|
5575
5769
|
async clearQueuePolicy(queueUrl, resourceType, logicalId, expectedRegion, phase = "not-found") {
|
|
5576
5770
|
try {
|
|
5577
5771
|
await this.sqsClient.send(new SetQueueAttributesCommand({
|
|
@@ -5589,15 +5783,13 @@ var SQSQueuePolicyProvider = class {
|
|
|
5589
5783
|
}
|
|
5590
5784
|
}
|
|
5591
5785
|
async queuesCarryingDocument(candidates, document, logicalId) {
|
|
5592
|
-
|
|
5593
|
-
|
|
5594
|
-
|
|
5595
|
-
else if (document !== null && typeof document === "object") reference = canonicalJson$2(document);
|
|
5786
|
+
const carrying = [];
|
|
5787
|
+
if (candidates.length === 0) return carrying;
|
|
5788
|
+
const reference = policyReference(document);
|
|
5596
5789
|
if (reference === void 0) {
|
|
5597
5790
|
this.logger.warn(safeMsg`The queues ${candidates.join(", ")} listed by ${logicalId} were not checked (no policy document recorded to compare with) and may still carry its policy.`);
|
|
5598
|
-
return
|
|
5791
|
+
return carrying;
|
|
5599
5792
|
}
|
|
5600
|
-
const carrying = [];
|
|
5601
5793
|
for (const queueUrl of candidates) {
|
|
5602
5794
|
const current = await this.readPolicyForWidening(queueUrl);
|
|
5603
5795
|
if (current.kind === "policy" && canonicalPolicy$1(current.policy) === reference) carrying.push(queueUrl);
|
|
@@ -5618,7 +5810,7 @@ var SQSQueuePolicyProvider = class {
|
|
|
5618
5810
|
} : { kind: "none" };
|
|
5619
5811
|
} catch (err) {
|
|
5620
5812
|
const name = err.name;
|
|
5621
|
-
if (name === "QueueDoesNotExist" || name === "AWS.SimpleQueueService.NonExistentQueue") return { kind: "
|
|
5813
|
+
if (name === "QueueDoesNotExist" || name === "AWS.SimpleQueueService.NonExistentQueue") return { kind: "gone" };
|
|
5622
5814
|
return {
|
|
5623
5815
|
kind: "unreadable",
|
|
5624
5816
|
reason: name ?? "error"
|
|
@@ -5716,6 +5908,10 @@ function canonicalPolicy$1(text) {
|
|
|
5716
5908
|
return `raw:${text}`;
|
|
5717
5909
|
}
|
|
5718
5910
|
}
|
|
5911
|
+
function policyReference(document) {
|
|
5912
|
+
if (typeof document === "string" && document.length > 0) return canonicalPolicy$1(document);
|
|
5913
|
+
if (document !== null && typeof document === "object") return canonicalJson$2(document);
|
|
5914
|
+
}
|
|
5719
5915
|
function splitQueueUrls(physicalId) {
|
|
5720
5916
|
return physicalId.split(",").filter((url) => url.length > 0);
|
|
5721
5917
|
}
|
|
@@ -6440,6 +6636,10 @@ function isPendingConfirmationError(error) {
|
|
|
6440
6636
|
|
|
6441
6637
|
//#endregion
|
|
6442
6638
|
//#region src/provisioning/providers/sns-topic-policy-provider.ts
|
|
6639
|
+
const TOPIC_POLICY_UNREADABLE_SKIP_REASON = "the policy of a topic it wrote could not be read, so whether that topic still carries it is unknown";
|
|
6640
|
+
const TOPIC_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its topics with";
|
|
6641
|
+
const TOPIC_POLICY_MISMATCH_LEFT_REASON = "a topic it wrote carries a policy that does not match the document it attempted, so that topic was not reset";
|
|
6642
|
+
const TOPIC_POLICY_NOT_COMPARED_LEFT_REASON = "the document it attempted is missing, masked, or references a secret that does not exist or cannot be used, so none of its topics was reset";
|
|
6443
6643
|
var SNSTopicPolicyProvider = class {
|
|
6444
6644
|
logger = getLogger().child("SNSTopicPolicyProvider");
|
|
6445
6645
|
handledProperties = /* @__PURE__ */ new Map([["AWS::SNS::TopicPolicy", /* @__PURE__ */ new Set(["Topics", "PolicyDocument"])]]);
|
|
@@ -6502,6 +6702,7 @@ var SNSTopicPolicyProvider = class {
|
|
|
6502
6702
|
}
|
|
6503
6703
|
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
6504
6704
|
this.logger.debug(`Deleting SNS topic policy ${logicalId}: ${physicalId}`);
|
|
6705
|
+
if (context?.failedCreateOrphan === true) return this.deleteFailedCreateOrphan(logicalId, physicalId, resourceType, properties, context);
|
|
6505
6706
|
const named = splitTopicArns(physicalId);
|
|
6506
6707
|
if (named.length === 0) throw markNonRetryable(new ProvisioningError(`Failed to delete SNS topic policy ${logicalId}: its physical id is empty, so cdkd changed no topic. Set each topic the policy is attached to back to its default policy by hand, then drop the record with ${stateOrphanRecordRemedy(context, logicalId)}.`, resourceType, logicalId, physicalId));
|
|
6507
6708
|
const topicArns = named.every((arn) => isSnsTopicArn(arn)) ? named : [.../* @__PURE__ */ new Set([...named.filter((arn) => isSnsTopicArn(arn)), ...listedTopics(properties ?? {})])];
|
|
@@ -6515,6 +6716,75 @@ var SNSTopicPolicyProvider = class {
|
|
|
6515
6716
|
}
|
|
6516
6717
|
this.logger.debug(`Successfully deleted SNS topic policy ${logicalId}`);
|
|
6517
6718
|
}
|
|
6719
|
+
async deleteFailedCreateOrphan(logicalId, physicalId, resourceType, properties, context) {
|
|
6720
|
+
const named = splitTopicArns(physicalId);
|
|
6721
|
+
if (named.length === 0) throw markNonRetryable(new ProvisioningError(`Failed to delete SNS topic policy ${logicalId}: its physical id names no topic`, resourceType, logicalId, physicalId));
|
|
6722
|
+
const resolve = context.resolveAttemptedProperties;
|
|
6723
|
+
const attempted = await attemptedPolicyDocument(properties?.["PolicyDocument"], resolve && (async () => (await resolve())?.["PolicyDocument"]));
|
|
6724
|
+
if (attempted.kind === "retry") {
|
|
6725
|
+
this.logger.warn(safeMsg`The policy document ${logicalId} attempted could not be resolved (${attempted.errorName}), so no topic it wrote is reset; the entry is kept for a re-run once that is fixed.`);
|
|
6726
|
+
return {
|
|
6727
|
+
outcome: "skipped",
|
|
6728
|
+
reason: TOPIC_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON
|
|
6729
|
+
};
|
|
6730
|
+
}
|
|
6731
|
+
if (attempted.kind === "unusable") {
|
|
6732
|
+
this.logger.warn(safeMsg`${logicalId} is not reset on any topic it wrote (${attempted.why}); check each by hand and reset its policy where it still grants what ${logicalId} declared: ${named.join(", ")}.`);
|
|
6733
|
+
return {
|
|
6734
|
+
outcome: "deleted",
|
|
6735
|
+
leftInPlace: TOPIC_POLICY_NOT_COMPARED_LEFT_REASON
|
|
6736
|
+
};
|
|
6737
|
+
}
|
|
6738
|
+
const document = attempted.document;
|
|
6739
|
+
const reference = policyContentKey(document);
|
|
6740
|
+
const fresh = new Set((context.writtenThisRun ?? []).flatMap((r) => r.resourceType === resourceType && typeof r.physicalId === "string" ? [...splitTopicArns(r.physicalId), ...listedTopics(r.properties !== null && typeof r.properties === "object" ? r.properties : {})] : []));
|
|
6741
|
+
let unreadable = false;
|
|
6742
|
+
let mismatched = false;
|
|
6743
|
+
for (const topicArn of named) {
|
|
6744
|
+
if (fresh.has(topicArn)) {
|
|
6745
|
+
mismatched = true;
|
|
6746
|
+
this.logger.warn(safeMsg`Topic ${topicArn} was written by a TopicPolicy of this deploy, so it is not reset: its policy may not read back current yet; if it still grants what ${logicalId} declared, reset it manually.`);
|
|
6747
|
+
continue;
|
|
6748
|
+
}
|
|
6749
|
+
const current = await this.readPolicyForWidening(topicArn);
|
|
6750
|
+
if (current.kind === "gone") {
|
|
6751
|
+
const clientRegion = await getAwsClients().sns.config.region();
|
|
6752
|
+
assertRegionMatch(clientRegion, context.expectedRegion, resourceType, logicalId, topicArn, "not-found");
|
|
6753
|
+
this.logger.debug(safeMsg`Topic ${topicArn} does not exist; nothing to reset`);
|
|
6754
|
+
continue;
|
|
6755
|
+
}
|
|
6756
|
+
if (current.kind === "unreadable") {
|
|
6757
|
+
unreadable = true;
|
|
6758
|
+
this.logger.warn(safeMsg`Could not read the policy of topic ${topicArn} (${current.reason}), so it is not reset: it may still carry the policy of ${logicalId}.`);
|
|
6759
|
+
continue;
|
|
6760
|
+
}
|
|
6761
|
+
const live = current.kind === "none" ? void 0 : policyContentKey(current.policy);
|
|
6762
|
+
if (live === void 0 || live === reference) {
|
|
6763
|
+
try {
|
|
6764
|
+
await this.resetTopicPolicy(topicArn, resourceType, logicalId, context.expectedRegion);
|
|
6765
|
+
} catch (error) {
|
|
6766
|
+
if (error instanceof ProvisioningError) throw error;
|
|
6767
|
+
throw new ProvisioningError(`Failed to delete SNS topic policy ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
|
|
6768
|
+
}
|
|
6769
|
+
continue;
|
|
6770
|
+
}
|
|
6771
|
+
const defaultPolicy = defaultTopicPolicy(topicArn);
|
|
6772
|
+
if (defaultPolicy !== void 0 && live === policyContentKey(defaultPolicy)) {
|
|
6773
|
+
this.logger.debug(safeMsg`Topic ${topicArn} already carries its default policy`);
|
|
6774
|
+
continue;
|
|
6775
|
+
}
|
|
6776
|
+
mismatched = true;
|
|
6777
|
+
this.logger.warn(safeMsg`Topic ${topicArn} carries a policy that does not match the document ${logicalId} attempted (a later write, or AWS stored it in another form), so it is not reset; if it still grants what ${logicalId} declared, reset it manually.`);
|
|
6778
|
+
}
|
|
6779
|
+
if (unreadable) return {
|
|
6780
|
+
outcome: "skipped",
|
|
6781
|
+
reason: TOPIC_POLICY_UNREADABLE_SKIP_REASON
|
|
6782
|
+
};
|
|
6783
|
+
if (mismatched) return {
|
|
6784
|
+
outcome: "deleted",
|
|
6785
|
+
leftInPlace: TOPIC_POLICY_MISMATCH_LEFT_REASON
|
|
6786
|
+
};
|
|
6787
|
+
}
|
|
6518
6788
|
async resetTopicPolicy(topicArn, resourceType, logicalId, expectedRegion, phase = "not-found", mask = (t) => t) {
|
|
6519
6789
|
const defaultPolicy = defaultTopicPolicy(topicArn);
|
|
6520
6790
|
if (defaultPolicy === void 0) throw new ProvisioningError(`Cannot remove SNS topic policy ${logicalId} from ${topicArn}: not an SNS topic ARN`, resourceType, logicalId, topicArn);
|
|
@@ -6559,7 +6829,7 @@ var SNSTopicPolicyProvider = class {
|
|
|
6559
6829
|
} : { kind: "none" };
|
|
6560
6830
|
} catch (err) {
|
|
6561
6831
|
const name = err.name;
|
|
6562
|
-
if (name === "NotFoundException" || name === "NotFound") return { kind: "
|
|
6832
|
+
if (name === "NotFoundException" || name === "NotFound") return { kind: "gone" };
|
|
6563
6833
|
return {
|
|
6564
6834
|
kind: "unreadable",
|
|
6565
6835
|
reason: name ?? "error"
|
|
@@ -43355,4 +43625,4 @@ var ACMCertificateProvider = class {
|
|
|
43355
43625
|
|
|
43356
43626
|
//#endregion
|
|
43357
43627
|
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 };
|
|
43358
|
-
//# sourceMappingURL=provider-classes-
|
|
43628
|
+
//# sourceMappingURL=provider-classes-oZ8a4BHE.js.map
|