@go-to-k/cdkd 0.296.14 → 0.296.16
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-eXsnCQh2.js → asg-provider-D2eHqx5L.js} +2 -2
- package/dist/{asg-provider-eXsnCQh2.js.map → asg-provider-D2eHqx5L.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-Z_zHC0jz.js → deploy-engine-DYAAwd0u.js} +479 -237
- package/dist/deploy-engine-DYAAwd0u.js.map +1 -0
- package/dist/{iam-role-provider-BTYPRrDe.js → iam-role-provider-B31gkUPy.js} +2 -2
- package/dist/{iam-role-provider-BTYPRrDe.js.map → iam-role-provider-B31gkUPy.js.map} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-ZYVwKq6K.js → neptune-provider-X5T1Zamt.js} +2 -2
- package/dist/{neptune-provider-ZYVwKq6K.js.map → neptune-provider-X5T1Zamt.js.map} +1 -1
- package/dist/{program-CKV6Kn8Q.js → program-D0Q9DbSa.js} +31 -12
- package/dist/program-D0Q9DbSa.js.map +1 -0
- package/dist/{provider-classes-Dz2gVtOZ.js → provider-classes-Bng0RFVo.js} +69 -11
- package/dist/{provider-classes-Dz2gVtOZ.js.map → provider-classes-Bng0RFVo.js.map} +1 -1
- package/dist/{rds-provider-6YeZRRfW.js → rds-provider-Cbeq5OY8.js} +2 -2
- package/dist/{rds-provider-6YeZRRfW.js.map → rds-provider-Cbeq5OY8.js.map} +1 -1
- package/dist/{version-1NhJbqzi.js → version-BUhQCsJ3.js} +2 -2
- package/dist/{version-1NhJbqzi.js.map → version-BUhQCsJ3.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-Z_zHC0jz.js.map +0 -1
- package/dist/program-CKV6Kn8Q.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js"
|
|
|
2
2
|
import { A as UNRENDERABLE, C as looksLikeCdkdGeneratedName, E as withoutGeneratedFallbackName, F as displayStackName, I as isPasteableIdent, M as displayAwsMessage, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, S as getCurrentStackName, T as withStackName, V as truncateCodePoints, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, k as STACK_REF_MAX_CODE_POINTS, o as isStdoutReservedForPayload, r as safeStringify$1, t as describeAwsFailure, u as currentLogLineMasker, v as explicitNamePropertyFor, w as withSkipPrefix, x as getCurrentSkipPrefix, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
|
|
3
3
|
import { $ as protectedReplacementAdvice, $n as isIamPropagationError, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bt as sanitizeRecoveryValue, Ct as RETRY_AUXILIARY_OWNER, Dn as SHELL_ACTIVE, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, G as runDeleteAttempt, Gn as isNameCooldownError, H as observeThenDisableProtection, Hn as isUpdateUnsupportedError, Ht as DEFAULT_STATE_PREFIX, In as quotedOrDescribed, J as DELETION_PROTECTION_DOC_POINTER, Jt as withPasteableAwsProfile, Kn as isRecreateRetryableError, Kt as producerRecordKey, L as ProtectionFlipRegistry, Ln as shellBoundedDisplay, Lt as formatLockExpiry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, Nt as UNREPRODUCIBLE_LOCK_CLAUSE, On as SHELL_ACTIVE_WHY, Ot as hasCreatedBeforeFailure, Pn as physicalIdShownBesideCommand, Pt as buildForceUnlockCommand, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, R as compensateProtectionFlip, Rn as shellQuote, Rt as formatLockOperation, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Un as hasReplayMayCollide, Ut as injectiveKey, Vt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Wn as isNameCollisionErrorFrom, Xn as formatRetryClassificationSignals, Xt as ambientCredentialConfig, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Zn as isAmbiguousCcHandlerErrorCode, Zt as clientDefaultsFor, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, ar as isThrottlingError, at as startInterruptWatch, bn as StateError, bt as maskDeep, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dn as MacroExpansionError, en as AssetError, er as isRetryableTransientError, f as removalWarning, fn as MalformedProducerRecordRefusalError, ft as logicalIdShown, gn as ResourceTimeoutError, gt as stateOrphanRecordRemedy, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as DependencyError, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jt as markAuxiliaryFailure, kn as UNSHOWABLE_VALUE, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, m as withoutInjectedRemovals, mt as resourceTypeShown, nr as retryClassificationText, on as DynamicReferenceRegionAmbiguousError, or as markNonRetryable, ot as ElapsedBudgetRegistry, qn as isReplayedNameCollisionFrom, rn as CrossAccountSecretRefusalError, sn as IntrinsicResolutionRefusalError, sr as markRedactedCause, st as monotonicNowMs, tn as CdkdError, tr as isTransientServerError, un as LockError, ut as compositeIdSeparatorRefusal, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as normalizeAwsError, wt as carryCreatedBeforeFailure, xn as SynthesisError, xt as maskerOrIdentity, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause, zt as formatLockOwner } from "./iam-policy-targets-BoZuWtxK.js";
|
|
4
4
|
import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-D0q0z4dG.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-BUhQCsJ3.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -1423,6 +1423,9 @@ const PARTITION_TABLE = [
|
|
|
1423
1423
|
function canonicalizeRegion(region) {
|
|
1424
1424
|
return typeof region === "string" ? region.toLowerCase() : region;
|
|
1425
1425
|
}
|
|
1426
|
+
function sameRegion(a, b) {
|
|
1427
|
+
return canonicalizeRegion(a) === canonicalizeRegion(b);
|
|
1428
|
+
}
|
|
1426
1429
|
function derivePartitionAndUrlSuffix(region) {
|
|
1427
1430
|
const canonical = canonicalizeRegion(region);
|
|
1428
1431
|
for (const { prefix, partition, urlSuffix } of PARTITION_TABLE) if (canonical.startsWith(prefix)) return {
|
|
@@ -6656,217 +6659,6 @@ function positionByCrossStackSource(bag, source, secrets) {
|
|
|
6656
6659
|
return certifiedExpressionForLeaf(secrets, association, bag);
|
|
6657
6660
|
}
|
|
6658
6661
|
|
|
6659
|
-
//#endregion
|
|
6660
|
-
//#region src/deployment/secret-redaction/placeholder-positions.ts
|
|
6661
|
-
function keyedPart(source) {
|
|
6662
|
-
const key = crossStackSourceKey(source);
|
|
6663
|
-
return key === void 0 ? UNKNOWN_PART : { key };
|
|
6664
|
-
}
|
|
6665
|
-
const MAX_PLACEHOLDER_DEPTH = 8;
|
|
6666
|
-
function pushPlaceholderPart(out, part, budget) {
|
|
6667
|
-
if (budget.remaining <= 0) {
|
|
6668
|
-
budget.exhausted = true;
|
|
6669
|
-
return;
|
|
6670
|
-
}
|
|
6671
|
-
budget.remaining -= 1;
|
|
6672
|
-
out.push(part);
|
|
6673
|
-
}
|
|
6674
|
-
function appendValuePlaceholderParts(value, out, budget, depth) {
|
|
6675
|
-
if (budget.exhausted) return;
|
|
6676
|
-
const literal = joinPartLiteralText(value);
|
|
6677
|
-
if (literal !== void 0) return pushPlaceholderPart(out, literal, budget);
|
|
6678
|
-
if (isPlainObject$4(value) && Object.keys(value).length === 1) {
|
|
6679
|
-
const ref = value["Ref"];
|
|
6680
|
-
if (typeof ref === "string" && ref !== "") return pushPlaceholderPart(out, keyedPart({ Ref: ref }), budget);
|
|
6681
|
-
if (depth >= MAX_PLACEHOLDER_DEPTH) {
|
|
6682
|
-
budget.exhausted = true;
|
|
6683
|
-
return;
|
|
6684
|
-
}
|
|
6685
|
-
if (appendParameterPlaceholderParts(value, out, budget, depth + 1)) return;
|
|
6686
|
-
return pushPlaceholderPart(out, keyedPart(value), budget);
|
|
6687
|
-
}
|
|
6688
|
-
pushPlaceholderPart(out, UNKNOWN_PART, budget);
|
|
6689
|
-
}
|
|
6690
|
-
function appendParameterPlaceholderParts(source, out, budget, depth) {
|
|
6691
|
-
const keys = Object.keys(source);
|
|
6692
|
-
if (keys.length !== 1) return false;
|
|
6693
|
-
const key = keys[0];
|
|
6694
|
-
if (key === "Fn::Join") {
|
|
6695
|
-
const args = source[key];
|
|
6696
|
-
if (!Array.isArray(args) || args.length !== 2) return false;
|
|
6697
|
-
const [delimiter, parts] = args;
|
|
6698
|
-
if (typeof delimiter !== "string" || !Array.isArray(parts)) return false;
|
|
6699
|
-
for (let index = 0; index < parts.length && !budget.exhausted; index++) {
|
|
6700
|
-
if (index > 0) pushPlaceholderPart(out, delimiter, budget);
|
|
6701
|
-
appendValuePlaceholderParts(parts[index], out, budget, depth);
|
|
6702
|
-
}
|
|
6703
|
-
return true;
|
|
6704
|
-
}
|
|
6705
|
-
if (key === "Fn::Sub") {
|
|
6706
|
-
const args = source[key];
|
|
6707
|
-
let template;
|
|
6708
|
-
let variables = {};
|
|
6709
|
-
if (typeof args === "string") template = args;
|
|
6710
|
-
else if (Array.isArray(args) && args.length === 2 && isPlainObject$4(args[1])) {
|
|
6711
|
-
template = args[0];
|
|
6712
|
-
variables = args[1];
|
|
6713
|
-
} else return false;
|
|
6714
|
-
if (typeof template !== "string") return false;
|
|
6715
|
-
let cursor = 0;
|
|
6716
|
-
for (const hit of template.matchAll(/\$\{(!)?([^}]*)\}/g)) {
|
|
6717
|
-
if (budget.exhausted) return true;
|
|
6718
|
-
pushPlaceholderPart(out, template.slice(cursor, hit.index), budget);
|
|
6719
|
-
cursor = hit.index + hit[0].length;
|
|
6720
|
-
const name = hit[2] ?? "";
|
|
6721
|
-
if (hit[1] === "!") pushPlaceholderPart(out, `\${${name}}`, budget);
|
|
6722
|
-
else if (name === "") pushPlaceholderPart(out, hit[0], budget);
|
|
6723
|
-
else if (Object.hasOwn(variables, name)) appendValuePlaceholderParts(variables[name], out, budget, depth);
|
|
6724
|
-
else if (name.includes(".")) pushPlaceholderPart(out, keyedPart({ "Fn::GetAtt": name }), budget);
|
|
6725
|
-
else pushPlaceholderPart(out, keyedPart({ Ref: name }), budget);
|
|
6726
|
-
}
|
|
6727
|
-
pushPlaceholderPart(out, template.slice(cursor), budget);
|
|
6728
|
-
return true;
|
|
6729
|
-
}
|
|
6730
|
-
return false;
|
|
6731
|
-
}
|
|
6732
|
-
function parameterPlaceholderParts(source, bag) {
|
|
6733
|
-
const budget = {
|
|
6734
|
-
remaining: bag.length * 2 + 16,
|
|
6735
|
-
exhausted: false
|
|
6736
|
-
};
|
|
6737
|
-
const out = [];
|
|
6738
|
-
if (!appendParameterPlaceholderParts(source, out, budget, 0)) return void 0;
|
|
6739
|
-
return budget.exhausted ? void 0 : out;
|
|
6740
|
-
}
|
|
6741
|
-
function positionByParameterPlaceholders(bag, source, secrets) {
|
|
6742
|
-
const associations = crossStackAssociations.get(secrets);
|
|
6743
|
-
if (associations === void 0) return void 0;
|
|
6744
|
-
const spanned = positionByRecordedParameterSpans(bag, source, secrets, associations);
|
|
6745
|
-
if (spanned !== void 0) return spanned;
|
|
6746
|
-
const parts = parameterPlaceholderParts(source, bag);
|
|
6747
|
-
if (parts === void 0) return void 0;
|
|
6748
|
-
const before = ["", ""];
|
|
6749
|
-
const after = ["", ""];
|
|
6750
|
-
let side = before;
|
|
6751
|
-
let unknown = false;
|
|
6752
|
-
let certified = 0;
|
|
6753
|
-
const spans = [];
|
|
6754
|
-
for (const part of parts) {
|
|
6755
|
-
let rendered;
|
|
6756
|
-
let persisted;
|
|
6757
|
-
if (typeof part === "string") {
|
|
6758
|
-
rendered = part;
|
|
6759
|
-
persisted = part;
|
|
6760
|
-
} else {
|
|
6761
|
-
let expression;
|
|
6762
|
-
let plaintext = "";
|
|
6763
|
-
if (part !== UNKNOWN_PART) {
|
|
6764
|
-
const association = associations.get(part.key);
|
|
6765
|
-
if (association !== void 0 && typeof association !== "symbol") {
|
|
6766
|
-
plaintext = association.plaintext;
|
|
6767
|
-
expression = certifiedExpressionForLeaf(secrets, association, plaintext);
|
|
6768
|
-
}
|
|
6769
|
-
}
|
|
6770
|
-
if (expression === void 0) {
|
|
6771
|
-
if (unknown) return void 0;
|
|
6772
|
-
unknown = true;
|
|
6773
|
-
side = after;
|
|
6774
|
-
continue;
|
|
6775
|
-
}
|
|
6776
|
-
rendered = plaintext;
|
|
6777
|
-
persisted = expression;
|
|
6778
|
-
certified += 1;
|
|
6779
|
-
spans.push([
|
|
6780
|
-
side,
|
|
6781
|
-
side[0].length,
|
|
6782
|
-
plaintext.length
|
|
6783
|
-
]);
|
|
6784
|
-
}
|
|
6785
|
-
side[0] += rendered;
|
|
6786
|
-
side[1] += persisted;
|
|
6787
|
-
}
|
|
6788
|
-
if (certified === 0) return void 0;
|
|
6789
|
-
let persisted;
|
|
6790
|
-
if (!unknown) {
|
|
6791
|
-
if (before[0] !== bag) return void 0;
|
|
6792
|
-
persisted = before[1];
|
|
6793
|
-
} else {
|
|
6794
|
-
if (bag.length < before[0].length + after[0].length) return void 0;
|
|
6795
|
-
if (!bag.startsWith(before[0]) || !bag.endsWith(after[0])) return void 0;
|
|
6796
|
-
const middle = bag.slice(before[0].length, bag.length - after[0].length);
|
|
6797
|
-
if (redactSecretsForState(middle, secrets) !== middle) return void 0;
|
|
6798
|
-
persisted = before[1] + middle + after[1];
|
|
6799
|
-
}
|
|
6800
|
-
const afterStart = bag.length - after[0].length;
|
|
6801
|
-
return acceptedPlaceholderRendering(bag, persisted, spans.map(([side, offset, length]) => [(side === before ? 0 : afterStart) + offset, length]), secrets);
|
|
6802
|
-
}
|
|
6803
|
-
function acceptedPlaceholderRendering(bag, persisted, spans, secrets) {
|
|
6804
|
-
for (const plaintext of secrets.keys()) {
|
|
6805
|
-
if (plaintext.length < 4) continue;
|
|
6806
|
-
for (let at = bag.indexOf(plaintext); at !== -1; at = bag.indexOf(plaintext, at + 1)) {
|
|
6807
|
-
const end = at + plaintext.length;
|
|
6808
|
-
for (const [start, length] of spans) if (at < start + length && end > start && (at < start || end > start + length)) return void 0;
|
|
6809
|
-
}
|
|
6810
|
-
}
|
|
6811
|
-
if (redactSecretsForState(persisted, secrets) !== persisted) return void 0;
|
|
6812
|
-
return persisted;
|
|
6813
|
-
}
|
|
6814
|
-
function positionByRecordedParameterSpans(bag, source, secrets, associations) {
|
|
6815
|
-
const resolution = intrinsicLeafResolutionOf(secrets, source);
|
|
6816
|
-
if (resolution === void 0 || resolution.output !== bag) return void 0;
|
|
6817
|
-
const recorded = resolution.parameterSpans;
|
|
6818
|
-
if (recorded === void 0) return void 0;
|
|
6819
|
-
let previousEnd = 0;
|
|
6820
|
-
let cursor = 0;
|
|
6821
|
-
let persisted = "";
|
|
6822
|
-
const gaps = [];
|
|
6823
|
-
const certified = [];
|
|
6824
|
-
for (const { start, length, key } of recorded) {
|
|
6825
|
-
if (!(start >= previousEnd && length > 0 && start + length <= bag.length)) return void 0;
|
|
6826
|
-
previousEnd = start + length;
|
|
6827
|
-
const text = bag.slice(start, start + length);
|
|
6828
|
-
const association = associations.get(key);
|
|
6829
|
-
if (association === void 0 || typeof association === "symbol") continue;
|
|
6830
|
-
const expression = certifiedExpressionForLeaf(secrets, association, text);
|
|
6831
|
-
if (expression === void 0) continue;
|
|
6832
|
-
const gap = bag.slice(cursor, start);
|
|
6833
|
-
gaps.push(gap);
|
|
6834
|
-
persisted += gap + expression;
|
|
6835
|
-
certified.push([start, length]);
|
|
6836
|
-
cursor = start + length;
|
|
6837
|
-
}
|
|
6838
|
-
if (certified.length === 0) return void 0;
|
|
6839
|
-
const tail = bag.slice(cursor);
|
|
6840
|
-
gaps.push(tail);
|
|
6841
|
-
persisted += tail;
|
|
6842
|
-
for (const gap of gaps) if (redactSecretsForState(gap, secrets) !== gap) return void 0;
|
|
6843
|
-
return acceptedPlaceholderRendering(bag, persisted, certified, secrets);
|
|
6844
|
-
}
|
|
6845
|
-
|
|
6846
|
-
//#endregion
|
|
6847
|
-
//#region src/deployment/secret-redaction/identity-keys.ts
|
|
6848
|
-
const ARRAY_IDENTITY_KEYS = ["Name", "Key"];
|
|
6849
|
-
function isUniquelyKeyedBy(items, key) {
|
|
6850
|
-
if (items.length === 0) return false;
|
|
6851
|
-
const seen = /* @__PURE__ */ new Set();
|
|
6852
|
-
for (const item of items) {
|
|
6853
|
-
if (!isPlainObject$4(item) || !Object.hasOwn(item, key)) return false;
|
|
6854
|
-
const id = item[key];
|
|
6855
|
-
if (typeof id !== "string" || id === "") return false;
|
|
6856
|
-
if (seen.has(id)) return false;
|
|
6857
|
-
seen.add(id);
|
|
6858
|
-
}
|
|
6859
|
-
return true;
|
|
6860
|
-
}
|
|
6861
|
-
function identityKeyFor(bag, source) {
|
|
6862
|
-
for (const key of ARRAY_IDENTITY_KEYS) if (isUniquelyKeyedBy(bag, key) && isUniquelyKeyedBy(source, key)) return key;
|
|
6863
|
-
}
|
|
6864
|
-
function positionListByCrossStackSource(bag, source, secrets) {
|
|
6865
|
-
const association = associationForSource(source, secrets);
|
|
6866
|
-
if (association === void 0) return void 0;
|
|
6867
|
-
return certifiedListForLeaf(secrets, association, bag);
|
|
6868
|
-
}
|
|
6869
|
-
|
|
6870
6662
|
//#endregion
|
|
6871
6663
|
//#region src/deployment/secret-redaction/fresh-noecho.ts
|
|
6872
6664
|
function embedsFreshNoEchoValue(text, secrets, freshClass) {
|
|
@@ -6997,6 +6789,7 @@ function recoverMaskedOutput(identity, stackName, region, outputKey) {
|
|
|
6997
6789
|
//#region src/deployment/secret-redaction/nested-stack.ts
|
|
6998
6790
|
const NESTED_STACK_RESOURCE_TYPE$4 = "AWS::CloudFormation::Stack";
|
|
6999
6791
|
const nestedStackParameterExpressions = /* @__PURE__ */ new WeakMap();
|
|
6792
|
+
const renderedParameterSpellings = /* @__PURE__ */ new WeakMap();
|
|
7000
6793
|
const UNFRAMED_SPELLING = Symbol("cdkd.nested-parameter.unframed-spelling");
|
|
7001
6794
|
function recordNestedStackParameterExpressions(secrets, resourceType, resolvedProperties, sourceProperties, rules = TEMPLATE_DERIVED_RULES) {
|
|
7002
6795
|
if (resourceType !== NESTED_STACK_RESOURCE_TYPE$4) return;
|
|
@@ -7009,6 +6802,23 @@ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedPr
|
|
|
7009
6802
|
if (!isPlainObject$4(resolvedParameters) || !isPlainObject$4(sourceParameters)) return;
|
|
7010
6803
|
const positioned = redactSecretsForState(markSameGenerationBag({ ...resolvedParameters }), secrets, sourceParameters, rules);
|
|
7011
6804
|
let table = nestedStackParameterExpressions.get(secrets);
|
|
6805
|
+
for (const [name, resolvedValue] of Object.entries(resolvedParameters)) {
|
|
6806
|
+
const sourceLeaf = sourceParameters[name];
|
|
6807
|
+
if (typeof resolvedValue !== "string" || typeof sourceLeaf !== "string") continue;
|
|
6808
|
+
if (isSingleDynamicReferenceToken(sourceLeaf) || positioned[name] !== sourceLeaf) continue;
|
|
6809
|
+
if (!rendersLiteralTo(sourceLeaf, secrets, resolvedValue)) continue;
|
|
6810
|
+
let rendered = renderedParameterSpellings.get(secrets);
|
|
6811
|
+
if (rendered === void 0) {
|
|
6812
|
+
rendered = /* @__PURE__ */ new Map();
|
|
6813
|
+
renderedParameterSpellings.set(secrets, rendered);
|
|
6814
|
+
}
|
|
6815
|
+
const previous = rendered.get(name);
|
|
6816
|
+
if (previous === void 0) rendered.set(name, {
|
|
6817
|
+
spelling: sourceLeaf,
|
|
6818
|
+
value: resolvedValue
|
|
6819
|
+
});
|
|
6820
|
+
else if (previous?.spelling !== sourceLeaf || previous.value !== resolvedValue) rendered.set(name, null);
|
|
6821
|
+
}
|
|
7012
6822
|
for (const [name, resolvedValue] of Object.entries(resolvedParameters)) {
|
|
7013
6823
|
if (typeof resolvedValue !== "string" || !secrets.has(resolvedValue)) continue;
|
|
7014
6824
|
const expression = positioned[name];
|
|
@@ -7143,10 +6953,44 @@ function inheritNestedStackParameterAssociations(childSecrets, parentSecrets) {
|
|
|
7143
6953
|
}
|
|
7144
6954
|
function inheritedParameterExpression(parentSecrets, parameterName, resolvedValue) {
|
|
7145
6955
|
const association = nestedStackParameterExpressions.get(parentSecrets)?.get(parameterName);
|
|
7146
|
-
if (association === void 0
|
|
6956
|
+
if (association === void 0) return renderedParameterSpelling(parentSecrets, parameterName, resolvedValue);
|
|
6957
|
+
if (typeof association === "symbol") return void 0;
|
|
7147
6958
|
if (Array.isArray(resolvedValue)) return certifiedListForLeaf(parentSecrets, association, resolvedValue);
|
|
7148
6959
|
return certifiedExpressionForLeaf(parentSecrets, association, resolvedValue);
|
|
7149
6960
|
}
|
|
6961
|
+
function renderedParameterSpelling(parentSecrets, parameterName, resolvedValue) {
|
|
6962
|
+
if (typeof resolvedValue !== "string" || parentSecrets.has(resolvedValue)) return void 0;
|
|
6963
|
+
const rendered = renderedParameterSpellings.get(parentSecrets)?.get(parameterName);
|
|
6964
|
+
if (rendered == null || rendered.value !== resolvedValue) return void 0;
|
|
6965
|
+
if (!rendersLiteralTo(rendered.spelling, parentSecrets, resolvedValue)) return void 0;
|
|
6966
|
+
return rendered.spelling;
|
|
6967
|
+
}
|
|
6968
|
+
function inheritedRenderedToken(parentSecrets, parameterName, value, plaintext) {
|
|
6969
|
+
const spelling = inheritedParameterExpression(parentSecrets, parameterName, value);
|
|
6970
|
+
if (typeof spelling !== "string" || isSingleDynamicReferenceToken(spelling)) return void 0;
|
|
6971
|
+
return renderedTokenOf(spelling, parentSecrets, plaintext);
|
|
6972
|
+
}
|
|
6973
|
+
function withdrawRenderedParameterSpelling(parentSecrets, parameterName) {
|
|
6974
|
+
const rendered = renderedParameterSpellings.get(parentSecrets);
|
|
6975
|
+
if (rendered?.has(parameterName)) rendered.set(parameterName, null);
|
|
6976
|
+
}
|
|
6977
|
+
function inheritedRenderedSpan(childSecrets, key, text) {
|
|
6978
|
+
const reads = inheritedParameterReads.get(childSecrets);
|
|
6979
|
+
if (reads === void 0 || typeof reads === "symbol") return void 0;
|
|
6980
|
+
for (const name of reads.names) {
|
|
6981
|
+
if (crossStackSourceKey({ Ref: name }) !== key) continue;
|
|
6982
|
+
const value = renderedParameterSpellings.get(reads.parent)?.get(name)?.value;
|
|
6983
|
+
if (value === void 0 || text !== void 0 && text !== value) return void 0;
|
|
6984
|
+
if (carriesChildOnlyPlaintext(value, childSecrets, reads.parent)) return void 0;
|
|
6985
|
+
const spelling = inheritedParameterExpression(reads.parent, name, value);
|
|
6986
|
+
if (typeof spelling !== "string") return void 0;
|
|
6987
|
+
if (redactSecretsForState(spelling, childSecrets) !== spelling) return void 0;
|
|
6988
|
+
return {
|
|
6989
|
+
value,
|
|
6990
|
+
spelling
|
|
6991
|
+
};
|
|
6992
|
+
}
|
|
6993
|
+
}
|
|
7150
6994
|
const inheritedParameterReads = /* @__PURE__ */ new WeakMap();
|
|
7151
6995
|
const POISONED_PARAMETER_READS = Symbol("cdkd.inherited-parameter-reads.poisoned");
|
|
7152
6996
|
function recordInheritedParameterRead(childSecrets, parentSecrets, parameterName) {
|
|
@@ -7196,6 +7040,222 @@ function carriesChildOnlyPlaintext(value, childSecrets, parentSecrets) {
|
|
|
7196
7040
|
return visit(value);
|
|
7197
7041
|
}
|
|
7198
7042
|
|
|
7043
|
+
//#endregion
|
|
7044
|
+
//#region src/deployment/secret-redaction/placeholder-positions.ts
|
|
7045
|
+
function keyedPart(source) {
|
|
7046
|
+
const key = crossStackSourceKey(source);
|
|
7047
|
+
return key === void 0 ? UNKNOWN_PART : { key };
|
|
7048
|
+
}
|
|
7049
|
+
const MAX_PLACEHOLDER_DEPTH = 8;
|
|
7050
|
+
function pushPlaceholderPart(out, part, budget) {
|
|
7051
|
+
if (budget.remaining <= 0) {
|
|
7052
|
+
budget.exhausted = true;
|
|
7053
|
+
return;
|
|
7054
|
+
}
|
|
7055
|
+
budget.remaining -= 1;
|
|
7056
|
+
out.push(part);
|
|
7057
|
+
}
|
|
7058
|
+
function appendValuePlaceholderParts(value, out, budget, depth) {
|
|
7059
|
+
if (budget.exhausted) return;
|
|
7060
|
+
const literal = joinPartLiteralText(value);
|
|
7061
|
+
if (literal !== void 0) return pushPlaceholderPart(out, literal, budget);
|
|
7062
|
+
if (isPlainObject$4(value) && Object.keys(value).length === 1) {
|
|
7063
|
+
const ref = value["Ref"];
|
|
7064
|
+
if (typeof ref === "string" && ref !== "") return pushPlaceholderPart(out, keyedPart({ Ref: ref }), budget);
|
|
7065
|
+
if (depth >= MAX_PLACEHOLDER_DEPTH) {
|
|
7066
|
+
budget.exhausted = true;
|
|
7067
|
+
return;
|
|
7068
|
+
}
|
|
7069
|
+
if (appendParameterPlaceholderParts(value, out, budget, depth + 1)) return;
|
|
7070
|
+
return pushPlaceholderPart(out, keyedPart(value), budget);
|
|
7071
|
+
}
|
|
7072
|
+
pushPlaceholderPart(out, UNKNOWN_PART, budget);
|
|
7073
|
+
}
|
|
7074
|
+
function appendParameterPlaceholderParts(source, out, budget, depth) {
|
|
7075
|
+
const keys = Object.keys(source);
|
|
7076
|
+
if (keys.length !== 1) return false;
|
|
7077
|
+
const key = keys[0];
|
|
7078
|
+
if (key === "Fn::Join") {
|
|
7079
|
+
const args = source[key];
|
|
7080
|
+
if (!Array.isArray(args) || args.length !== 2) return false;
|
|
7081
|
+
const [delimiter, parts] = args;
|
|
7082
|
+
if (typeof delimiter !== "string" || !Array.isArray(parts)) return false;
|
|
7083
|
+
for (let index = 0; index < parts.length && !budget.exhausted; index++) {
|
|
7084
|
+
if (index > 0) pushPlaceholderPart(out, delimiter, budget);
|
|
7085
|
+
appendValuePlaceholderParts(parts[index], out, budget, depth);
|
|
7086
|
+
}
|
|
7087
|
+
return true;
|
|
7088
|
+
}
|
|
7089
|
+
if (key === "Fn::Sub") {
|
|
7090
|
+
const args = source[key];
|
|
7091
|
+
let template;
|
|
7092
|
+
let variables = {};
|
|
7093
|
+
if (typeof args === "string") template = args;
|
|
7094
|
+
else if (Array.isArray(args) && args.length === 2 && isPlainObject$4(args[1])) {
|
|
7095
|
+
template = args[0];
|
|
7096
|
+
variables = args[1];
|
|
7097
|
+
} else return false;
|
|
7098
|
+
if (typeof template !== "string") return false;
|
|
7099
|
+
let cursor = 0;
|
|
7100
|
+
for (const hit of template.matchAll(/\$\{(!)?([^}]*)\}/g)) {
|
|
7101
|
+
if (budget.exhausted) return true;
|
|
7102
|
+
pushPlaceholderPart(out, template.slice(cursor, hit.index), budget);
|
|
7103
|
+
cursor = hit.index + hit[0].length;
|
|
7104
|
+
const name = hit[2] ?? "";
|
|
7105
|
+
if (hit[1] === "!") pushPlaceholderPart(out, `\${${name}}`, budget);
|
|
7106
|
+
else if (name === "") pushPlaceholderPart(out, hit[0], budget);
|
|
7107
|
+
else if (Object.hasOwn(variables, name)) appendValuePlaceholderParts(variables[name], out, budget, depth);
|
|
7108
|
+
else if (name.includes(".")) pushPlaceholderPart(out, keyedPart({ "Fn::GetAtt": name }), budget);
|
|
7109
|
+
else pushPlaceholderPart(out, keyedPart({ Ref: name }), budget);
|
|
7110
|
+
}
|
|
7111
|
+
pushPlaceholderPart(out, template.slice(cursor), budget);
|
|
7112
|
+
return true;
|
|
7113
|
+
}
|
|
7114
|
+
return false;
|
|
7115
|
+
}
|
|
7116
|
+
function parameterPlaceholderParts(source, bag) {
|
|
7117
|
+
const budget = {
|
|
7118
|
+
remaining: bag.length * 2 + 16,
|
|
7119
|
+
exhausted: false
|
|
7120
|
+
};
|
|
7121
|
+
const out = [];
|
|
7122
|
+
if (!appendParameterPlaceholderParts(source, out, budget, 0)) return void 0;
|
|
7123
|
+
return budget.exhausted ? void 0 : out;
|
|
7124
|
+
}
|
|
7125
|
+
function positionByParameterPlaceholders(bag, source, secrets) {
|
|
7126
|
+
const associations = crossStackAssociations.get(secrets);
|
|
7127
|
+
const spanned = positionByRecordedParameterSpans(bag, source, secrets, associations);
|
|
7128
|
+
if (spanned !== void 0) return spanned;
|
|
7129
|
+
const parts = parameterPlaceholderParts(source, bag);
|
|
7130
|
+
if (parts === void 0) return void 0;
|
|
7131
|
+
const before = ["", ""];
|
|
7132
|
+
const after = ["", ""];
|
|
7133
|
+
let side = before;
|
|
7134
|
+
let unknown = false;
|
|
7135
|
+
let certified = 0;
|
|
7136
|
+
const spans = [];
|
|
7137
|
+
for (const part of parts) {
|
|
7138
|
+
let rendered;
|
|
7139
|
+
let persisted;
|
|
7140
|
+
if (typeof part === "string") {
|
|
7141
|
+
rendered = part;
|
|
7142
|
+
persisted = part;
|
|
7143
|
+
} else {
|
|
7144
|
+
let expression;
|
|
7145
|
+
let plaintext = "";
|
|
7146
|
+
if (part !== UNKNOWN_PART) {
|
|
7147
|
+
const association = associations?.get(part.key);
|
|
7148
|
+
if (association !== void 0 && typeof association !== "symbol") {
|
|
7149
|
+
plaintext = association.plaintext;
|
|
7150
|
+
expression = certifiedExpressionForLeaf(secrets, association, plaintext);
|
|
7151
|
+
}
|
|
7152
|
+
if (expression === void 0) {
|
|
7153
|
+
const inherited = inheritedRenderedSpan(secrets, part.key);
|
|
7154
|
+
if (inherited !== void 0) {
|
|
7155
|
+
plaintext = inherited.value;
|
|
7156
|
+
expression = inherited.spelling;
|
|
7157
|
+
}
|
|
7158
|
+
}
|
|
7159
|
+
}
|
|
7160
|
+
if (expression === void 0) {
|
|
7161
|
+
if (unknown) return void 0;
|
|
7162
|
+
unknown = true;
|
|
7163
|
+
side = after;
|
|
7164
|
+
continue;
|
|
7165
|
+
}
|
|
7166
|
+
rendered = plaintext;
|
|
7167
|
+
persisted = expression;
|
|
7168
|
+
certified += 1;
|
|
7169
|
+
spans.push([
|
|
7170
|
+
side,
|
|
7171
|
+
side[0].length,
|
|
7172
|
+
plaintext.length
|
|
7173
|
+
]);
|
|
7174
|
+
}
|
|
7175
|
+
side[0] += rendered;
|
|
7176
|
+
side[1] += persisted;
|
|
7177
|
+
}
|
|
7178
|
+
if (certified === 0) return void 0;
|
|
7179
|
+
let persisted;
|
|
7180
|
+
if (!unknown) {
|
|
7181
|
+
if (before[0] !== bag) return void 0;
|
|
7182
|
+
persisted = before[1];
|
|
7183
|
+
} else {
|
|
7184
|
+
if (bag.length < before[0].length + after[0].length) return void 0;
|
|
7185
|
+
if (!bag.startsWith(before[0]) || !bag.endsWith(after[0])) return void 0;
|
|
7186
|
+
const middle = bag.slice(before[0].length, bag.length - after[0].length);
|
|
7187
|
+
if (redactSecretsForState(middle, secrets) !== middle) return void 0;
|
|
7188
|
+
persisted = before[1] + middle + after[1];
|
|
7189
|
+
}
|
|
7190
|
+
const afterStart = bag.length - after[0].length;
|
|
7191
|
+
return acceptedPlaceholderRendering(bag, persisted, spans.map(([side, offset, length]) => [(side === before ? 0 : afterStart) + offset, length]), secrets);
|
|
7192
|
+
}
|
|
7193
|
+
function acceptedPlaceholderRendering(bag, persisted, spans, secrets) {
|
|
7194
|
+
for (const plaintext of secrets.keys()) {
|
|
7195
|
+
if (plaintext.length < 4) continue;
|
|
7196
|
+
for (let at = bag.indexOf(plaintext); at !== -1; at = bag.indexOf(plaintext, at + 1)) {
|
|
7197
|
+
const end = at + plaintext.length;
|
|
7198
|
+
for (const [start, length] of spans) if (at < start + length && end > start && (at < start || end > start + length)) return void 0;
|
|
7199
|
+
}
|
|
7200
|
+
}
|
|
7201
|
+
if (redactSecretsForState(persisted, secrets) !== persisted) return void 0;
|
|
7202
|
+
return persisted;
|
|
7203
|
+
}
|
|
7204
|
+
function positionByRecordedParameterSpans(bag, source, secrets, associations) {
|
|
7205
|
+
const resolution = intrinsicLeafResolutionOf(secrets, source);
|
|
7206
|
+
if (resolution === void 0 || resolution.output !== bag) return void 0;
|
|
7207
|
+
const recorded = resolution.parameterSpans;
|
|
7208
|
+
if (recorded === void 0) return void 0;
|
|
7209
|
+
let previousEnd = 0;
|
|
7210
|
+
let cursor = 0;
|
|
7211
|
+
let persisted = "";
|
|
7212
|
+
const gaps = [];
|
|
7213
|
+
const certified = [];
|
|
7214
|
+
for (const { start, length, key } of recorded) {
|
|
7215
|
+
if (!(start >= previousEnd && length > 0 && start + length <= bag.length)) return void 0;
|
|
7216
|
+
previousEnd = start + length;
|
|
7217
|
+
const text = bag.slice(start, start + length);
|
|
7218
|
+
const association = associations?.get(key);
|
|
7219
|
+
const expression = (association !== void 0 && typeof association !== "symbol" ? certifiedExpressionForLeaf(secrets, association, text) : void 0) ?? inheritedRenderedSpan(secrets, key, text)?.spelling;
|
|
7220
|
+
if (expression === void 0) continue;
|
|
7221
|
+
const gap = bag.slice(cursor, start);
|
|
7222
|
+
gaps.push(gap);
|
|
7223
|
+
persisted += gap + expression;
|
|
7224
|
+
certified.push([start, length]);
|
|
7225
|
+
cursor = start + length;
|
|
7226
|
+
}
|
|
7227
|
+
if (certified.length === 0) return void 0;
|
|
7228
|
+
const tail = bag.slice(cursor);
|
|
7229
|
+
gaps.push(tail);
|
|
7230
|
+
persisted += tail;
|
|
7231
|
+
for (const gap of gaps) if (redactSecretsForState(gap, secrets) !== gap) return void 0;
|
|
7232
|
+
return acceptedPlaceholderRendering(bag, persisted, certified, secrets);
|
|
7233
|
+
}
|
|
7234
|
+
|
|
7235
|
+
//#endregion
|
|
7236
|
+
//#region src/deployment/secret-redaction/identity-keys.ts
|
|
7237
|
+
const ARRAY_IDENTITY_KEYS = ["Name", "Key"];
|
|
7238
|
+
function isUniquelyKeyedBy(items, key) {
|
|
7239
|
+
if (items.length === 0) return false;
|
|
7240
|
+
const seen = /* @__PURE__ */ new Set();
|
|
7241
|
+
for (const item of items) {
|
|
7242
|
+
if (!isPlainObject$4(item) || !Object.hasOwn(item, key)) return false;
|
|
7243
|
+
const id = item[key];
|
|
7244
|
+
if (typeof id !== "string" || id === "") return false;
|
|
7245
|
+
if (seen.has(id)) return false;
|
|
7246
|
+
seen.add(id);
|
|
7247
|
+
}
|
|
7248
|
+
return true;
|
|
7249
|
+
}
|
|
7250
|
+
function identityKeyFor(bag, source) {
|
|
7251
|
+
for (const key of ARRAY_IDENTITY_KEYS) if (isUniquelyKeyedBy(bag, key) && isUniquelyKeyedBy(source, key)) return key;
|
|
7252
|
+
}
|
|
7253
|
+
function positionListByCrossStackSource(bag, source, secrets) {
|
|
7254
|
+
const association = associationForSource(source, secrets);
|
|
7255
|
+
if (association === void 0) return void 0;
|
|
7256
|
+
return certifiedListForLeaf(secrets, association, bag);
|
|
7257
|
+
}
|
|
7258
|
+
|
|
7199
7259
|
//#endregion
|
|
7200
7260
|
//#region src/deployment/secret-redaction/redact-path.ts
|
|
7201
7261
|
function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameGeneration) {
|
|
@@ -7734,11 +7794,67 @@ function singleSpanFrame(bag, source) {
|
|
|
7734
7794
|
}
|
|
7735
7795
|
function positionByEmbeddedSpan(bag, source, secrets, bagIsSameGeneration) {
|
|
7736
7796
|
const frame = singleSpanFrame(bag, source);
|
|
7737
|
-
if (frame === void 0)
|
|
7797
|
+
if (frame === void 0) {
|
|
7798
|
+
if (dynamicReferenceSpans(source).length >= 2 && certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration)) return source;
|
|
7799
|
+
return redactSecretsForState(bag, secrets);
|
|
7800
|
+
}
|
|
7738
7801
|
const recorded = resolvedPlaintextOf(secrets, frame.token);
|
|
7739
7802
|
if (recorded === void 0 || recorded !== frame.middle) return redactSecretsForState(bag, secrets);
|
|
7740
7803
|
return writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration);
|
|
7741
7804
|
}
|
|
7805
|
+
function pairedSpans(source, secrets) {
|
|
7806
|
+
const spans = dynamicReferenceSpans(source);
|
|
7807
|
+
if (spans.length === 0) return void 0;
|
|
7808
|
+
const out = [];
|
|
7809
|
+
for (const span of spans) {
|
|
7810
|
+
const plaintext = resolvedPlaintextOf(secrets, source.slice(span.start, span.end));
|
|
7811
|
+
if (plaintext === void 0 || plaintext === "") return void 0;
|
|
7812
|
+
if (isSingleDynamicReferenceToken(plaintext)) return void 0;
|
|
7813
|
+
out.push({
|
|
7814
|
+
...span,
|
|
7815
|
+
plaintext
|
|
7816
|
+
});
|
|
7817
|
+
}
|
|
7818
|
+
return out;
|
|
7819
|
+
}
|
|
7820
|
+
function renderedTokenOf(spelling, secrets, plaintext) {
|
|
7821
|
+
const spans = pairedSpans(spelling, secrets);
|
|
7822
|
+
if (spans === void 0) return void 0;
|
|
7823
|
+
const tokens = new Set(spans.filter((span) => span.plaintext === plaintext).map((span) => spelling.slice(span.start, span.end)));
|
|
7824
|
+
return tokens.size === 1 ? [...tokens][0] : void 0;
|
|
7825
|
+
}
|
|
7826
|
+
function renderSpans(source, spans, textOf) {
|
|
7827
|
+
let out = "";
|
|
7828
|
+
let cursor = 0;
|
|
7829
|
+
spans.forEach((span, index) => {
|
|
7830
|
+
out += source.slice(cursor, span.start) + textOf(index);
|
|
7831
|
+
cursor = span.end;
|
|
7832
|
+
});
|
|
7833
|
+
return out + source.slice(cursor);
|
|
7834
|
+
}
|
|
7835
|
+
function rendersLiteralTo(spelling, secrets, value) {
|
|
7836
|
+
return renderedLiteralSpans(spelling, secrets, value) !== void 0;
|
|
7837
|
+
}
|
|
7838
|
+
function renderedLiteralSpans(spelling, secrets, value) {
|
|
7839
|
+
const spans = pairedSpans(spelling, secrets);
|
|
7840
|
+
if (spans === void 0) return void 0;
|
|
7841
|
+
if (renderSpans(spelling, spans, (i) => spans[i].plaintext) !== value) return void 0;
|
|
7842
|
+
return redactSecretsForState(spelling, secrets) === spelling ? spans : void 0;
|
|
7843
|
+
}
|
|
7844
|
+
function certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration) {
|
|
7845
|
+
const spans = renderedLiteralSpans(source, secrets, bag);
|
|
7846
|
+
if (spans === void 0) return false;
|
|
7847
|
+
const survivors = [];
|
|
7848
|
+
for (const span of spans) {
|
|
7849
|
+
const survivor = secrets.get(span.plaintext);
|
|
7850
|
+
if (survivor === void 0) return false;
|
|
7851
|
+
survivors.push(survivor);
|
|
7852
|
+
}
|
|
7853
|
+
const scanned = redactSecretsForState(bag, secrets);
|
|
7854
|
+
if (scanned === renderSpans(source, spans, (i) => survivors[i])) return true;
|
|
7855
|
+
if (!bagIsSameGeneration) return false;
|
|
7856
|
+
return scanned === renderSpans(source, spans, (i) => spans[i].plaintext.length >= 4 ? survivors[i] : spans[i].plaintext);
|
|
7857
|
+
}
|
|
7742
7858
|
function writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration) {
|
|
7743
7859
|
const scanned = redactSecretsForState(bag, secrets);
|
|
7744
7860
|
const { token, prefix, suffix, middle } = frame;
|
|
@@ -8656,7 +8772,7 @@ function canonicalJson$3(value) {
|
|
|
8656
8772
|
});
|
|
8657
8773
|
}
|
|
8658
8774
|
const PREVIOUS_NOECHO_VALUE = "(previous NoEcho value)";
|
|
8659
|
-
function
|
|
8775
|
+
function noEchoParametersReadBy(node, sources) {
|
|
8660
8776
|
return [...sources.parameters].filter((name) => readsNoEchoSource(node, {
|
|
8661
8777
|
parameters: /* @__PURE__ */ new Set([name]),
|
|
8662
8778
|
...sources.conditions !== void 0 && { conditions: sources.conditions }
|
|
@@ -8667,7 +8783,7 @@ function noEchoComparison(options) {
|
|
|
8667
8783
|
return ({ templateProperties, desired, current, record }) => {
|
|
8668
8784
|
const coordinates = noEchoCoordinatesOf(templateProperties, desired, sources);
|
|
8669
8785
|
const needles = [];
|
|
8670
|
-
for (const name of
|
|
8786
|
+
for (const name of noEchoParametersReadBy(templateProperties, sources)) {
|
|
8671
8787
|
const value = values[name];
|
|
8672
8788
|
const leaves = Array.isArray(value) ? value : [value];
|
|
8673
8789
|
for (const leaf of leaves) if (typeof leaf === "string" && leaf.length >= minNeedleLength && !isSingleDynamicReferenceToken(leaf)) needles.push(leaf);
|
|
@@ -19037,7 +19153,7 @@ async function resolveImportValue(importValueArg, context) {
|
|
|
19037
19153
|
}
|
|
19038
19154
|
function recordImport(context, exportName, producerStack, producerRegion) {
|
|
19039
19155
|
if (!context.recordedImports) return;
|
|
19040
|
-
if (context.recordedImports.some((e) => e.exportName === exportName && e.sourceStack === producerStack && e.sourceRegion
|
|
19156
|
+
if (context.recordedImports.some((e) => e.exportName === exportName && e.sourceStack === producerStack && sameRegion(e.sourceRegion, producerRegion))) return;
|
|
19041
19157
|
context.recordedImports.push({
|
|
19042
19158
|
exportName,
|
|
19043
19159
|
sourceStack: producerStack,
|
|
@@ -19089,7 +19205,7 @@ async function fetchAllCfnExports() {
|
|
|
19089
19205
|
return exports;
|
|
19090
19206
|
}
|
|
19091
19207
|
async function lookupCfnStackOutputs(stackName, region, context, loggedRegionText) {
|
|
19092
|
-
const cacheKey = injectiveKey(region, stackName, credentialFingerprint(ambientCredentialConfig()));
|
|
19208
|
+
const cacheKey = injectiveKey(canonicalizeRegion(region), stackName, credentialFingerprint(ambientCredentialConfig()));
|
|
19093
19209
|
let fetch = this.cfnStackOutputsCache.get(cacheKey);
|
|
19094
19210
|
if (!fetch) {
|
|
19095
19211
|
fetch = this.fetchCfnStackOutputs(stackName, region);
|
|
@@ -19119,7 +19235,8 @@ async function fetchCfnStackOutputs(stackName, region) {
|
|
|
19119
19235
|
throw error;
|
|
19120
19236
|
}
|
|
19121
19237
|
}
|
|
19122
|
-
function getCfnClient(
|
|
19238
|
+
function getCfnClient(rawRegion) {
|
|
19239
|
+
const region = canonicalizeRegion(rawRegion);
|
|
19123
19240
|
const credentialConfig = ambientCredentialConfig();
|
|
19124
19241
|
const key = clientCacheKey(region, credentialConfig);
|
|
19125
19242
|
let client = this.cfnClients.get(key);
|
|
@@ -19161,7 +19278,7 @@ async function resolveGetStackOutput(arg, context) {
|
|
|
19161
19278
|
if (typeof raw !== "string" || raw === "") throw markNonRetryable(/* @__PURE__ */ new Error(`Fn::GetStackOutput: RoleArn must be a literal string in the template (no Ref / Fn::GetAtt / Fn::Sub allowed for cross-account references). Got ${raw === null ? "null" : Array.isArray(raw) ? "array" : typeof raw}${typeof raw === "object" ? ` (intrinsic shape: ${this.displayMasked(JSON.stringify(raw).slice(0, 80), context)})` : ""}.`));
|
|
19162
19279
|
roleArn = raw;
|
|
19163
19280
|
}
|
|
19164
|
-
if (!roleArn && context.stackName && context.stackName === stackName &&
|
|
19281
|
+
if (!roleArn && context.stackName && context.stackName === stackName && sameRegion(region, this.resolverRegion)) throw markNonRetryable(/* @__PURE__ */ new Error(`Fn::GetStackOutput: cannot reference own stack ${this.displayMaskedIdent(stackName, context, STACK_REF_MAX_CODE_POINTS)} in the same region ${this.displayMaskedIdent(loggedRegionText, context)}`));
|
|
19165
19282
|
const loggedStackName = this.displayMaskedIdent(stackName, context, STACK_REF_MAX_CODE_POINTS);
|
|
19166
19283
|
const loggedOutputName = this.displayMaskedIdent(outputName, context);
|
|
19167
19284
|
const loggedRegion = this.displayMasked(loggedRegionText, context);
|
|
@@ -19207,7 +19324,7 @@ async function resolveGetStackOutput(arg, context) {
|
|
|
19207
19324
|
}
|
|
19208
19325
|
function recordOutputRead(context, producerStack, producerRegion, outputName) {
|
|
19209
19326
|
if (!context.recordedOutputReads) return;
|
|
19210
|
-
if (context.recordedOutputReads.some((e) => e.sourceStack === producerStack && e.sourceRegion
|
|
19327
|
+
if (context.recordedOutputReads.some((e) => e.sourceStack === producerStack && sameRegion(e.sourceRegion, producerRegion) && e.outputName === outputName)) return;
|
|
19211
19328
|
context.recordedOutputReads.push({
|
|
19212
19329
|
sourceStack: producerStack,
|
|
19213
19330
|
sourceRegion: producerRegion,
|
|
@@ -20819,12 +20936,92 @@ function recordInheritedParameterSecrets(parameterName, value, context) {
|
|
|
20819
20936
|
if (inherited && recorded) recordInheritedNoEchoListElements(this, inherited, recorded, value, context);
|
|
20820
20937
|
if (!inherited || inherited.size === 0 || !recorded) return;
|
|
20821
20938
|
for (const [plaintext, expression] of inheritedSecretsCarriedBy(value, inherited)) {
|
|
20822
|
-
|
|
20823
|
-
recorded.set(plaintext, typeof own === "string" ? own : expression);
|
|
20939
|
+
recorded.set(plaintext, carriedExpressionFor(inherited, parameterName, value, plaintext, expression));
|
|
20824
20940
|
recordInheritedParameterRead(recorded, inherited, parameterName);
|
|
20825
20941
|
carryFreshNoEchoMark(inherited, recorded, plaintext);
|
|
20826
20942
|
}
|
|
20827
20943
|
}
|
|
20944
|
+
function carriedExpressionFor(inherited, parameterName, value, plaintext, survivor) {
|
|
20945
|
+
const own = inheritedParameterExpression(inherited, parameterName, plaintext);
|
|
20946
|
+
if (typeof own === "string") return own;
|
|
20947
|
+
return inheritedRenderedToken(inherited, parameterName, value, plaintext) ?? survivor;
|
|
20948
|
+
}
|
|
20949
|
+
function poisonRenderedSpellingsCollidingIn(template, parameterValues, inherited) {
|
|
20950
|
+
if (!inherited || inherited.size === 0 || template === void 0) return;
|
|
20951
|
+
const names = new Set(Object.keys(parameterValues));
|
|
20952
|
+
if (names.size < 2) return;
|
|
20953
|
+
const groups = [];
|
|
20954
|
+
if (template.Resources !== null && typeof template.Resources === "object") for (const resource of Object.values(template.Resources)) groups.push([resource, false]);
|
|
20955
|
+
if (template.Outputs !== void 0) groups.push([template.Outputs, true]);
|
|
20956
|
+
const readsByGroup = groups.map(([group, countBareRefs]) => parameterReadsOf(group, names, countBareRefs)).filter((reads) => reads.size >= 2);
|
|
20957
|
+
const withdrawn = /* @__PURE__ */ new Set();
|
|
20958
|
+
for (;;) {
|
|
20959
|
+
const fresh = [...collidingRenderedNames(readsByGroup, parameterValues, inherited)].filter((name) => !withdrawn.has(name));
|
|
20960
|
+
if (fresh.length === 0) return;
|
|
20961
|
+
for (const name of fresh) {
|
|
20962
|
+
withdrawn.add(name);
|
|
20963
|
+
withdrawRenderedParameterSpelling(inherited, name);
|
|
20964
|
+
}
|
|
20965
|
+
}
|
|
20966
|
+
}
|
|
20967
|
+
function collidingRenderedNames(readsByGroup, parameterValues, inherited) {
|
|
20968
|
+
const withdraw = /* @__PURE__ */ new Set();
|
|
20969
|
+
for (const reads of readsByGroup) {
|
|
20970
|
+
const byPlaintext = /* @__PURE__ */ new Map();
|
|
20971
|
+
const slotReadPlaintexts = /* @__PURE__ */ new Set();
|
|
20972
|
+
for (const [name, slotRead] of reads) {
|
|
20973
|
+
if (!Object.hasOwn(parameterValues, name)) continue;
|
|
20974
|
+
const value = parameterValues[name];
|
|
20975
|
+
for (const [plaintext, survivor] of inheritedSecretsCarriedBy(value, inherited)) {
|
|
20976
|
+
const expression = carriedExpressionFor(inherited, name, value, plaintext, survivor);
|
|
20977
|
+
const rendered = typeof inheritedParameterExpression(inherited, name, plaintext) !== "string" && inheritedRenderedToken(inherited, name, value, plaintext) !== void 0;
|
|
20978
|
+
let byExpression = byPlaintext.get(plaintext);
|
|
20979
|
+
if (byExpression === void 0) {
|
|
20980
|
+
byExpression = /* @__PURE__ */ new Map();
|
|
20981
|
+
byPlaintext.set(plaintext, byExpression);
|
|
20982
|
+
}
|
|
20983
|
+
let renderedNames = byExpression.get(expression);
|
|
20984
|
+
if (renderedNames === void 0) {
|
|
20985
|
+
renderedNames = [];
|
|
20986
|
+
byExpression.set(expression, renderedNames);
|
|
20987
|
+
}
|
|
20988
|
+
if (rendered) renderedNames.push(name);
|
|
20989
|
+
if (slotRead) slotReadPlaintexts.add(plaintext);
|
|
20990
|
+
}
|
|
20991
|
+
}
|
|
20992
|
+
for (const [plaintext, byExpression] of byPlaintext) {
|
|
20993
|
+
if (byExpression.size < 2 || !slotReadPlaintexts.has(plaintext)) continue;
|
|
20994
|
+
for (const renderedNames of byExpression.values()) for (const name of renderedNames) withdraw.add(name);
|
|
20995
|
+
}
|
|
20996
|
+
}
|
|
20997
|
+
return withdraw;
|
|
20998
|
+
}
|
|
20999
|
+
const POSITIONED_INTRINSICS = /* @__PURE__ */ new Set(["Fn::Join", "Fn::Sub"]);
|
|
21000
|
+
function parameterReadsOf(node, names, countBareRefs) {
|
|
21001
|
+
const reads = /* @__PURE__ */ new Map();
|
|
21002
|
+
const add = (name, slotRead) => {
|
|
21003
|
+
reads.set(name, slotRead || reads.get(name) === true);
|
|
21004
|
+
};
|
|
21005
|
+
const visit = (value, slotRead) => {
|
|
21006
|
+
if (Array.isArray(value)) {
|
|
21007
|
+
for (const element of value) visit(element, slotRead);
|
|
21008
|
+
return;
|
|
21009
|
+
}
|
|
21010
|
+
if (value === null || typeof value !== "object") return;
|
|
21011
|
+
const record = value;
|
|
21012
|
+
const ref = record["Ref"];
|
|
21013
|
+
if (typeof ref === "string" && names.has(ref)) add(ref, slotRead);
|
|
21014
|
+
const sub = record["Fn::Sub"];
|
|
21015
|
+
const text = typeof sub === "string" ? sub : Array.isArray(sub) ? sub[0] : void 0;
|
|
21016
|
+
if (typeof text === "string") for (const match of text.matchAll(/\$\{([^}!][^}]*)\}/g)) {
|
|
21017
|
+
const name = match[1].trim();
|
|
21018
|
+
if (names.has(name)) add(name, slotRead);
|
|
21019
|
+
}
|
|
21020
|
+
for (const [key, child] of Object.entries(record)) visit(child, slotRead || key.startsWith("Fn::") && !POSITIONED_INTRINSICS.has(key));
|
|
21021
|
+
};
|
|
21022
|
+
visit(node, countBareRefs);
|
|
21023
|
+
return reads;
|
|
21024
|
+
}
|
|
20828
21025
|
function recordInheritedNoEchoListElements(resolver, inherited, recorded, value, context) {
|
|
20829
21026
|
if (!Array.isArray(value)) return;
|
|
20830
21027
|
const parameterValues = [...inherited.keys()].filter((plaintext) => isNoEchoParameterPlaintext(inherited, plaintext));
|
|
@@ -20938,7 +21135,7 @@ function clientsForRegion(targetRegion, targetLogText) {
|
|
|
20938
21135
|
const cacheKey = clientCacheKey(target, ambient.credentialConfig ?? {});
|
|
20939
21136
|
const cached = this.regionScopedClients.get(cacheKey);
|
|
20940
21137
|
if (cached) return cached;
|
|
20941
|
-
if (
|
|
21138
|
+
if (sameRegion(ambient.configuredRegion, target)) return ambient;
|
|
20942
21139
|
const scoped = ambient.withRegion(target);
|
|
20943
21140
|
this.regionScopedClients.set(cacheKey, scoped);
|
|
20944
21141
|
this.logger.debug(`Using region-scoped AWS clients for ${displaySafe(loggedTarget)}`);
|
|
@@ -21079,7 +21276,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
|
|
|
21079
21276
|
resolverForProducerRegion(producerRegion, context, producerRegionLogText) {
|
|
21080
21277
|
if (!producerRegion) return this;
|
|
21081
21278
|
const target = canonicalizeRegion(producerRegion);
|
|
21082
|
-
if (target
|
|
21279
|
+
if (sameRegion(target, this.explicitRegion)) return this;
|
|
21083
21280
|
const regionText = producerRegionLogText !== void 0 ? canonicalizeRegion(producerRegionLogText) : this.regionLogText(producerRegion, context);
|
|
21084
21281
|
const guestRegionText = this.displayMasked(regionText, context);
|
|
21085
21282
|
const cached = this.producerRegionResolvers.get(target);
|
|
@@ -22712,7 +22909,7 @@ var CloudControlProvider = class {
|
|
|
22712
22909
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
22713
22910
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
22714
22911
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
22715
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
22912
|
+
const { ASGProvider } = await import("./asg-provider-D2eHqx5L.js");
|
|
22716
22913
|
const delegateRegion = ambientRegion();
|
|
22717
22914
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
22718
22915
|
if (asgProvider === void 0) {
|
|
@@ -22818,7 +23015,7 @@ var CloudControlProvider = class {
|
|
|
22818
23015
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
22819
23016
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
22820
23017
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
22821
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
23018
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-Cbeq5OY8.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-X5T1Zamt.js"))).NeptuneProvider({ region: ccRegion });
|
|
22822
23019
|
this.sdkDeleteDelegates.set(family, {
|
|
22823
23020
|
region: ccRegion,
|
|
22824
23021
|
provider
|
|
@@ -27532,6 +27729,20 @@ function exportNameSecretExposure(exportName, substitutedIntoName, recordedThisP
|
|
|
27532
27729
|
}
|
|
27533
27730
|
return exposure.size > 0 ? exposure : void 0;
|
|
27534
27731
|
}
|
|
27732
|
+
function carriedExportAliasExposure(exportName, recordedThisPass, noEchoParameterValues) {
|
|
27733
|
+
const carried = /* @__PURE__ */ new Map();
|
|
27734
|
+
shareLogOnlyValues(carried, recordedThisPass);
|
|
27735
|
+
const exposure = exportNameSecretExposure(exportName, carried, recordedThisPass, noEchoParameterValues);
|
|
27736
|
+
if (exposure === void 0) return void 0;
|
|
27737
|
+
return {
|
|
27738
|
+
exposure,
|
|
27739
|
+
noEchoOnly: isNoEchoOnlyExposure(exposure, carried, recordedThisPass)
|
|
27740
|
+
};
|
|
27741
|
+
}
|
|
27742
|
+
function exportNameNoEchoParameters(exportName, sources) {
|
|
27743
|
+
if (sources === void 0 || exportName === null || typeof exportName !== "object") return [];
|
|
27744
|
+
return noEchoParametersReadBy(exportName, sources);
|
|
27745
|
+
}
|
|
27535
27746
|
function isNoEchoOnlyExposure(exposure, substitutedIntoName, recordedThisPass) {
|
|
27536
27747
|
for (const plaintext of exposure.keys()) if (substitutedIntoName.has(plaintext) || recordedThisPass?.has(plaintext) === true) return false;
|
|
27537
27748
|
return exposure.size > 0;
|
|
@@ -27581,6 +27792,11 @@ function secretBearingExportNameWarning(outputKey, exportName, exposure, secrets
|
|
|
27581
27792
|
if (noEchoOnly) return `Output ${owner} has an Export.Name that resolves to a value containing a secret ${shown}— skipping the export alias. The name contains the value of a NoEcho template parameter, or a value derived from one: the whole name at any length, or embedded at 4 or more characters, even where the match is a coincidence. An export name becomes a key in state.json and in the exports index, where the value would be stored in plaintext. An existing Fn::ImportValue of this name stops resolving. Rename the export, or choose a NoEcho value the name does not contain.`;
|
|
27582
27793
|
return `Output ${owner} has an Export.Name that resolves to a value containing a secret ${shown}— skipping the export alias. An export name becomes a key in state.json and in the exports index, and redaction rewrites VALUES only, so publishing it would persist the secret in plaintext. Use a non-secret Export.Name.`;
|
|
27583
27794
|
}
|
|
27795
|
+
function noEchoParameterExportNameWarning(outputKey, parameterNames, secrets) {
|
|
27796
|
+
const owner = displayTextOrWithheld(secretSafeKeyDisplay(outputKey, printingCorpusOf(secrets)));
|
|
27797
|
+
const names = parameterNames.map((name) => displayIdent(name, { listMember: true })).join(", ");
|
|
27798
|
+
return `Output ${owner} has an Export.Name that reads the NoEcho template ${parameterNames.length === 1 ? "parameter" : "parameters"} ${names} — skipping the export alias. An export name becomes a key in state.json and in the exports index, where the value would be stored in plaintext, so a name built from a NoEcho parameter is refused whatever the value's length. An existing Fn::ImportValue of this name stops resolving. Build the Export.Name without the NoEcho parameter.`;
|
|
27799
|
+
}
|
|
27584
27800
|
function mergedExposure(a, b) {
|
|
27585
27801
|
if (a === void 0) return b;
|
|
27586
27802
|
if (b === void 0) return a;
|
|
@@ -27665,6 +27881,7 @@ function handleOutputResolutionFailure(error, outputKey, outputs, secrets, inher
|
|
|
27665
27881
|
}
|
|
27666
27882
|
async function resolveOutputs(template, resources, stackName, digestSource, parameterValues, conditions) {
|
|
27667
27883
|
this.resolvedExportNames = [];
|
|
27884
|
+
this.carriedExportAliasRefusal = void 0;
|
|
27668
27885
|
if (!template.Outputs) return {};
|
|
27669
27886
|
const outputs = Object.create(null);
|
|
27670
27887
|
const context = this.buildResolverContext({
|
|
@@ -27704,6 +27921,12 @@ async function resolveOutputs(template, resources, stackName, digestSource, para
|
|
|
27704
27921
|
}
|
|
27705
27922
|
}
|
|
27706
27923
|
const noEchoSeed = noEchoParameterValueSeed(template.Parameters, parameterValues, context.inheritedSecrets, this.options.parameters);
|
|
27924
|
+
const noEchoSources = this.noEchoPositionSources(resources, template, conditions);
|
|
27925
|
+
this.carriedExportAliasRefusal = (outputKey, exportName) => {
|
|
27926
|
+
const verdict = carriedExportAliasExposure(exportName, outputsPassSecrets, noEchoSeed);
|
|
27927
|
+
if (verdict === void 0) return void 0;
|
|
27928
|
+
return secretBearingExportNameWarning(outputKey, exportName, verdict.exposure, context.recordedSecretValues, verdict.noEchoOnly);
|
|
27929
|
+
};
|
|
27707
27930
|
const resolvedNames = [];
|
|
27708
27931
|
for (const [outputKey, output] of Object.entries(template.Outputs)) {
|
|
27709
27932
|
if (isOutputSuppressedByCondition(output, conditions)) continue;
|
|
@@ -27731,12 +27954,15 @@ async function resolveOutputs(template, resources, stackName, digestSource, para
|
|
|
27731
27954
|
exportName,
|
|
27732
27955
|
value,
|
|
27733
27956
|
outputValue: output.Value,
|
|
27957
|
+
nameSource: output.Export.Name,
|
|
27734
27958
|
nameSecrets
|
|
27735
27959
|
});
|
|
27736
27960
|
}
|
|
27737
|
-
for (const { outputKey, exportName, value, outputValue, nameSecrets } of resolvedNames) {
|
|
27738
|
-
const
|
|
27739
|
-
|
|
27961
|
+
for (const { outputKey, exportName, value, outputValue, nameSource, nameSecrets } of resolvedNames) {
|
|
27962
|
+
const noEchoParameters = exportNameNoEchoParameters(nameSource, noEchoSources);
|
|
27963
|
+
const exposure = noEchoParameters.length > 0 ? void 0 : exportNameSecretExposure(exportName, nameSecrets, context.recordedSecretValues, noEchoSeed);
|
|
27964
|
+
if (noEchoParameters.length > 0) this.logger.warn(noEchoParameterExportNameWarning(outputKey, noEchoParameters, outputsPassSecrets));
|
|
27965
|
+
else if (exposure) this.logger.warn(secretBearingExportNameWarning(outputKey, exportName, exposure, context.recordedSecretValues, isNoEchoOnlyExposure(exposure, nameSecrets, context.recordedSecretValues)));
|
|
27740
27966
|
else if (isExportAliasCollision(exportName, outputKey, publishedOutputNames)) this.logger.warn(exportAliasCollisionWarning(outputKey, exportName, outputsPassSecrets));
|
|
27741
27967
|
else {
|
|
27742
27968
|
outputs[exportName] = value;
|
|
@@ -38180,7 +38406,7 @@ function hasOwn(bag, key) {
|
|
|
38180
38406
|
return Object.prototype.hasOwnProperty.call(bag, key);
|
|
38181
38407
|
}
|
|
38182
38408
|
function mergeNoChangeOutputs(input) {
|
|
38183
|
-
const { persisted, resolved, declaredOutputs, previousExportNames, resolvedExportNames } = input;
|
|
38409
|
+
const { persisted, resolved, declaredOutputs, previousExportNames, resolvedExportNames, refusesCarriedAlias } = input;
|
|
38184
38410
|
const failedKeys = Object.keys(resolved).filter((key) => resolved[key] === void 0);
|
|
38185
38411
|
const exportNameOf = (outputKey) => declaredOutputs !== void 0 && hasOwn(declaredOutputs, outputKey) ? declaredOutputs[outputKey]?.Export?.Name : void 0;
|
|
38186
38412
|
for (const outputKey of failedKeys) {
|
|
@@ -38197,15 +38423,26 @@ function mergeNoChangeOutputs(input) {
|
|
|
38197
38423
|
const addExport = (name) => {
|
|
38198
38424
|
exportNames.push(name);
|
|
38199
38425
|
};
|
|
38426
|
+
const refusedAliases = [];
|
|
38427
|
+
const carryAllowed = (outputKey, exportName) => {
|
|
38428
|
+
const reason = refusesCarriedAlias(outputKey, exportName);
|
|
38429
|
+
if (reason === void 0) return true;
|
|
38430
|
+
refusedAliases.push({
|
|
38431
|
+
outputKey,
|
|
38432
|
+
exportName,
|
|
38433
|
+
reason
|
|
38434
|
+
});
|
|
38435
|
+
return false;
|
|
38436
|
+
};
|
|
38200
38437
|
for (const outputKey of failedKeys) {
|
|
38201
38438
|
const exportName = exportNameOf(outputKey);
|
|
38202
38439
|
if (hasOwn(persisted, outputKey)) {
|
|
38203
38440
|
outputs[outputKey] = persisted[outputKey];
|
|
38204
38441
|
carriedKeys.push(outputKey);
|
|
38205
|
-
if (exportName === outputKey && previousExportNames.has(outputKey)) addExport(outputKey);
|
|
38442
|
+
if (exportName === outputKey && previousExportNames.has(outputKey) && carryAllowed(outputKey, outputKey)) addExport(outputKey);
|
|
38206
38443
|
}
|
|
38207
38444
|
if (typeof exportName !== "string") continue;
|
|
38208
|
-
if (previousExportNames.has(exportName) && hasOwn(persisted, exportName) && !hasOwn(resolved, exportName) && !hasOwn(outputs, exportName)) {
|
|
38445
|
+
if (previousExportNames.has(exportName) && hasOwn(persisted, exportName) && !hasOwn(resolved, exportName) && !hasOwn(outputs, exportName) && carryAllowed(outputKey, exportName)) {
|
|
38209
38446
|
outputs[exportName] = persisted[exportName];
|
|
38210
38447
|
carriedKeys.push(exportName);
|
|
38211
38448
|
addExport(exportName);
|
|
@@ -38219,7 +38456,8 @@ function mergeNoChangeOutputs(input) {
|
|
|
38219
38456
|
kind: "merged",
|
|
38220
38457
|
outputs,
|
|
38221
38458
|
exportNames,
|
|
38222
|
-
carriedKeys
|
|
38459
|
+
carriedKeys,
|
|
38460
|
+
refusedAliases
|
|
38223
38461
|
};
|
|
38224
38462
|
}
|
|
38225
38463
|
function keptWholeReasonText(reason) {
|
|
@@ -38808,6 +39046,7 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
|
|
|
38808
39046
|
});
|
|
38809
39047
|
const parameterValues = await this.resolver.resolveParameters(template, this.options.parameters, { ...this.options.inheritedSecrets && hasMaskableValues(this.options.inheritedSecrets) && { inheritedSecrets: this.options.inheritedSecrets } });
|
|
38810
39048
|
this.logger.debug(`Resolved ${Object.keys(parameterValues).length} parameters: ${Object.keys(parameterValues).join(", ")}`);
|
|
39049
|
+
poisonRenderedSpellingsCollidingIn(template, parameterValues, this.options.inheritedSecrets);
|
|
38811
39050
|
this.inheritedNoEchoParameters = /* @__PURE__ */ new Set([...this.freshNoEchoParameters(parameterValues) ?? [], ...this.options.passedNoEchoParameters ?? []]);
|
|
38812
39051
|
const backfillNoEchoValues = noEchoParameterValueSeed(template.Parameters, parameterValues, this.options.inheritedSecrets, this.options.parameters);
|
|
38813
39052
|
this.fingerprintNoEchoValues = backfillNoEchoValues;
|
|
@@ -38915,7 +39154,8 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
|
|
|
38915
39154
|
resolved: resolvedOutputs,
|
|
38916
39155
|
declaredOutputs: effectiveTemplate.Outputs,
|
|
38917
39156
|
previousExportNames: currentEffectiveExports,
|
|
38918
|
-
resolvedExportNames: this.resolvedExportNames
|
|
39157
|
+
resolvedExportNames: this.resolvedExportNames,
|
|
39158
|
+
refusesCarriedAlias: (outputKey, exportName) => this.carriedExportAliasRefusal === void 0 ? "An export alias was not carried: no export-name verdict is available." : this.carriedExportAliasRefusal(outputKey, exportName)
|
|
38919
39159
|
}) : void 0;
|
|
38920
39160
|
if (merge?.kind === "merged") {
|
|
38921
39161
|
for (const key of merge.carriedKeys) Reflect.deleteProperty(this.outputsTemplateSource, key);
|
|
@@ -38925,6 +39165,7 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
|
|
|
38925
39165
|
};
|
|
38926
39166
|
}
|
|
38927
39167
|
if (merge?.kind === "kept") this.outputsSourceUsable = false;
|
|
39168
|
+
if (merge?.kind === "merged") for (const { reason } of merge.refusedAliases) this.logger.warn(reason);
|
|
38928
39169
|
const outputsToPersist = merge === void 0 ? resolvedOutputs : merge.kind === "merged" ? merge.outputs : persistedOutputs;
|
|
38929
39170
|
const exportNamesToPersist = merge === void 0 ? this.resolvedExportNames : merge.kind === "merged" ? merge.exportNames : void 0;
|
|
38930
39171
|
const outputsChanged = !outputMapsEqual(persistedOutputs, outputsToPersist);
|
|
@@ -39300,6 +39541,7 @@ var DeployEngine = class {
|
|
|
39300
39541
|
outputsPassSecretMaps = [];
|
|
39301
39542
|
outputsTemplateSource = Object.create(null);
|
|
39302
39543
|
resolvedExportNames = [];
|
|
39544
|
+
carriedExportAliasRefusal;
|
|
39303
39545
|
skippedOutputs;
|
|
39304
39546
|
constructPathTemplate;
|
|
39305
39547
|
outputsSourceUsable = true;
|
|
@@ -39583,5 +39825,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
|
|
|
39583
39825
|
DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
|
|
39584
39826
|
|
|
39585
39827
|
//#endregion
|
|
39586
|
-
export { dropFailedHint as $, maskedLeafCoordinatesOf as $a, refuseMalformedResourcePropertiesForOrphan as $i, getCurrentResourceSecrets as $n, importableOutputKeys as $o, parameterInputsFor as $r, resolveSkipPrefix as $s, secretNamePrintingBag as $t, gray as A, toFiniteNumber as Aa, clearBucketRegionCache as Ac, malformedResourcesWarning as Ai, findDestructiveChanges as An, provenPublicValue as Ao, callerEnvCredentials as Ar, finchSecretArgvRefusal as As, removeProtectionTypeList as At, NESTED_PENDING_PARENT_REASON as B, requireConfigString as Ba, refuseMalformedOrphansForOrphan as Bi, planTagDiff as Bn, WHOLE_DYNAMIC_REFERENCE_PATTERN as Bo, parameterTypeMayLoseSecretIdentity as Br, warnFinchArgvExposure as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, isStatefulRecreateTargetForReplace as Ca, nullPrototypeRecord as Cc, malformedOrphansRefusalMessage as Ci, collectPublishedOutputNames as Cn, isUncertifiedBaselineMaskPosition as Co, assertFlagRoleArn as Cr, buildDenyExternalAccessPolicy as Cs, INDEX_SETTLE_POLL_INTERVAL_MS as Ct, createReadOnlyAttributeHealerFactory as D, coerceWarmThroughput as Da, displayAssemblyPath as Dc, malformedRenderedContainersWarning as Di, DEFAULT_RESOURCE_WARN_AFTER_MS as Dn, recoverMaskedOutput as Do, sendableAssumeRoleCommand as Dr, describeDockerExecFailure as Ds, S3_AUTO_DELETE_OBJECTS_TAG as Dt, formatResourceLine as E, WARM_THROUGHPUT_MEMBERS as Ea, describeFileReadFailure as Ec, malformedOutputsWarning as Ei, DEFAULT_RESOURCE_TIMEOUT_MS as En, recordNestedStackParameterExpressions as Eo, isIamRoleArn as Er, describeDockerCapturedOutput as Es, ECR_AUTO_DELETE_IMAGES_TAG as Et, namesAnyDeclaredParameter as F, configStringRefusal as Fa, refuseMalformedNestedChildOutputs as Fi, reserveStackCreateToken as Fn, wholeStringLeavesOf as Fo, s3BucketDualStackDomainName as Fr, partitionSensitiveEnv as Fs, isReplacementOrphan as Ft, nestedChildStackName as G, canonicalLambdaFunctionName as Ga, refuseMalformedResourceEntriesForDeploy as Gi, definedAttributes as Gn, rebuildClientForBucketRegion as Go, isNamelessDynamicReferenceError as Gr, Synthesizer as Gs, redactedDeleteAddressFields as Gt, displacedPhysicalIdShown as H, templateResourceTypes as Ha, refuseMalformedOutputsForDestroy as Hi, refuseMalformedDesiredTags as Hn, LockManager as Ho, isImpossibleEmptyStoredAttribute as Hr, stripControlChars as Hs, inheritProducerRegions as Ht, reachableDivergentParameters as I, readConfigString as Ia, refuseMalformedOrphanRecords as Ii, withCreateTokenLedger as In, STATE_SOURCED_BASELINE_RULES as Io, s3BucketRegionalDomainName as Ir, redactDockerArgvValues as Is, planFailedOps as It, revertedNestedRowIds as J, DagBuilder as Ja, refuseMalformedResourceEntriesForImportSave as Ji, ProviderRegistry as Jn, describeRegionValueKind as Jo, cfnRefValueFromPhysicalId as Jr, getLegacyStateBucketName as Js, updatePartialReason as Jt, recordDisplacedSkips as K, lambdaFunctionNameForMask as Ka, refuseMalformedResourceEntriesForDestroy as Ki, stringifyIfAssigned as Kn, splitImportedOps as Ko, keepsSecretReferenceToken as Kr, synthesisStatusMessage as Ks, redactedDeleteAddressSkip as Kt, resourcesNamingDeclaredParameter as L, replayWarn as La, refuseMalformedOrphanRecordsForDestroy as Li, acquireIdempotencyToken as Ln, STATE_SOURCED_CROSS_GENERATION_RULES as Lo, s3BucketWebsiteUrl as Lr, redactedDockerCause as Ls, planRollback as Lt, red as M, coerceCfnInteger as Ma, malformedStateRefusalMessage as Mi, RollbackInlinePolicyWriters as Mn, recordMaskOnlyValuesIn as Mo, isSettledInstanceState as Mr, getDockerCmd as Ms, recordAfterRollbackUpdate as Mt, yellow as N, configBooleanRefusal as Na, previewableOrphanRecords as Ni, earliestDefined as Nn, recordNoEchoAttributeValues as No, s3BucketArn as Nr, isDockerClientEnvKey as Ns, demoteSupersededOrphans as Nt, bold as O, isWarmThroughputDecrease as Oa, renderAssemblyPathEscape as Oc, malformedResourceEntriesWarning as Oi, maskingRetryLogger as On, identityKeyFor as Oo, AWS_CREDENTIAL_ENV_KEYS as Or, describeDockerFailure as Os, hasCdkAutoDeleteTag as Ot, computeParameterTaint as P, configIntegerRefusal as Pa, refuseDivergentRecordRegionForDestroy as Pi, ledgerForStack as Pn, recordProvenPublicExpression as Po, s3BucketDomainName as Pr, isMalformedEnvKey as Ps, isJournaledOrphan as Pt, deleteJournaledOrphans as Q, maskWholeValue as Qa, refuseMalformedResourcePropertiesForExport as Qi, isCustomResourceType as Qn, hasUnverifiableParameterRefusal as Qo, withSharedDrainBudget as Qr, resolveCaptureObservedState as Qs, orphanRecordsPrintingBag as Qt, makeSiblingClaimReader as R, requireConfigArray as Ra, refuseMalformedOrphans as Ri, DBPROXY_TAGS_WHAT as Rn, STATE_SOURCED_READBACK_RULES as Ro, coerceParameterTypedValue as Rr, runDockerForeground as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, MULTI_REGION_RECREATE_BLOCKED_TYPES as Sa, hasPlainPrototype$1 as Sc, malformedOrphanRowsKeptWarning as Si, collectDeclaredOutputNames as Sn, dynamicReferenceTokens as So, applyRoleArnIfSet as Sr, validateContainerRepoName as Ss, DELETE_INDEX_WAIT_PROCEED_NOTE as St, markRefusedBeforeApplying as T, renderStatefulReason as Ta, absoluteAssemblyPathEscape as Tc, malformedOutputsRefusalMessage as Ti, bindingSkippedOutputs as Tn, inheritNestedStackParameterAssociations as To, explicitRoleArnOrThrow as Tr, resolveDockerContextDirectory as Ts, waitForIndexesSettled as Tt, dropSettledNestedJournals as U, describeTypeWithThrottleRetry as Ua, refuseMalformedResourceAttributesForOrphan as Ui, tagMapAsList as Un, isLockInfoExpired as Uo, carriesDynamicReference as Ur, AssetManifestLoader as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, displacedOpClause as V, prefetchCreateOnlyPropertyPaths as Va, refuseMalformedOutputs as Vi, readTagList as Vn, isSingleDynamicReferenceToken as Vo, getAccountInfo as Vr, escapeRegExp$3 as Vs, getCurrentProducerRegions as Vt, getNestedRevertRun as W, withRetry as Wa, refuseMalformedResourceEntries as Wi, tagPlanWarning as Wn, S3StateBackend as Wo, carriesFetchableDynamicReference as Wr, getDockerImageBySourceHash as Ws, isRedactedRecordedValue as Wt, getCurrentNestedStackContext as X, isMarkedCoordinate as Xa, refuseMalformedResourcePropertiesForDestroy as Xi, isCustomResource as Xn, hasReadableExportSet as Xo, refStateLookupFromResource as Xr, resolveApp as Xs, journaledOrphanPrintingBag as Xt, withNestedRevertRun as Y, TemplateParser as Ya, refuseMalformedResourceEntriesForOrphan as Yi, ccBrokenReason as Yn, exportNamesCarriedFrom as Yo, isStalePlaceholderArnAttribute as Yr, loadCdkJson as Ys, completedReplayEntries as Yt, withNestedStackContext as Z, maskReadbackAtCoordinates as Za, refuseMalformedResourcePropertiesForDrift as Zi, wouldReturnToSdkProvider as Zn, hasReasonlessBaselineRefusal as Zo, parseWebACLArn as Zr, resolveAutoAssetStorage as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, withoutSilentDropProperties as _a, AssemblyReader as _c, malformedLocalOutputsWarning as _i, secretBearingStateKeyWarning as _n, maskSecretsInText as _o, INTRINSIC_KEYS as _r, getBootstrapMarkerKey as _s, beginDeleteWait as _t, findNestedTemplateTreeDefect as a, repairMalformedOrphansForReadOnly as aa, ssmResolvedValueType as ac, UNREADABLE_RESOURCES_MAP_ROW as ai, createPreDeleteFinalSnapshot as an, carryLogOnlyValues as ao, deleteIndeterminateGuards as ar, AssetPublisher as as, replayFailedOperations as at, noEchoParameterNamesOf as b, findReplacedReadersOfRecreateTargets as ba, defineOwnKey as bc, malformedOrphanRecordsRefusalMessage as bi, isWholeDynamicReferenceValue as bn, scrubResourceRecord as bo, producerRegionsFromState as br, readBootstrapMarkerBody as bs, resolveDynamoDbDeleteBudgetClock as bt, renderNestedTemplateTreeDefect as c, repairMalformedResourcePropertiesForReadOnly as ca, MIGRATE_TMP_PREFIX as cc, displayLogicalId as ci, refusesFinalSnapshot as cn, literalSplitDelimitersOf as co, isWaitAbandonedError as cr, WorkGraph as cs, destroyStackRecordsView as ct, conditionInputsFrom as d, unreadableOrphanRecords as da, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as dc, hasReadableResources as di, DeploymentEventsStore as dn, recordLogOnlyParameterValue as do, ec2InstanceProtectionSite as dr, loadPublishableAssetManifest as ds, PROTECTION_PROPERTY_BY_TYPE as dt, refuseMalformedResourcesForDeploy as ea, resolveStateBucketWithDefault as ec, passedParameterClassesOf as ei, stateSecretNameNeedles as en, noEchoLeavesOf as eo, withPrintingSecrets as er, importableOutputs as es, isHandledOrphan as et, parentSuppliedValues as f, unreadableResourceEntries as fa, decodeListingKey as fc, isReadableOrphanRecord as fi, extractDeploymentEventError as fn, recordLogOnlyValue as fo, isTerminationProtectionPropagationError as fr, rewriteTemplateAssetReferences as fs, isProtectionValueActive as ft, mergeNoChangeOutputs as g, unwrittenCreateOnlyReplacement as ga, derivePartitionAndUrlSuffix as gc, malformedExportSourceWarning as gi, secretBearing as gn, maskSecretsInError as go, DiffCalculator as gr, ensureAssetStorage as gs, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as gt, keptWholeReasonText as h, findSilentDropProperties as ha, canonicalizeRegion as hc, malformedExportNamesWarning as hi, exportAliasCollisionScrubWarning as hn, errorCauseChain as ho, reEnableInstanceApiTermination as hr, assertAssetBucketRegion as hs, DynamoDBGlobalTableProvider as ht, childTemplateLoader as i, repairMalformedOrphanRecordsForReadOnly as ia, warnDeprecatedNoPrefixCliFlag as ic, UNREADABLE_ORPHANS_CONTAINER_ROW as ii, ccRoutedFinalSnapshotError as in, liveMatchesUnresolvedTokenFrame as io, UNSPECIFIED_SKIP_REASON as ir, shouldRetainResource as is, sameJournaledOrphans as it, green as j, coerceCfnBoolean as ja, resolveBucketRegion as jc, malformedScrubResourceEntriesRefusalMessage as ji, formatDestructiveChange as jn, recordMaskOnlyValue as jo, envCredentialsAreAssumedRole as jr, formatDockerLoginError as js, orphanDeleteNeedsIdentity as jt, cyan as k, toCfnInteger as ka, resolveAssemblyPath as kc, malformedResourcePropertiesWarning as ki, constructPathOf as kn, carriesSecretMask as ko, applyCallerIdentityCredentials as kr, dockerSpawnEnvWithSensitive as ks, isTruthyCfnBoolean as kt, templateIdentity as l, repairMalformedResourcesForReadOnly as la, findLargeInlineResources as lc, hasReadableOrphans as li, unsupportedFinalSnapshotError as ln, logOnlyValueCount as lo, markWaitAbandoned as lr, buildAssetRedirectMap as ls, getStackRecords as lt, isSecretBearingReferenceString as m, findActionableSilentDrops as ma, PARTITION_TABLE as mc, malformedDriftResourcePropertiesWarning as mi, displayTextOrWithheld as mn, createSecretMasker as mo, reDisableInstanceApiTermination as mr, BOOTSTRAP_MARKER_PREFIX as ms, readProtection as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcesForExport as na, resolveUseCdkBootstrapAssets as nc, STATE_REGION_DIVERGED as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, passedNoEchoParametersOf as no, slowCcOperationTimeoutMs as nr, orphansAfterRollback as ns, loadJournaledOrphans as nt, isAbsoluteAssetPath as o, repairMalformedOutputsForReadOnly as oa, CFN_TEMPLATE_BODY_LIMIT as oc, accountArgs as oi, effectiveDeletionPolicy as on, createUnionSecretMasker as oo, deleteSkipReason as or, isSensitiveAttributeName as os, replayRollback as ot, readRecordedConditionVerdicts as p, withheldAccountClause as pa, expectedOwnerParam as pc, isReadableResourceEntry as pi, WITHHELD_NAME_DISPLAY as pn, shareLogOnlyValues as po, observeThenDisableInstanceApiTermination as pr, AssetModeResolver as ps, perType as pt, revertNestedChildFromJournal as q, sameLambdaFunctionAddress as qa, refuseMalformedResourceEntriesForImport as qi, CC_BROKEN_REASON as qn, acceptedCreateOnlyDropsOf as qo, AWS_NO_VALUE as qr, getDefaultStateBucketName as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedState as ra, stateBucketExistenceConfirmed as rc, STATE_RESOURCES_MALFORMED as ri, buildFinalSnapshotIdentifier as rn, readsNoEchoSource as ro, unchangedBehindSecretReference as rr, orphansCarriedFrom as rs, makeForeignHolderScan as rt, listNestedTemplateRows as s, repairMalformedResourceEntriesForReadOnly as sa, CFN_TEMPLATE_URL_LIMIT as sc, deployRefusesOrphanRowsReason as si, isFinalSnapshotError as sn, hasMaskableValues as so, withIndeterminateGuard as sr, stringifyValue as ss, awaitInFlightSibling as st, DeployEngine as t, refuseMalformedResourcesForDestroy as ta, resolveStateBucketWithDefaultAndSource as tc, JSON_LISTING_HOLE_VALUE as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, noEchoOutputsComparison as to, CloudControlProvider as tr, isReadableBag as ts, journaledOrphanLines as tt, conditionFingerprint as u, unpreviewableOrphanRecords as ua, uploadCfnTemplate as uc, hasReadableOutputs as ui, DeploymentEventsReader as un, printingCorpusOf as uo, disableInstanceApiTermination as ur, createAssetRedirectResolver as us, withStackRecords as ut, noEchoAttributeNamesOf as v, NO_CC_HANDLERS_REASON as va, StageLoadError as vc, malformedLocalResourceEntriesWarning as vi, secretSafeKeyDisplay as vn, markSameGenerationBag as vo, IntrinsicFunctionResolver as vr, isCrossRegionRedirect as vs, compensateRemovedDeletionProtection as vt, getPriorAttempts as w, isStatefulRecreateTargetSync as wa, ownValue as wc, malformedOrphansWarning as wi, isExportAliasCollision as wn, pathCrossesDottedKey as wo, assertSendableRoleArn as wr, buildDockerImage as ws, deleteTableWithIndexBusyRetry as wt, withResourceDeadline as x, shownType as xa, hasOwnKey as xc, malformedOrphanRecordsWarning as xi, noEchoParameterValueSeed as xn, DYNAMIC_REFERENCE_TOKEN_SCAN as xo, regionLessSecretName as xr, validateAssetBucketName as xs, resolveDynamoDbDeleteBudgetMs as xt, noEchoComparisonForTemplate as y, hasNoCloudControlHandlers as ya, processStackMessages as yc, malformedLocalResourcesWarning as yi, exportNameSecretExposure as yn, redactSecretsForState as yo, classifyReplaySecretRegion as yr, parseBootstrapMarker as ys, deleteBudgetKey as yt, planOrphanAdoption as z, requireConfigObject as za, refuseMalformedOrphansForDestroy as zi, DBPROXY_TAG_OPTIONS as zn, TEMPLATE_SOURCED_RULES as zo, isUnboundTemplateParameter as zr, runDockerStreaming as zs, resolveReplacementOldType as zt };
|
|
39587
|
-
//# sourceMappingURL=deploy-engine-
|
|
39828
|
+
export { dropFailedHint as $, isMarkedCoordinate as $a, refuseMalformedResourcePropertiesForDestroy as $i, wouldReturnToSdkProvider as $n, hasReadableExportSet as $o, refStateLookupFromResource as $r, resolveApp as $s, secretNamePrintingBag as $t, gray as A, coerceWarmThroughput as Aa, displayAssemblyPath as Ac, malformedRenderedContainersWarning as Ai, maskingRetryLogger as An, recordNestedStackParameterExpressions as Ao, sendableAssumeRoleCommand as Ar, describeDockerExecFailure as As, removeProtectionTypeList as At, NESTED_PENDING_PARENT_REASON as B, replayWarn as Ba, refuseMalformedOrphanRecordsForDestroy as Bi, DBPROXY_TAGS_WHAT as Bn, STATE_SOURCED_CROSS_GENERATION_RULES as Bo, s3BucketWebsiteUrl as Br, redactedDockerCause as Bs, findNestedStackTypeChanges as Bt, recordedProtectionNote as C, findReplacedReadersOfRecreateTargets as Ca, defineOwnKey as Cc, malformedOrphanRecordsRefusalMessage as Ci, noEchoParameterValueSeed as Cn, scrubResourceRecord as Co, producerRegionsFromState as Cr, readBootstrapMarkerBody as Cs, INDEX_SETTLE_POLL_INTERVAL_MS as Ct, createReadOnlyAttributeHealerFactory as D, isStatefulRecreateTargetSync as Da, ownValue as Dc, malformedOrphansWarning as Di, bindingSkippedOutputs as Dn, pathCrossesDottedKey as Do, assertSendableRoleArn as Dr, buildDockerImage as Ds, S3_AUTO_DELETE_OBJECTS_TAG as Dt, formatResourceLine as E, isStatefulRecreateTargetForReplace as Ea, nullPrototypeRecord as Ec, malformedOrphansRefusalMessage as Ei, isExportAliasCollision as En, isUncertifiedBaselineMaskPosition as Eo, assertFlagRoleArn as Er, buildDenyExternalAccessPolicy as Es, ECR_AUTO_DELETE_IMAGES_TAG as Et, namesAnyDeclaredParameter as F, coerceCfnInteger as Fa, malformedStateRefusalMessage as Fi, earliestDefined as Fn, recordMaskOnlyValuesIn as Fo, isSettledInstanceState as Fr, getDockerCmd as Fs, isReplacementOrphan as Ft, nestedChildStackName as G, templateResourceTypes as Ga, refuseMalformedOutputsForDestroy as Gi, tagMapAsList as Gn, LockManager as Go, isImpossibleEmptyStoredAttribute as Gr, stripControlChars as Gs, redactedDeleteAddressFields as Gt, displacedPhysicalIdShown as H, requireConfigObject as Ha, refuseMalformedOrphansForDestroy as Hi, planTagDiff as Hn, TEMPLATE_SOURCED_RULES as Ho, isUnboundTemplateParameter as Hr, runDockerStreaming as Hs, inheritProducerRegions as Ht, reachableDivergentParameters as I, configBooleanRefusal as Ia, previewableOrphanRecords as Ii, ledgerForStack as In, recordNoEchoAttributeValues as Io, s3BucketArn as Ir, isDockerClientEnvKey as Is, planFailedOps as It, revertedNestedRowIds as J, canonicalLambdaFunctionName as Ja, refuseMalformedResourceEntriesForDeploy as Ji, stringifyIfAssigned as Jn, rebuildClientForBucketRegion as Jo, isNamelessDynamicReferenceError as Jr, Synthesizer as Js, updatePartialReason as Jt, recordDisplacedSkips as K, describeTypeWithThrottleRetry as Ka, refuseMalformedResourceAttributesForOrphan as Ki, tagPlanWarning as Kn, isLockInfoExpired as Ko, carriesDynamicReference as Kr, AssetManifestLoader as Ks, redactedDeleteAddressSkip as Kt, resourcesNamingDeclaredParameter as L, configIntegerRefusal as La, refuseDivergentRecordRegionForDestroy as Li, reserveStackCreateToken as Ln, recordProvenPublicExpression as Lo, s3BucketDomainName as Lr, isMalformedEnvKey as Ls, planRollback as Lt, red as M, toCfnInteger as Ma, resolveAssemblyPath as Mc, malformedResourcePropertiesWarning as Mi, findDestructiveChanges as Mn, carriesSecretMask as Mo, applyCallerIdentityCredentials as Mr, dockerSpawnEnvWithSensitive as Ms, recordAfterRollbackUpdate as Mt, yellow as N, toFiniteNumber as Na, clearBucketRegionCache as Nc, malformedResourcesWarning as Ni, formatDestructiveChange as Nn, provenPublicValue as No, callerEnvCredentials as Nr, finchSecretArgvRefusal as Ns, demoteSupersededOrphans as Nt, bold as O, renderStatefulReason as Oa, absoluteAssemblyPathEscape as Oc, malformedOutputsRefusalMessage as Oi, DEFAULT_RESOURCE_TIMEOUT_MS as On, identityKeyFor as Oo, explicitRoleArnOrThrow as Or, resolveDockerContextDirectory as Os, hasCdkAutoDeleteTag as Ot, computeParameterTaint as P, coerceCfnBoolean as Pa, resolveBucketRegion as Pc, malformedScrubResourceEntriesRefusalMessage as Pi, RollbackInlinePolicyWriters as Pn, recordMaskOnlyValue as Po, envCredentialsAreAssumedRole as Pr, formatDockerLoginError as Ps, isJournaledOrphan as Pt, deleteJournaledOrphans as Q, TemplateParser as Qa, refuseMalformedResourceEntriesForOrphan as Qi, isCustomResource as Qn, exportNamesCarriedFrom as Qo, isStalePlaceholderArnAttribute as Qr, loadCdkJson as Qs, orphanRecordsPrintingBag as Qt, makeSiblingClaimReader as R, configStringRefusal as Ra, refuseMalformedNestedChildOutputs as Ri, withCreateTokenLedger as Rn, wholeStringLeavesOf as Ro, s3BucketDualStackDomainName as Rr, partitionSensitiveEnv as Rs, replacementNeverSwapped as Rt, recordedProtectionEvidence as S, hasNoCloudControlHandlers as Sa, processStackMessages as Sc, malformedLocalResourcesWarning as Si, isWholeDynamicReferenceValue as Sn, redactSecretsForState as So, classifyReplaySecretRegion as Sr, parseBootstrapMarker as Ss, DELETE_INDEX_WAIT_PROCEED_NOTE as St, markRefusedBeforeApplying as T, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ta, hasPlainPrototype$1 as Tc, malformedOrphanRowsKeptWarning as Ti, collectPublishedOutputNames as Tn, dynamicReferenceTokens as To, applyRoleArnIfSet as Tr, validateContainerRepoName as Ts, waitForIndexesSettled as Tt, dropSettledNestedJournals as U, requireConfigString as Ua, refuseMalformedOrphansForOrphan as Ui, readTagList as Un, WHOLE_DYNAMIC_REFERENCE_PATTERN as Uo, parameterTypeMayLoseSecretIdentity as Ur, warnFinchArgvExposure as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, displacedOpClause as V, requireConfigArray as Va, refuseMalformedOrphans as Vi, DBPROXY_TAG_OPTIONS as Vn, STATE_SOURCED_READBACK_RULES as Vo, coerceParameterTypedValue as Vr, runDockerForeground as Vs, getCurrentProducerRegions as Vt, getNestedRevertRun as W, prefetchCreateOnlyPropertyPaths as Wa, refuseMalformedOutputs as Wi, refuseMalformedDesiredTags as Wn, isSingleDynamicReferenceToken as Wo, getAccountInfo as Wr, escapeRegExp$3 as Ws, isRedactedRecordedValue as Wt, getCurrentNestedStackContext as X, sameLambdaFunctionAddress as Xa, refuseMalformedResourceEntriesForImport as Xi, ProviderRegistry as Xn, acceptedCreateOnlyDropsOf as Xo, AWS_NO_VALUE as Xr, getDefaultStateBucketName as Xs, journaledOrphanPrintingBag as Xt, withNestedRevertRun as Y, lambdaFunctionNameForMask as Ya, refuseMalformedResourceEntriesForDestroy as Yi, CC_BROKEN_REASON as Yn, splitImportedOps as Yo, keepsSecretReferenceToken as Yr, synthesisStatusMessage as Ys, completedReplayEntries as Yt, withNestedStackContext as Z, DagBuilder as Za, refuseMalformedResourceEntriesForImportSave as Zi, ccBrokenReason as Zn, describeRegionValueKind as Zo, cfnRefValueFromPhysicalId as Zr, getLegacyStateBucketName as Zs, maskEventTextWithBoundBags as Zt, makeCanonicalizePropertiesFn as _, findActionableSilentDrops as _a, PARTITION_TABLE as _c, malformedDriftResourcePropertiesWarning as _i, secretBearingStateKeyWarning as _n, createSecretMasker as _o, reEnableInstanceApiTermination as _r, BOOTSTRAP_MARKER_PREFIX as _s, beginDeleteWait as _t, findNestedTemplateTreeDefect as a, refuseMalformedResourcesForExport as aa, resolveUseCdkBootstrapAssets as ac, STATE_REGION_DIVERGED as ai, createPreDeleteFinalSnapshot as an, passedNoEchoParametersOf as ao, unchangedBehindSecretReference as ar, orphansAfterRollback as as, replayFailedOperations as at, noEchoParameterNamesOf as b, withoutSilentDropProperties as ba, AssemblyReader as bc, malformedLocalOutputsWarning as bi, exportNameNoEchoParameters as bn, maskSecretsInText as bo, IntrinsicFunctionResolver as br, getBootstrapMarkerKey as bs, resolveDynamoDbDeleteBudgetClock as bt, renderNestedTemplateTreeDefect as c, repairMalformedOrphansForReadOnly as ca, ssmResolvedValueType as cc, UNREADABLE_RESOURCES_MAP_ROW as ci, refusesFinalSnapshot as cn, carryLogOnlyValues as co, deleteSkipReason as cr, AssetPublisher as cs, destroyStackRecordsView as ct, conditionInputsFrom as d, repairMalformedResourcePropertiesForReadOnly as da, MIGRATE_TMP_PREFIX as dc, displayLogicalId as di, DeploymentEventsStore as dn, literalSplitDelimitersOf as do, markWaitAbandoned as dr, WorkGraph as ds, PROTECTION_PROPERTY_BY_TYPE as dt, refuseMalformedResourcePropertiesForDrift as ea, resolveAutoAssetStorage as ec, parseWebACLArn as ei, stateSecretNameNeedles as en, maskReadbackAtCoordinates as eo, isCustomResourceType as er, hasReasonlessBaselineRefusal as es, isHandledOrphan as et, parentSuppliedValues as f, repairMalformedResourcesForReadOnly as fa, findLargeInlineResources as fc, hasReadableOrphans as fi, extractDeploymentEventError as fn, logOnlyValueCount as fo, disableInstanceApiTermination as fr, buildAssetRedirectMap as fs, isProtectionValueActive as ft, mergeNoChangeOutputs as g, withheldAccountClause as ga, expectedOwnerParam as gc, isReadableResourceEntry as gi, secretBearing as gn, shareLogOnlyValues as go, reDisableInstanceApiTermination as gr, AssetModeResolver as gs, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as gt, keptWholeReasonText as h, unreadableResourceEntries as ha, decodeListingKey as hc, isReadableOrphanRecord as hi, exportAliasCollisionScrubWarning as hn, recordLogOnlyValue as ho, observeThenDisableInstanceApiTermination as hr, rewriteTemplateAssetReferences as hs, DynamoDBGlobalTableProvider as ht, childTemplateLoader as i, refuseMalformedResourcesForDestroy as ia, resolveStateBucketWithDefaultAndSource as ic, JSON_LISTING_HOLE_VALUE as ii, ccRoutedFinalSnapshotError as in, noEchoOutputsComparison as io, slowCcOperationTimeoutMs as ir, isReadableBag as is, sameJournaledOrphans as it, green as j, isWarmThroughputDecrease as ja, renderAssemblyPathEscape as jc, malformedResourceEntriesWarning as ji, constructPathOf as jn, recoverMaskedOutput as jo, AWS_CREDENTIAL_ENV_KEYS as jr, describeDockerFailure as js, orphanDeleteNeedsIdentity as jt, cyan as k, WARM_THROUGHPUT_MEMBERS as ka, describeFileReadFailure as kc, malformedOutputsWarning as ki, DEFAULT_RESOURCE_WARN_AFTER_MS as kn, inheritNestedStackParameterAssociations as ko, isIamRoleArn as kr, describeDockerCapturedOutput as ks, isTruthyCfnBoolean as kt, templateIdentity as l, repairMalformedOutputsForReadOnly as la, CFN_TEMPLATE_BODY_LIMIT as lc, accountArgs as li, unsupportedFinalSnapshotError as ln, createUnionSecretMasker as lo, withIndeterminateGuard as lr, isSensitiveAttributeName as ls, getStackRecords as lt, isSecretBearingReferenceString as m, unreadableOrphanRecords as ma, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as mc, hasReadableResources as mi, displayTextOrWithheld as mn, recordLogOnlyParameterValue as mo, isTerminationProtectionPropagationError as mr, loadPublishableAssetManifest as ms, readProtection as mt, IMPLICIT_DELETE_DEPENDENCIES as n, refuseMalformedResourcePropertiesForOrphan as na, resolveSkipPrefix as nc, parameterInputsFor as ni, PRE_DELETE_SNAPSHOT_TYPES as nn, maskedLeafCoordinatesOf as no, withPrintingSecrets as nr, importableOutputKeys as ns, loadJournaledOrphans as nt, isAbsoluteAssetPath as o, refuseMalformedState as oa, stateBucketExistenceConfirmed as oc, STATE_RESOURCES_MALFORMED as oi, effectiveDeletionPolicy as on, readsNoEchoSource as oo, UNSPECIFIED_SKIP_REASON as or, orphansCarriedFrom as os, replayRollback as ot, readRecordedConditionVerdicts as p, unpreviewableOrphanRecords as pa, uploadCfnTemplate as pc, hasReadableOutputs as pi, WITHHELD_NAME_DISPLAY as pn, printingCorpusOf as po, ec2InstanceProtectionSite as pr, createAssetRedirectResolver as ps, perType as pt, revertNestedChildFromJournal as q, withRetry as qa, refuseMalformedResourceEntries as qi, definedAttributes as qn, S3StateBackend as qo, carriesFetchableDynamicReference as qr, getDockerImageBySourceHash as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, refuseMalformedResourcesForDeploy as ra, resolveStateBucketWithDefault as rc, passedParameterClassesOf as ri, buildFinalSnapshotIdentifier as rn, noEchoLeavesOf as ro, CloudControlProvider as rr, importableOutputs as rs, makeForeignHolderScan as rt, listNestedTemplateRows as s, repairMalformedOrphanRecordsForReadOnly as sa, warnDeprecatedNoPrefixCliFlag as sc, UNREADABLE_ORPHANS_CONTAINER_ROW as si, isFinalSnapshotError as sn, liveMatchesUnresolvedTokenFrame as so, deleteIndeterminateGuards as sr, shouldRetainResource as ss, awaitInFlightSibling as st, DeployEngine as t, refuseMalformedResourcePropertiesForExport as ta, resolveCaptureObservedState as tc, withSharedDrainBudget as ti, ATOMIC_FINAL_SNAPSHOT_TYPES as tn, maskWholeValue as to, getCurrentResourceSecrets as tr, hasUnverifiableParameterRefusal as ts, journaledOrphanLines as tt, conditionFingerprint as u, repairMalformedResourceEntriesForReadOnly as ua, CFN_TEMPLATE_URL_LIMIT as uc, deployRefusesOrphanRowsReason as ui, DeploymentEventsReader as un, hasMaskableValues as uo, isWaitAbandonedError as ur, stringifyValue as us, withStackRecords as ut, noEchoAttributeNamesOf as v, findSilentDropProperties as va, canonicalizeRegion as vc, malformedExportNamesWarning as vi, secretSafeKeyDisplay as vn, errorCauseChain as vo, DiffCalculator as vr, assertAssetBucketRegion as vs, compensateRemovedDeletionProtection as vt, getPriorAttempts as w, shownType as wa, hasOwnKey as wc, malformedOrphanRecordsWarning as wi, collectDeclaredOutputNames as wn, DYNAMIC_REFERENCE_TOKEN_SCAN as wo, regionLessSecretName as wr, validateAssetBucketName as ws, deleteTableWithIndexBusyRetry as wt, withResourceDeadline as x, NO_CC_HANDLERS_REASON as xa, StageLoadError as xc, malformedLocalResourceEntriesWarning as xi, exportNameSecretExposure as xn, markSameGenerationBag as xo, poisonRenderedSpellingsCollidingIn as xr, isCrossRegionRedirect as xs, resolveDynamoDbDeleteBudgetMs as xt, noEchoComparisonForTemplate as y, unwrittenCreateOnlyReplacement as ya, derivePartitionAndUrlSuffix as yc, malformedExportSourceWarning as yi, carriedExportAliasExposure as yn, maskSecretsInError as yo, INTRINSIC_KEYS as yr, ensureAssetStorage as ys, deleteBudgetKey as yt, planOrphanAdoption as z, readConfigString as za, refuseMalformedOrphanRecords as zi, acquireIdempotencyToken as zn, STATE_SOURCED_BASELINE_RULES as zo, s3BucketRegionalDomainName as zr, redactDockerArgvValues as zs, resolveReplacementOldType as zt };
|
|
39829
|
+
//# sourceMappingURL=deploy-engine-DYAAwd0u.js.map
|