@go-to-k/cdkd 0.296.0 → 0.296.1
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-AVCcoXnQ.js → asg-provider-BwWy0pBH.js} +2 -2
- package/dist/{asg-provider-AVCcoXnQ.js.map → asg-provider-BwWy0pBH.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-D7204v7Z.js → deploy-engine-xlct0Hcm.js} +244 -95
- package/dist/deploy-engine-xlct0Hcm.js.map +1 -0
- package/dist/{iam-role-provider-CCPaZ3U4.js → iam-role-provider-BRVCTUZu.js} +2 -2
- package/dist/{iam-role-provider-CCPaZ3U4.js.map → iam-role-provider-BRVCTUZu.js.map} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-D1t9NgT-.js → neptune-provider-Cdp4jX8S.js} +2 -2
- package/dist/{neptune-provider-D1t9NgT-.js.map → neptune-provider-Cdp4jX8S.js.map} +1 -1
- package/dist/{program-B0sp_SHG.js → program-DXRavuSm.js} +58 -9
- package/dist/program-DXRavuSm.js.map +1 -0
- package/dist/{provider-classes-DMOnX5s-.js → provider-classes-DNkoEEo4.js} +7 -7
- package/dist/{provider-classes-DMOnX5s-.js.map → provider-classes-DNkoEEo4.js.map} +1 -1
- package/dist/{rds-provider-DltlcDiQ.js → rds-provider-McCDKyXN.js} +2 -2
- package/dist/{rds-provider-DltlcDiQ.js.map → rds-provider-McCDKyXN.js.map} +1 -1
- package/dist/{version-DUHDmEhz.js → version-Dpc_HYX0.js} +2 -2
- package/dist/{version-DUHDmEhz.js.map → version-Dpc_HYX0.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-D7204v7Z.js.map +0 -1
- package/dist/program-B0sp_SHG.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js"
|
|
|
2
2
|
import { A as displaySafe, E as UNRENDERABLE, F as safeMsg, L as truncateCodePoints, M as isPasteableIdent, O as displayAwsMessage, P as plainIdentOr, S as withoutGeneratedFallbackName, T as STACK_REF_MAX_CODE_POINTS, _ as getCurrentSkipPrefix, b as withSkipPrefix, c as getLiveRenderer, f as applyDefaultNameForFallback, g as generateResourceNameWithFallback, h as generateResourceName, j as displayStackName, k as displayIdent, m as explicitNamePropertyFor, n as getLogger, r as isStdoutReservedForPayload, s as installLogLineMaskerSource, v as getCurrentStackName, w as SECRET_REF_MAX_CODE_POINTS, x as withStackName, y as looksLikeCdkdGeneratedName } from "./logger-Dvc7ddKe.js";
|
|
3
3
|
import { $n as markRedactedCause, $t as LockError, A as isTerminalDeleteFailure, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bn as isAmbiguousCcHandlerErrorCode, Bt as clientDefaultsFor, C as refusalTypeShown, Cn as physicalIdShownBesideCommand, Ct as buildForceUnlockCommand, D as ProtectionFlipRegistry, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, Fn as isRecreateRetryableError, Ft as producerRecordKey, Gn as retryClassificationText, H as pasteableAwsCommand, Hn as isIamPropagationError, Ht as AccountIdUnavailableError, In as isReplayedNameCollisionFrom, J as isInterruptedWaitError, Jn as safeStringify$1, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, M as observeThenDisableProtection, Mn as hasReplayMayCollide, Mt as injectiveKey, N as protectionFlipKey, Nn as isNameCollisionErrorFrom, O as compensateProtectionFlip, On as withheldTargetClause, Ot as formatLockOwner, Pn as isNameCooldownError, Q as canonicalizeRoute53QueryName, Qn as markNonRetryable, R as DELETION_PROTECTION_DOC_POINTER, Rn as markReplayMayCollide, Rt as ambientClientDefaults, S as quotedRemedyLogicalId, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, T as resolveExplicitPhysicalId, Tn as quotedOrDescribed, U as protectedReplacementAdvice, Un as isRetryableTransientError, Ut as AssetError, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, X as ElapsedBudgetRegistry, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Y as startInterruptWatch, Yt as DynamicReferenceRegionAmbiguousError, Z as monotonicNowMs, Zn as isThrottlingError, _n as SHELL_ACTIVE_WHY, _t as hasCreatedBeforeFailure, an as ResourceTimeoutError, at as segmentAfterAnchor, b as isQuotableImportValue, bt as markAuxiliaryFailure, ct as createMaskedRetryLogger, d as prepareRemovalForUpdate, dt as maskerOrIdentity, en as MacroExpansionError, er as wrapMaskedAwsError, et as compositeIdSeparatorRefusal, f as removalWarning, ft as withDerivedNameMasks, g as assertRegionMatch, gn as SHELL_ACTIVE, gt as createdBeforeFailure, h as RESOURCE_NOT_FOUND, i as holdsSecretDerivedEntry, in as ProvisioningError, it as resourceTypeShown, jn as isUpdateUnsupportedError, jt as DEFAULT_STATE_PREFIX, k as deleteWithProtectionCompensation, kt as sanitizeRecoveryValue, l as withUnchangedSecretPrincipalLists, ln as StateError, lt as isSecretDerivedValue, m as withoutInjectedRemovals, mt as carryCreatedBeforeFailure, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, ot as stateOrphanRecordRemedy, pn as normalizeAwsError, pt as RETRY_AUXILIARY_OWNER, qt as DependencyError, st as createMaskedLogSinks, tn as MalformedProducerRecordRefusalError, un as SynthesisError, ut as maskDeep, vn as UNSHOWABLE_VALUE, vt as isAuxiliaryFailure, wn as plainOrDescribed, x as normalizeAwsTagsToCfn, xn as isInertUnquoted, xt as markCreatedBeforeFailure, yn as commandHole, yt as isAuxiliaryMarkOf, zn as formatRetryClassificationSignals, zt as ambientCredentialConfig } from "./iam-policy-targets-DSDSdxXz.js";
|
|
4
4
|
import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-D0q0z4dG.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-Dpc_HYX0.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -7674,6 +7674,10 @@ const CLASSIFIER_IDENTIFIER_FIELDS = /* @__PURE__ */ new Set([
|
|
|
7674
7674
|
function isAuxiliaryAnchor(key, descriptor) {
|
|
7675
7675
|
return key === "logicalId" && descriptor.enumerable === false && descriptor.writable === false && typeof descriptor.value === "string" && descriptor.value.endsWith("/auxiliary");
|
|
7676
7676
|
}
|
|
7677
|
+
const CREATED_BEFORE_FAILURE_MARK = Symbol.for("cdkd.createdBeforeFailure");
|
|
7678
|
+
function isCreatedBeforeFailureMark(key, descriptor) {
|
|
7679
|
+
return key === CREATED_BEFORE_FAILURE_MARK && descriptor.enumerable === false && descriptor.writable === false && typeof descriptor.value === "object" && descriptor.value !== null && Object.isFrozen(descriptor.value);
|
|
7680
|
+
}
|
|
7677
7681
|
function isPlainContainer(value) {
|
|
7678
7682
|
const proto = Object.getPrototypeOf(value);
|
|
7679
7683
|
return Array.isArray(value) ? proto === Array.prototype : proto === Object.prototype || proto === null;
|
|
@@ -7761,7 +7765,7 @@ function maskSecretsInError(error, secrets, extraMask) {
|
|
|
7761
7765
|
if (key === "message" || key === "cause" || key === "stack") continue;
|
|
7762
7766
|
const descriptor = Object.getOwnPropertyDescriptor(link, key);
|
|
7763
7767
|
if (!descriptor) continue;
|
|
7764
|
-
descriptors[key] = typeof key === "string" && CLASSIFIER_IDENTIFIER_FIELDS.has(key) && typeof descriptor.value === "string" || isAuxiliaryAnchor(key, descriptor) ? descriptor : maskDescriptorValue(descriptor, maskText);
|
|
7768
|
+
descriptors[key] = typeof key === "string" && CLASSIFIER_IDENTIFIER_FIELDS.has(key) && typeof descriptor.value === "string" || isAuxiliaryAnchor(key, descriptor) || isCreatedBeforeFailureMark(key, descriptor) ? descriptor : maskDescriptorValue(descriptor, maskText);
|
|
7765
7769
|
if (descriptors[key] !== descriptor) changed = true;
|
|
7766
7770
|
}
|
|
7767
7771
|
let cause = Object.getOwnPropertyDescriptor(link, "cause");
|
|
@@ -17975,6 +17979,7 @@ async function resolveGetAtt(getAtt, context) {
|
|
|
17975
17979
|
}
|
|
17976
17980
|
const resource = this.lookupResourceRecord(logicalId, "Fn::GetAtt", context);
|
|
17977
17981
|
if (!resource) throw markNonRetryable(/* @__PURE__ */ new Error(`Resource ${this.displayMasked(logicalId, context)} not found for Fn::GetAtt`));
|
|
17982
|
+
recordSecretNamedRead(logicalId, void 0, context);
|
|
17978
17983
|
if (!(resource.resourceType === "AWS::EC2::VPC" && attributeName === "Ipv6CidrBlocks") && resource.attributes !== void 0) {
|
|
17979
17984
|
const storedValue = Object.hasOwn(resource.attributes, attributeName) ? resource.attributes[attributeName] : void 0;
|
|
17980
17985
|
const flatValue = isImpossibleEmptyStoredAttribute(resource.resourceType, attributeName, storedValue) ? void 0 : storedValue;
|
|
@@ -18028,6 +18033,7 @@ async function resolveGetAtt(getAtt, context) {
|
|
|
18028
18033
|
throw markNonRetryable(new IntrinsicResolutionRefusalError(`Cannot resolve Fn::GetAtt [${loggedLogicalId}, ${this.displayMasked(attributeName, context)}]: the nested stack ${quotedRender(loggedLogicalId, "'")} declares no output named ${quotedRender(this.displayMasked(this.outputNameLogText(attributeName, context), context), "'")}. Its outputs are ${this.displayMasked(declaredText, context)}. Check the output name in the nested stack's template, and deploy the child stack again if you have just added it.`));
|
|
18029
18034
|
}
|
|
18030
18035
|
const value = await this.constructWithStaleRecordHeal(resource, attributeName, context, logicalId);
|
|
18036
|
+
recordSecretNamedRead(logicalId, value, context);
|
|
18031
18037
|
this.logger.debug(`Resolved Fn::GetAtt: ${this.logRender(logicalId, context)}.${this.logRender(attributeName, context)} resolved to ${this.logRender(stringifyAttributeForLog(attributeName, this.maskValueLeaves(value, context)), context, {
|
|
18032
18038
|
structured: isStructured(value),
|
|
18033
18039
|
redacted: isSensitiveAttributeName(attributeName)
|
|
@@ -18057,6 +18063,7 @@ function publicNoEchoTokens(context, producer) {
|
|
|
18057
18063
|
return tokens;
|
|
18058
18064
|
}
|
|
18059
18065
|
function noteAttributeSecrecy(logicalId, attributeName, value, context) {
|
|
18066
|
+
recordSecretNamedRead(logicalId, value, context);
|
|
18060
18067
|
const declared = context.noEchoAttributeResources?.get(logicalId);
|
|
18061
18068
|
if ((declared === true || declared !== void 0 && declared.has(attributeName)) && context.recordedSecretValues) recordFreshNoEchoValuesIn(value, context.recordedSecretValues, void 0, this.publicNoEchoTokens(context, logicalId));
|
|
18062
18069
|
if (context.redactedAttributeReads !== void 0 && carriesSecretMask(value)) {
|
|
@@ -18070,6 +18077,17 @@ function noteAttributeSecrecy(logicalId, attributeName, value, context) {
|
|
|
18070
18077
|
}
|
|
18071
18078
|
return value;
|
|
18072
18079
|
}
|
|
18080
|
+
function recordSecretNamedRead(logicalId, value, context) {
|
|
18081
|
+
const bag = context.printingSecrets ?? context.recordedSecretValues;
|
|
18082
|
+
if (bag === void 0 || context.secretNameNeedles === void 0) return;
|
|
18083
|
+
const needles = context.secretNameNeedles(logicalId);
|
|
18084
|
+
if (needles === void 0) return;
|
|
18085
|
+
for (const needle of needles) recordLogOnlyValue(bag, needle);
|
|
18086
|
+
for (const leaf of wholeStringLeavesOf(value)) for (const needle of needles) if (needle.length >= 4 && leaf.includes(needle)) {
|
|
18087
|
+
recordLogOnlyValue(bag, leaf);
|
|
18088
|
+
break;
|
|
18089
|
+
}
|
|
18090
|
+
}
|
|
18073
18091
|
function rejectPlaceholderArnAttribute(resource, attributeName, value, logicalId, context, healOutcome) {
|
|
18074
18092
|
if (!isStalePlaceholderArnAttribute(resource.resourceType, attributeName, value)) return;
|
|
18075
18093
|
throw markNonRetryable(new IntrinsicResolutionRefusalError(`Cannot resolve Fn::GetAtt [${this.displayMasked(logicalId, context)}, ${this.displayMasked(attributeName, context)}] for ${resource.resourceType}: the recorded value ${quotedRender(stringifyValue(this.maskValueLeaves(value, context)), "\"")} is a placeholder written by a cdkd version older than issue #1681 — its region and account fields are literal wildcards, so it is not a usable ARN. ` + this.staleRecordRemedy(healOutcome, context)));
|
|
@@ -20197,6 +20215,7 @@ async function resolveRef(logicalId, context, onParameter) {
|
|
|
20197
20215
|
const resource = this.lookupResourceRecord(logicalId, "Ref", context);
|
|
20198
20216
|
if (resource) {
|
|
20199
20217
|
const refValue = this.resolveRefValue(logicalId, resource, context);
|
|
20218
|
+
recordSecretNamedRead(logicalId, refValue, context);
|
|
20200
20219
|
this.logger.debug(`Resolved Ref to resource: ${this.logRender(logicalId, context)} resolved to ${this.logRender(String(refValue), context)}`);
|
|
20201
20220
|
return refValue;
|
|
20202
20221
|
}
|
|
@@ -21997,7 +22016,7 @@ var CloudControlProvider = class {
|
|
|
21997
22016
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
21998
22017
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
21999
22018
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
22000
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
22019
|
+
const { ASGProvider } = await import("./asg-provider-BwWy0pBH.js");
|
|
22001
22020
|
const delegateRegion = ambientRegion();
|
|
22002
22021
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
22003
22022
|
if (asgProvider === void 0) {
|
|
@@ -22103,7 +22122,7 @@ var CloudControlProvider = class {
|
|
|
22103
22122
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
22104
22123
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
22105
22124
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
22106
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
22125
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-McCDKyXN.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-Cdp4jX8S.js"))).NeptuneProvider({ region: ccRegion });
|
|
22107
22126
|
this.sdkDeleteDelegates.set(family, {
|
|
22108
22127
|
region: ccRegion,
|
|
22109
22128
|
provider
|
|
@@ -22926,6 +22945,10 @@ function withCurrentResourceSecrets(secrets, fn) {
|
|
|
22926
22945
|
const outer = boundSecretBagsStore.getStore() ?? [];
|
|
22927
22946
|
return boundSecretBagsStore.run([...outer, secrets], () => currentResourceSecretsStore.run(secrets, fn));
|
|
22928
22947
|
}
|
|
22948
|
+
function withPrintingSecrets(secrets, fn) {
|
|
22949
|
+
const outer = boundSecretBagsStore.getStore() ?? [];
|
|
22950
|
+
return boundSecretBagsStore.run([...outer, secrets], fn);
|
|
22951
|
+
}
|
|
22929
22952
|
function getCurrentResourceSecrets() {
|
|
22930
22953
|
return currentResourceSecretsStore.getStore();
|
|
22931
22954
|
}
|
|
@@ -26931,6 +26954,7 @@ async function resolveOutputs(template, resources, stackName, digestSource, para
|
|
|
26931
26954
|
...parameterValues && { parameters: parameterValues },
|
|
26932
26955
|
...conditions && { conditions }
|
|
26933
26956
|
}, stackName);
|
|
26957
|
+
context.printingSecrets = /* @__PURE__ */ new Map();
|
|
26934
26958
|
const refuseMaskedOutputReads = (outputKey, ownReads) => {
|
|
26935
26959
|
const added = ownReads.filter((read) => read.kind === "ref-state-key");
|
|
26936
26960
|
if (added.length === 0) return;
|
|
@@ -31062,7 +31086,88 @@ async function readReaderForFreshNoEchoCeiling(logicalId, currentResource, secre
|
|
|
31062
31086
|
}
|
|
31063
31087
|
}
|
|
31064
31088
|
function maskForResource(logicalId, text) {
|
|
31065
|
-
return maskSecretsInText(text, this.
|
|
31089
|
+
return maskSecretsInText(text, this.printingSecretsFor(logicalId) ?? EMPTY_SECRETS);
|
|
31090
|
+
}
|
|
31091
|
+
function secretNameNeedlesOf(logicalId, record, secrets, options) {
|
|
31092
|
+
const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
|
|
31093
|
+
const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
|
|
31094
|
+
const mask = (text) => bag === void 0 ? text : maskSecretsInText(text, bag);
|
|
31095
|
+
const unresolved = (value) => value.includes("{{resolve:") || value === "***";
|
|
31096
|
+
const named = {
|
|
31097
|
+
resourceType: record?.resourceType,
|
|
31098
|
+
properties: record?.properties,
|
|
31099
|
+
logicalId
|
|
31100
|
+
};
|
|
31101
|
+
const needles = /* @__PURE__ */ new Set();
|
|
31102
|
+
const add = (needle) => {
|
|
31103
|
+
if (typeof needle === "string" && needle !== "") needles.add(needle);
|
|
31104
|
+
};
|
|
31105
|
+
for (const [raw, derived] of secretDerivedNamePairs({
|
|
31106
|
+
...named,
|
|
31107
|
+
physicalIds: []
|
|
31108
|
+
})) if (typeof raw === "string" && !unresolved(raw) && isSecretDerivedValue(raw, mask)) add(derived);
|
|
31109
|
+
for (const [raw, spelling] of secretDerivedNamePairs({
|
|
31110
|
+
...named,
|
|
31111
|
+
physicalIds: [physicalId ?? "cdkd-no-physical-id-yet"]
|
|
31112
|
+
})) {
|
|
31113
|
+
if (!isSecretDerivedValue(raw, mask)) continue;
|
|
31114
|
+
if (unresolved(raw)) {
|
|
31115
|
+
if (physicalId === void 0) continue;
|
|
31116
|
+
add(spelling);
|
|
31117
|
+
} else {
|
|
31118
|
+
add(raw);
|
|
31119
|
+
if (raw.toLowerCase() !== raw && raw.length >= 4) add(raw.toLowerCase());
|
|
31120
|
+
}
|
|
31121
|
+
}
|
|
31122
|
+
const properties = record?.properties;
|
|
31123
|
+
const path = properties !== null && typeof properties === "object" && Object.hasOwn(properties, "Path") ? properties["Path"] : void 0;
|
|
31124
|
+
if (physicalId !== void 0 && isSecretDerivedValue(path, mask)) add(physicalId);
|
|
31125
|
+
const embedded = options === void 0 ? secrets : options.embedded;
|
|
31126
|
+
const embeddedBag = embedded !== void 0 && hasMaskableValues(embedded) ? embedded : void 0;
|
|
31127
|
+
if (embeddedBag !== void 0 && physicalId !== void 0) {
|
|
31128
|
+
for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
|
|
31129
|
+
}
|
|
31130
|
+
return needles.size > 0 ? needles : void 0;
|
|
31131
|
+
}
|
|
31132
|
+
function secretNameBagFor(logicalId) {
|
|
31133
|
+
let bag = this.secretNameNeedles.get(logicalId);
|
|
31134
|
+
if (bag === void 0) {
|
|
31135
|
+
bag = /* @__PURE__ */ new Map();
|
|
31136
|
+
this.secretNameNeedles.set(logicalId, bag);
|
|
31137
|
+
}
|
|
31138
|
+
return bag;
|
|
31139
|
+
}
|
|
31140
|
+
function noteSecretNamedRecord(logicalId, record) {
|
|
31141
|
+
const needles = secretNameNeedlesOf(logicalId, record, this.namingSecretsFor(logicalId), { embedded: this.perResourceSecrets.get(logicalId) });
|
|
31142
|
+
if (needles === void 0) return void 0;
|
|
31143
|
+
const registry = this.secretNameBagFor(logicalId);
|
|
31144
|
+
for (const needle of needles) recordLogOnlyValue(registry, needle);
|
|
31145
|
+
return needles;
|
|
31146
|
+
}
|
|
31147
|
+
function namingSecretsFor(logicalId) {
|
|
31148
|
+
const own = this.perResourceSecrets.get(logicalId);
|
|
31149
|
+
const noEcho = this.fingerprintNoEchoValues;
|
|
31150
|
+
if (!hasMaskableValues(noEcho)) return own;
|
|
31151
|
+
return unionOfSecretBags([own, noEcho]);
|
|
31152
|
+
}
|
|
31153
|
+
function noteSecretNamedReads(logicalId, record, resources) {
|
|
31154
|
+
const leaves = [...wholeStringLeavesOf(record?.properties)].filter((leaf) => leaf !== "");
|
|
31155
|
+
if (leaves.length === 0) return;
|
|
31156
|
+
for (const [otherId, other] of Object.entries(resources)) {
|
|
31157
|
+
if (otherId === logicalId) continue;
|
|
31158
|
+
const needles = secretNameNeedlesOf(otherId, other, this.namingSecretsFor(otherId), { embedded: this.perResourceSecrets.get(otherId) });
|
|
31159
|
+
if (needles === void 0) continue;
|
|
31160
|
+
const read = [...needles].filter((needle) => leaves.some((leaf) => leaf === needle || needle.length >= 4 && leaf.includes(needle)));
|
|
31161
|
+
if (read.length === 0) continue;
|
|
31162
|
+
const registry = this.secretNameBagFor(logicalId);
|
|
31163
|
+
for (const needle of read) recordLogOnlyValue(registry, needle);
|
|
31164
|
+
}
|
|
31165
|
+
}
|
|
31166
|
+
function printingSecretsFor(logicalId) {
|
|
31167
|
+
const secrets = this.perResourceSecrets.get(logicalId);
|
|
31168
|
+
const registry = this.secretNameNeedles.get(logicalId);
|
|
31169
|
+
if (!hasMaskableValues(registry)) return secrets;
|
|
31170
|
+
return unionOfSecretBags([secrets, registry]);
|
|
31066
31171
|
}
|
|
31067
31172
|
function maskedRecordRemedyFor(reads, resources, causeScoped = false) {
|
|
31068
31173
|
const NESTED_STACK_RESOURCE_TYPE = "AWS::CloudFormation::Stack";
|
|
@@ -31556,6 +31661,82 @@ function isRefusedBeforeApplying(error, logicalId) {
|
|
|
31556
31661
|
return false;
|
|
31557
31662
|
}
|
|
31558
31663
|
|
|
31664
|
+
//#endregion
|
|
31665
|
+
//#region src/deployment/deploy-engine/resolver-context.ts
|
|
31666
|
+
function buildResolverContext(base, stackName) {
|
|
31667
|
+
const recordedSecretValues = /* @__PURE__ */ new Map();
|
|
31668
|
+
if (this.options.inheritedSecrets && this.options.inheritedSecrets.size > 0) inheritNestedStackParameterAssociations(recordedSecretValues, this.options.inheritedSecrets);
|
|
31669
|
+
return {
|
|
31670
|
+
template: base.template,
|
|
31671
|
+
resources: base.resources,
|
|
31672
|
+
...base.parameters && Object.keys(base.parameters).length > 0 && { parameters: base.parameters },
|
|
31673
|
+
...base.conditions && Object.keys(base.conditions).length > 0 && { conditions: base.conditions },
|
|
31674
|
+
stateBackend: this.stateBackend,
|
|
31675
|
+
stackName,
|
|
31676
|
+
...this.exportIndexStore && { exportIndex: this.exportIndexStore },
|
|
31677
|
+
recordedImports: this.recordedImports,
|
|
31678
|
+
recordedOutputReads: this.recordedOutputReads,
|
|
31679
|
+
attributeHealer: (logicalId, resource) => this.healStaleAttributes(logicalId, resource, stackName),
|
|
31680
|
+
...this.options.inheritedSecrets && hasMaskableValues(this.options.inheritedSecrets) && { inheritedSecrets: this.options.inheritedSecrets },
|
|
31681
|
+
recordedSecretValues,
|
|
31682
|
+
noEchoAttributeResources: this.noEchoAttributeResources,
|
|
31683
|
+
secretNameNeedles: (logicalId) => this.noteSecretNamedRecord(logicalId, Object.hasOwn(base.resources, logicalId) ? base.resources[logicalId] : void 0),
|
|
31684
|
+
...base.redactedAttributeReads && { redactedAttributeReads: base.redactedAttributeReads }
|
|
31685
|
+
};
|
|
31686
|
+
}
|
|
31687
|
+
function printNestedStackReadsOnly(context, resourceType) {
|
|
31688
|
+
if (resourceType === "AWS::CloudFormation::Stack") context.printingSecrets = /* @__PURE__ */ new Map();
|
|
31689
|
+
}
|
|
31690
|
+
function getAttTargetOf(node) {
|
|
31691
|
+
if (node === null || typeof node !== "object" || Array.isArray(node)) return void 0;
|
|
31692
|
+
const getAtt = node["Fn::GetAtt"];
|
|
31693
|
+
if (Array.isArray(getAtt) && typeof getAtt[0] === "string") return getAtt[0];
|
|
31694
|
+
if (typeof getAtt === "string") return getAtt.split(".")[0];
|
|
31695
|
+
}
|
|
31696
|
+
function maskedInputSources(template, resources, conditions, stackName) {
|
|
31697
|
+
const parameters = this.fingerprintParameters;
|
|
31698
|
+
if (parameters === void 0) return void 0;
|
|
31699
|
+
return {
|
|
31700
|
+
template,
|
|
31701
|
+
parameterInput: parameters.parameterInput,
|
|
31702
|
+
conditions,
|
|
31703
|
+
childTemplate: this.fingerprintChildTemplates,
|
|
31704
|
+
resolve: async (node) => {
|
|
31705
|
+
const { attributeHealer: _healer, ...base } = this.buildResolverContext({
|
|
31706
|
+
template,
|
|
31707
|
+
resources,
|
|
31708
|
+
parameters: parameters.bound,
|
|
31709
|
+
...conditions && { conditions }
|
|
31710
|
+
}, stackName);
|
|
31711
|
+
const context = {
|
|
31712
|
+
...base,
|
|
31713
|
+
recordedImports: [],
|
|
31714
|
+
recordedOutputReads: [],
|
|
31715
|
+
bestEffort: true,
|
|
31716
|
+
skipDynamicReferences: true,
|
|
31717
|
+
staleAttributeHeal: { phase: "probe" },
|
|
31718
|
+
printingSecrets: /* @__PURE__ */ new Map()
|
|
31719
|
+
};
|
|
31720
|
+
const value = await this.resolver.resolve(structuredClone(node), context);
|
|
31721
|
+
const secrets = context.recordedSecretValues;
|
|
31722
|
+
const target = getAttTargetOf(node);
|
|
31723
|
+
const targetSecrets = target === void 0 ? void 0 : this.perResourceSecrets.get(target);
|
|
31724
|
+
if (targetSecrets !== void 0 && hasMaskableValues(targetSecrets)) {
|
|
31725
|
+
const probe = { value };
|
|
31726
|
+
const redacted = redactSecretsForState(probe, targetSecrets);
|
|
31727
|
+
if (JSON.stringify(redacted) !== JSON.stringify(probe)) return {
|
|
31728
|
+
value,
|
|
31729
|
+
keepAsWritten: true
|
|
31730
|
+
};
|
|
31731
|
+
}
|
|
31732
|
+
return {
|
|
31733
|
+
value,
|
|
31734
|
+
...secrets && { secrets }
|
|
31735
|
+
};
|
|
31736
|
+
}
|
|
31737
|
+
};
|
|
31738
|
+
}
|
|
31739
|
+
|
|
31559
31740
|
//#endregion
|
|
31560
31741
|
//#region src/deployment/deploy-engine/create.ts
|
|
31561
31742
|
async function provisionCreate(logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress) {
|
|
@@ -31570,7 +31751,12 @@ async function provisionCreate(logicalId, change, stateResources, stackName, tem
|
|
|
31570
31751
|
redactedAttributeReads: []
|
|
31571
31752
|
}, stackName);
|
|
31572
31753
|
if (context.recordedSecretValues) this.perResourceSecrets.set(logicalId, context.recordedSecretValues);
|
|
31754
|
+
printNestedStackReadsOnly(context, resourceType);
|
|
31573
31755
|
const resolvedProps = await this.resolver.resolve(desiredProps, context);
|
|
31756
|
+
this.noteSecretNamedRecord(logicalId, {
|
|
31757
|
+
resourceType,
|
|
31758
|
+
properties: resolvedProps
|
|
31759
|
+
});
|
|
31574
31760
|
this.refuseRedactedAttributeReads(logicalId, resourceType, context);
|
|
31575
31761
|
this.perResourceTemplateProps.set(logicalId, desiredProps);
|
|
31576
31762
|
const fingerprintSources = template && this.maskedInputSources(template, stateResources, conditions, stackName);
|
|
@@ -34462,7 +34648,13 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
34462
34648
|
}, stackName);
|
|
34463
34649
|
const updateSecrets = context.recordedSecretValues ?? /* @__PURE__ */ new Map();
|
|
34464
34650
|
this.perResourceSecrets.set(logicalId, updateSecrets);
|
|
34651
|
+
printNestedStackReadsOnly(context, resourceType);
|
|
34465
34652
|
const resolvedProps = await this.resolver.resolve(desiredProps, context);
|
|
34653
|
+
this.noteSecretNamedRecord(logicalId, {
|
|
34654
|
+
resourceType,
|
|
34655
|
+
physicalId: stateResources[logicalId]?.physicalId,
|
|
34656
|
+
properties: resolvedProps
|
|
34657
|
+
});
|
|
34466
34658
|
this.perResourceTemplateProps.set(logicalId, desiredProps);
|
|
34467
34659
|
this.perResourceResolvedType.set(logicalId, resourceType);
|
|
34468
34660
|
recordNestedStackParameterExpressions(updateSecrets, resourceType, resolvedProps, desiredProps);
|
|
@@ -35088,7 +35280,14 @@ async function updateInPlace({ conditions, counts, currentProps, currentPropsAsW
|
|
|
35088
35280
|
captureProvider = replProvider;
|
|
35089
35281
|
} else throw updateError;
|
|
35090
35282
|
}
|
|
35091
|
-
if (result.wasReplaced)
|
|
35283
|
+
if (result.wasReplaced) {
|
|
35284
|
+
this.noteSecretNamedRecord(logicalId, {
|
|
35285
|
+
resourceType,
|
|
35286
|
+
physicalId: result.physicalId,
|
|
35287
|
+
properties: resolvedProps
|
|
35288
|
+
});
|
|
35289
|
+
this.logger.info(`Resource ${logicalId} was replaced: ${currentResource.physicalId} -> ${result.physicalId}`);
|
|
35290
|
+
}
|
|
35092
35291
|
const dischargedByReplacement = result.wasReplaced === true && result.physicalId !== currentResource.physicalId;
|
|
35093
35292
|
const keepsParameterRefusal = !dischargedByReplacement && hasUnverifiableParameterRefusal(currentResource);
|
|
35094
35293
|
const carriedAttributes = result.attributes ?? (result.wasReplaced ? void 0 : currentResource.attributes);
|
|
@@ -35184,21 +35383,32 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
|
|
|
35184
35383
|
const skipPrefix = progress ? `[${progress.current}/${progress.total}] ` : " ";
|
|
35185
35384
|
renderer.removeTask(logicalId);
|
|
35186
35385
|
this.logger.info(`${skipPrefix}${formatResourceLine("skipped", logicalId, resourceType, `skipped (${deleteSkipped})`)}`);
|
|
35187
|
-
|
|
35188
|
-
|
|
35189
|
-
|
|
35190
|
-
|
|
35191
|
-
|
|
35192
|
-
|
|
35193
|
-
|
|
35194
|
-
}
|
|
35195
|
-
|
|
35196
|
-
hole: "stack"
|
|
35197
|
-
}, {
|
|
35386
|
+
const nested = resourceType === "AWS::CloudFormation::Stack";
|
|
35387
|
+
const recordStack = nested ? nestedChildStackName(stackName, logicalId) : stackName;
|
|
35388
|
+
const interrupted = nested && deleteSkipped.endsWith(" was interrupted");
|
|
35389
|
+
const stackArg = {
|
|
35390
|
+
value: recordStack,
|
|
35391
|
+
hole: nested ? "child-stack" : "stack",
|
|
35392
|
+
opts: { plainIdent: true }
|
|
35393
|
+
};
|
|
35394
|
+
this.logger.warn(deleteSkippedMessage(logicalId, currentResource.physicalId, deleteSkipped, "while removing it from the template") + ". Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record first (for a nested stack it is the CHILD's own state, whose other resources may already be gone), or delete the resource by hand and drop the record." + (interrupted ? " The commands name the child stack record. Its destroy was interrupted: re-run 'cdkd deploy' to resume it, and drop the child record only if that cannot finish, after deleting by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop)." : nested ? " The commands name the child stack record. Dropping it drops every record the child still has and nothing reaches those resources again, so first delete by hand what the child still holds (the inspect command with --show-nested lists every level; a child with nested stacks of its own has records under '<child>~<logicalId>' too, each needing the same drop). The next 'cdkd deploy' then removes this row." : " Keep '--resource' on the drop: without it the command drops the record of every resource in this still-deployed stack.") + `\nInspect it with: ${pasteableCommand("cdkd state show", [stackArg, {
|
|
35198
35395
|
flag: "--stack-region",
|
|
35199
35396
|
value: this.stackRegion,
|
|
35200
35397
|
hole: "region"
|
|
35201
|
-
}]).command}
|
|
35398
|
+
}]).command}\nDrop the record with: ${pasteableCommand("cdkd state orphan", [
|
|
35399
|
+
stackArg,
|
|
35400
|
+
{
|
|
35401
|
+
flag: "--stack-region",
|
|
35402
|
+
value: this.stackRegion,
|
|
35403
|
+
hole: "region"
|
|
35404
|
+
},
|
|
35405
|
+
...nested ? [] : [{
|
|
35406
|
+
flag: "--resource",
|
|
35407
|
+
value: logicalId,
|
|
35408
|
+
hole: "logicalId",
|
|
35409
|
+
opts: { plainIdent: true }
|
|
35410
|
+
}]
|
|
35411
|
+
]).command}`);
|
|
35202
35412
|
if (counts) counts.deleteSkipped++;
|
|
35203
35413
|
return { deleteSkipped };
|
|
35204
35414
|
}
|
|
@@ -35343,10 +35553,13 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
|
|
|
35343
35553
|
let updatePartial;
|
|
35344
35554
|
const physicalIdBeforeUpdate = stateResources[logicalId]?.physicalId;
|
|
35345
35555
|
const provisionedByBeforeUpdate = stateResources[logicalId]?.provisionedBy;
|
|
35556
|
+
this.noteSecretNamedRecord(logicalId, stateResources[logicalId]);
|
|
35557
|
+
if (change.changeType === "DELETE") this.noteSecretNamedReads(logicalId, stateResources[logicalId], stateResources);
|
|
35558
|
+
const printingRegistry = this.secretNameBagFor(logicalId);
|
|
35346
35559
|
let nestedChildUnaddressed;
|
|
35347
35560
|
const deleteGuards = [];
|
|
35348
35561
|
try {
|
|
35349
|
-
await withResourceDeadline(async () => {
|
|
35562
|
+
await withPrintingSecrets(printingRegistry, () => withResourceDeadline(async () => {
|
|
35350
35563
|
try {
|
|
35351
35564
|
const { value: bodyResult, unaddressed } = await collectDeleteGuards(deleteGuards, () => collectNestedChildUnaddressed(() => this.provisionResourceBody(logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress)));
|
|
35352
35565
|
deleteSkipped = bodyResult?.deleteSkipped;
|
|
@@ -35360,7 +35573,7 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
|
|
|
35360
35573
|
logicalId,
|
|
35361
35574
|
resourceType: guard.resourceType,
|
|
35362
35575
|
...guard.provisionedBy && { provisionedBy: guard.provisionedBy },
|
|
35363
|
-
...guard.physicalId && { physicalId: this.
|
|
35576
|
+
...guard.physicalId && { physicalId: maskSecretsInText(guard.physicalId, this.perResourceSecrets.get(logicalId) ?? EMPTY_SECRETS) },
|
|
35364
35577
|
guard: guard.guard,
|
|
35365
35578
|
reason: guard.reason
|
|
35366
35579
|
});
|
|
@@ -35379,7 +35592,7 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
|
|
|
35379
35592
|
});
|
|
35380
35593
|
},
|
|
35381
35594
|
onTimeout: (elapsedMs) => new ResourceTimeoutError(logicalId, resourceType, this.stackRegion, elapsedMs, operationKind, timeoutMs)
|
|
35382
|
-
});
|
|
35595
|
+
}));
|
|
35383
35596
|
if (counts && nestedChildUnaddressed) {
|
|
35384
35597
|
counts.deleteSkipped += nestedChildUnaddressed.deleteSkipped;
|
|
35385
35598
|
counts.updatePartial += nestedChildUnaddressed.updatePartial;
|
|
@@ -35436,7 +35649,7 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
|
|
|
35436
35649
|
durationMs: Date.now() - resourceStartedAt,
|
|
35437
35650
|
error: extractDeploymentEventError(error)
|
|
35438
35651
|
});
|
|
35439
|
-
throw new ProvisioningError(`Failed to ${change.changeType.toLowerCase()} resource ${logicalId}`, resourceType, logicalId, stateResources[logicalId]?.physicalId, error instanceof Error ? maskSecretsInError(error, this.
|
|
35652
|
+
throw new ProvisioningError(`Failed to ${change.changeType.toLowerCase()} resource ${logicalId}`, resourceType, logicalId, stateResources[logicalId]?.physicalId, error instanceof Error ? maskSecretsInError(error, this.printingSecretsFor(logicalId) ?? EMPTY_SECRETS) : void 0);
|
|
35440
35653
|
} finally {
|
|
35441
35654
|
renderer.removeTask(logicalId);
|
|
35442
35655
|
}
|
|
@@ -36899,77 +37112,6 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
|
|
|
36899
37112
|
}
|
|
36900
37113
|
}
|
|
36901
37114
|
|
|
36902
|
-
//#endregion
|
|
36903
|
-
//#region src/deployment/deploy-engine/resolver-context.ts
|
|
36904
|
-
function buildResolverContext(base, stackName) {
|
|
36905
|
-
const recordedSecretValues = /* @__PURE__ */ new Map();
|
|
36906
|
-
if (this.options.inheritedSecrets && this.options.inheritedSecrets.size > 0) inheritNestedStackParameterAssociations(recordedSecretValues, this.options.inheritedSecrets);
|
|
36907
|
-
return {
|
|
36908
|
-
template: base.template,
|
|
36909
|
-
resources: base.resources,
|
|
36910
|
-
...base.parameters && Object.keys(base.parameters).length > 0 && { parameters: base.parameters },
|
|
36911
|
-
...base.conditions && Object.keys(base.conditions).length > 0 && { conditions: base.conditions },
|
|
36912
|
-
stateBackend: this.stateBackend,
|
|
36913
|
-
stackName,
|
|
36914
|
-
...this.exportIndexStore && { exportIndex: this.exportIndexStore },
|
|
36915
|
-
recordedImports: this.recordedImports,
|
|
36916
|
-
recordedOutputReads: this.recordedOutputReads,
|
|
36917
|
-
attributeHealer: (logicalId, resource) => this.healStaleAttributes(logicalId, resource, stackName),
|
|
36918
|
-
...this.options.inheritedSecrets && hasMaskableValues(this.options.inheritedSecrets) && { inheritedSecrets: this.options.inheritedSecrets },
|
|
36919
|
-
recordedSecretValues,
|
|
36920
|
-
noEchoAttributeResources: this.noEchoAttributeResources,
|
|
36921
|
-
...base.redactedAttributeReads && { redactedAttributeReads: base.redactedAttributeReads }
|
|
36922
|
-
};
|
|
36923
|
-
}
|
|
36924
|
-
function getAttTargetOf(node) {
|
|
36925
|
-
if (node === null || typeof node !== "object" || Array.isArray(node)) return void 0;
|
|
36926
|
-
const getAtt = node["Fn::GetAtt"];
|
|
36927
|
-
if (Array.isArray(getAtt) && typeof getAtt[0] === "string") return getAtt[0];
|
|
36928
|
-
if (typeof getAtt === "string") return getAtt.split(".")[0];
|
|
36929
|
-
}
|
|
36930
|
-
function maskedInputSources(template, resources, conditions, stackName) {
|
|
36931
|
-
const parameters = this.fingerprintParameters;
|
|
36932
|
-
if (parameters === void 0) return void 0;
|
|
36933
|
-
return {
|
|
36934
|
-
template,
|
|
36935
|
-
parameterInput: parameters.parameterInput,
|
|
36936
|
-
conditions,
|
|
36937
|
-
childTemplate: this.fingerprintChildTemplates,
|
|
36938
|
-
resolve: async (node) => {
|
|
36939
|
-
const { attributeHealer: _healer, ...base } = this.buildResolverContext({
|
|
36940
|
-
template,
|
|
36941
|
-
resources,
|
|
36942
|
-
parameters: parameters.bound,
|
|
36943
|
-
...conditions && { conditions }
|
|
36944
|
-
}, stackName);
|
|
36945
|
-
const context = {
|
|
36946
|
-
...base,
|
|
36947
|
-
recordedImports: [],
|
|
36948
|
-
recordedOutputReads: [],
|
|
36949
|
-
bestEffort: true,
|
|
36950
|
-
skipDynamicReferences: true,
|
|
36951
|
-
staleAttributeHeal: { phase: "probe" }
|
|
36952
|
-
};
|
|
36953
|
-
const value = await this.resolver.resolve(structuredClone(node), context);
|
|
36954
|
-
const secrets = context.recordedSecretValues;
|
|
36955
|
-
const target = getAttTargetOf(node);
|
|
36956
|
-
const targetSecrets = target === void 0 ? void 0 : this.perResourceSecrets.get(target);
|
|
36957
|
-
if (targetSecrets !== void 0 && hasMaskableValues(targetSecrets)) {
|
|
36958
|
-
const probe = { value };
|
|
36959
|
-
const redacted = redactSecretsForState(probe, targetSecrets);
|
|
36960
|
-
if (JSON.stringify(redacted) !== JSON.stringify(probe)) return {
|
|
36961
|
-
value,
|
|
36962
|
-
keepAsWritten: true
|
|
36963
|
-
};
|
|
36964
|
-
}
|
|
36965
|
-
return {
|
|
36966
|
-
value,
|
|
36967
|
-
...secrets && { secrets }
|
|
36968
|
-
};
|
|
36969
|
-
}
|
|
36970
|
-
};
|
|
36971
|
-
}
|
|
36972
|
-
|
|
36973
37115
|
//#endregion
|
|
36974
37116
|
//#region src/deployment/label-routing.ts
|
|
36975
37117
|
function deriveLabelRouting(change, existingState, registry, forceCcApi = false) {
|
|
@@ -37190,6 +37332,7 @@ var DeployEngine = class {
|
|
|
37190
37332
|
recordedOutputReads = [];
|
|
37191
37333
|
perResourceSecrets = /* @__PURE__ */ new Map();
|
|
37192
37334
|
noEchoAttributeResources = /* @__PURE__ */ new Map();
|
|
37335
|
+
secretNameNeedles = /* @__PURE__ */ new Map();
|
|
37193
37336
|
perResourceTemplateProps = /* @__PURE__ */ new Map();
|
|
37194
37337
|
perResourceResolvedType = /* @__PURE__ */ new Map();
|
|
37195
37338
|
fingerprintNoEchoValues = void 0;
|
|
@@ -37242,6 +37385,7 @@ var DeployEngine = class {
|
|
|
37242
37385
|
this.recordedOutputReads = [];
|
|
37243
37386
|
this.perResourceSecrets = /* @__PURE__ */ new Map();
|
|
37244
37387
|
this.noEchoAttributeResources = /* @__PURE__ */ new Map();
|
|
37388
|
+
this.secretNameNeedles = /* @__PURE__ */ new Map();
|
|
37245
37389
|
this.perResourceTemplateProps = /* @__PURE__ */ new Map();
|
|
37246
37390
|
this.constructPathTemplate = void 0;
|
|
37247
37391
|
this.perResourceResolvedType = /* @__PURE__ */ new Map();
|
|
@@ -37357,7 +37501,7 @@ var DeployEngine = class {
|
|
|
37357
37501
|
} catch {}
|
|
37358
37502
|
}
|
|
37359
37503
|
maskSecretsInEvent(event) {
|
|
37360
|
-
const secrets = event.logicalId ? this.
|
|
37504
|
+
const secrets = event.logicalId ? this.printingSecretsFor(event.logicalId) : void 0;
|
|
37361
37505
|
if (!secrets || !hasMaskableValues(secrets)) return event;
|
|
37362
37506
|
const next = { ...event };
|
|
37363
37507
|
if (next.error?.message) next.error = {
|
|
@@ -37433,6 +37577,11 @@ DeployEngine.prototype.refuseRedactedAttributeReads = refuseRedactedAttributeRea
|
|
|
37433
37577
|
DeployEngine.prototype.allRecordedSecrets = allRecordedSecrets;
|
|
37434
37578
|
DeployEngine.prototype.readReaderForFreshNoEchoCeiling = readReaderForFreshNoEchoCeiling;
|
|
37435
37579
|
DeployEngine.prototype.maskForResource = maskForResource;
|
|
37580
|
+
DeployEngine.prototype.secretNameBagFor = secretNameBagFor;
|
|
37581
|
+
DeployEngine.prototype.noteSecretNamedRecord = noteSecretNamedRecord;
|
|
37582
|
+
DeployEngine.prototype.printingSecretsFor = printingSecretsFor;
|
|
37583
|
+
DeployEngine.prototype.namingSecretsFor = namingSecretsFor;
|
|
37584
|
+
DeployEngine.prototype.noteSecretNamedReads = noteSecretNamedReads;
|
|
37436
37585
|
DeployEngine.prototype.kickOffObservedCapture = kickOffObservedCapture;
|
|
37437
37586
|
DeployEngine.prototype.drainObservedCaptures = drainObservedCaptures;
|
|
37438
37587
|
DeployEngine.prototype.buildObservedCaptureSiblings = buildObservedCaptureSiblings;
|
|
@@ -37458,4 +37607,4 @@ DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice
|
|
|
37458
37607
|
|
|
37459
37608
|
//#endregion
|
|
37460
37609
|
export { resourcesNamingDeclaredParameter as $, dynamicReferenceTokens as $a, withoutSilentDropProperties as $i, reEnableInstanceApiTermination as $n, resolveDockerContextDirectory as $o, malformedExportSourceWarning as $r, absoluteAssemblyPathEscape as $s, displayTextOrWithheld as $t, resolveDynamoDbDeleteBudgetClock as A, DagBuilder as Aa, refuseMalformedResourceEntriesForImport as Ai, definedAttributes as An, orphansAfterRollback as Ao, keepsSecretReferenceToken as Ar, resolveUseCdkBootstrapAssets as As, resolveReplacementOldType as At, getPriorAttempts as B, printingCorpusOf as Ba, refuseMalformedState as Bi, ccProtectionRegistryTypes as Bn, rewriteTemplateAssetReferences as Bo, STATE_REGION_DIVERGED as Br, decodeListingKey as Bs, isFinalSnapshotError as Bt, perType as C, prefetchCreateOnlyPropertyPaths as Ca, refuseMalformedOrphansForOrphan as Ci, DBPROXY_TAGS_WHAT as Cn, exportNamesCarriedFrom as Co, isUnboundTemplateParameter as Cr, loadCdkJson as Cs, getStackRecords as Ct, beginDeleteWait as D, canonicalLambdaFunctionName as Da, refuseMalformedResourceEntries as Di, refuseMalformedDesiredTags as Dn, importableOutputKeys as Do, carriesDynamicReference as Dr, resolveSkipPrefix as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, withRetry as Ea, refuseMalformedResourceAttributesForOrphan as Ei, readTagList as En, hasUnverifiableParameterRefusal as Eo, isImpossibleEmptyStoredAttribute as Er, resolveCaptureObservedState as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, carryLogOnlyValues as Fa, refuseMalformedResourcePropertiesForExport as Fi, wouldReturnToSdkProvider as Fn, stringifyValue as Fo, parseWebACLArn as Fr, CFN_TEMPLATE_URL_LIMIT as Fs, PRE_DELETE_SNAPSHOT_TYPES as Ft, cyan as G, errorCauseChain as Ga, repairMalformedResourcePropertiesForReadOnly as Gi, withIndeterminateGuard as Gn, getBootstrapMarkerKey as Go, displayLogicalId as Gr, AssemblyReader as Gs, redactedDeleteAddressFields as Gt, formatResourceLine as H, recordLogOnlyValue as Ha, repairMalformedOrphansForReadOnly as Hi, UNSPECIFIED_SKIP_REASON as Hn, BOOTSTRAP_MARKER_PREFIX as Ho, UNREADABLE_ORPHANS_CONTAINER_ROW as Hr, PARTITION_TABLE as Hs, unsupportedFinalSnapshotError as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, createUnionSecretMasker as Ia, refuseMalformedResourcePropertiesForOrphan as Ii, isCustomResourceType as In, WorkGraph as Io, withSharedDrainBudget as Ir, MIGRATE_TMP_PREFIX as Is, buildFinalSnapshotIdentifier as It, red as J, markSameGenerationBag as Ja, unreadableOrphanRecords as Ji, disableInstanceApiTermination as Jn, readBootstrapMarkerBody as Jo, hasReadableResources as Jr, defineOwnKey as Js, updatePartialReason as Jt, gray as K, maskSecretsInError as Ka, repairMalformedResourcesForReadOnly as Ki, isWaitAbandonedError as Kn, isCrossRegionRedirect as Ko, hasReadableOrphans as Kr, StageLoadError as Ks, redactedDeleteAddressSkip as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, hasMaskableValues as La, refuseMalformedResourcesForDeploy as Li, getCurrentResourceSecrets as Ln, buildAssetRedirectMap as Lo, parameterInputsFor as Lr, findLargeInlineResources as Ls, ccRoutedFinalSnapshotError as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, liveMatchesUnresolvedTokenFrame as Ma, refuseMalformedResourceEntriesForOrphan as Mi, CC_BROKEN_REASON as Mn, shouldRetainResource as Mo, cfnRefValueFromPhysicalId as Mr, warnDeprecatedNoPrefixCliFlag as Ms, getCurrentProducerRegions as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, inheritNestedStackParameterAssociations as Na, refuseMalformedResourcePropertiesForDestroy as Ni, ProviderRegistry as Nn, AssetPublisher as No, isStalePlaceholderArnAttribute as Nr, ssmResolvedValueType as Ns, inheritProducerRegions as Nt, compensateRemovedDeletionProtection as O, lambdaFunctionNameForMask as Oa, refuseMalformedResourceEntriesForDeploy as Oi, tagMapAsList as On, importableOutputs as Oo, carriesFetchableDynamicReference as Or, resolveStateBucketWithDefault as Os, planFailedOps as Ot, deleteTableWithIndexBusyRetry as P, recordNestedStackParameterExpressions as Pa, refuseMalformedResourcePropertiesForDrift as Pi, ccBrokenReason as Pn, isSensitiveAttributeName as Po, refStateLookupFromResource as Pr, CFN_TEMPLATE_BODY_LIMIT as Ps, ATOMIC_FINAL_SNAPSHOT_TYPES as Pt, reachableDivergentParameters as Q, DYNAMIC_REFERENCE_TOKEN_SCAN as Qa, unwrittenCreateOnlyReplacement as Qi, reDisableInstanceApiTermination as Qn, buildDockerImage as Qo, malformedExportNamesWarning as Qr, ownValue as Qs, WITHHELD_NAME_DISPLAY as Qt, hasCdkAutoDeleteTag as R, literalSplitDelimitersOf as Ra, refuseMalformedResourcesForDestroy as Ri, CloudControlProvider as Rn, createAssetRedirectResolver as Ro, passedParameterClassesOf as Rr, uploadCfnTemplate as Rs, createPreDeleteFinalSnapshot as Rt, isProtectionValueActive as S, requireConfigString as Sa, refuseMalformedOrphansForDestroy as Si, acquireIdempotencyToken as Sn, describeRegionValueKind as So, coerceParameterTypedValue as Sr, getLegacyStateBucketName as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, describeTypeWithThrottleRetry as Ta, refuseMalformedOutputsForDestroy as Ti, planTagDiff as Tn, hasReasonlessBaselineRefusal as To, getAccountInfo as Tr, resolveAutoAssetStorage as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, shareLogOnlyValues as Ua, repairMalformedOutputsForReadOnly as Ui, deleteIndeterminateGuards as Un, assertAssetBucketRegion as Uo, UNREADABLE_RESOURCES_MAP_ROW as Ur, canonicalizeRegion as Us, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ut, markRefusedBeforeApplying as V, recordLogOnlyParameterValue as Va, repairMalformedOrphanRecordsForReadOnly as Vi, unchangedBehindSecretReference as Vn, AssetModeResolver as Vo, STATE_RESOURCES_MALFORMED as Vr, expectedOwnerParam as Vs, refusesFinalSnapshot as Vt, bold as W, createSecretMasker as Wa, repairMalformedResourceEntriesForReadOnly as Wi, deleteSkipReason as Wn, ensureAssetStorage as Wo, deployRefusesOrphanRowsReason as Wr, derivePartitionAndUrlSuffix as Ws, isRedactedRecordedValue as Wt, computeParameterTaint as X, scrubResourceRecord as Xa, findActionableSilentDrops as Xi, isTerminationProtectionPropagationError as Xn, validateContainerRepoName as Xo, isReadableResourceEntry as Xr, hasPlainPrototype$1 as Xs, DeploymentEventsStore as Xt, yellow as Y, redactSecretsForState as Ya, unreadableResourceEntries as Yi, ec2InstanceProtectionSite as Yn, validateAssetBucketName as Yo, isReadableOrphanRecord as Yr, hasOwnKey as Ys, DeploymentEventsReader as Yt, namesAnyDeclaredParameter as Z, recoverMaskedOutput as Za, findSilentDropProperties as Zi, observeThenDisableInstanceApiTermination as Zn, buildDenyExternalAccessPolicy as Zo, malformedDriftResourcePropertiesWarning as Zr, nullPrototypeRecord as Zs, extractDeploymentEventError as Zt, makeCanonicalizePropertiesFn as _, configStringRefusal as _a, refuseDivergentRecordRegionForDestroy as _i, RollbackInlinePolicyWriters as _n, isLockInfoExpired as _o, s3BucketArn as _r, AssetManifestLoader as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, isStatefulRecreateTargetForReplace as aa, resolveBucketRegion as ac, malformedOrphanRowsKeptWarning as ai, isWholeDynamicReferenceValue as an, recordMaskOnlyValue as ao, regionLessSecretName as ar, formatDockerLoginError as as, makeSiblingClaimReader as at, recordedProtectionNote as b, requireConfigArray as ba, refuseMalformedOrphanRecordsForDestroy as bi, reserveStackCreateToken as bn, splitImportedOps as bo, s3BucketRegionalDomainName as br, synthesisStatusMessage as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, WARM_THROUGHPUT_MEMBERS as ca, malformedOutputsRefusalMessage as ci, collectPublishedOutputNames as cn, recordProvenPublicExpression as co, assertSendableRoleArn as cr, isMalformedEnvKey as cs, displacedOpClause as ct, conditionInputsFrom as d, toCfnInteger as da, malformedResourceEntriesWarning as di, DEFAULT_RESOURCE_TIMEOUT_MS as dn, STATE_SOURCED_CROSS_GENERATION_RULES as do, sendableAssumeRoleCommand as dr, redactedDockerCause as ds, getNestedRevertRun as dt, NO_CC_HANDLERS_REASON as ea, describeFileReadFailure as ec, malformedLocalOutputsWarning as ei, exportAliasCollisionScrubWarning as en, isUncertifiedBaselineMaskPosition as eo, DiffCalculator as er, describeDockerCapturedOutput as es, deleteJournaledOrphans as et, parentSuppliedValues as f, toFiniteNumber as fa, malformedResourcePropertiesWarning as fi, DEFAULT_RESOURCE_WARN_AFTER_MS as fn, STATE_SOURCED_READBACK_RULES as fo, AWS_CREDENTIAL_ENV_KEYS as fr, runDockerForeground as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, configIntegerRefusal as ga, previewableOrphanRecords as gi, formatDestructiveChange as gn, LockManager as go, isSettledInstanceState as gr, stripControlChars as gs, withNestedRevertRun as gt, keptWholeReasonText as h, configBooleanRefusal as ha, malformedStateRefusalMessage as hi, findDestructiveChanges as hn, isSingleDynamicReferenceToken as ho, envCredentialsAreAssumedRole as hr, escapeRegExp$3 as hs, revertedNestedRowIds as ht, childTemplateLoader as i, MULTI_REGION_RECREATE_BLOCKED_TYPES as ia, clearBucketRegionCache as ic, malformedOrphanRecordsWarning as ii, exportNameSecretExposure as in, provenPublicValue as io, producerRegionsFromState as ir, finchSecretArgvRefusal as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, TemplateParser as ja, refuseMalformedResourceEntriesForImportSave as ji, stringifyIfAssigned as jn, orphansCarriedFrom as jo, AWS_NO_VALUE as jr, stateBucketExistenceConfirmed as js, findNestedStackTypeChanges as jt, deleteBudgetKey as k, sameLambdaFunctionAddress as ka, refuseMalformedResourceEntriesForDestroy as ki, tagPlanWarning as kn, isReadableBag as ko, isNamelessDynamicReferenceError as kr, resolveStateBucketWithDefaultAndSource as ks, planRollback as kt, templateIdentity as l, coerceWarmThroughput as la, malformedOutputsWarning as li, isExportAliasCollision as ln, wholeStringLeavesOf as lo, explicitRoleArnOrThrow as lr, partitionSensitiveEnv as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, coerceCfnInteger as ma, malformedScrubResourceEntriesRefusalMessage as mi, constructPathOf as mn, WHOLE_DYNAMIC_REFERENCE_PATTERN as mo, callerEnvCredentials as mr, warnFinchArgvExposure as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, findReplacedReadersOfRecreateTargets as na, renderAssemblyPathEscape as nc, malformedLocalResourcesWarning as ni, secretBearingStateKeyWarning as nn, identityKeyFor as no, IntrinsicFunctionResolver as nr, describeDockerFailure as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, isStatefulRecreateTargetSync as oa, malformedOrphansRefusalMessage as oi, noEchoParameterValueSeed as on, recordMaskOnlyValuesIn as oo, applyRoleArnIfSet as or, getDockerCmd as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, coerceCfnBoolean as pa, malformedResourcesWarning as pi, maskingRetryLogger as pn, TEMPLATE_SOURCED_RULES as po, applyCallerIdentityCredentials as pr, runDockerStreaming as ps, recordDisplacedSkips as pt, green as q, maskSecretsInText as qa, unpreviewableOrphanRecords as qi, markWaitAbandoned as qn, parseBootstrapMarker as qo, hasReadableOutputs as qr, processStackMessages as qs, updatePartialMessage as qt, computeImplicitDeleteEdges as r, shownType as ra, resolveAssemblyPath as rc, malformedOrphanRecordsRefusalMessage as ri, secretSafeKeyDisplay as rn, carriesSecretMask as ro, classifyReplaySecretRegion as rr, dockerSpawnEnvWithSensitive as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, renderStatefulReason as sa, malformedOrphansWarning as si, collectDeclaredOutputNames as sn, recordNoEchoAttributeValues as so, assertFlagRoleArn as sr, isDockerClientEnvKey as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, hasNoCloudControlHandlers as ta, displayAssemblyPath as tc, malformedLocalResourceEntriesWarning as ti, secretBearing as tn, pathCrossesDottedKey as to, INTRINSIC_KEYS as tr, describeDockerExecFailure as ts, isHandledOrphan as tt, conditionFingerprint as u, isWarmThroughputDecrease as ua, malformedRenderedContainersWarning as ui, bindingSkippedOutputs as un, STATE_SOURCED_BASELINE_RULES as uo, isIamRoleArn as ur, redactDockerArgvValues as us, dropSettledNestedJournals as ut, withResourceDeadline as v, readConfigString as va, refuseMalformedNestedChildOutputs as vi, earliestDefined as vn, S3StateBackend as vo, s3BucketDomainName as vr, getDockerImageBySourceHash as vs, withNestedStackContext as vt, readProtection as w, templateResourceTypes as wa, refuseMalformedOutputs as wi, DBPROXY_TAG_OPTIONS as wn, hasReadableExportSet as wo, parameterTypeMayLoseSecretIdentity as wr, resolveApp as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, requireConfigObject as xa, refuseMalformedOrphans as xi, withCreateTokenLedger as xn, acceptedCreateOnlyDropsOf as xo, s3BucketWebsiteUrl as xr, getDefaultStateBucketName as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, replayWarn as ya, refuseMalformedOrphanRecords as yi, ledgerForStack as yn, rebuildClientForBucketRegion as yo, s3BucketDualStackDomainName as yr, Synthesizer as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, logOnlyValueCount as za, refuseMalformedResourcesForExport as zi, slowCcOperationTimeoutMs as zn, loadPublishableAssetManifest as zo, JSON_LISTING_HOLE_VALUE as zr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as zs, effectiveDeletionPolicy as zt };
|
|
37461
|
-
//# sourceMappingURL=deploy-engine-
|
|
37610
|
+
//# sourceMappingURL=deploy-engine-xlct0Hcm.js.map
|