@go-to-k/cdkd 0.301.5 → 0.301.7
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-DHB498Xq.js → asg-provider-C14GB-Hy.js} +3 -3
- package/dist/{asg-provider-DHB498Xq.js.map → asg-provider-C14GB-Hy.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-HAvm8vSI.js → deploy-engine-zLKsm0IM.js} +299 -110
- package/dist/deploy-engine-zLKsm0IM.js.map +1 -0
- package/dist/{iam-policy-targets-BkeM7IXi.js → iam-policy-targets-LyArt3ew.js} +2 -2
- package/dist/{iam-policy-targets-BkeM7IXi.js.map → iam-policy-targets-LyArt3ew.js.map} +1 -1
- package/dist/{iam-role-provider-CTpDWSUG.js → iam-role-provider-BnStRZFM.js} +3 -3
- package/dist/{iam-role-provider-CTpDWSUG.js.map → iam-role-provider-BnStRZFM.js.map} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/{neptune-provider-CXhoiT-P.js → neptune-provider-BlpYIZQP.js} +3 -3
- package/dist/{neptune-provider-CXhoiT-P.js.map → neptune-provider-BlpYIZQP.js.map} +1 -1
- package/dist/{program-DmPDfDhE.js → program-CiTz5-_D.js} +87 -26
- package/dist/program-CiTz5-_D.js.map +1 -0
- package/dist/{provider-classes-DPwEHVDJ.js → provider-classes-BWo7K01p.js} +127 -57
- package/dist/provider-classes-BWo7K01p.js.map +1 -0
- package/dist/{rds-provider-CxB94DZy.js → rds-provider-DagnUCn-.js} +3 -3
- package/dist/{rds-provider-CxB94DZy.js.map → rds-provider-DagnUCn-.js.map} +1 -1
- package/dist/{version-2jeKJQlt.js → version-MUc6NbW0.js} +2 -2
- package/dist/{version-2jeKJQlt.js.map → version-MUc6NbW0.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-HAvm8vSI.js.map +0 -1
- package/dist/program-DmPDfDhE.js.map +0 -1
- package/dist/provider-classes-DPwEHVDJ.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as getAwsClients, s as __exportAll } from "./aws-clients-B_CEQGE1.js";
|
|
2
2
|
import { A as UNRENDERABLE, B as safeMsg, C as looksLikeCdkdGeneratedName, D as SAFE_MSG_ALTERED_CHAR, E as withoutGeneratedFallbackName, F as displaySafe, H as terminalSafe, I as displayStackName, L as isPasteableIdent, N as displayAwsMessage, O as SECRET_REF_MAX_CODE_POINTS, P as displayIdent, S as getCurrentStackName, T as withStackName, U as truncateCodePoints, a as getLogger, b as generateResourceNameWithFallback, d as installLogLineMaskerSource, f as getLiveRenderer, g as applyDefaultNameForFallback, j as asIsMessage, 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 plainIdentOr } from "./aws-failure-text-BEQfs6za.js";
|
|
3
|
-
import { $ as protectedReplacementAdvice, $t as ambientCredentialConfig, A as isQuotableImportValue, An as SHELL_ACTIVE, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bn as shellBoundedDisplay, Bt as formatLockOperation, Cn as StateError, Ct as RETRY_AUXILIARY_OWNER, Dn as normalizeAwsError, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, Ft as UNREPRODUCIBLE_LOCK_CLAUSE, G as runDeleteAttempt, Gn as isUpdateUnsupportedError, Gt as DEFAULT_STATE_PREFIX, H as observeThenDisableProtection, Hn as withheldTargetClause, Ht as recoveryCommandFlags, In as pasteableCommand, It as buildForceUnlockCommand, J as DELETION_PROTECTION_DOC_POINTER, Jn as
|
|
3
|
+
import { $ as protectedReplacementAdvice, $n as markReplayMayCollide, $t as ambientCredentialConfig, A as isQuotableImportValue, An as SHELL_ACTIVE, At as isAuxiliaryMarkOf, B as isTerminalDeleteFailure, Bn as shellBoundedDisplay, Bt as formatLockOperation, Cn as StateError, Ct as RETRY_AUXILIARY_OWNER, Dn as normalizeAwsError, Dt as createdResourceIdentityBeforeFailure, E as assertRegionMatch, Et as createdBeforeFailure, F as resolveExplicitPhysicalId, Fn as isInertUnquoted, Ft as UNREPRODUCIBLE_LOCK_CLAUSE, G as runDeleteAttempt, Gn as isUpdateUnsupportedError, Gt as DEFAULT_STATE_PREFIX, H as observeThenDisableProtection, Hn as withheldTargetClause, Ht as recoveryCommandFlags, In as pasteableCommand, It as buildForceUnlockCommand, J as DELETION_PROTECTION_DOC_POINTER, Jn as isNameCollisionErrorFrom, Kn as hasReplayMayCollide, Kt as injectiveKey, L as ProtectionFlipRegistry, Ln as physicalIdShownBesideCommand, M as quotedRemedyLogicalId, Mn as UNSHOWABLE_VALUE, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as commandHole, Ot as hasCreatedBeforeFailure, Pt as replayMadeAnotherResource, Q as pasteableAwsCommand, Qt as ambientClientDefaults, R as compensateProtectionFlip, Rn as plainOrDescribed, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, Ut as sanitizeRecoveryValue, Vn as shellQuote, Vt as formatLockOwner, Wt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Xn as isRecreateRetryableError, Yn as isNameCooldownError, Yt as producerRecordKey, Zn as isReplayedNameCollisionFrom, Zt as withPasteableAwsProfile, _t as createMaskedLogSinks, ar as isIamPropagationError, at as startInterruptWatch, bn as ResourceUpdateNotSupportedError, bt as maskDeep, cr as retryClassificationText, ct as canonicalizeRoute53QueryName, d as prepareRemovalForUpdate, dr as isThrottlingError, en as clientDefaultsFor, f as removalWarning, fr as markNonRetryable, ft as logicalIdShown, gt as stateOrphanRecordRemedy, hn as MalformedProducerRecordRefusalError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, in as CdkdError, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as SHELL_ACTIVE_WHY, jt as markAuxiliaryFailure, kt as isAuxiliaryFailure, l as withUnchangedSecretPrincipalLists, ln as DynamicReferenceRegionAmbiguousError, m as withoutInjectedRemovals, mn as MacroExpansionError, mr as wrapMaskedAwsError, mt as resourceTypeShown, nn as AccountIdUnavailableError, nr as isAmbiguousCcHandlerErrorCode, on as CrossAccountSecretRefusalError, or as isRetryableTransientError, ot as ElapsedBudgetRegistry, pn as LockError, pr as markRedactedCause, rn as AssetError, rr as isAmbiguousOutcomeError, sn as DependencyError, sr as isTransientServerError, st as monotonicNowMs, tn as credentialFingerprint, tr as formatRetryClassificationSignals, un as IntrinsicResolutionRefusalError, ur as isMarkedNonRetryable, ut as compositeIdSeparatorRefusal, vn as ProvisioningError, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, wn as SynthesisError, wt as carryCreatedBeforeFailure, xt as maskerOrIdentity, yn as ResourceTimeoutError, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as quotedOrDescribed, zt as formatLockExpiry } from "./iam-policy-targets-LyArt3ew.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-DBXBcg0J.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-MUc6NbW0.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -7748,7 +7748,10 @@ function certifiedExpressionForLeaf(secrets, association, leaf) {
|
|
|
7748
7748
|
function certifiedListForLeaf(secrets, association, bag) {
|
|
7749
7749
|
const certified = bag.map((element) => certifiedExpressionForLeaf(secrets, association, element));
|
|
7750
7750
|
if (certified.every((expression) => expression === void 0)) return void 0;
|
|
7751
|
-
return bag.map((element, i) => certified[i] ??
|
|
7751
|
+
return bag.map((element, i) => certified[i] ?? redactForState(element, {
|
|
7752
|
+
provenance: "value-scan",
|
|
7753
|
+
secrets
|
|
7754
|
+
}));
|
|
7752
7755
|
}
|
|
7753
7756
|
function associationForSource(source, secrets) {
|
|
7754
7757
|
const key = crossStackSourceKey(source);
|
|
@@ -7972,7 +7975,7 @@ const NESTED_STACK_RESOURCE_TYPE$4 = "AWS::CloudFormation::Stack";
|
|
|
7972
7975
|
const nestedStackParameterExpressions = /* @__PURE__ */ new WeakMap();
|
|
7973
7976
|
const renderedParameterSpellings = /* @__PURE__ */ new WeakMap();
|
|
7974
7977
|
const UNFRAMED_SPELLING = Symbol("cdkd.nested-parameter.unframed-spelling");
|
|
7975
|
-
function recordNestedStackParameterExpressions(secrets, resourceType, resolvedProperties, sourceProperties,
|
|
7978
|
+
function recordNestedStackParameterExpressions(secrets, resourceType, resolvedProperties, sourceProperties, provenance = "template-derived") {
|
|
7976
7979
|
if (resourceType !== NESTED_STACK_RESOURCE_TYPE$4) return;
|
|
7977
7980
|
if (secrets.size === 0) return;
|
|
7978
7981
|
if (!isPlainObject$7(resolvedProperties) || !isPlainObject$7(sourceProperties)) return;
|
|
@@ -7981,7 +7984,7 @@ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedPr
|
|
|
7981
7984
|
const resolvedParameters = resolvedProperties["Parameters"];
|
|
7982
7985
|
const sourceParameters = sourceProperties["Parameters"];
|
|
7983
7986
|
if (!isPlainObject$7(resolvedParameters) || !isPlainObject$7(sourceParameters)) return;
|
|
7984
|
-
const positioned =
|
|
7987
|
+
const positioned = redactAtProvenance({ ...resolvedParameters }, secrets, sourceParameters, provenance, true);
|
|
7985
7988
|
let table = nestedStackParameterExpressions.get(secrets);
|
|
7986
7989
|
for (const [name, resolvedValue] of Object.entries(resolvedParameters)) {
|
|
7987
7990
|
const sourceLeaf = sourceParameters[name];
|
|
@@ -8074,7 +8077,10 @@ function recordNestedStackParameterExpressions(secrets, resourceType, resolvedPr
|
|
|
8074
8077
|
if (typeof resolvedValue !== "string") continue;
|
|
8075
8078
|
const spelling = certifiedSpellingOf(name);
|
|
8076
8079
|
if (spelling === void 0) continue;
|
|
8077
|
-
if (
|
|
8080
|
+
if (redactForState(resolvedValue, {
|
|
8081
|
+
provenance: "value-scan",
|
|
8082
|
+
secrets
|
|
8083
|
+
}) !== resolvedValue) continue;
|
|
8078
8084
|
const frame = singleSpanFrame(resolvedValue, spelling);
|
|
8079
8085
|
if (frame === void 0 || resolvedPlaintextOf(secrets, frame.token) !== frame.middle) continue;
|
|
8080
8086
|
if (framesByValue.get(resolvedValue)?.size !== 1) continue;
|
|
@@ -8165,7 +8171,10 @@ function inheritedRenderedSpan(childSecrets, key, text) {
|
|
|
8165
8171
|
if (carriesChildOnlyPlaintext(value, childSecrets, reads.parent)) return void 0;
|
|
8166
8172
|
const spelling = inheritedParameterExpression(reads.parent, name, value);
|
|
8167
8173
|
if (typeof spelling !== "string") return void 0;
|
|
8168
|
-
if (
|
|
8174
|
+
if (redactForState(spelling, {
|
|
8175
|
+
provenance: "value-scan",
|
|
8176
|
+
secrets: childSecrets
|
|
8177
|
+
}) !== spelling) return void 0;
|
|
8169
8178
|
return {
|
|
8170
8179
|
value,
|
|
8171
8180
|
spelling
|
|
@@ -8212,7 +8221,10 @@ function recordInheritedParameterRead(childSecrets, parentSecrets, parameterName
|
|
|
8212
8221
|
parameterReadsFor(childSecrets, parentSecrets)?.names.add(parameterName);
|
|
8213
8222
|
}
|
|
8214
8223
|
function redactInheritedParameterValue(parentSecrets, parameterName, value) {
|
|
8215
|
-
return inheritedParameterExpression(parentSecrets, parameterName, value) ??
|
|
8224
|
+
return inheritedParameterExpression(parentSecrets, parameterName, value) ?? redactForState(value, {
|
|
8225
|
+
provenance: "value-scan",
|
|
8226
|
+
secrets: parentSecrets
|
|
8227
|
+
});
|
|
8216
8228
|
}
|
|
8217
8229
|
function positionByInheritedParameter(bag, source, secrets) {
|
|
8218
8230
|
const keys = Object.keys(source);
|
|
@@ -8224,7 +8236,10 @@ function positionByInheritedParameter(bag, source, secrets) {
|
|
|
8224
8236
|
if (typeof bag !== "string" && !Array.isArray(bag)) return void 0;
|
|
8225
8237
|
if (carriesChildOnlyPlaintext(bag, secrets, reads.parent)) return void 0;
|
|
8226
8238
|
const answer = redactInheritedParameterValue(reads.parent, name, bag);
|
|
8227
|
-
if (!deepEqualJsonValue(
|
|
8239
|
+
if (!deepEqualJsonValue(redactForState(answer, {
|
|
8240
|
+
provenance: "value-scan",
|
|
8241
|
+
secrets
|
|
8242
|
+
}), answer)) return void 0;
|
|
8228
8243
|
return answer;
|
|
8229
8244
|
}
|
|
8230
8245
|
const REREAD_PSEUDO_PARAMETERS = /* @__PURE__ */ new Set([
|
|
@@ -8444,7 +8459,10 @@ function holdsRereadTrigger(node, depth = 0) {
|
|
|
8444
8459
|
}
|
|
8445
8460
|
function rendersReadTo(spelling, parentSecrets, value) {
|
|
8446
8461
|
if (typeof spelling === "string" && typeof value === "string") {
|
|
8447
|
-
if (spelling === value) return
|
|
8462
|
+
if (spelling === value) return redactForState(spelling, {
|
|
8463
|
+
provenance: "value-scan",
|
|
8464
|
+
secrets: parentSecrets
|
|
8465
|
+
}) === spelling;
|
|
8448
8466
|
return rendersLiteralTo(spelling, parentSecrets, value);
|
|
8449
8467
|
}
|
|
8450
8468
|
if (Array.isArray(spelling) && Array.isArray(value) && spelling.length === value.length) return spelling.every((element, i) => rendersReadTo(element, parentSecrets, value[i]));
|
|
@@ -8552,7 +8570,10 @@ function positionByParameterReread(bag, source, secrets) {
|
|
|
8552
8570
|
answer = matching[0].redacted;
|
|
8553
8571
|
}
|
|
8554
8572
|
if (carriesChildOnlyPlaintext(bag, secrets, reads.parent)) return void 0;
|
|
8555
|
-
if (!deepEqualJsonValue(
|
|
8573
|
+
if (!deepEqualJsonValue(redactForState(answer, {
|
|
8574
|
+
provenance: "value-scan",
|
|
8575
|
+
secrets
|
|
8576
|
+
}), answer)) return void 0;
|
|
8556
8577
|
return answer;
|
|
8557
8578
|
}
|
|
8558
8579
|
function carriesChildOnlyPlaintext(value, childSecrets, parentSecrets) {
|
|
@@ -8720,7 +8741,10 @@ function positionByParameterPlaceholders(bag, source, secrets) {
|
|
|
8720
8741
|
if (bag.length < before[0].length + after[0].length) return void 0;
|
|
8721
8742
|
if (!bag.startsWith(before[0]) || !bag.endsWith(after[0])) return void 0;
|
|
8722
8743
|
const middle = bag.slice(before[0].length, bag.length - after[0].length);
|
|
8723
|
-
if (
|
|
8744
|
+
if (redactForState(middle, {
|
|
8745
|
+
provenance: "value-scan",
|
|
8746
|
+
secrets
|
|
8747
|
+
}) !== middle) return void 0;
|
|
8724
8748
|
persisted = before[1] + middle + after[1];
|
|
8725
8749
|
}
|
|
8726
8750
|
const afterStart = bag.length - after[0].length;
|
|
@@ -8734,7 +8758,10 @@ function acceptedPlaceholderRendering(bag, persisted, spans, secrets) {
|
|
|
8734
8758
|
for (const [start, length] of spans) if (at < start + length && end > start && (at < start || end > start + length)) return void 0;
|
|
8735
8759
|
}
|
|
8736
8760
|
}
|
|
8737
|
-
if (
|
|
8761
|
+
if (redactForState(persisted, {
|
|
8762
|
+
provenance: "value-scan",
|
|
8763
|
+
secrets
|
|
8764
|
+
}) !== persisted) return void 0;
|
|
8738
8765
|
return persisted;
|
|
8739
8766
|
}
|
|
8740
8767
|
function positionByRecordedParameterSpans(bag, source, secrets, associations) {
|
|
@@ -8764,7 +8791,10 @@ function positionByRecordedParameterSpans(bag, source, secrets, associations) {
|
|
|
8764
8791
|
const tail = bag.slice(cursor);
|
|
8765
8792
|
gaps.push(tail);
|
|
8766
8793
|
persisted += tail;
|
|
8767
|
-
for (const gap of gaps) if (
|
|
8794
|
+
for (const gap of gaps) if (redactForState(gap, {
|
|
8795
|
+
provenance: "value-scan",
|
|
8796
|
+
secrets
|
|
8797
|
+
}) !== gap) return void 0;
|
|
8768
8798
|
return acceptedPlaceholderRendering(bag, persisted, certified, secrets);
|
|
8769
8799
|
}
|
|
8770
8800
|
|
|
@@ -8874,7 +8904,10 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
|
|
|
8874
8904
|
if (isDynamicReferenceString(source) && typeof bag === "string") {
|
|
8875
8905
|
if (isSingleDynamicReferenceToken(source) && (rules.trustAnyExpression || isKnownSecretExpression(source, secretExpressions))) {
|
|
8876
8906
|
if (!rules.sourceIsSameGeneration && isSingleDynamicReferenceToken(bag)) {
|
|
8877
|
-
if (!spanNamesResolvableService(bag)) return
|
|
8907
|
+
if (!spanNamesResolvableService(bag)) return redactForState(bag, {
|
|
8908
|
+
provenance: "value-scan",
|
|
8909
|
+
secrets
|
|
8910
|
+
});
|
|
8878
8911
|
return secrets.get(bag) ?? bag;
|
|
8879
8912
|
}
|
|
8880
8913
|
return source;
|
|
@@ -8920,7 +8953,10 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
|
|
|
8920
8953
|
const j = partnerIndex[i];
|
|
8921
8954
|
if (j >= 0) return redactByPath(item, source[j], secrets, rules, secretExpressions, bagIsSameGeneration);
|
|
8922
8955
|
if (positionalIsExact) return redactByPath(item, source[i], secrets, rules, secretExpressions, bagIsSameGeneration);
|
|
8923
|
-
return
|
|
8956
|
+
return redactForState(item, {
|
|
8957
|
+
provenance: "value-scan",
|
|
8958
|
+
secrets
|
|
8959
|
+
});
|
|
8924
8960
|
});
|
|
8925
8961
|
}
|
|
8926
8962
|
if (rules.descendArrays && bag.length === source.length) return bag.map((item, i) => redactByPath(item, source[i], secrets, rules, secretExpressions, bagIsSameGeneration));
|
|
@@ -8931,10 +8967,16 @@ function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameG
|
|
|
8931
8967
|
}
|
|
8932
8968
|
if (isPlainObject$7(bag) && hasPlainPrototype(bag) && isPlainObject$7(source)) {
|
|
8933
8969
|
const out = Object.create(null);
|
|
8934
|
-
for (const [k, v] of Object.entries(bag)) out[k] = Object.hasOwn(source, k) ? redactByPath(v, source[k], secrets, rules, secretExpressions, bagIsSameGeneration) :
|
|
8970
|
+
for (const [k, v] of Object.entries(bag)) out[k] = Object.hasOwn(source, k) ? redactByPath(v, source[k], secrets, rules, secretExpressions, bagIsSameGeneration) : redactForState(v, {
|
|
8971
|
+
provenance: "value-scan",
|
|
8972
|
+
secrets
|
|
8973
|
+
});
|
|
8935
8974
|
return out;
|
|
8936
8975
|
}
|
|
8937
|
-
return
|
|
8976
|
+
return redactForState(bag, {
|
|
8977
|
+
provenance: "value-scan",
|
|
8978
|
+
secrets
|
|
8979
|
+
});
|
|
8938
8980
|
}
|
|
8939
8981
|
function isReadbackProjectedFromState(rules) {
|
|
8940
8982
|
return rules.trustAnyExpression && !rules.descendArrays && rules.sourceIsSameGeneration;
|
|
@@ -9247,20 +9289,23 @@ function deriveReadbackNeedles(bag, source, secrets, rules) {
|
|
|
9247
9289
|
|
|
9248
9290
|
//#endregion
|
|
9249
9291
|
//#region src/deployment/secret-redaction/redact-state.ts
|
|
9250
|
-
function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RULES) {
|
|
9251
|
-
return flattenEmbeddedNoEchoLeaves(redactSecretsForStatePasses(bag, secrets, source, rules), secrets);
|
|
9292
|
+
function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RULES, bagIsSameGeneration = false) {
|
|
9293
|
+
return flattenEmbeddedNoEchoLeaves(redactSecretsForStatePasses(bag, secrets, source, rules, bagIsSameGeneration), secrets);
|
|
9252
9294
|
}
|
|
9253
|
-
function redactSecretsForStatePasses(bag, secrets, source, rules) {
|
|
9295
|
+
function redactSecretsForStatePasses(bag, secrets, source, rules, bagIsSameGeneration) {
|
|
9254
9296
|
if (secrets.size === 0 && source === void 0) return bag;
|
|
9255
9297
|
if (source !== void 0) {
|
|
9256
|
-
const positioned = redactByPath(bag, source, secrets, rules, recordedExpressionsOf(secrets),
|
|
9298
|
+
const positioned = redactByPath(bag, source, secrets, rules, recordedExpressionsOf(secrets), bagIsSameGeneration);
|
|
9257
9299
|
if (!isReadbackProjectedFromState(rules)) return positioned;
|
|
9258
9300
|
const failClosed = rules.failClosedOnUncertifiedPositions === true;
|
|
9259
9301
|
const refused = refuseUncertifiedReadbackPositions(positioned, source, secrets, failClosed);
|
|
9260
9302
|
const derived = deriveReadbackNeedles(bag, source, secrets, rules);
|
|
9261
9303
|
if (derived === void 0) return refused;
|
|
9262
9304
|
const marks = refuseUncertifiedReadbackPositions(positioned, source, secrets, failClosed, void 0, true);
|
|
9263
|
-
return preferPositionDecisions(
|
|
9305
|
+
return preferPositionDecisions(redactForState(bag, {
|
|
9306
|
+
provenance: "value-scan",
|
|
9307
|
+
secrets: derived.certain
|
|
9308
|
+
}), refused, bag, marks, derived.inferred);
|
|
9264
9309
|
}
|
|
9265
9310
|
const regex = buildNeedleRegex(substringNeedlesOf(secrets));
|
|
9266
9311
|
const wholeValueExpr = (s) => s === "" ? void 0 : secrets.get(s);
|
|
@@ -9426,18 +9471,29 @@ function redactOverlappingMatches(value, matches, redacted, expressionFor) {
|
|
|
9426
9471
|
}
|
|
9427
9472
|
return out + value.slice(cursor);
|
|
9428
9473
|
}
|
|
9429
|
-
function scrubResourceRecord(record, secrets, sourceProperties,
|
|
9474
|
+
function scrubResourceRecord(record, secrets, sourceProperties, observedProvenance, claims = {}) {
|
|
9475
|
+
const propertiesClaimed = claims.properties === "same-generation";
|
|
9476
|
+
const observedClaimed = claims.observed === "same-generation";
|
|
9430
9477
|
if (secrets.size === 0 && sourceProperties === void 0 && !record.observedProperties) return record;
|
|
9431
9478
|
const next = { ...record };
|
|
9432
|
-
next.properties =
|
|
9479
|
+
next.properties = sourceProperties === void 0 ? redactForState(record.properties, {
|
|
9480
|
+
provenance: "value-scan",
|
|
9481
|
+
secrets
|
|
9482
|
+
}) : redactAtProvenance(record.properties, secrets, sourceProperties, "template-derived", propertiesClaimed);
|
|
9433
9483
|
if (record.attributes) {
|
|
9434
9484
|
const ownId = record.physicalId;
|
|
9435
9485
|
const ids = [...attributeIdCopiesOf.get(secrets) ?? []];
|
|
9436
9486
|
if (typeof ownId === "string" && ownId !== "") ids.push(ownId);
|
|
9437
9487
|
const attributes = record.attributes;
|
|
9438
|
-
next.attributes = ids.length > 0 ? withPhysicalNameCopies(secrets, ids, () =>
|
|
9488
|
+
next.attributes = ids.length > 0 ? withPhysicalNameCopies(secrets, ids, () => redactForState(attributes, {
|
|
9489
|
+
provenance: "value-scan",
|
|
9490
|
+
secrets
|
|
9491
|
+
})) : redactForState(attributes, {
|
|
9492
|
+
provenance: "value-scan",
|
|
9493
|
+
secrets
|
|
9494
|
+
});
|
|
9439
9495
|
}
|
|
9440
|
-
if (record.observedProperties) next.observedProperties =
|
|
9496
|
+
if (record.observedProperties) next.observedProperties = redactAtProvenance(record.observedProperties, secrets, sourceProperties ?? next.properties, observedProvenance ?? (sourceProperties !== void 0 ? "template-sourced" : secrets.size === 0 && observedClaimed ? "state-baseline" : "state-readback"), observedClaimed);
|
|
9441
9497
|
return next;
|
|
9442
9498
|
}
|
|
9443
9499
|
function withoutPhysicalNameCopies(secrets, run) {
|
|
@@ -9499,7 +9555,10 @@ function embeddedPhysicalNameRewrites(secrets, legacySecrets = secrets) {
|
|
|
9499
9555
|
const pairs = [];
|
|
9500
9556
|
withoutPhysicalNameCopies(legacySecrets, () => {
|
|
9501
9557
|
for (const name of names) {
|
|
9502
|
-
const legacy =
|
|
9558
|
+
const legacy = redactForState(name, {
|
|
9559
|
+
provenance: "value-scan",
|
|
9560
|
+
secrets: legacySecrets
|
|
9561
|
+
});
|
|
9503
9562
|
if (typeof legacy === "string" && legacy !== name && legacy.includes("{{resolve:") && !isSingleDynamicReferenceToken(legacy) && !legacy.includes("***")) pairs.push([legacy, name]);
|
|
9504
9563
|
}
|
|
9505
9564
|
});
|
|
@@ -9568,6 +9627,37 @@ function repairEmbeddedPhysicalNamesTowards(stored, target, pairs) {
|
|
|
9568
9627
|
return stored;
|
|
9569
9628
|
}
|
|
9570
9629
|
|
|
9630
|
+
//#endregion
|
|
9631
|
+
//#region src/deployment/secret-redaction/context.ts
|
|
9632
|
+
const RULES_BY_PROVENANCE = {
|
|
9633
|
+
"template-derived": TEMPLATE_DERIVED_RULES,
|
|
9634
|
+
"template-sourced": TEMPLATE_SOURCED_RULES,
|
|
9635
|
+
"state-readback": STATE_SOURCED_READBACK_RULES,
|
|
9636
|
+
"state-baseline": STATE_SOURCED_BASELINE_RULES,
|
|
9637
|
+
"state-cross-generation": STATE_SOURCED_CROSS_GENERATION_RULES,
|
|
9638
|
+
"state-derived": STATE_DERIVED_RULES
|
|
9639
|
+
};
|
|
9640
|
+
function redactForState(bag, context) {
|
|
9641
|
+
if (context.provenance === "value-scan") return redactSecretsForState(bag, context.secrets);
|
|
9642
|
+
const { secrets, source, provenance } = context;
|
|
9643
|
+
if (!((context.provenance === "template-derived" || context.provenance === "template-sourced") && context.generation === "same-generation") || !isPlainBag(bag)) return redactAtProvenance(bag, secrets, source, provenance, false);
|
|
9644
|
+
const copy = shallowCopy(bag);
|
|
9645
|
+
const redacted = redactAtProvenance(copy, secrets, source, provenance, true);
|
|
9646
|
+
return redacted === copy ? shallowCopy(copy) : redacted;
|
|
9647
|
+
}
|
|
9648
|
+
function redactAtProvenance(bag, secrets, source, provenance, sameGeneration) {
|
|
9649
|
+
return redactSecretsForState(bag, secrets, source, RULES_BY_PROVENANCE[provenance], sameGeneration);
|
|
9650
|
+
}
|
|
9651
|
+
function isPlainBag(bag) {
|
|
9652
|
+
if (Array.isArray(bag)) return true;
|
|
9653
|
+
if (bag === null || typeof bag !== "object") return false;
|
|
9654
|
+
const proto = Object.getPrototypeOf(bag);
|
|
9655
|
+
return proto === Object.prototype || proto === null;
|
|
9656
|
+
}
|
|
9657
|
+
function shallowCopy(bag) {
|
|
9658
|
+
return Array.isArray(bag) ? [...bag] : { ...bag };
|
|
9659
|
+
}
|
|
9660
|
+
|
|
9571
9661
|
//#endregion
|
|
9572
9662
|
//#region src/deployment/secret-redaction/positions.ts
|
|
9573
9663
|
const SKELETON_WILDCARD = `${DYNAMIC_REFERENCE_INNER_CHAR}*`;
|
|
@@ -9674,10 +9764,16 @@ function positionByEmbeddedSpan(bag, source, secrets, bagIsSameGeneration) {
|
|
|
9674
9764
|
const frame = singleSpanFrame(bag, source);
|
|
9675
9765
|
if (frame === void 0) {
|
|
9676
9766
|
if (dynamicReferenceSpans(source).length >= 2 && certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration)) return source;
|
|
9677
|
-
return
|
|
9767
|
+
return redactForState(bag, {
|
|
9768
|
+
provenance: "value-scan",
|
|
9769
|
+
secrets
|
|
9770
|
+
});
|
|
9678
9771
|
}
|
|
9679
9772
|
const recorded = resolvedPlaintextOf(secrets, frame.token);
|
|
9680
|
-
if (recorded === void 0 || recorded !== frame.middle) return
|
|
9773
|
+
if (recorded === void 0 || recorded !== frame.middle) return redactForState(bag, {
|
|
9774
|
+
provenance: "value-scan",
|
|
9775
|
+
secrets
|
|
9776
|
+
});
|
|
9681
9777
|
return writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration);
|
|
9682
9778
|
}
|
|
9683
9779
|
function pairedSpans(source, secrets) {
|
|
@@ -9717,7 +9813,10 @@ function renderedLiteralSpans(spelling, secrets, value) {
|
|
|
9717
9813
|
const spans = pairedSpans(spelling, secrets);
|
|
9718
9814
|
if (spans === void 0) return void 0;
|
|
9719
9815
|
if (renderSpans(spelling, spans, (i) => spans[i].plaintext) !== value) return void 0;
|
|
9720
|
-
return
|
|
9816
|
+
return redactForState(spelling, {
|
|
9817
|
+
provenance: "value-scan",
|
|
9818
|
+
secrets
|
|
9819
|
+
}) === spelling ? spans : void 0;
|
|
9721
9820
|
}
|
|
9722
9821
|
function certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration) {
|
|
9723
9822
|
const spans = renderedLiteralSpans(source, secrets, bag);
|
|
@@ -9728,13 +9827,19 @@ function certifiesRenderedLiteral(bag, source, secrets, bagIsSameGeneration) {
|
|
|
9728
9827
|
if (survivor === void 0) return false;
|
|
9729
9828
|
survivors.push(survivor);
|
|
9730
9829
|
}
|
|
9731
|
-
const scanned =
|
|
9830
|
+
const scanned = redactForState(bag, {
|
|
9831
|
+
provenance: "value-scan",
|
|
9832
|
+
secrets
|
|
9833
|
+
});
|
|
9732
9834
|
if (scanned === renderSpans(source, spans, (i) => survivors[i])) return true;
|
|
9733
9835
|
if (!bagIsSameGeneration) return false;
|
|
9734
9836
|
return scanned === renderSpans(source, spans, (i) => spans[i].plaintext.length >= 4 ? survivors[i] : spans[i].plaintext);
|
|
9735
9837
|
}
|
|
9736
9838
|
function writeFramedTokenWithinScanBound(bag, secrets, frame, bagIsSameGeneration) {
|
|
9737
|
-
const scanned =
|
|
9839
|
+
const scanned = redactForState(bag, {
|
|
9840
|
+
provenance: "value-scan",
|
|
9841
|
+
secrets
|
|
9842
|
+
});
|
|
9738
9843
|
const { token, prefix, suffix, middle } = frame;
|
|
9739
9844
|
const survivor = secrets.get(middle);
|
|
9740
9845
|
if (survivor === void 0) return scanned;
|
|
@@ -20367,7 +20472,7 @@ function maskSecretsRaw(resolver, text, context) {
|
|
|
20367
20472
|
return needled !== text ? "***" : registered;
|
|
20368
20473
|
}
|
|
20369
20474
|
function abandonedUnit(resolver, unit, subject, error, context, rawInput, preRedact) {
|
|
20370
|
-
const raw =
|
|
20475
|
+
const raw = describeAwsFailure(error).detail;
|
|
20371
20476
|
return {
|
|
20372
20477
|
unit,
|
|
20373
20478
|
subject: displayMasked(resolver, subject, context),
|
|
@@ -20680,7 +20785,7 @@ var CfnFallbackCache = class {
|
|
|
20680
20785
|
};
|
|
20681
20786
|
return;
|
|
20682
20787
|
} catch (error) {
|
|
20683
|
-
this.deps.logger().warn(`Fn::ImportValue: CloudFormation ListExports fallback failed for export ${quotedRender(displayMasked(this.deps.resolver, exportName, context), "'")} (region ${this.deps.resolverRegion}): ${displayMasked(this.deps.resolver,
|
|
20788
|
+
this.deps.logger().warn(`Fn::ImportValue: CloudFormation ListExports fallback failed for export ${quotedRender(displayMasked(this.deps.resolver, exportName, context), "'")} (region ${this.deps.resolverRegion}): ${displayMasked(this.deps.resolver, describeAwsFailure(error).detail, context)}. Grant cloudformation:ListExports to resolve exports from CloudFormation-managed stacks, or pass --no-cfn-fallback to disable the fallback.`);
|
|
20684
20789
|
return;
|
|
20685
20790
|
}
|
|
20686
20791
|
}
|
|
@@ -20708,7 +20813,7 @@ var CfnFallbackCache = class {
|
|
|
20708
20813
|
try {
|
|
20709
20814
|
return await fetch;
|
|
20710
20815
|
} catch (error) {
|
|
20711
|
-
const message =
|
|
20816
|
+
const message = describeAwsFailure(error).detail;
|
|
20712
20817
|
const resolver = this.deps.resolver;
|
|
20713
20818
|
const cfnNameMask = positionalNameMask(resolver, [[stackName, displayMasked(resolver, stackName, context)], [region, displayMasked(resolver, loggedRegionText, context)]]);
|
|
20714
20819
|
this.deps.logger().warn(`Fn::GetStackOutput: CloudFormation DescribeStacks fallback failed for stack ${displayMaskedIdent(resolver, stackName, context, STACK_REF_MAX_CODE_POINTS)} (${displayMaskedIdent(resolver, loggedRegionText, context)}): ${displayAwsMessage(displayMasked(resolver, cfnNameMask ? cfnNameMask(message) : message, context))}. Grant cloudformation:DescribeStacks to resolve outputs from CloudFormation-managed stacks, or pass --no-cfn-fallback to disable the fallback.`);
|
|
@@ -21266,7 +21371,7 @@ async function readsPinnedVersion(token, pin, { resolver, context }) {
|
|
|
21266
21371
|
return !served.includes("{{resolve:") && served.length < 4 ? "short" : "read";
|
|
21267
21372
|
} catch (err) {
|
|
21268
21373
|
if (isDeliberateResolutionRefusal(err)) throw err;
|
|
21269
|
-
resolver.logger.debug(safeMsg`Pinned read of ${displayMasked(resolver, token, context)} failed: ${displayMasked(resolver,
|
|
21374
|
+
resolver.logger.debug(safeMsg`Pinned read of ${displayMasked(resolver, token, context)} failed: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
|
|
21270
21375
|
if (!isThrottlingError(err)) {
|
|
21271
21376
|
if (failed === void 0) {
|
|
21272
21377
|
failed = /* @__PURE__ */ new Set();
|
|
@@ -21386,7 +21491,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
|
|
|
21386
21491
|
try {
|
|
21387
21492
|
entry = await context.exportIndex.lookup(exportName);
|
|
21388
21493
|
} catch (err) {
|
|
21389
|
-
resolver.logger.warn(`Exports index lookup failed for ${quotedRender(loggedExportName, "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver,
|
|
21494
|
+
resolver.logger.warn(`Exports index lookup failed for ${quotedRender(loggedExportName, "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}; falling back to state.json scan`);
|
|
21390
21495
|
entry = void 0;
|
|
21391
21496
|
}
|
|
21392
21497
|
if (entry && (!context.stackName || entry.producerStack !== context.stackName)) {
|
|
@@ -21428,7 +21533,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
|
|
|
21428
21533
|
producerStack: refStack,
|
|
21429
21534
|
producerRegion: lookupRegion
|
|
21430
21535
|
}).catch((err) => {
|
|
21431
|
-
resolver.logger.debug(`Failed to patch exports index for ${quotedRender(displayMasked(resolver, exportName, context), "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver,
|
|
21536
|
+
resolver.logger.debug(`Failed to patch exports index for ${quotedRender(displayMasked(resolver, exportName, context), "'", "an export whose name is not a plain identifier")}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
|
|
21432
21537
|
});
|
|
21433
21538
|
recordImport(resolver, context, exportName, refStack, lookupRegion);
|
|
21434
21539
|
found = {
|
|
@@ -21440,7 +21545,7 @@ async function resolveImportValue(resolver, importValueArg, context) {
|
|
|
21440
21545
|
break;
|
|
21441
21546
|
}
|
|
21442
21547
|
} catch (error) {
|
|
21443
|
-
resolver.logger.warn(`Failed to read state for stack ${displayMasked(resolver, refStack, context)}: ${displayMasked(resolver,
|
|
21548
|
+
resolver.logger.warn(`Failed to read state for stack ${displayMasked(resolver, refStack, context)}: ${displayMasked(resolver, describeAwsFailure(error).detail, context)}`);
|
|
21444
21549
|
continue;
|
|
21445
21550
|
}
|
|
21446
21551
|
}
|
|
@@ -21655,7 +21760,7 @@ function describeInnermostAwsError(error) {
|
|
|
21655
21760
|
if (cause === null || typeof cause !== "object") break;
|
|
21656
21761
|
innermost = cause;
|
|
21657
21762
|
}
|
|
21658
|
-
if (!(innermost instanceof Error)) return displayAwsMessage(
|
|
21763
|
+
if (!(innermost instanceof Error)) return displayAwsMessage(safeStringify$1(innermost));
|
|
21659
21764
|
const code = innermost.Code;
|
|
21660
21765
|
const name = typeof code === "string" && code !== "" ? code : innermost.name;
|
|
21661
21766
|
const message = displayAwsMessage(innermost.message);
|
|
@@ -22016,7 +22121,7 @@ async function resolveDynamicReferencesWithLogTwin(resolver, value, logTwin, con
|
|
|
22016
22121
|
if (context?.abandonedResolutions !== void 0) {
|
|
22017
22122
|
const bag = context.abandonedResolutions;
|
|
22018
22123
|
for (const { placeholder, because } of takeKeptPlaceholdersInsideReferences(bag, value)) {
|
|
22019
|
-
const reason =
|
|
22124
|
+
const reason = describeAwsFailure(because).detail;
|
|
22020
22125
|
bag.push(abandonedUnit(resolver, "placeholder", placeholder, new Error(`Fn::Sub kept the placeholder ${placeholder} (${reason}) inside a {{resolve:...}} reference, so that reference was never resolved`, { cause: because }), context, value));
|
|
22021
22126
|
}
|
|
22022
22127
|
}
|
|
@@ -22338,7 +22443,10 @@ function isMaskedOwnIdCopy(record, key, recorded, healed, producerSecrets) {
|
|
|
22338
22443
|
if (!healed.endsWith(physicalId)) return false;
|
|
22339
22444
|
if (!OWN_ID_ARN_PREFIX.test(healed.slice(0, healed.length - physicalId.length))) return false;
|
|
22340
22445
|
if (producerSecrets === void 0 || !hasMaskableValues(producerSecrets)) return false;
|
|
22341
|
-
return withPhysicalNameCopies(producerSecrets, [physicalId], () =>
|
|
22446
|
+
return withPhysicalNameCopies(producerSecrets, [physicalId], () => redactForState(healed, {
|
|
22447
|
+
provenance: "value-scan",
|
|
22448
|
+
secrets: producerSecrets
|
|
22449
|
+
})) === healed;
|
|
22342
22450
|
}
|
|
22343
22451
|
function healMaskedOwnIdAttribute(resolver, logicalId, resource, attributeName, stored, context) {
|
|
22344
22452
|
if (stored !== "***" || context.attributeHealer === void 0) return void 0;
|
|
@@ -22371,7 +22479,7 @@ function describeFailureObserved(resolver, read, err, context) {
|
|
|
22371
22479
|
const name = displaySafe(err instanceof Error && err.name ? err.name : "Error", { asciiOnly: true }).slice(0, 64).trim() || "Error";
|
|
22372
22480
|
const status = err?.$metadata?.httpStatusCode;
|
|
22373
22481
|
const errorClass = typeof status === "number" && Number.isInteger(status) ? `${name}, HTTP ${status}` : name;
|
|
22374
|
-
resolver.logger.debug(`${read} failed (${errorClass}): ${displayMasked(resolver,
|
|
22482
|
+
resolver.logger.debug(`${read} failed (${errorClass}): ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
|
|
22375
22483
|
return `${read} failed (${errorClass}); re-run with --verbose for the AWS error text`;
|
|
22376
22484
|
}
|
|
22377
22485
|
function guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context) {
|
|
@@ -22461,7 +22569,7 @@ async function constructAttributeForCoreTypes(resolver, resource, attributeName,
|
|
|
22461
22569
|
resolver.logger.warn(`VPC ${loggedId} IPv6 CIDR did not reach 'associated' state after ${maxAttempts} attempts`);
|
|
22462
22570
|
return [];
|
|
22463
22571
|
} catch (error) {
|
|
22464
|
-
resolver.logger.warn(`Failed to fetch VPC Ipv6CidrBlocks for ${displayMasked(resolver, physicalId, context)}: ${displayMasked(resolver,
|
|
22572
|
+
resolver.logger.warn(`Failed to fetch VPC Ipv6CidrBlocks for ${displayMasked(resolver, physicalId, context)}: ${displayMasked(resolver, describeAwsFailure(error).detail, context)}`);
|
|
22465
22573
|
return [];
|
|
22466
22574
|
}
|
|
22467
22575
|
case "DefaultSecurityGroup": {
|
|
@@ -22844,7 +22952,7 @@ async function constructAttributeForComputeTypes(resolver, attributeName, contex
|
|
|
22844
22952
|
const value = attributeName === "LatestVersionNumber" ? lt?.LatestVersionNumber : lt?.DefaultVersionNumber;
|
|
22845
22953
|
if (value !== void 0 && value !== null) return String(value);
|
|
22846
22954
|
} catch (err) {
|
|
22847
|
-
resolver.logger.warn(`DescribeLaunchTemplates(${displayMasked(resolver, physicalId, context)}) failed for ${displayMasked(resolver, attributeName, context)}: ${displayMasked(resolver,
|
|
22955
|
+
resolver.logger.warn(`DescribeLaunchTemplates(${displayMasked(resolver, physicalId, context)}) failed for ${displayMasked(resolver, attributeName, context)}: ${displayMasked(resolver, describeAwsFailure(err).detail, context)}`);
|
|
22848
22956
|
}
|
|
22849
22957
|
return attributeName === "LatestVersionNumber" ? "$Latest" : "$Default";
|
|
22850
22958
|
}
|
|
@@ -23062,7 +23170,7 @@ async function resolveGetAZs(resolver, value, context) {
|
|
|
23062
23170
|
} catch (error) {
|
|
23063
23171
|
const loggedRegion = displayMasked(resolver, loggedRegionText ?? region, context);
|
|
23064
23172
|
const masks = namedRequestMasks(resolver, [[region, loggedRegion]], context);
|
|
23065
|
-
throw new Error(`Fn::GetAZs: failed to describe availability zones for region ${quotedRender(loggedRegion, "'")}: ${masks.text(
|
|
23173
|
+
throw new Error(`Fn::GetAZs: failed to describe availability zones for region ${quotedRender(loggedRegion, "'")}: ${masks.text(describeAwsFailure(error).detail)}`);
|
|
23066
23174
|
}
|
|
23067
23175
|
if (azNames.length === 0) throw markNonRetryable(/* @__PURE__ */ new Error(`Fn::GetAZs: no availability zones returned for region ${quotedRender(displayMasked(resolver, loggedRegionText ?? region, context), "'")}. Either the region is not enabled on this account (opt-in regions must be enabled before use), or the request was answered by a different region's endpoint.`));
|
|
23068
23176
|
cachedAvailabilityZones.set(azCacheKey, azNames);
|
|
@@ -24098,7 +24206,7 @@ async function evaluateConditions(resolver, context) {
|
|
|
24098
24206
|
for (const name of Object.keys(templateConditions)) try {
|
|
24099
24207
|
await withSharedDrainBudget(() => evaluateByName(name));
|
|
24100
24208
|
} catch (error) {
|
|
24101
|
-
resolver.logger.warn(displayMasked(resolver, `Failed to evaluate condition ${name}: ${
|
|
24209
|
+
resolver.logger.warn(displayMasked(resolver, `Failed to evaluate condition ${name}: ${describeAwsFailure(error).detail}, assuming false`, maskingContext));
|
|
24102
24210
|
conditions[name] = false;
|
|
24103
24211
|
assumed.add(name);
|
|
24104
24212
|
inProgress.delete(name);
|
|
@@ -24118,7 +24226,7 @@ async function resolveKeyUnit(resolver, key, val, context, abandoned) {
|
|
|
24118
24226
|
//#endregion
|
|
24119
24227
|
//#region src/deployment/intrinsic-resolver/sub.ts
|
|
24120
24228
|
function subPlaceholderWarning(_resolver, varName, error) {
|
|
24121
|
-
return `Fn::Sub variable ${varName} could not be resolved (${
|
|
24229
|
+
return `Fn::Sub variable ${varName} could not be resolved (${describeAwsFailure(error).detail}), keeping placeholder`;
|
|
24122
24230
|
}
|
|
24123
24231
|
function subPlaceholderNamesADeclaredTemplateEntity(resolver, varName, context) {
|
|
24124
24232
|
const firstDot = varName.indexOf(".");
|
|
@@ -26967,7 +27075,7 @@ var CloudControlProvider = class {
|
|
|
26967
27075
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
26968
27076
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
26969
27077
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
26970
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
27078
|
+
const { ASGProvider } = await import("./asg-provider-C14GB-Hy.js");
|
|
26971
27079
|
const delegateRegion = ambientRegion();
|
|
26972
27080
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
26973
27081
|
if (asgProvider === void 0) {
|
|
@@ -27073,7 +27181,7 @@ var CloudControlProvider = class {
|
|
|
27073
27181
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
27074
27182
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
27075
27183
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
27076
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
27184
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-DagnUCn-.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-BlpYIZQP.js"))).NeptuneProvider({ region: ccRegion });
|
|
27077
27185
|
this.sdkDeleteDelegates.set(family, {
|
|
27078
27186
|
region: ccRegion,
|
|
27079
27187
|
provider
|
|
@@ -32713,7 +32821,7 @@ function ownRemedyError(error) {
|
|
|
32713
32821
|
}
|
|
32714
32822
|
function rollbackFailureText(error) {
|
|
32715
32823
|
if (error instanceof Error && OWN_REMEDY_ERRORS.has(error)) return error.message.split("\n").map((line) => displaySafe(line)).join("\n");
|
|
32716
|
-
return displaySafe(
|
|
32824
|
+
return displaySafe(describeAwsFailure(error).detail);
|
|
32717
32825
|
}
|
|
32718
32826
|
function collisionText(msg) {
|
|
32719
32827
|
return displayAwsMessage(displaySafe(msg).replace(/[\s\p{Cf}\p{Default_Ignorable_Code_Point}\u2800]{2,}/gu, " "));
|
|
@@ -33706,7 +33814,15 @@ function redactOutputsBag(deps, outputs) {
|
|
|
33706
33814
|
absorbOutputsPassSecrets(deps);
|
|
33707
33815
|
if (deps.outputsRun().outputSecrets.size === 0) return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(), outputs);
|
|
33708
33816
|
const outputsRun = deps.outputsRun();
|
|
33709
|
-
return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(),
|
|
33817
|
+
return maskOutputsByPosition(deps.noEchoRun(), deps.noEchoDeps(), redactForState(outputs, outputsRun.outputsSourceUsable ? {
|
|
33818
|
+
provenance: "template-sourced",
|
|
33819
|
+
secrets: outputsRun.outputSecrets,
|
|
33820
|
+
source: outputsRun.outputsTemplateSource,
|
|
33821
|
+
generation: isSameGenerationBag(outputs) ? "same-generation" : "unproven"
|
|
33822
|
+
} : {
|
|
33823
|
+
provenance: "value-scan",
|
|
33824
|
+
secrets: outputsRun.outputSecrets
|
|
33825
|
+
}));
|
|
33710
33826
|
}
|
|
33711
33827
|
function registerNoEchoAttributes(run, deps, logicalId, result, secrets, ownProperties) {
|
|
33712
33828
|
const declared = recordNoEchoAttributeValues(result, secrets, ownProperties);
|
|
@@ -34088,7 +34204,7 @@ async function replaceDeleteFirstAndRecreate(run, deps, logicalId, resourceType,
|
|
|
34088
34204
|
}));
|
|
34089
34205
|
} catch (deleteError) {
|
|
34090
34206
|
const shownSecrets = unionOfSecretBags([secrets, printingSecretsFor(deps.secretsRun(), logicalId)]);
|
|
34091
|
-
throw new Error(safeMsg`Failed to delete old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + `during the --replace delete-first fallback: ` + safeMsg`${asIsMessage(maskSecretsInText(
|
|
34207
|
+
throw new Error(safeMsg`Failed to delete old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + `during the --replace delete-first fallback: ` + safeMsg`${asIsMessage(maskSecretsInText(describeAwsFailure(deleteError).detail, shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, secrets) : void 0 });
|
|
34092
34208
|
}
|
|
34093
34209
|
reportDeleteGuards(deleteResult, {
|
|
34094
34210
|
physicalId: currentResource.physicalId,
|
|
@@ -34112,7 +34228,7 @@ async function replaceDeleteFirstAndRecreate(run, deps, logicalId, resourceType,
|
|
|
34112
34228
|
});
|
|
34113
34229
|
} catch (recreateError) {
|
|
34114
34230
|
const shownSecrets = unionOfSecretBags([secrets, printingSecretsFor(deps.secretsRun(), logicalId)]);
|
|
34115
|
-
throw new Error(safeMsg`Failed to re-create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`--replace delete-first fallback already deleted the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}). ` + safeMsg`Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(
|
|
34231
|
+
throw new Error(safeMsg`Failed to re-create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`--replace delete-first fallback already deleted the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}). ` + safeMsg`Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(describeAwsFailure(recreateError).detail, shownSecrets))}`, { cause: recreateError instanceof Error ? maskSecretsInError(recreateError, secrets) : void 0 });
|
|
34116
34232
|
}
|
|
34117
34233
|
}
|
|
34118
34234
|
function typeChangeNameQuestion(resourceType, input) {
|
|
@@ -34178,7 +34294,7 @@ async function checkedReplacementNameChange(deps, input) {
|
|
|
34178
34294
|
}), logicalId, void 0, void 0, input.createProvider);
|
|
34179
34295
|
} catch (probeError) {
|
|
34180
34296
|
if (probeErrorMeansNameHeld(resourceType, probeError)) throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement, and S3 answered 403 Forbidden for bucket ${displaySafe(change.desiredName)}: another account owns that name, or a bucket of this account denies this identity \`s3:ListBucket\`, or the request's credentials were rejected. Nothing was created or deleted. Choose another name, or if the bucket is yours grant \`s3:ListBucket\` on it (or delete it) and re-run.`), "NAMED_REPLACEMENT_COLLISION", probeError instanceof Error ? probeError : void 0));
|
|
34181
|
-
throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement under a new name, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(
|
|
34297
|
+
throw markNonRetryable(new CdkdError(maskName(`${subject} requires replacement under a new name, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(describeAwsFailure(probeError).detail))}. Nothing was created or deleted. Re-run the deploy once the check can succeed.`), "NAMED_REPLACEMENT_COLLISION", probeError instanceof Error ? probeError : void 0));
|
|
34182
34298
|
}
|
|
34183
34299
|
if (found === null) return change;
|
|
34184
34300
|
if (!typeChanged && probeFoundSameId(resourceType, found.physicalId, currentResource.physicalId)) return;
|
|
@@ -34195,7 +34311,7 @@ async function createFirstThenDeleteOld(run, deps, input) {
|
|
|
34195
34311
|
createResult = await deps.withRetry(() => withCurrentResourceSecrets(secrets, () => input.createProvider.create(logicalId, resourceType, input.createProps, { maskSecrets: createSecretMasker(secrets) })), logicalId, void 0, void 0, input.createProvider);
|
|
34196
34312
|
} catch (createError) {
|
|
34197
34313
|
if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
|
|
34198
|
-
const createMsg = displayAwsMessage(maskName(
|
|
34314
|
+
const createMsg = displayAwsMessage(maskName(describeAwsFailure(createError).detail));
|
|
34199
34315
|
throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}), and cdkd created the new resource first because its name differs, but the create collided: ${createMsg}. If the collision is on the requested name: ${renderReplacementNameChange(input.change, input.createProps)}. Nothing was deleted` + (retainOld ? ` (UpdateReplacePolicy: Retain keeps the old resource in place)` : "") + ". Choose a name no other resource holds, or delete the resource holding it if it is yours."), "NAMED_REPLACEMENT_COLLISION", createError instanceof Error ? createError : void 0));
|
|
34200
34316
|
}
|
|
34201
34317
|
if (input.equalIdIsSameResource && createResult.physicalId === currentResource.physicalId) throw markNonRetryable(new CdkdError(maskName(`${displaySafe(logicalId)} (${displaySafe(resourceType)}) requires replacement (${input.trigger}) under a new name, but the create returned the resource being replaced (${displaySafe(currentResource.physicalId)}) instead of a new one, so cdkd cannot tell which name it holds. Nothing was deleted. Delete that resource by hand if it is yours, then re-run the deploy.`), "NAMED_REPLACEMENT_IDEMPOTENT_CREATE"));
|
|
@@ -34221,7 +34337,7 @@ async function deleteReplacedAfterCreate(run, deps, logicalId, oldResourceType,
|
|
|
34221
34337
|
maskSecrets: createUnionSecretMasker([secrets, secretNameBagFor(deps.secretsRun(), logicalId)])
|
|
34222
34338
|
}));
|
|
34223
34339
|
} catch (deleteError) {
|
|
34224
|
-
const deleteMsg = maskSecretsInText(
|
|
34340
|
+
const deleteMsg = maskSecretsInText(describeAwsFailure(deleteError).detail, secrets);
|
|
34225
34341
|
deleteFailed = true;
|
|
34226
34342
|
run.replacedOldMaySurvive.set(logicalId, run.replacedOldMaySurvive.get(logicalId) === "unconfirmed" ? "unconfirmed" : replacedDeleteFailureVerdict(deleteError));
|
|
34227
34343
|
const deferred = run.deferredReplacedDeletes;
|
|
@@ -34762,7 +34878,7 @@ var ForwardingSecrets = class extends Map {
|
|
|
34762
34878
|
};
|
|
34763
34879
|
function handleOutputResolutionFailure(deps, error, outputKey, outputs, secrets, inheritedSecrets) {
|
|
34764
34880
|
const union = unionOfSecretBags([inheritedSecrets, secrets]);
|
|
34765
|
-
const detail = maskSecretsInText(error instanceof Error ? error.message || error.name :
|
|
34881
|
+
const detail = maskSecretsInText(error instanceof Error ? error.message || error.name : safeStringify$1(error), union);
|
|
34766
34882
|
if (deps.options.strictGetAtt) {
|
|
34767
34883
|
const cause = typeof error === "string" ? maskSecretsInText(error, union) : maskSecretsInError(error, union);
|
|
34768
34884
|
throw new Error(safeMsg`Failed to resolve output ${outputKey} ` + `(--strict-getatt promotes output resolution failures to deploy errors; ` + safeMsg`drop the flag to skip the output instead): ${asIsMessage(detail)}`, cause instanceof Error || typeof cause === "string" ? { cause } : {});
|
|
@@ -35161,8 +35277,16 @@ function recaptureMaskedBaseline(args) {
|
|
|
35161
35277
|
const { previous, readback, properties, secrets } = args;
|
|
35162
35278
|
const admissible = new Set(secretReferenceTokensOf(properties));
|
|
35163
35279
|
for (const leaf of wholeStringLeavesOf(properties)) if (leaf.includes("{{resolve:")) admissible.add(leaf);
|
|
35164
|
-
if (!reproducesBaseline(
|
|
35165
|
-
|
|
35280
|
+
if (!reproducesBaseline(redactForState(readback, {
|
|
35281
|
+
provenance: "state-baseline",
|
|
35282
|
+
secrets: /* @__PURE__ */ new Map(),
|
|
35283
|
+
source: properties
|
|
35284
|
+
}), previous, admissible)) return void 0;
|
|
35285
|
+
const certified = redactForState(readback, {
|
|
35286
|
+
provenance: "state-baseline",
|
|
35287
|
+
secrets,
|
|
35288
|
+
source: properties
|
|
35289
|
+
});
|
|
35166
35290
|
let changed = false;
|
|
35167
35291
|
const overlay = (old, fresh) => {
|
|
35168
35292
|
if (old === "***") {
|
|
@@ -35408,9 +35532,13 @@ function redactRollbackRecord(record, secrets, journaledProps, journaledAttribut
|
|
|
35408
35532
|
if (secrets.size === 0) return record;
|
|
35409
35533
|
const positioned = journaledProps === void 0 ? record : {
|
|
35410
35534
|
...record,
|
|
35411
|
-
properties:
|
|
35535
|
+
properties: redactForState(record.properties, {
|
|
35536
|
+
provenance: "state-derived",
|
|
35537
|
+
secrets,
|
|
35538
|
+
source: journaledProps
|
|
35539
|
+
})
|
|
35412
35540
|
};
|
|
35413
|
-
return keepPersistedPlainRecordLeaves(scrubResourceRecord(positioned, secrets), record, {
|
|
35541
|
+
return keepPersistedPlainRecordLeaves(scrubResourceRecord(positioned, secrets, void 0, void 0, { observed: isSameGenerationBag(positioned.observedProperties) ? "same-generation" : "unproven" }), record, {
|
|
35414
35542
|
properties: journaledProps,
|
|
35415
35543
|
attributes: journaledAttributes
|
|
35416
35544
|
});
|
|
@@ -36542,7 +36670,7 @@ async function replayRevert(s) {
|
|
|
36542
36670
|
refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
|
|
36543
36671
|
logger.info(` Rollback: Restoring ${safe(op.logicalId)} (${safe(op.resourceType)}) to previous state`);
|
|
36544
36672
|
const currentProps = noEcho.onPreviousSide(await resolveReplayProps(current.properties, resolver, secrets, ctx, op.logicalId, current));
|
|
36545
|
-
recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, previousState.properties,
|
|
36673
|
+
recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, previousState.properties, "state-derived");
|
|
36546
36674
|
opMasker.addNamed({
|
|
36547
36675
|
resourceType: op.resourceType,
|
|
36548
36676
|
properties: desiredProps,
|
|
@@ -36638,7 +36766,7 @@ async function replayReverseReplacement(s) {
|
|
|
36638
36766
|
logicalId: op.logicalId,
|
|
36639
36767
|
physicalIds: [prev.physicalId]
|
|
36640
36768
|
});
|
|
36641
|
-
recordNestedStackParameterExpressions(secrets, oldType, resolvedPrevProps, prev.properties,
|
|
36769
|
+
recordNestedStackParameterExpressions(secrets, oldType, resolvedPrevProps, prev.properties, "state-derived");
|
|
36642
36770
|
const deleteFirstBlocked = op.oldDeletedBeforeCreate === true && !rollbackRetainsNewResource(current) ? deleteFirstBlocker(op) : void 0;
|
|
36643
36771
|
if (deleteFirstBlocked !== void 0) logger.warn(mask(safeMsg` Rollback: not deleting the new ${shownLogicalId(op.logicalId)} first: its old properties ` + safeMsg`name the resource ${shownLogicalId(deleteFirstBlocked.logicalId)} had before the same deploy ` + "replaced or deleted it, which this rollback may not be able to restore under that id — re-creating the old resource first, which keeps the new one if that fails"));
|
|
36644
36772
|
const reverseDeleteFirst = op.oldDeletedBeforeCreate === true && !rollbackRetainsNewResource(current) && deleteFirstBlocked === void 0;
|
|
@@ -36705,7 +36833,7 @@ async function replayReverseReplacement(s) {
|
|
|
36705
36833
|
});
|
|
36706
36834
|
} catch (recreateError) {
|
|
36707
36835
|
await deleteMarkedRecreate(recreateError, recreateCleanup);
|
|
36708
|
-
throw new Error(mask(`Failed to re-create the old ${safe(op.logicalId)} after the new resource (${mask(current.physicalId)}) was already deleted: ${displaySafe(
|
|
36836
|
+
throw new Error(mask(`Failed to re-create the old ${safe(op.logicalId)} after the new resource (${mask(current.physicalId)}) was already deleted: ${displaySafe(describeAwsFailure(recreateError).detail)}. The resource is now absent — fix forward by re-deploying the stack.`), { cause: maskSecretsInError(recreateError instanceof Error ? recreateError : void 0, secrets) });
|
|
36709
36837
|
}
|
|
36710
36838
|
};
|
|
36711
36839
|
let deletedNewFirst = false;
|
|
@@ -36722,7 +36850,7 @@ async function replayReverseReplacement(s) {
|
|
|
36722
36850
|
});
|
|
36723
36851
|
} catch (createError) {
|
|
36724
36852
|
const deletedMade = await deleteMarkedRecreate(createError, recreateCleanup);
|
|
36725
|
-
const msg =
|
|
36853
|
+
const msg = describeAwsFailure(createError).detail;
|
|
36726
36854
|
if (!isNameCollisionErrorFrom(createError, op.logicalId) || deletedMade) throw createError;
|
|
36727
36855
|
const holder = inOriginalPrefix(() => reverseReplacementNewHoldsName({
|
|
36728
36856
|
oldResourceType: oldType,
|
|
@@ -36816,8 +36944,8 @@ async function replayReverseReplacement(s) {
|
|
|
36816
36944
|
}));
|
|
36817
36945
|
throwIfDeleteSkipped(deleteNewAfterRecreate, op.logicalId, current.physicalId, "while deleting the new resource after re-creating the old one", newDeleteGuardScope(deleteNewAfterRecreateRoute.provisionedBy));
|
|
36818
36946
|
} catch (deleteError) {
|
|
36819
|
-
logger.warn(mask(` Rollback: old ${safe(op.logicalId)} re-created, but deleting the new resource (${displaySafe(mask(current.physicalId))}) failed: ${displaySafe(
|
|
36820
|
-
survivorReason = `The replacement's new ${op.resourceType} (${current.physicalId}) could not be deleted after the old resource was re-created: ${
|
|
36947
|
+
logger.warn(mask(` Rollback: old ${safe(op.logicalId)} re-created, but deleting the new resource (${displaySafe(mask(current.physicalId))}) failed: ${displaySafe(describeAwsFailure(deleteError).detail)}. Delete it manually — it is no longer tracked in state.`));
|
|
36948
|
+
survivorReason = `The replacement's new ${op.resourceType} (${current.physicalId}) could not be deleted after the old resource was re-created: ${describeAwsFailure(deleteError).detail}. It is live, still billing, and no longer tracked by cdkd — delete it yourself.`;
|
|
36821
36949
|
result.warnings++;
|
|
36822
36950
|
}
|
|
36823
36951
|
const recreatedId = displaySafe(mask(String(createResult.physicalId)));
|
|
@@ -36858,7 +36986,7 @@ async function deleteMarkedRecreate(error, s) {
|
|
|
36858
36986
|
}));
|
|
36859
36987
|
failure = deleteSkipReason(outcome);
|
|
36860
36988
|
} catch (deleteError) {
|
|
36861
|
-
failure =
|
|
36989
|
+
failure = describeAwsFailure(deleteError).detail;
|
|
36862
36990
|
}
|
|
36863
36991
|
if (failure === void 0) return true;
|
|
36864
36992
|
s.logger.warn(safeMsg` Rollback: could not delete ${id}, which the failed re-create of ${shown} made before ` + safeMsg`failing (${s.mask(failure)}); no record holds it — delete it yourself`);
|
|
@@ -37288,7 +37416,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
37288
37416
|
const desiredProps = noEcho.desired;
|
|
37289
37417
|
refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
|
|
37290
37418
|
const attemptedProps = noEcho.onPreviousSide(await resolveReplayProps(op.attemptedProperties ?? current.properties, resolver, secrets, ctx, op.logicalId, op.attemptedProperties === void 0 ? current : void 0));
|
|
37291
|
-
recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties,
|
|
37419
|
+
recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties, "state-derived");
|
|
37292
37420
|
opMasker.addNamed({
|
|
37293
37421
|
resourceType: op.resourceType,
|
|
37294
37422
|
properties: desiredProps,
|
|
@@ -37394,7 +37522,7 @@ var ObservedCapture = class {
|
|
|
37394
37522
|
this.deps.printingSecretsFor(logicalId),
|
|
37395
37523
|
this.deps.fingerprintNoEchoValues()
|
|
37396
37524
|
]);
|
|
37397
|
-
this.deps.logger.debug(safeMsg`observedProperties capture for ${mask(logicalId)} (${mask(resourceType)}) failed: ${asIsMessage(mask(
|
|
37525
|
+
this.deps.logger.debug(safeMsg`observedProperties capture for ${mask(logicalId)} (${mask(resourceType)}) failed: ${asIsMessage(mask(describeAwsFailure(err).detail))} — drift will fall back to template properties for this resource until the next successful deploy.`);
|
|
37398
37526
|
});
|
|
37399
37527
|
const promise = secrets === void 0 ? read() : withCurrentResourceSecrets(secrets, read);
|
|
37400
37528
|
this.observedCaptureTasks.set(logicalId, promise);
|
|
@@ -38363,7 +38491,7 @@ async function loadJournaledOrphans(stateBackend, stackName, region, rollbackOrp
|
|
|
38363
38491
|
if (!journal) return NONE;
|
|
38364
38492
|
segments = journal.segments;
|
|
38365
38493
|
} catch (err) {
|
|
38366
|
-
const detail =
|
|
38494
|
+
const detail = describeAwsFailure(err).detail;
|
|
38367
38495
|
logger.warn(safeMsg`Could not read the stack's rollback journal (${displaySafe(detail)}); ` + safeMsg`no resource it records for a failed CREATE is deleted, and ${options.unreadableOutcome ?? "a destroy that proceeds removes the journal with the state"}.`);
|
|
38368
38496
|
return {
|
|
38369
38497
|
...NONE,
|
|
@@ -38775,7 +38903,7 @@ async function markSuperseded(stateBackend, stackName, region, ids) {
|
|
|
38775
38903
|
} catch {}
|
|
38776
38904
|
}
|
|
38777
38905
|
function errorDetail(err) {
|
|
38778
|
-
return displaySafe(
|
|
38906
|
+
return displaySafe(describeAwsFailure(err).detail);
|
|
38779
38907
|
}
|
|
38780
38908
|
function isHandledOrphan(handled, segment, op) {
|
|
38781
38909
|
return handled.some((h) => h.segment.timestamp === segment.timestamp && h.segment.runId === segment.runId && h.op.logicalId === op.logicalId && h.op.changeType === op.changeType && h.op.resourceType === op.resourceType && h.op.physicalId === op.physicalId);
|
|
@@ -39307,7 +39435,7 @@ Drop the record with: ${dropCommand}`);
|
|
|
39307
39435
|
maskSecrets: createUnionSecretMasker([secretNameBagFor(deps.secretsRun(), logicalId)])
|
|
39308
39436
|
}), logicalId, 3, 5e3, deleteProvider);
|
|
39309
39437
|
} catch (deleteError) {
|
|
39310
|
-
const msg =
|
|
39438
|
+
const msg = describeAwsFailure(deleteError).detail;
|
|
39311
39439
|
if (!isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && !isWaitAbandonedError(deleteError) && (msg.includes("does not exist") || msg.includes("was not found") || msg.includes("not found") || msg.includes("No policy found") || msg.includes("NoSuchEntity") || msg.includes("NotFoundException") || msg.includes("ResourceNotFoundException"))) deps.logger.debug(safeMsg`Resource ${logicalId} already deleted (${asIsMessage(msg)}), removing from state`);
|
|
39312
39440
|
else throw deleteError;
|
|
39313
39441
|
}
|
|
@@ -40009,13 +40137,35 @@ function redactOperationsForJournal(deps, operations) {
|
|
|
40009
40137
|
if ((!secrets || secrets.size === 0) && !op.previousState && sources === void 0) return op;
|
|
40010
40138
|
const ownSecrets = secrets ?? /* @__PURE__ */ new Map();
|
|
40011
40139
|
const next = { ...op };
|
|
40012
|
-
if (next.properties)
|
|
40013
|
-
|
|
40140
|
+
if (next.properties) {
|
|
40141
|
+
const properties = next.properties;
|
|
40142
|
+
next.properties = byPosition(templateProps === void 0 ? redactForState(properties, {
|
|
40143
|
+
provenance: "value-scan",
|
|
40144
|
+
secrets: ownSecrets
|
|
40145
|
+
}) : redactForState(properties, {
|
|
40146
|
+
provenance: "template-derived",
|
|
40147
|
+
secrets: ownSecrets,
|
|
40148
|
+
source: templateProps,
|
|
40149
|
+
generation: isSameGenerationBag(properties) ? "same-generation" : "unproven"
|
|
40150
|
+
}));
|
|
40151
|
+
}
|
|
40152
|
+
if (next.attemptedProperties) {
|
|
40153
|
+
const attempted = next.attemptedProperties;
|
|
40154
|
+
next.attemptedProperties = byPosition(templateProps === void 0 ? redactForState(attempted, {
|
|
40155
|
+
provenance: "value-scan",
|
|
40156
|
+
secrets: ownSecrets
|
|
40157
|
+
}) : redactForState(attempted, {
|
|
40158
|
+
provenance: "template-derived",
|
|
40159
|
+
secrets: ownSecrets,
|
|
40160
|
+
source: templateProps,
|
|
40161
|
+
generation: "same-generation"
|
|
40162
|
+
}));
|
|
40163
|
+
}
|
|
40014
40164
|
if (next.previousState) {
|
|
40015
40165
|
const previous = next.previousState;
|
|
40016
40166
|
const adopted = adoptedOrphanRecords.get(deps.owner);
|
|
40017
40167
|
const loaded = adopted?.has(op.logicalId) ? adopted.get(op.logicalId) : previous;
|
|
40018
|
-
next.previousState = applyNoEchoPersist(deps.noEchoRun(), deps.noEchoDeps(), op.logicalId, previous, keepPersistedPlainRecordLeaves(scrubResourceRecord(previous, ownSecrets, void 0,
|
|
40168
|
+
next.previousState = applyNoEchoPersist(deps.noEchoRun(), deps.noEchoDeps(), op.logicalId, previous, keepPersistedPlainRecordLeaves(scrubResourceRecord(previous, ownSecrets, void 0, "state-readback", { observed: isSameGenerationBag(previous.observedProperties) ? "same-generation" : "unproven" }), previous, loaded ?? {}), void 0, {}, void 0, true);
|
|
40019
40169
|
}
|
|
40020
40170
|
return next;
|
|
40021
40171
|
});
|
|
@@ -40231,7 +40381,7 @@ async function deleteRollbackJournalBestEffort(deps, stackName, supersededLogica
|
|
|
40231
40381
|
try {
|
|
40232
40382
|
deleted = await deps.stateBackend.deleteRollbackJournal(stackName, deps.stackRegion);
|
|
40233
40383
|
} catch (err) {
|
|
40234
|
-
deps.logger.debug(safeMsg`Failed to delete rollback journal for ${displayStackName(stackName)}: ${
|
|
40384
|
+
deps.logger.debug(safeMsg`Failed to delete rollback journal for ${displayStackName(stackName)}: ${describeAwsFailure(err).detail}`);
|
|
40235
40385
|
deleted = false;
|
|
40236
40386
|
}
|
|
40237
40387
|
if (deleted !== false) return true;
|
|
@@ -40239,7 +40389,7 @@ async function deleteRollbackJournalBestEffort(deps, stackName, supersededLogica
|
|
|
40239
40389
|
try {
|
|
40240
40390
|
await deps.stateBackend.markRollbackJournalSuperseded(stackName, deps.stackRegion, supersededLogicalIds);
|
|
40241
40391
|
} catch (markErr) {
|
|
40242
|
-
deps.logger.debug(safeMsg`Failed to record superseded logical ids on the rollback journal for ${displayStackName(stackName)}: ${
|
|
40392
|
+
deps.logger.debug(safeMsg`Failed to record superseded logical ids on the rollback journal for ${displayStackName(stackName)}: ${describeAwsFailure(markErr).detail}`);
|
|
40243
40393
|
}
|
|
40244
40394
|
return false;
|
|
40245
40395
|
}
|
|
@@ -40248,7 +40398,7 @@ async function settleJournalAfterCleanRollback(deps, stackName, failedOperations
|
|
|
40248
40398
|
try {
|
|
40249
40399
|
await deps.stateBackend.popRollbackJournalSegment(stackName, deps.stackRegion);
|
|
40250
40400
|
} catch (err) {
|
|
40251
|
-
deps.logger.debug(safeMsg`Failed to pop the rollback journal segment after the clean rollback: ${asIsMessage(
|
|
40401
|
+
deps.logger.debug(safeMsg`Failed to pop the rollback journal segment after the clean rollback: ${asIsMessage(describeAwsFailure(err).detail)}`);
|
|
40252
40402
|
return false;
|
|
40253
40403
|
}
|
|
40254
40404
|
return true;
|
|
@@ -40256,7 +40406,7 @@ async function settleJournalAfterCleanRollback(deps, stackName, failedOperations
|
|
|
40256
40406
|
try {
|
|
40257
40407
|
await deps.stateBackend.popRollbackJournalSegment(stackName, deps.stackRegion);
|
|
40258
40408
|
} catch (err) {
|
|
40259
|
-
deps.logger.warn(safeMsg`Failed to settle the rollback journal after the clean rollback: ${
|
|
40409
|
+
deps.logger.warn(safeMsg`Failed to settle the rollback journal after the clean rollback: ${describeAwsFailure(err).detail}. ` + `The journal keeps the full segment; a later rollback replay is idempotent.`);
|
|
40260
40410
|
return false;
|
|
40261
40411
|
}
|
|
40262
40412
|
if (!await writeRollbackJournalSegment(deps, stackName, [], failedOperations, "auto-rollback-clean", initialDeploy)) return true;
|
|
@@ -40331,7 +40481,7 @@ async function writeRollbackJournalSegment(deps, stackName, completedOperations,
|
|
|
40331
40481
|
deps.logger.debug(safeMsg`Rollback journal segment written (${reason})`);
|
|
40332
40482
|
return true;
|
|
40333
40483
|
} catch (journalError) {
|
|
40334
|
-
deps.logger.warn(safeMsg`Failed to write rollback journal: ${asIsMessage(
|
|
40484
|
+
deps.logger.warn(safeMsg`Failed to write rollback journal: ${asIsMessage(describeAwsFailure(journalError).detail)}. ` + `'cdkd rollback' will NOT be able to revert this deploy — use 'cdkd deploy' to resume or 'cdkd destroy' to clean up.`);
|
|
40335
40485
|
return false;
|
|
40336
40486
|
}
|
|
40337
40487
|
}
|
|
@@ -42035,7 +42185,10 @@ function deployConditionInputs(parameterValues, inheritedSecrets, shadowedBy = /
|
|
|
42035
42185
|
unavailable.add(name);
|
|
42036
42186
|
continue;
|
|
42037
42187
|
}
|
|
42038
|
-
const redacted =
|
|
42188
|
+
const redacted = redactForState(value, {
|
|
42189
|
+
provenance: "value-scan",
|
|
42190
|
+
secrets: inheritedSecrets
|
|
42191
|
+
});
|
|
42039
42192
|
if (!containsNeedle(value)) {
|
|
42040
42193
|
if (redacted !== value) unavailable.add(name);
|
|
42041
42194
|
continue;
|
|
@@ -42968,7 +43121,10 @@ function maskedInputSources(deps, template, resources, conditions, stackName) {
|
|
|
42968
43121
|
const targetSecrets = target === void 0 ? void 0 : deps.secretsRun().perResourceSecrets.get(target);
|
|
42969
43122
|
if (targetSecrets !== void 0 && hasMaskableValues(targetSecrets)) {
|
|
42970
43123
|
const probe = { value };
|
|
42971
|
-
const redacted =
|
|
43124
|
+
const redacted = redactForState(probe, {
|
|
43125
|
+
provenance: "value-scan",
|
|
43126
|
+
secrets: targetSecrets
|
|
43127
|
+
});
|
|
42972
43128
|
if (JSON.stringify(redacted) !== JSON.stringify(probe)) return {
|
|
42973
43129
|
value,
|
|
42974
43130
|
keepAsWritten: true
|
|
@@ -43177,7 +43333,7 @@ async function refuseTakenCreateName(engine, input) {
|
|
|
43177
43333
|
if (probeErrorMeansNameHeld(resourceType, probeError)) return refuse(`${subject} is created with ${named}, and S3 answered 403 Forbidden for that bucket: another account owns that name, or a bucket of this account denies this identity \`s3:ListBucket\`, or the request's credentials were rejected. Nothing was created. Choose another name, or if the bucket is yours grant \`s3:ListBucket\` on it (or delete it) and re-run.`, probeError);
|
|
43178
43334
|
const status = probeError?.$metadata?.httpStatusCode;
|
|
43179
43335
|
if (resourceType === "AWS::S3::Bucket" && status === 301) return refuse(`${subject} is created with ${named}, and S3 answered 301 for that bucket: a bucket of that name already exists in another region. Nothing was created. Choose another name, or delete that bucket if it is yours and re-run.`, probeError);
|
|
43180
|
-
return refuse(`${subject} is created with ${named}, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(
|
|
43336
|
+
return refuse(`${subject} is created with ${named}, and ${adoptsText}, but cdkd could not check whether another resource already holds it: ${displayAwsMessage(maskName(describeAwsFailure(probeError).detail))}. Nothing was created. Re-run the deploy once the check can succeed.`, probeError);
|
|
43181
43337
|
}
|
|
43182
43338
|
if (found === null) return;
|
|
43183
43339
|
const holderId = found.physicalId;
|
|
@@ -46126,7 +46282,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
|
|
|
46126
46282
|
}));
|
|
46127
46283
|
} catch (deleteError) {
|
|
46128
46284
|
const shownSecrets = unionOfSecretBags([updateSecrets, printingSecretsFor(engine.secretsRun, logicalId)]);
|
|
46129
|
-
throw new Error(safeMsg`Failed to destroy old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) during ${recreateFlagName}: ` + safeMsg`${asIsMessage(maskSecretsInText(
|
|
46285
|
+
throw new Error(safeMsg`Failed to destroy old resource ${maskSecretsInText(logicalId, shownSecrets)} ` + safeMsg`(${maskSecretsInText(currentResource.physicalId, shownSecrets)}) during ${recreateFlagName}: ` + safeMsg`${asIsMessage(maskSecretsInText(describeAwsFailure(deleteError).detail, shownSecrets))}`, { cause: deleteError instanceof Error ? maskSecretsInError(deleteError, updateSecrets) : void 0 });
|
|
46130
46286
|
}
|
|
46131
46287
|
reportDeleteGuards(recreateDeleteResult, {
|
|
46132
46288
|
physicalId: currentResource.physicalId,
|
|
@@ -46159,7 +46315,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
|
|
|
46159
46315
|
try {
|
|
46160
46316
|
createResult = await engine.withRetry(() => withCurrentResourceSecrets(updateSecrets, () => replaceProvider.create(logicalId, resourceType, replaceProps, { maskSecrets: createSecretMasker(updateSecrets) })), logicalId, void 0, void 0, replaceProvider);
|
|
46161
46317
|
} catch (createError) {
|
|
46162
|
-
const createMsg = displayAwsMessage(maskSecretsInText(
|
|
46318
|
+
const createMsg = displayAwsMessage(maskSecretsInText(describeAwsFailure(createError).detail, updateSecrets));
|
|
46163
46319
|
const createSentence = createMsg.endsWith(".") ? createMsg.slice(0, -1) : createMsg;
|
|
46164
46320
|
if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
|
|
46165
46321
|
const nameOrigin = replacementNameOrigin(logicalId, currentResource.physicalId);
|
|
@@ -46217,7 +46373,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
|
|
|
46217
46373
|
if (snapshotError instanceof CdkdError && snapshotError.code === "FINAL_SNAPSHOT_UNSUPPORTED") throw snapshotError;
|
|
46218
46374
|
snapshotBlockedDelete = true;
|
|
46219
46375
|
engine.replacementRun.replacedOldMaySurvive.set(logicalId, "kept");
|
|
46220
|
-
engine.logger.warn(safeMsg` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) ` + safeMsg`failed: ${asIsMessage(
|
|
46376
|
+
engine.logger.warn(safeMsg` ⚠ Final snapshot for old ${logicalId} (${currentResource.physicalId}) ` + safeMsg`failed: ${asIsMessage(describeAwsFailure(snapshotError).detail)}. ` + "The old resource was NOT deleted (UpdateReplacePolicy: Snapshot) — delete it manually once you have a snapshot; it is no longer tracked in state.");
|
|
46221
46377
|
}
|
|
46222
46378
|
if (!snapshotBlockedDelete) await deleteReplacedAfterCreate(engine.replacementRun, engine.replacementDeps(), logicalId, oldResourceType, currentResource, oldDeleteProvider, currentResource.properties, cleanupFinalSnapshotId, updateReplacePolicy, updateSecrets, oldDeleteRoute.provisionedBy, noEchoDeleteValues);
|
|
46223
46379
|
}
|
|
@@ -46388,7 +46544,7 @@ async function updateInPlace(engine, { conditions, counts, currentProps, current
|
|
|
46388
46544
|
maskSecrets: createUnionSecretMasker([updateSecrets, secretNameBagFor(engine.secretsRun, logicalId)])
|
|
46389
46545
|
}));
|
|
46390
46546
|
} catch (deleteError) {
|
|
46391
|
-
const deleteMsg =
|
|
46547
|
+
const deleteMsg = describeAwsFailure(deleteError).detail;
|
|
46392
46548
|
if (!isWaitAbandonedError(deleteError) && !isInterruptedWaitError(deleteError) && !isMarkedNonRetryable(deleteError) && (deleteMsg.includes("does not exist") || deleteMsg.includes("not found") || deleteMsg.includes("NotFound"))) engine.logger.debug(safeMsg`Old resource ${logicalId} already gone, proceeding with CREATE`);
|
|
46393
46549
|
else throw deleteError;
|
|
46394
46550
|
}
|
|
@@ -46431,7 +46587,7 @@ async function updateInPlace(engine, { conditions, counts, currentProps, current
|
|
|
46431
46587
|
if (createFirst) throw createError;
|
|
46432
46588
|
if (!retainOldOnReplace) {
|
|
46433
46589
|
const shownSecrets = unionOfSecretBags([updateSecrets, printingSecretsFor(engine.secretsRun, logicalId)]);
|
|
46434
|
-
throw new Error(safeMsg`Failed to create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`UPDATE-not-supported replacement: the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + safeMsg`is now gone. Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(
|
|
46590
|
+
throw new Error(safeMsg`Failed to create ${maskSecretsInText(logicalId, shownSecrets)} after the ` + safeMsg`UPDATE-not-supported replacement: the old resource (${maskSecretsInText(currentResource.physicalId, shownSecrets)}) ` + safeMsg`is now gone. Re-run the deploy to create it fresh. Cause: ${asIsMessage(maskSecretsInText(describeAwsFailure(createError).detail, shownSecrets))}`, { cause: createError instanceof Error ? createError : void 0 });
|
|
46435
46591
|
}
|
|
46436
46592
|
if (!isNameCollisionErrorFrom(createError, logicalId)) throw createError;
|
|
46437
46593
|
const nameHeldElsewhere = replacementRequestsDifferentName({
|
|
@@ -46769,8 +46925,18 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
|
|
|
46769
46925
|
]), fingerprints));
|
|
46770
46926
|
if (resourceType === "AWS::CloudFormation::Stack") recordPassedNoEchoParameters(updateSecrets, desiredProps["Parameters"], noEchoPositionSources(engine.noEchoRun, stateResources));
|
|
46771
46927
|
if (fingerprintSources !== void 0 && resourceType === "AWS::CloudFormation::Stack") recordPassedParameterClasses(updateSecrets, await classifyPassedParameters(desiredProps["Parameters"], fingerprintSources));
|
|
46772
|
-
const desiredForSkipCheck = maskAtCoordinates(
|
|
46773
|
-
|
|
46928
|
+
const desiredForSkipCheck = maskAtCoordinates(redactForState(resolvedProps, {
|
|
46929
|
+
provenance: "template-derived",
|
|
46930
|
+
secrets: updateSecrets,
|
|
46931
|
+
source: desiredProps,
|
|
46932
|
+
generation: "same-generation"
|
|
46933
|
+
}), comparisonCoordinates);
|
|
46934
|
+
const legacyDesired = withoutPhysicalNameCopies(updateSecrets, () => maskAtCoordinates(redactForState(resolvedProps, {
|
|
46935
|
+
provenance: "template-derived",
|
|
46936
|
+
secrets: updateSecrets,
|
|
46937
|
+
source: desiredProps,
|
|
46938
|
+
generation: "same-generation"
|
|
46939
|
+
}), comparisonCoordinates));
|
|
46774
46940
|
const copies = physicalNameCopiesOf.get(updateSecrets);
|
|
46775
46941
|
const regionEvidence = getCurrentProducerRegions()?.();
|
|
46776
46942
|
const recordOwnSecrets = copies !== void 0 && copies.size > 0 && regionEvidence?.complete === true && recordHoldsEmbeddedReference(currentResource) ? await resolveRecordSecrets({
|
|
@@ -46784,7 +46950,12 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
|
|
|
46784
46950
|
if (repaired !== bag[key]) bag[key] = repaired;
|
|
46785
46951
|
}
|
|
46786
46952
|
if (overlapRuleAnswered(updateSecrets)) {
|
|
46787
|
-
const legacyOverlapBag = withLegacyOverlapScan(updateSecrets, () => maskAtCoordinates(
|
|
46953
|
+
const legacyOverlapBag = withLegacyOverlapScan(updateSecrets, () => maskAtCoordinates(redactForState(resolvedProps, {
|
|
46954
|
+
provenance: "template-derived",
|
|
46955
|
+
secrets: updateSecrets,
|
|
46956
|
+
source: desiredProps,
|
|
46957
|
+
generation: "same-generation"
|
|
46958
|
+
}), comparisonCoordinates));
|
|
46788
46959
|
const legacyOverlap = legacyReferenceLeavesOnly(legacyOverlapBag);
|
|
46789
46960
|
for (const bag of new Set(repairable)) for (const key of Object.keys(bag)) {
|
|
46790
46961
|
const repaired = repairPhysicalNameCopyLeaves(bag[key], legacyOverlap[key], desiredForSkipCheck[key]);
|
|
@@ -46811,7 +46982,12 @@ async function provisionUpdate(engine, logicalId, change, stateResources, stackN
|
|
|
46811
46982
|
const createOnlyEvidence = acceptedCreateOnlyDropsOf(currentResource);
|
|
46812
46983
|
const recordedAsWritten = currentResource.provisionedBy === "cc-api" ? currentProps : withoutUnwrittenSilentDropProperties(resourceType, currentProps, desiredForSkipCheck, allowedForRecord, createOnlyEvidence);
|
|
46813
46984
|
const unmarkedRecord = noEchoLeavesOf(currentResource) === void 0;
|
|
46814
|
-
const todayAsWritten = unmarkedRecord || witnessNormalize(recordedAsWritten, void 0, desiredForSkipCheckAsWritten).differing.length > 0 ?
|
|
46985
|
+
const todayAsWritten = unmarkedRecord || witnessNormalize(recordedAsWritten, void 0, desiredForSkipCheckAsWritten).differing.length > 0 ? redactForState(resolvedProps, {
|
|
46986
|
+
provenance: "template-derived",
|
|
46987
|
+
secrets: withoutNoEchoParameterEntries(updateSecrets),
|
|
46988
|
+
source: desiredProps,
|
|
46989
|
+
generation: "same-generation"
|
|
46990
|
+
}) : void 0;
|
|
46815
46991
|
const witness = todayAsWritten === void 0 ? void 0 : witnessNormalize(recordedAsWritten, todayAsWritten, desiredForSkipCheckAsWritten);
|
|
46816
46992
|
const currentPropsAsWritten = witness === void 0 ? recordedAsWritten : witness.current;
|
|
46817
46993
|
const witnessMigrates = unmarkedRecord || (witness?.confirmed.length ?? 0) > 0;
|
|
@@ -47406,7 +47582,7 @@ async function provisionResource(engine, logicalId, change, stateResources, stac
|
|
|
47406
47582
|
});
|
|
47407
47583
|
} catch (error) {
|
|
47408
47584
|
renderer.removeTask(logicalId);
|
|
47409
|
-
const message =
|
|
47585
|
+
const message = describeAwsFailure(error).detail;
|
|
47410
47586
|
const shownMessage = maskForResource(engine.secretsRun, logicalId, message);
|
|
47411
47587
|
const shownId = safeMsg`${logicalId}`;
|
|
47412
47588
|
engine.logger.error(maskForResource(engine.secretsRun, logicalId, `Failed to ${change.changeType.toLowerCase()} ${shownId}: ${shownMessage}`));
|
|
@@ -47488,7 +47664,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
47488
47664
|
if (migrate) pendingMigration = false;
|
|
47489
47665
|
engine.logger.debug(safeMsg`State saved after ${logicalId}`);
|
|
47490
47666
|
} catch (error) {
|
|
47491
|
-
engine.logger.warn(safeMsg`Failed to save state after ${logicalId}: ${asIsMessage(
|
|
47667
|
+
engine.logger.warn(safeMsg`Failed to save state after ${logicalId}: ${asIsMessage(describeAwsFailure(error).detail)}`);
|
|
47492
47668
|
}
|
|
47493
47669
|
});
|
|
47494
47670
|
};
|
|
@@ -47818,7 +47994,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
47818
47994
|
if (migrate) pendingMigration = false;
|
|
47819
47995
|
engine.logger.debug("Partial state saved before rollback (orphaned resource tracking)");
|
|
47820
47996
|
} catch (saveError) {
|
|
47821
|
-
engine.logger.warn(safeMsg`Failed to save partial state before rollback: ${asIsMessage(
|
|
47997
|
+
engine.logger.warn(safeMsg`Failed to save partial state before rollback: ${asIsMessage(describeAwsFailure(saveError).detail)}`);
|
|
47822
47998
|
}
|
|
47823
47999
|
let autoRollbackClean = false;
|
|
47824
48000
|
let autoRollbackJournaled = false;
|
|
@@ -47866,7 +48042,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
47866
48042
|
engine.logger.debug("State saved after deployment failure");
|
|
47867
48043
|
if (autoRollbackClean) await settleNestedChildrenAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackSettledNested, await settleJournalAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackRemainingFailedOps, initialDeploy));
|
|
47868
48044
|
} catch (saveError) {
|
|
47869
|
-
engine.logger.debug(safeMsg`Retrying state save after rollback (ETag mismatch): ${asIsMessage(
|
|
48045
|
+
engine.logger.debug(safeMsg`Retrying state save after rollback (ETag mismatch): ${asIsMessage(describeAwsFailure(saveError).detail)}`);
|
|
47870
48046
|
try {
|
|
47871
48047
|
const freshEtag = (await engine.stateBackend.getState(stackName, engine.stackRegion))?.etag;
|
|
47872
48048
|
const postRollbackState = {
|
|
@@ -47885,7 +48061,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
47885
48061
|
engine.logger.debug("State saved after deployment failure (retry succeeded)");
|
|
47886
48062
|
if (autoRollbackClean) await settleNestedChildrenAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackSettledNested, await settleJournalAfterCleanRollback(engine.rollbackDeps(), stackName, rollbackRemainingFailedOps, initialDeploy));
|
|
47887
48063
|
} catch (retryError) {
|
|
47888
|
-
engine.logger.warn(safeMsg`Failed to save state after rollback: ${asIsMessage(
|
|
48064
|
+
engine.logger.warn(safeMsg`Failed to save state after rollback: ${asIsMessage(describeAwsFailure(retryError).detail)}`);
|
|
47889
48065
|
}
|
|
47890
48066
|
}
|
|
47891
48067
|
throw error;
|
|
@@ -47940,13 +48116,13 @@ async function persistStateAfterOutputFailure(engine, stackName, currentState, n
|
|
|
47940
48116
|
});
|
|
47941
48117
|
engine.logger.debug("State saved after output resolution failure");
|
|
47942
48118
|
} catch (saveError) {
|
|
47943
|
-
engine.logger.debug(safeMsg`Retrying state save after output resolution failure (ETag mismatch): ${asIsMessage(
|
|
48119
|
+
engine.logger.debug(safeMsg`Retrying state save after output resolution failure (ETag mismatch): ${asIsMessage(describeAwsFailure(saveError).detail)}`);
|
|
47944
48120
|
try {
|
|
47945
48121
|
const freshEtag = (await engine.stateBackend.getState(stackName, engine.stackRegion))?.etag;
|
|
47946
48122
|
await engine.stateBackend.saveState(stackName, engine.stackRegion, engine.withParentInfo(buildState()), { ...freshEtag !== void 0 && { expectedEtag: freshEtag } });
|
|
47947
48123
|
engine.logger.debug("State saved after output resolution failure (retry succeeded)");
|
|
47948
48124
|
} catch (retryError) {
|
|
47949
|
-
engine.logger.warn(safeMsg`Failed to save state after output resolution failure: ${asIsMessage(
|
|
48125
|
+
engine.logger.warn(safeMsg`Failed to save state after output resolution failure: ${asIsMessage(describeAwsFailure(retryError).detail)} — resources were provisioned but not recorded; run deploy again to reconcile.`);
|
|
47950
48126
|
}
|
|
47951
48127
|
}
|
|
47952
48128
|
}
|
|
@@ -48282,7 +48458,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
|
|
|
48282
48458
|
else if (healedAttributesPending) engine.logger.debug("Persisted attributes re-read from AWS for a stale record (no-change path)");
|
|
48283
48459
|
else engine.logger.debug("Persisted skipped-outputs record (no outputs-value diff, no-change path)");
|
|
48284
48460
|
} catch (saveError) {
|
|
48285
|
-
engine.logger.warn(safeMsg`Failed to persist no-change state update: ${asIsMessage(
|
|
48461
|
+
engine.logger.warn(safeMsg`Failed to persist no-change state update: ${asIsMessage(describeAwsFailure(saveError).detail)} — drift baseline / outputs will be re-resolved on next deploy.`);
|
|
48286
48462
|
}
|
|
48287
48463
|
}
|
|
48288
48464
|
return {
|
|
@@ -48441,7 +48617,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
|
|
|
48441
48617
|
await engine.lockManager.releaseLock(stackName, engine.stackRegion);
|
|
48442
48618
|
engine.logger.debug("Lock released");
|
|
48443
48619
|
} catch (lockError) {
|
|
48444
|
-
engine.logger.warn(safeMsg`Failed to release lock: ${asIsMessage(
|
|
48620
|
+
engine.logger.warn(safeMsg`Failed to release lock: ${asIsMessage(describeAwsFailure(lockError).detail)}`);
|
|
48445
48621
|
}
|
|
48446
48622
|
}
|
|
48447
48623
|
}
|
|
@@ -48703,7 +48879,8 @@ var DeployEngine = class {
|
|
|
48703
48879
|
for (const [logicalId, record] of Object.entries(state.resources)) {
|
|
48704
48880
|
const secrets = this.secretsRun.perResourceSecrets.get(logicalId);
|
|
48705
48881
|
const templateProps = this.secretsRun.perResourceTemplateProps.get(logicalId);
|
|
48706
|
-
const
|
|
48882
|
+
const healed = this.attributeHealer.withHealedAttributes(logicalId, record);
|
|
48883
|
+
const scrubbed = scrubResourceRecord(healed, secrets ?? /* @__PURE__ */ new Map(), templateProps, void 0, sameGenerationClaimsOf(healed));
|
|
48707
48884
|
const noEchoScrubbed = applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), logicalId, record, withNoEchoExactEchoes(this.noEchoRun, logicalId, scrubbed), templateProps, state.resources, secrets);
|
|
48708
48885
|
resources[logicalId] = withReferenceProvenance(withConstructPath(withMaskedPropertyFingerprints(noEchoScrubbed, record.properties, templateProps, secrets, this.secretsRun.fingerprintNoEchoValues, this.secretsRun.perResourceInputFingerprints.get(logicalId)), constructPathOf(this.noEchoRun.constructPathTemplate, logicalId)), this.referenceProvenanceToPersist(logicalId, record, noEchoScrubbed, secrets));
|
|
48709
48886
|
}
|
|
@@ -48712,7 +48889,7 @@ var DeployEngine = class {
|
|
|
48712
48889
|
const orphanTemplateProps = sameResource ? this.secretsRun.perResourceTemplateProps.get(entry.logicalId) : void 0;
|
|
48713
48890
|
return {
|
|
48714
48891
|
...entry,
|
|
48715
|
-
state: withMaskedPropertyFingerprints(applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), entry.logicalId, entry.state, scrubResourceRecord(entry.state, (sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0) ?? /* @__PURE__ */ new Map(), orphanTemplateProps), orphanTemplateProps, state.resources), entry.state.properties, orphanTemplateProps, sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0, sameResource ? this.secretsRun.fingerprintNoEchoValues : void 0, sameResource ? this.secretsRun.perResourceInputFingerprints.get(entry.logicalId) : void 0)
|
|
48892
|
+
state: withMaskedPropertyFingerprints(applyNoEchoPersist(this.noEchoRun, this.noEchoDeps(), entry.logicalId, entry.state, scrubResourceRecord(entry.state, (sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0) ?? /* @__PURE__ */ new Map(), orphanTemplateProps, void 0, sameGenerationClaimsOf(entry.state)), orphanTemplateProps, state.resources), entry.state.properties, orphanTemplateProps, sameResource ? this.secretsRun.perResourceSecrets.get(entry.logicalId) : void 0, sameResource ? this.secretsRun.fingerprintNoEchoValues : void 0, sameResource ? this.secretsRun.perResourceInputFingerprints.get(entry.logicalId) : void 0)
|
|
48716
48893
|
};
|
|
48717
48894
|
});
|
|
48718
48895
|
const outputs = redactOutputs(this.maskingDeps(), state.outputs);
|
|
@@ -48765,7 +48942,10 @@ var DeployEngine = class {
|
|
|
48765
48942
|
redactCrossStackReads(state) {
|
|
48766
48943
|
if (state.imports === void 0 && state.outputReads === void 0) return {};
|
|
48767
48944
|
const secrets = allRecordedSecrets(this.secretsRun, this.maskingDeps());
|
|
48768
|
-
const redact = (value) =>
|
|
48945
|
+
const redact = (value) => redactForState(value, {
|
|
48946
|
+
provenance: "value-scan",
|
|
48947
|
+
secrets
|
|
48948
|
+
});
|
|
48769
48949
|
return {
|
|
48770
48950
|
...state.imports === void 0 ? {} : { imports: state.imports.map((entry) => ({
|
|
48771
48951
|
...entry,
|
|
@@ -48782,7 +48962,10 @@ var DeployEngine = class {
|
|
|
48782
48962
|
absorbOutputsPassSecrets(this.maskingDeps());
|
|
48783
48963
|
const secrets = allRecordedSecrets(this.secretsRun, this.maskingDeps());
|
|
48784
48964
|
if (secrets.size === 0) return (name) => name;
|
|
48785
|
-
return (name) =>
|
|
48965
|
+
return (name) => redactForState(name, {
|
|
48966
|
+
provenance: "value-scan",
|
|
48967
|
+
secrets
|
|
48968
|
+
});
|
|
48786
48969
|
}
|
|
48787
48970
|
withParentInfo(state) {
|
|
48788
48971
|
const redacted = this.redactStateForPersist(state);
|
|
@@ -48857,7 +49040,13 @@ var DeployEngine = class {
|
|
|
48857
49040
|
return maskingRetryLogger(this.logger, secrets);
|
|
48858
49041
|
}
|
|
48859
49042
|
};
|
|
49043
|
+
function sameGenerationClaimsOf(record) {
|
|
49044
|
+
return {
|
|
49045
|
+
properties: isSameGenerationBag(record.properties) ? "same-generation" : "unproven",
|
|
49046
|
+
observed: isSameGenerationBag(record.observedProperties) ? "same-generation" : "unproven"
|
|
49047
|
+
};
|
|
49048
|
+
}
|
|
48860
49049
|
|
|
48861
49050
|
//#endregion
|
|
48862
|
-
export { resolvePendingCloudControlRequests as $, repairMalformedOutputsForReadOnly as $a, redactedDockerCause as $c, accountArgs as $i, buildFinalSnapshotIdentifier as $n, readbackPathFor as $o, DiffCalculator as $r, S3StateBackend as $s, namesAnyDeclaredParameter as $t, findServiceTokenRefusals as A, refuseMalformedOrphanRecordsForDestroy as Aa, assertAssetBucketRegion as Ac, coerceParameterTypedValue as Ai, expectedOwnerParam as Al, gray as An, replayWarn as Ao, isCustomResourceType as Ar, inheritNestedStackParameterAssociations as As, removeProtectionTypeList as At, parentSuppliedValues as B, refuseMalformedResourceEntriesForImport as Ba, resolveDockerContextDirectory as Bc, cfnRefValueFromPhysicalId as Bi, nullPrototypeRecord as Bl, journaledOrphanPrintingBag as Bn, sameLambdaFunctionAddress as Bo, UNSPECIFIED_SKIP_REASON as Br, recordMaskOnlyValuesIn as Bs, resolveReplacementOldType as Bt, getPriorAttempts as C, malformedResourcesWarning as Ca, WorkGraph as Cc, applyCallerIdentityCredentials as Ci, CFN_TEMPLATE_BODY_LIMIT as Cl, awaitInFlightSibling as Cn, toFiniteNumber as Co, ProviderRegistry as Cr, withPhysicalNameCopies as Cs, formatResourceLine as Ct, crossStackOutputProvenanceSource as D, refuseDivergentRecordRegionForDestroy as Da, rewriteTemplateAssetReferences as Dc, classifyReplaySecretRegion as Di, uploadCfnTemplate as Dl, replacedDeleteFailureVerdict as Dn, configIntegerRefusal as Do, waitForLambdaFunctionActive as Dr, isUncertifiedBaselineMaskPosition as Ds, withApiLimit as Dt, computeImplicitDeleteEdges as E, previewableOrphanRecords as Ea, loadPublishableAssetManifest as Ec, classifyRecordedSecretRegion as Ei, findLargeInlineResources as El, withStackRecords as En, configBooleanRefusal as Eo, wouldReturnToSdkProvider as Er, dynamicReferenceTokens as Es, lookupEachName as Et, listNestedTemplateRows as F, refuseMalformedOutputsForDestroy as Fa, readBootstrapMarkerBody as Fc, carriesDynamicReference as Fi, StageLoadError as Fl, noEchoComparisonForTemplate as Fn, templateResourceTypes as Fo, customResourceResponseExpirationWarning as Fr, recordPhysicalNameCopy as Fs, planFailedOps as Ft, keptWholeReasonText as G, refuseMalformedResourcePropertiesForExport as Ga, finchSecretArgvRefusal as Gc, parameterInputsFor as Gi, renderAssemblyPathEscape as Gl, secretNamePrintingBags as Gn, maskAtCoordinates as Go, isWaitAbandonedError as Gr, STATE_SOURCED_BASELINE_RULES as Gs, inheritProducerRegions as Gt, withResourceDeadline as H, refuseMalformedResourceEntriesForOrphan as Ha, describeDockerExecFailure as Hc, refStateLookupFromResource as Hi, absoluteAssemblyPathEscape as Hl, namingSecretsWithRecordedNoEcho as Hn, TemplateParser as Ho, deleteLeftInPlace as Hr, recordNoEchoParameterFreshValue as Hs, orphanNeedsIdentity as Ht, renderNestedTemplateTreeDefect as I, refuseMalformedResourceAttributesForOrphan as Ia, validateAssetBucketName as Ic, carriesFetchableDynamicReference as Ii, processStackMessages as Il, noEchoExactEchoLeavesOf as In, describeTypeWithThrottleRetry as Io, CloudControlProvider as Ir, splitGetAttStringForm as Is, planRollback as It, makeSiblingClaimReader as J, refuseMalformedResourcesForDestroy as Ja, isDockerClientEnvKey as Jc, JSON_LISTING_HOLE_VALUE as Ji, injectedAwsRegionValue as Jl, stateSecretNameNeedles as Jn, maskedLeafCoordinatesOf as Jo, ec2InstanceProtectionSite as Jr, TEMPLATE_SOURCED_RULES as Js, redactedDeleteAddressFields as Jt, mergeNoChangeOutputs as K, refuseMalformedResourcePropertiesForOrphan as Ka, formatDockerLoginError as Kc, passedParameterClassesOf as Ki, resolveAssemblyPath as Kl, secretNamedAttributeNamesOf as Kn, maskReadbackAtCoordinates as Ko, markWaitAbandoned as Kr, STATE_SOURCED_CROSS_GENERATION_RULES as Ks, REDACTED_DELETE_ADDRESS_SKIP_REASON as Kt, templateIdentity as L, refuseMalformedResourceEntries as La, validateContainerRepoName as Lc, isNamelessDynamicReferenceError as Li, defineOwnKey as Ll, noEchoParameterNamesOf as Ln, withRetry as Lo, slowCcOperationTimeoutMs as Lr, carriesSecretMask as Ls, recheckFailedPlan as Lt, childTemplateLoader as M, refuseMalformedOrphansForDestroy as Ma, getBootstrapMarkerKey as Mc, parameterTypeMayLoseSecretIdentity as Mi, canonicalizeRegion as Ml, red as Mn, requireConfigObject as Mo, withPrintingSecrets as Mr, recoverMaskedOutput as Ms, demoteSupersededOrphans as Mt, findNestedTemplateTreeDefect as N, refuseMalformedOrphansForOrphan as Na, isCrossRegionRedirect as Nc, getAccountInfo as Ni, derivePartitionAndUrlSuffix as Nl, yellow as Nn, requireConfigString as No, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Nr, physicalNameCopiesOf as Ns, isJournaledOrphan as Nt, inheritedProvenanceForChildDiff as O, refuseMalformedNestedChildOutputs as Oa, AssetModeResolver as Oc, producerRegionsFromState as Oi, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ol, bold as On, configStringRefusal as Oo, TemplateNoEchoReresolver as Or, pathCrossesDottedKey as Os, replayFailedOperations as Ot, isAbsoluteAssetPath as P, refuseMalformedOutputs as Pa, parseBootstrapMarker as Pc, isImpossibleEmptyStoredAttribute as Pi, AssemblyReader as Pl, noEchoAttributeNamesOf as Pn, prefetchCreateOnlyPropertyPaths as Po, applyCustomResourceResponseExpiration as Pr, recordAttributeIdCopy as Ps, isReplacementOrphan as Pt, pendingRequestCount as Q, repairMalformedOrphansForReadOnly as Qa, redactedCause as Qc, UNREADABLE_RESOURCES_MAP_ROW as Qi, PRE_DELETE_SNAPSHOT_TYPES as Qn, passedNoEchoParametersOf as Qo, reEnableInstanceApiTermination as Qr, isLockInfoExpired as Qs, computeParameterTaint as Qt, conditionFingerprint as R, refuseMalformedResourceEntriesForDeploy as Ra, buildDenyExternalAccessPolicy as Rc, keepsSecretReferenceToken as Ri, hasOwnKey as Rl, createReadOnlyAttributeHealerFactory as Rn, canonicalLambdaFunctionName as Ro, unchangedBehindSecretReference as Rr, provenPublicValue as Rs, recordUnderIdIsNotOwn as Rt, isTruthyCfnBoolean as S, malformedResourcePropertiesWarning as Sa, stringifyValue as Sc, AWS_CREDENTIAL_ENV_KEYS as Si, ssmResolvedValueType as Sl, formatDestructiveChange as Sn, toCfnInteger as So, CC_BROKEN_REASON as Sr, scrubResourceRecord as Ss, sameJournaledOrphans as St, IMPLICIT_DELETE_DEPENDENCIES as T, malformedStateRefusalMessage as Ta, createAssetRedirectResolver as Tc, envCredentialsAreAssumedRole as Ti, MIGRATE_TMP_PREFIX as Tl, getStackRecords as Tn, coerceCfnInteger as To, isCustomResource as Tr, DYNAMIC_REFERENCE_TOKEN_SCAN as Ts, isAccessDeniedError as Tt, diffSecurity as U, refuseMalformedResourcePropertiesForDestroy as Ua, describeDockerFailure as Uc, parseWebACLArn as Ui, describeFileReadFailure as Ul, orphanRecordsPrintingBag as Un, canonicalCoordinates as Uo, deleteSkipReason as Ur, recordProvenPublicExpression as Us, findNestedStackTypeChanges as Ut, readRecordedConditionVerdicts as V, refuseMalformedResourceEntriesForImportSave as Va, describeDockerCapturedOutput as Vc, isStalePlaceholderArnAttribute as Vi, ownValue as Vl, maskEventTextWithBoundBags as Vn, DagBuilder as Vo, deleteIndeterminateGuards as Vr, recordNoEchoAttributeValues as Vs, seedsDeleteFirstGuard as Vt, isSecretBearingReferenceString as W, refuseMalformedResourcePropertiesForDrift as Wa, dockerSpawnEnvWithSensitive as Wc, withSharedDrainBudget as Wi, displayAssemblyPath as Wl, secretNamePrintingBag as Wn, isMarkedCoordinate as Wo, withIndeterminateGuard as Wr, wholeStringLeavesOf as Ws, getCurrentProducerRegions as Wt, DeploymentEventsReader as X, refuseMalformedState as Xa, partitionSensitiveEnv as Xc, STATE_RESOURCES_MALFORMED as Xi, resolveBucketRegion as Xl, extractDeploymentEventError as Xn, noEchoLeavesOf as Xo, observeThenDisableInstanceApiTermination as Xr, isSingleDynamicReferenceToken as Xs, updatePartialMessage as Xt, planOrphanAdoption as Y, refuseMalformedResourcesForExport as Ya, isMalformedEnvKey as Yc, STATE_REGION_DIVERGED as Yi, clearBucketRegionCache as Yl, storedSecretNameNeedles as Yn, noEchoCoordinatesOf as Yo, isTerminationProtectionPropagationError as Yr, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ys, redactedDeleteAddressSkip as Yt, DeploymentEventsStore as Z, repairMalformedOrphanRecordsForReadOnly as Za, redactDockerArgvValues as Zc, UNREADABLE_ORPHANS_CONTAINER_ROW as Zi, ATOMIC_FINAL_SNAPSHOT_TYPES as Zn, noEchoOutputsComparison as Zo, reDisableInstanceApiTermination as Zr, LockManager as Zs, updatePartialReason as Zt, deleteTableWithIndexBusyRetry as _, malformedOrphansWarning as _a, orphansAfterRollback as _c, assertFlagRoleArn as _i, resolveStateBucketWithDefault as _l, DEFAULT_RESOURCE_TIMEOUT_MS as _n, isStatefulRecreateTargetSync as _o, refuseMalformedDesiredTags as _r, maskSecretsInText as _s, dropFailedHint as _t, isProtectionValueActive as a, isReadableOrphanRecord as aa, isAccessDenied$1 as ac, s3BucketDomainName as ai, stripForDisplay as al, secretBearing as an, unreadableResourceEntries as ao, unsupportedFinalSnapshotError as ar, createUnionSecretMasker as as, dropSettledNestedJournals as at, S3_AUTO_DELETE_OBJECTS_TAG as b, malformedRenderedContainersWarning as ba, AssetPublisher as bc, isIamRoleArn as bi, stateBucketExistenceConfirmed as bl, constructPathOf as bn, coerceWarmThroughput as bo, definedAttributes as br, snapshotPassProvenance as bs, loadJournaledOrphans as bt, DynamoDBGlobalTableProvider as c, malformedExportNamesWarning as ca, acceptedCreateOnlyDropsOf as cc, s3BucketWebsiteUrl as ci, Synthesizer as cl, carriedExportAliasExposure as cn, findSilentDropProperties as co, reserveStackCreateToken as cr, logOnlyValueCount as cs, recordDisplacedSkips as ct, compensateRemovedDeletionProtection as d, malformedLocalResourceEntriesWarning as da, hasReadableExportSet as dc, refuseUnreadableCdkCrossAccountRefs as di, getLegacyStateBucketName as dl, isWholeDynamicReferenceValue as dn, NO_CC_HANDLERS_REASON as do, isRefusedByName as dr, recordLogOnlyValue as ds, withNestedRevertRun as dt, deployRefusesOrphanRowsReason as ea, rebuildClientForBucketRegion as ec, INTRINSIC_KEYS as ei, runDockerForeground as el, reachableDivergentParameters as en, repairMalformedResourceEntriesForReadOnly as eo, ccRoutedFinalSnapshotError as er, readsNoEchoSource as es, keptForReadoption as et, deleteBudgetKey as f, malformedLocalResourcesWarning as fa, hasReasonlessBaselineRefusal as fc, keepHeldTokenProvenance as fi, loadCdkJson as fl, noEchoParameterValueSeed as fn, hasNoCloudControlHandlers as fo, markDeleteStarted as fr, shareLogOnlyValues as fs, collectNestedChildUnaddressed as ft, INDEX_SETTLE_POLL_INTERVAL_MS as g, malformedOrphansRefusalMessage as ga, isReadableBag as gc, applyRoleArnIfSet as gi, resolveSkipPrefix as gl, bindingSkippedOutputs as gn, isStatefulRecreateTargetForReplace as go, readTagList as gr, maskSecretsInError as gs, dropFailedCommands as gt, DELETE_INDEX_WAIT_PROCEED_NOTE as h, malformedOrphanRowsKeptWarning as ha, importableOutputs as hc, recordedReferenceRegions as hi, resolveCaptureObservedState as hl, isExportAliasCollision as hn, MULTI_REGION_RECREATE_BLOCKED_TYPES as ho, planTagDiff as hr, errorCauseChain as hs, deleteJournaledOrphans as ht, PROTECTION_PROPERTY_BY_TYPE as i, hasReadableResources as ia, crossPrefixDeniedWarning as ic, s3BucketArn as ii, stripControlChars as il, exportAliasCollisionScrubWarning as in, unreadableOrphanRecords as io, refusesFinalSnapshot as ir, carryLogOnlyValues as is, displacedPhysicalIdShown as it, serviceTokenBlockingReason as j, refuseMalformedOrphans as ja, ensureAssetStorage as jc, isUnboundTemplateParameter as ji, PARTITION_TABLE as jl, green as jn, requireConfigArray as jo, getCurrentResourceSecrets as jr, recordNestedStackParameterExpressions as js, recordAfterRollbackUpdate as jt, deferredServiceTokenWarning as k, refuseMalformedOrphanRecords as ka, BOOTSTRAP_MARKER_PREFIX as kc, regionLessSecretName as ki, decodeListingKey as kl, cyan as kn, readConfigString as ko, readsNoEchoDeleteValues as kr, identityKeyFor as ks, replayRollback as kt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, malformedExportSourceWarning as la, describeRegionValueKind as lc, resolveDynamicReferences as li, synthesisStatusMessage as ll, exportNameNoEchoParameters as ln, unwrittenCreateOnlyReplacement as lo, withCreateTokenLedger as lr, printingCorpusOf as ls, revertNestedChildFromJournal as lt, resolveDynamoDbDeleteBudgetMs as m, malformedOrphanRecordsWarning as ma, importableOutputKeys as mc, recordedOutputReferenceRegions as mi, resolveAutoAssetStorage as ml, collectPublishedOutputNames as mn, shownType as mo, DBPROXY_TAG_OPTIONS as mr, createSecretMasker as ms, withNestedStackContext as mt, recordedProtectionEvidence as n, hasReadableOrphans as na, CrossPrefixScanCache as nc, poisonRenderedSpellingsCollidingIn as ni, warnFinchArgvExposure as nl, WITHHELD_NAME_DISPLAY as nn, repairMalformedResourcesForReadOnly as no, effectiveDeletionPolicy as nr, valueAtCoordinate as ns, NESTED_PENDING_PARENT_REASON as nt, perType as o, isReadableResourceEntry as oa, isNotImplemented as oc, s3BucketDualStackDomainName as oi, AssetManifestLoader as ol, secretBearingStateKeyWarning as on, withheldAccountClause as oo, earliestDefined as or, hasMaskableValues as os, getNestedRevertRun as ot, resolveDynamoDbDeleteBudgetClock as p, malformedOrphanRecordsRefusalMessage as pa, hasUnverifiableParameterRefusal as pc, outputReferenceProvenanceOf as pi, resolveApp as pl, collectDeclaredOutputNames as pn, findReplacedReadersOfRecreateTargets as po, DBPROXY_TAGS_WHAT as pr, unionOfSecretBags as ps, getCurrentNestedStackContext as pt, makeCanonicalizePropertiesFn as q, refuseMalformedResourcesForDeploy as qa, getDockerCmd as qc, declaresNoEcho as qi, injectAwsRegion as ql, secretNamedRecordNeedles as qn, maskWholeValue as qo, disableInstanceApiTermination as qr, STATE_SOURCED_READBACK_RULES as qs, isRedactedRecordedValue as qt, recordedProtectionNote as r, hasReadableOutputs as ra, applyCrossPrefixScan as rc, isSettledInstanceState as ri, escapeRegExp$3 as rl, displayTextOrWithheld as rn, unpreviewableOrphanRecords as ro, isFinalSnapshotError as rr, liveMatchesUnresolvedTokenFrame as rs, displacedOpClause as rt, readProtection as s, malformedDriftResourcePropertiesWarning as sa, splitImportedOps as sc, s3BucketRegionalDomainName as si, getDockerImageBySourceHash as sl, secretSafeKeyDisplay as sn, findActionableSilentDrops as so, ledgerForStack as sr, literalSplitDelimitersOf as ss, nestedChildStackName as st, DeployEngine as t, displayLogicalId as ta, CrossPrefixReadError as tc, IntrinsicFunctionResolver as ti, runDockerStreaming as tl, resourcesNamingDeclaredParameter as tn, repairMalformedResourcePropertiesForReadOnly as to, createPreDeleteFinalSnapshot as tr, recordedNoEchoValuesOf as ts, recordRetainedForReadoption as tt, beginDeleteWait as u, malformedLocalOutputsWarning as ua, exportNamesCarriedFrom as uc, producerLookupOver as ui, getDefaultStateBucketName as ul, exportNameSecretExposure as un, withoutSilentDropProperties as uo, acquireIdempotencyToken as ur, recordLogOnlyParameterValue as us, revertedNestedRowIds as ut, waitForIndexesSettled as v, malformedOutputsRefusalMessage as va, orphansCarriedFrom as vc, assertSendableRoleArn as vi, resolveStateBucketWithDefaultAndSource as vl, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, renderStatefulReason as vo, tagMapAsList as vr, markSameGenerationBag as vs, isHandledOrphan as vt, markRefusedBeforeApplying as w, malformedScrubResourceEntriesRefusalMessage as wa, buildAssetRedirectMap as wc, callerEnvCredentials as wi, CFN_TEMPLATE_URL_LIMIT as wl, destroyStackRecordsView as wn, coerceCfnBoolean as wo, ccBrokenReason as wr, withoutPhysicalNameCopies as ws, chunks as wt, hasCdkAutoDeleteTag as x, malformedResourceEntriesWarning as xa, isSensitiveAttributeName as xc, sendableAssumeRoleCommand as xi, warnDeprecatedNoPrefixCliFlag as xl, findDestructiveChanges as xn, isWarmThroughputDecrease as xo, stringifyIfAssigned as xr, redactSecretsForState as xs, makeForeignHolderScan as xt, ECR_AUTO_DELETE_IMAGES_TAG as y, malformedOutputsWarning as ya, shouldRetainResource as yc, explicitRoleArnOrThrow as yi, resolveUseCdkBootstrapAssets as yl, maskingRetryLogger as yn, WARM_THROUGHPUT_MEMBERS as yo, tagPlanWarning as yr, recordReferenceProvenanceEntry as ys, journaledOrphanLines as yt, conditionInputsFrom as z, refuseMalformedResourceEntriesForDestroy as za, buildDockerImage as zc, AWS_NO_VALUE as zi, hasPlainPrototype$1 as zl, completedReplayEntries as zn, lambdaFunctionNameForMask as zo, RollbackInlinePolicyWriters as zr, recordMaskOnlyValue as zs, replacementNeverSwapped as zt };
|
|
48863
|
-
//# sourceMappingURL=deploy-engine-
|
|
49051
|
+
export { resolvePendingCloudControlRequests as $, repairMalformedOutputsForReadOnly as $a, escapeRegExp$3 as $c, accountArgs as $i, buildFinalSnapshotIdentifier as $n, readbackPathFor as $o, DiffCalculator as $r, applyCrossPrefixScan as $s, namesAnyDeclaredParameter as $t, findServiceTokenRefusals as A, refuseMalformedOrphanRecordsForDestroy as Aa, parseBootstrapMarker as Ac, coerceParameterTypedValue as Ai, AssemblyReader as Al, gray as An, replayWarn as Ao, isCustomResourceType as Ar, inheritNestedStackParameterAssociations as As, removeProtectionTypeList as At, parentSuppliedValues as B, refuseMalformedResourceEntriesForImport as Ba, dockerSpawnEnvWithSensitive as Bc, cfnRefValueFromPhysicalId as Bi, displayAssemblyPath as Bl, journaledOrphanPrintingBag as Bn, sameLambdaFunctionAddress as Bo, UNSPECIFIED_SKIP_REASON as Br, recordMaskOnlyValuesIn as Bs, resolveReplacementOldType as Bt, getPriorAttempts as C, malformedResourcesWarning as Ca, rewriteTemplateAssetReferences as Cc, applyCallerIdentityCredentials as Ci, uploadCfnTemplate as Cl, awaitInFlightSibling as Cn, toFiniteNumber as Co, ProviderRegistry as Cr, withPhysicalNameCopies as Cs, formatResourceLine as Ct, crossStackOutputProvenanceSource as D, refuseDivergentRecordRegionForDestroy as Da, ensureAssetStorage as Dc, classifyReplaySecretRegion as Di, PARTITION_TABLE as Dl, replacedDeleteFailureVerdict as Dn, configIntegerRefusal as Do, waitForLambdaFunctionActive as Dr, isUncertifiedBaselineMaskPosition as Ds, withApiLimit as Dt, computeImplicitDeleteEdges as E, previewableOrphanRecords as Ea, assertAssetBucketRegion as Ec, classifyRecordedSecretRegion as Ei, expectedOwnerParam as El, withStackRecords as En, configBooleanRefusal as Eo, wouldReturnToSdkProvider as Er, dynamicReferenceTokens as Es, lookupEachName as Et, listNestedTemplateRows as F, refuseMalformedOutputsForDestroy as Fa, buildDockerImage as Fc, carriesDynamicReference as Fi, hasPlainPrototype$1 as Fl, noEchoComparisonForTemplate as Fn, templateResourceTypes as Fo, customResourceResponseExpirationWarning as Fr, recordPhysicalNameCopy as Fs, planFailedOps as Ft, keptWholeReasonText as G, refuseMalformedResourcePropertiesForExport as Ga, isMalformedEnvKey as Gc, parameterInputsFor as Gi, clearBucketRegionCache as Gl, secretNamePrintingBags as Gn, maskAtCoordinates as Go, isWaitAbandonedError as Gr, WHOLE_DYNAMIC_REFERENCE_PATTERN as Gs, inheritProducerRegions as Gt, withResourceDeadline as H, refuseMalformedResourceEntriesForOrphan as Ha, formatDockerLoginError as Hc, refStateLookupFromResource as Hi, resolveAssemblyPath as Hl, namingSecretsWithRecordedNoEcho as Hn, TemplateParser as Ho, deleteLeftInPlace as Hr, recordNoEchoParameterFreshValue as Hs, orphanNeedsIdentity as Ht, renderNestedTemplateTreeDefect as I, refuseMalformedResourceAttributesForOrphan as Ia, resolveDockerContextDirectory as Ic, carriesFetchableDynamicReference as Ii, nullPrototypeRecord as Il, noEchoExactEchoLeavesOf as In, describeTypeWithThrottleRetry as Io, CloudControlProvider as Ir, splitGetAttStringForm as Is, planRollback as It, makeSiblingClaimReader as J, refuseMalformedResourcesForDestroy as Ja, redactedCause as Jc, JSON_LISTING_HOLE_VALUE as Ji, stateSecretNameNeedles as Jn, maskedLeafCoordinatesOf as Jo, ec2InstanceProtectionSite as Jr, isLockInfoExpired as Js, redactedDeleteAddressFields as Jt, mergeNoChangeOutputs as K, refuseMalformedResourcePropertiesForOrphan as Ka, partitionSensitiveEnv as Kc, passedParameterClassesOf as Ki, resolveBucketRegion as Kl, secretNamedAttributeNamesOf as Kn, maskReadbackAtCoordinates as Ko, markWaitAbandoned as Kr, isSingleDynamicReferenceToken as Ks, REDACTED_DELETE_ADDRESS_SKIP_REASON as Kt, templateIdentity as L, refuseMalformedResourceEntries as La, describeDockerCapturedOutput as Lc, isNamelessDynamicReferenceError as Li, ownValue as Ll, noEchoParameterNamesOf as Ln, withRetry as Lo, slowCcOperationTimeoutMs as Lr, carriesSecretMask as Ls, recheckFailedPlan as Lt, childTemplateLoader as M, refuseMalformedOrphansForDestroy as Ma, validateAssetBucketName as Mc, parameterTypeMayLoseSecretIdentity as Mi, processStackMessages as Ml, red as Mn, requireConfigObject as Mo, withPrintingSecrets as Mr, recoverMaskedOutput as Ms, demoteSupersededOrphans as Mt, findNestedTemplateTreeDefect as N, refuseMalformedOrphansForOrphan as Na, validateContainerRepoName as Nc, getAccountInfo as Ni, defineOwnKey as Nl, yellow as Nn, requireConfigString as No, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Nr, physicalNameCopiesOf as Ns, isJournaledOrphan as Nt, inheritedProvenanceForChildDiff as O, refuseMalformedNestedChildOutputs as Oa, getBootstrapMarkerKey as Oc, producerRegionsFromState as Oi, canonicalizeRegion as Ol, bold as On, configStringRefusal as Oo, TemplateNoEchoReresolver as Or, pathCrossesDottedKey as Os, replayFailedOperations as Ot, isAbsoluteAssetPath as P, refuseMalformedOutputs as Pa, buildDenyExternalAccessPolicy as Pc, isImpossibleEmptyStoredAttribute as Pi, hasOwnKey as Pl, noEchoAttributeNamesOf as Pn, prefetchCreateOnlyPropertyPaths as Po, applyCustomResourceResponseExpiration as Pr, recordAttributeIdCopy as Ps, isReplacementOrphan as Pt, pendingRequestCount as Q, repairMalformedOrphansForReadOnly as Qa, warnFinchArgvExposure as Qc, UNREADABLE_RESOURCES_MAP_ROW as Qi, PRE_DELETE_SNAPSHOT_TYPES as Qn, passedNoEchoParametersOf as Qo, reEnableInstanceApiTermination as Qr, CrossPrefixScanCache as Qs, computeParameterTaint as Qt, conditionFingerprint as R, refuseMalformedResourceEntriesForDeploy as Ra, describeDockerExecFailure as Rc, keepsSecretReferenceToken as Ri, absoluteAssemblyPathEscape as Rl, createReadOnlyAttributeHealerFactory as Rn, canonicalLambdaFunctionName as Ro, unchangedBehindSecretReference as Rr, provenPublicValue as Rs, recordUnderIdIsNotOwn as Rt, isTruthyCfnBoolean as S, malformedResourcePropertiesWarning as Sa, loadPublishableAssetManifest as Sc, AWS_CREDENTIAL_ENV_KEYS as Si, findLargeInlineResources as Sl, formatDestructiveChange as Sn, toCfnInteger as So, CC_BROKEN_REASON as Sr, scrubResourceRecord as Ss, sameJournaledOrphans as St, IMPLICIT_DELETE_DEPENDENCIES as T, malformedStateRefusalMessage as Ta, BOOTSTRAP_MARKER_PREFIX as Tc, envCredentialsAreAssumedRole as Ti, decodeListingKey as Tl, getStackRecords as Tn, coerceCfnInteger as To, isCustomResource as Tr, DYNAMIC_REFERENCE_TOKEN_SCAN as Ts, isAccessDeniedError as Tt, diffSecurity as U, refuseMalformedResourcePropertiesForDestroy as Ua, getDockerCmd as Uc, parseWebACLArn as Ui, injectAwsRegion as Ul, orphanRecordsPrintingBag as Un, canonicalCoordinates as Uo, deleteSkipReason as Ur, recordProvenPublicExpression as Us, findNestedStackTypeChanges as Ut, readRecordedConditionVerdicts as V, refuseMalformedResourceEntriesForImportSave as Va, finchSecretArgvRefusal as Vc, isStalePlaceholderArnAttribute as Vi, renderAssemblyPathEscape as Vl, maskEventTextWithBoundBags as Vn, DagBuilder as Vo, deleteIndeterminateGuards as Vr, recordNoEchoAttributeValues as Vs, seedsDeleteFirstGuard as Vt, isSecretBearingReferenceString as W, refuseMalformedResourcePropertiesForDrift as Wa, isDockerClientEnvKey as Wc, withSharedDrainBudget as Wi, injectedAwsRegionValue as Wl, secretNamePrintingBag as Wn, isMarkedCoordinate as Wo, withIndeterminateGuard as Wr, wholeStringLeavesOf as Ws, getCurrentProducerRegions as Wt, DeploymentEventsReader as X, refuseMalformedState as Xa, runDockerForeground as Xc, STATE_RESOURCES_MALFORMED as Xi, extractDeploymentEventError as Xn, noEchoLeavesOf as Xo, observeThenDisableInstanceApiTermination as Xr, rebuildClientForBucketRegion as Xs, updatePartialMessage as Xt, planOrphanAdoption as Y, refuseMalformedResourcesForExport as Ya, redactedDockerCause as Yc, STATE_REGION_DIVERGED as Yi, storedSecretNameNeedles as Yn, noEchoCoordinatesOf as Yo, isTerminationProtectionPropagationError as Yr, S3StateBackend as Ys, redactedDeleteAddressSkip as Yt, DeploymentEventsStore as Z, repairMalformedOrphanRecordsForReadOnly as Za, runDockerStreaming as Zc, UNREADABLE_ORPHANS_CONTAINER_ROW as Zi, ATOMIC_FINAL_SNAPSHOT_TYPES as Zn, noEchoOutputsComparison as Zo, reDisableInstanceApiTermination as Zr, CrossPrefixReadError as Zs, updatePartialReason as Zt, deleteTableWithIndexBusyRetry as _, malformedOrphansWarning as _a, isSensitiveAttributeName as _c, assertFlagRoleArn as _i, warnDeprecatedNoPrefixCliFlag as _l, DEFAULT_RESOURCE_TIMEOUT_MS as _n, isStatefulRecreateTargetSync as _o, refuseMalformedDesiredTags as _r, maskSecretsInText as _s, dropFailedHint as _t, isProtectionValueActive as a, isReadableOrphanRecord as aa, describeRegionValueKind as ac, s3BucketDomainName as ai, synthesisStatusMessage as al, secretBearing as an, unreadableResourceEntries as ao, unsupportedFinalSnapshotError as ar, createUnionSecretMasker as as, dropSettledNestedJournals as at, S3_AUTO_DELETE_OBJECTS_TAG as b, malformedRenderedContainersWarning as ba, buildAssetRedirectMap as bc, isIamRoleArn as bi, CFN_TEMPLATE_URL_LIMIT as bl, constructPathOf as bn, coerceWarmThroughput as bo, definedAttributes as br, snapshotPassProvenance as bs, loadJournaledOrphans as bt, DynamoDBGlobalTableProvider as c, malformedExportNamesWarning as ca, hasReasonlessBaselineRefusal as cc, s3BucketWebsiteUrl as ci, loadCdkJson as cl, carriedExportAliasExposure as cn, findSilentDropProperties as co, reserveStackCreateToken as cr, logOnlyValueCount as cs, recordDisplacedSkips as ct, compensateRemovedDeletionProtection as d, malformedLocalResourceEntriesWarning as da, importableOutputs as dc, refuseUnreadableCdkCrossAccountRefs as di, resolveCaptureObservedState as dl, isWholeDynamicReferenceValue as dn, NO_CC_HANDLERS_REASON as do, isRefusedByName as dr, recordLogOnlyValue as ds, withNestedRevertRun as dt, deployRefusesOrphanRowsReason as ea, crossPrefixDeniedWarning as ec, INTRINSIC_KEYS as ei, stripControlChars as el, reachableDivergentParameters as en, repairMalformedResourceEntriesForReadOnly as eo, ccRoutedFinalSnapshotError as er, readsNoEchoSource as es, keptForReadoption as et, deleteBudgetKey as f, malformedLocalResourcesWarning as fa, isReadableBag as fc, keepHeldTokenProvenance as fi, resolveSkipPrefix as fl, noEchoParameterValueSeed as fn, hasNoCloudControlHandlers as fo, markDeleteStarted as fr, shareLogOnlyValues as fs, collectNestedChildUnaddressed as ft, INDEX_SETTLE_POLL_INTERVAL_MS as g, malformedOrphansRefusalMessage as ga, AssetPublisher as gc, applyRoleArnIfSet as gi, stateBucketExistenceConfirmed as gl, bindingSkippedOutputs as gn, isStatefulRecreateTargetForReplace as go, readTagList as gr, maskSecretsInError as gs, dropFailedCommands as gt, DELETE_INDEX_WAIT_PROCEED_NOTE as h, malformedOrphanRowsKeptWarning as ha, shouldRetainResource as hc, recordedReferenceRegions as hi, resolveUseCdkBootstrapAssets as hl, isExportAliasCollision as hn, MULTI_REGION_RECREATE_BLOCKED_TYPES as ho, planTagDiff as hr, errorCauseChain as hs, deleteJournaledOrphans as ht, PROTECTION_PROPERTY_BY_TYPE as i, hasReadableResources as ia, acceptedCreateOnlyDropsOf as ic, s3BucketArn as ii, Synthesizer as il, exportAliasCollisionScrubWarning as in, unreadableOrphanRecords as io, refusesFinalSnapshot as ir, carryLogOnlyValues as is, displacedPhysicalIdShown as it, serviceTokenBlockingReason as j, refuseMalformedOrphans as ja, readBootstrapMarkerBody as jc, isUnboundTemplateParameter as ji, StageLoadError as jl, green as jn, requireConfigArray as jo, getCurrentResourceSecrets as jr, recordNestedStackParameterExpressions as js, recordAfterRollbackUpdate as jt, deferredServiceTokenWarning as k, refuseMalformedOrphanRecords as ka, isCrossRegionRedirect as kc, regionLessSecretName as ki, derivePartitionAndUrlSuffix as kl, cyan as kn, readConfigString as ko, readsNoEchoDeleteValues as kr, identityKeyFor as ks, replayRollback as kt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, malformedExportSourceWarning as la, hasUnverifiableParameterRefusal as lc, resolveDynamicReferences as li, resolveApp as ll, exportNameNoEchoParameters as ln, unwrittenCreateOnlyReplacement as lo, withCreateTokenLedger as lr, printingCorpusOf as ls, revertNestedChildFromJournal as lt, resolveDynamoDbDeleteBudgetMs as m, malformedOrphanRecordsWarning as ma, orphansCarriedFrom as mc, recordedOutputReferenceRegions as mi, resolveStateBucketWithDefaultAndSource as ml, collectPublishedOutputNames as mn, shownType as mo, DBPROXY_TAG_OPTIONS as mr, createSecretMasker as ms, withNestedStackContext as mt, recordedProtectionEvidence as n, hasReadableOrphans as na, isNotImplemented as nc, poisonRenderedSpellingsCollidingIn as ni, AssetManifestLoader as nl, WITHHELD_NAME_DISPLAY as nn, repairMalformedResourcesForReadOnly as no, effectiveDeletionPolicy as nr, valueAtCoordinate as ns, NESTED_PENDING_PARENT_REASON as nt, perType as o, isReadableResourceEntry as oa, exportNamesCarriedFrom as oc, s3BucketDualStackDomainName as oi, getDefaultStateBucketName as ol, secretBearingStateKeyWarning as on, withheldAccountClause as oo, earliestDefined as or, hasMaskableValues as os, getNestedRevertRun as ot, resolveDynamoDbDeleteBudgetClock as p, malformedOrphanRecordsRefusalMessage as pa, orphansAfterRollback as pc, outputReferenceProvenanceOf as pi, resolveStateBucketWithDefault as pl, collectDeclaredOutputNames as pn, findReplacedReadersOfRecreateTargets as po, DBPROXY_TAGS_WHAT as pr, unionOfSecretBags as ps, getCurrentNestedStackContext as pt, makeCanonicalizePropertiesFn as q, refuseMalformedResourcesForDeploy as qa, redactDockerArgvValues as qc, declaresNoEcho as qi, secretNamedRecordNeedles as qn, maskWholeValue as qo, disableInstanceApiTermination as qr, LockManager as qs, isRedactedRecordedValue as qt, recordedProtectionNote as r, hasReadableOutputs as ra, splitImportedOps as rc, isSettledInstanceState as ri, getDockerImageBySourceHash as rl, displayTextOrWithheld as rn, unpreviewableOrphanRecords as ro, isFinalSnapshotError as rr, liveMatchesUnresolvedTokenFrame as rs, displacedOpClause as rt, readProtection as s, malformedDriftResourcePropertiesWarning as sa, hasReadableExportSet as sc, s3BucketRegionalDomainName as si, getLegacyStateBucketName as sl, secretSafeKeyDisplay as sn, findActionableSilentDrops as so, ledgerForStack as sr, literalSplitDelimitersOf as ss, nestedChildStackName as st, DeployEngine as t, displayLogicalId as ta, isAccessDenied$1 as tc, IntrinsicFunctionResolver as ti, stripForDisplay as tl, resourcesNamingDeclaredParameter as tn, repairMalformedResourcePropertiesForReadOnly as to, createPreDeleteFinalSnapshot as tr, recordedNoEchoValuesOf as ts, recordRetainedForReadoption as tt, beginDeleteWait as u, malformedLocalOutputsWarning as ua, importableOutputKeys as uc, producerLookupOver as ui, resolveAutoAssetStorage as ul, exportNameSecretExposure as un, withoutSilentDropProperties as uo, acquireIdempotencyToken as ur, recordLogOnlyParameterValue as us, revertedNestedRowIds as ut, waitForIndexesSettled as v, malformedOutputsRefusalMessage as va, stringifyValue as vc, assertSendableRoleArn as vi, ssmResolvedValueType as vl, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, renderStatefulReason as vo, tagMapAsList as vr, markSameGenerationBag as vs, isHandledOrphan as vt, markRefusedBeforeApplying as w, malformedScrubResourceEntriesRefusalMessage as wa, AssetModeResolver as wc, callerEnvCredentials as wi, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as wl, destroyStackRecordsView as wn, coerceCfnBoolean as wo, ccBrokenReason as wr, withoutPhysicalNameCopies as ws, chunks as wt, hasCdkAutoDeleteTag as x, malformedResourceEntriesWarning as xa, createAssetRedirectResolver as xc, sendableAssumeRoleCommand as xi, MIGRATE_TMP_PREFIX as xl, findDestructiveChanges as xn, isWarmThroughputDecrease as xo, stringifyIfAssigned as xr, redactForState as xs, makeForeignHolderScan as xt, ECR_AUTO_DELETE_IMAGES_TAG as y, malformedOutputsWarning as ya, WorkGraph as yc, explicitRoleArnOrThrow as yi, CFN_TEMPLATE_BODY_LIMIT as yl, maskingRetryLogger as yn, WARM_THROUGHPUT_MEMBERS as yo, tagPlanWarning as yr, recordReferenceProvenanceEntry as ys, journaledOrphanLines as yt, conditionInputsFrom as z, refuseMalformedResourceEntriesForDestroy as za, describeDockerFailure as zc, AWS_NO_VALUE as zi, describeFileReadFailure as zl, completedReplayEntries as zn, lambdaFunctionNameForMask as zo, RollbackInlinePolicyWriters as zr, recordMaskOnlyValue as zs, replacementNeverSwapped as zt };
|
|
49052
|
+
//# sourceMappingURL=deploy-engine-zLKsm0IM.js.map
|