@go-to-k/cdkd 0.296.3 → 0.296.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{asg-provider-CksS_6jO.js → asg-provider-DhyYUns2.js} +4 -4
- package/dist/{asg-provider-CksS_6jO.js.map → asg-provider-DhyYUns2.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-Dre6eDNJ.js → deploy-engine-Cm7z6aQk.js} +263 -84
- package/dist/deploy-engine-Cm7z6aQk.js.map +1 -0
- package/dist/{iam-policy-targets-DSDSdxXz.js → iam-policy-targets-td1X_kKN.js} +2 -2
- package/dist/{iam-policy-targets-DSDSdxXz.js.map → iam-policy-targets-td1X_kKN.js.map} +1 -1
- package/dist/{iam-role-provider-D9wk9Bnh.js → iam-role-provider-CXGJXY5J.js} +4 -4
- package/dist/{iam-role-provider-D9wk9Bnh.js.map → iam-role-provider-CXGJXY5J.js.map} +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/{logger-Dvc7ddKe.js → logger-DAaB7GFO.js} +2 -2
- package/dist/{logger-Dvc7ddKe.js.map → logger-DAaB7GFO.js.map} +1 -1
- package/dist/{neptune-provider-B1GRQ6UO.js → neptune-provider-DCgJR2NX.js} +4 -4
- package/dist/{neptune-provider-B1GRQ6UO.js.map → neptune-provider-DCgJR2NX.js.map} +1 -1
- package/dist/{program-DFehMfoh.js → program-DPk5db_j.js} +43 -24
- package/dist/program-DPk5db_j.js.map +1 -0
- package/dist/{provider-classes-Ca6o5by0.js → provider-classes-oZ8a4BHE.js} +287 -17
- package/dist/provider-classes-oZ8a4BHE.js.map +1 -0
- package/dist/{rds-provider-Dl--9uQU.js → rds-provider-B0JrOskT.js} +4 -4
- package/dist/{rds-provider-Dl--9uQU.js.map → rds-provider-B0JrOskT.js.map} +1 -1
- package/dist/{version-B5LYpWJH.js → version-CjMP26Dj.js} +2 -2
- package/dist/{version-B5LYpWJH.js.map → version-CjMP26Dj.js.map} +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-Dre6eDNJ.js.map +0 -1
- package/dist/program-DFehMfoh.js.map +0 -1
- package/dist/provider-classes-Ca6o5by0.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as getAwsClients, s as __exportAll } from "./aws-clients-CnmtbrxD.js";
|
|
2
|
-
import { A as
|
|
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-
|
|
2
|
+
import { A as displayIdent, C as withoutGeneratedFallbackName, D as UNRENDERABLE, E as STACK_REF_MAX_CODE_POINTS, F as plainIdentOr, I as safeMsg, M as displayStackName, N as isPasteableIdent, R as truncateCodePoints, S as withStackName, T as SECRET_REF_MAX_CODE_POINTS, _ as generateResourceNameWithFallback, b as looksLikeCdkdGeneratedName, c as installLogLineMaskerSource, g as generateResourceName, h as explicitNamePropertyFor, j as displaySafe, k as displayAwsMessage, l as getLiveRenderer, n as getLogger, p as applyDefaultNameForFallback, r as isStdoutReservedForPayload, s as currentLogLineMasker, v as getCurrentSkipPrefix, x as withSkipPrefix, y as getCurrentStackName } from "./logger-DAaB7GFO.js";
|
|
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-td1X_kKN.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-CjMP26Dj.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";
|
|
@@ -15777,6 +15777,15 @@ function hasStringPhysicalId(entry) {
|
|
|
15777
15777
|
const physicalId = entry.physicalId;
|
|
15778
15778
|
return typeof physicalId === "string" && physicalId !== "";
|
|
15779
15779
|
}
|
|
15780
|
+
function hasAddressablePhysicalId(entry) {
|
|
15781
|
+
const physicalId = entry.physicalId;
|
|
15782
|
+
return typeof physicalId === "string" && physicalId.trim() !== "";
|
|
15783
|
+
}
|
|
15784
|
+
function unaddressableUpdateRefusalMessage(rawStackName, rawRegion, logicalId, resourceType) {
|
|
15785
|
+
const stackName = absentIfEmpty(rawStackName);
|
|
15786
|
+
const region = absentIfEmpty(rawRegion);
|
|
15787
|
+
return `${stackClause(stackName, region)} holds a record for ${displayIdent(logicalId)} (${displayIdent(resourceType)}) with no non-empty string 'physicalId', so cdkd cannot address that resource in AWS and did not try to update it. 'cdkd deploy' fails on it rather than skipping it, since a skipped update would end the deploy without the template's change. Nothing was sent for this resource. Repair the record's 'physicalId' and re-run. ${inspectClause(stackName, region)}Inspect the record with: ` + inspectCommand(stackName, region);
|
|
15788
|
+
}
|
|
15780
15789
|
function unpreviewableOrphanRecords(state) {
|
|
15781
15790
|
if (!Array.isArray(state.orphans)) return [];
|
|
15782
15791
|
const rows = state.orphans;
|
|
@@ -18093,7 +18102,7 @@ function noteAttributeSecrecy(logicalId, attributeName, value, context) {
|
|
|
18093
18102
|
return value;
|
|
18094
18103
|
}
|
|
18095
18104
|
function recordSecretNamedRead(logicalId, value, context) {
|
|
18096
|
-
const bag = context.printingSecrets ?? context.recordedSecretValues;
|
|
18105
|
+
const bag = context.secretNameSink ?? context.printingSecrets ?? context.recordedSecretValues;
|
|
18097
18106
|
if (bag === void 0 || context.secretNameNeedles === void 0) return;
|
|
18098
18107
|
const needles = context.secretNameNeedles(logicalId);
|
|
18099
18108
|
if (needles === void 0) return;
|
|
@@ -19395,6 +19404,7 @@ async function resolveSplit(splitArgs, context) {
|
|
|
19395
19404
|
}
|
|
19396
19405
|
}
|
|
19397
19406
|
if (context.printingSecrets !== void 0 && hasLogOnlyValues(context.printingSecrets)) recordLogOnlySplitFragments([context.printingSecrets], context.printingSecrets, resolvedValue, String(delimiter));
|
|
19407
|
+
if (context.secretNameSink !== void 0 && hasLogOnlyValues(context.secretNameSink)) recordLogOnlySplitFragments([context.secretNameSink], context.secretNameSink, resolvedValue, String(delimiter));
|
|
19398
19408
|
const pieceTwins = String(delimiter) === "" && this.maskRenderedNeedlesForLog(resolvedValue, lineContext) !== resolvedValue ? result.map(() => "***") : this.splitLogTwins(resolvedValue, delimiter, result, context);
|
|
19399
19409
|
this.logger.debug(`Resolved Fn::Split: split by ${this.splitDelimiterRender(String(delimiter), lineContext)} resolved to ${this.logRender(JSON.stringify(this.maskValueLeaves(pieceTwins, lineContext)), lineContext, { structured: true })}`);
|
|
19400
19410
|
return result;
|
|
@@ -19717,7 +19727,11 @@ async function resolveBase64(value, context) {
|
|
|
19717
19727
|
}
|
|
19718
19728
|
if (context.recordedSecretValues && this.hasLogOnlyNeedles(context) && this.maskPrintedNeedlesForLog(resolvedValue, context) !== this.maskNeedlesForLog(resolvedValue, context)) recordLogOnlyValue(context.recordedSecretValues, result);
|
|
19719
19729
|
const printing = context.printingSecrets;
|
|
19720
|
-
|
|
19730
|
+
let withPrinting;
|
|
19731
|
+
const maskedWithPrinting = () => withPrinting ??= this.maskNeedlesOfBags(resolvedValue, context, printing);
|
|
19732
|
+
if (printing !== void 0 && hasMaskableValues(printing) && maskedWithPrinting() !== this.maskPrintedNeedlesForLog(resolvedValue, context)) recordLogOnlyValue(printing, result);
|
|
19733
|
+
const sink = context.secretNameSink;
|
|
19734
|
+
if (sink !== void 0 && hasMaskableValues(sink) && this.maskNeedlesOfBags(resolvedValue, context, printing, sink) !== maskedWithPrinting()) recordLogOnlyValue(sink, result);
|
|
19721
19735
|
this.logger.debug(`Resolved Fn::Base64: ${this.logRender(inputLogText, context)} resolved to ${this.logRender(inputLogText !== resolvedValue ? "***" : result, context)}`);
|
|
19722
19736
|
return result;
|
|
19723
19737
|
}
|
|
@@ -19851,7 +19865,7 @@ function bigIntToIPv6(n) {
|
|
|
19851
19865
|
function maskSecretsRaw(text, context) {
|
|
19852
19866
|
const registered = this.registeredLogTwin(text, context);
|
|
19853
19867
|
const needled = this.maskNeedlesForLog(text, context);
|
|
19854
|
-
if (this.hasLogOnlyNeedles(context) || hasMaskableValues(context?.printingSecrets)) {
|
|
19868
|
+
if (this.hasLogOnlyNeedles(context) || hasMaskableValues(context?.printingSecrets) || hasMaskableValues(context?.secretNameSink)) {
|
|
19855
19869
|
const printed = this.maskRenderedNeedlesForLog(text, context);
|
|
19856
19870
|
if (printed !== needled) return registered === void 0 ? printed : "***";
|
|
19857
19871
|
}
|
|
@@ -19882,13 +19896,13 @@ function maskPrintedNeedlesForLog(text, context) {
|
|
|
19882
19896
|
return this.maskNeedlesOfBags(text, context);
|
|
19883
19897
|
}
|
|
19884
19898
|
function maskRenderedNeedlesForLog(text, context) {
|
|
19885
|
-
return this.maskNeedlesOfBags(text, context, context?.printingSecrets);
|
|
19899
|
+
return this.maskNeedlesOfBags(text, context, context?.printingSecrets, context?.secretNameSink);
|
|
19886
19900
|
}
|
|
19887
|
-
function maskNeedlesOfBags(text, context, printing) {
|
|
19901
|
+
function maskNeedlesOfBags(text, context, ...printing) {
|
|
19888
19902
|
const union = unionOfSecretBags([
|
|
19889
19903
|
context?.inheritedSecrets,
|
|
19890
19904
|
context?.recordedSecretValues,
|
|
19891
|
-
printing
|
|
19905
|
+
...printing
|
|
19892
19906
|
]);
|
|
19893
19907
|
return hasMaskableValues(union) ? maskSecretsInText(text, union) : text;
|
|
19894
19908
|
}
|
|
@@ -21286,6 +21300,11 @@ function deleteSkipReason(result) {
|
|
|
21286
21300
|
const trimmed = result.reason.trim();
|
|
21287
21301
|
return trimmed === "" ? UNSPECIFIED_SKIP_REASON : trimmed;
|
|
21288
21302
|
}
|
|
21303
|
+
function deleteLeftInPlace(result) {
|
|
21304
|
+
if (result === void 0 || result.outcome !== "deleted") return void 0;
|
|
21305
|
+
const left = result.leftInPlace;
|
|
21306
|
+
return typeof left === "string" && left.length > 0 ? left : void 0;
|
|
21307
|
+
}
|
|
21289
21308
|
const UNSPECIFIED_SKIP_REASON = "no reason reported by the provider";
|
|
21290
21309
|
function deleteSkippedMessage(logicalId, physicalId, reason, duringClause, opts) {
|
|
21291
21310
|
return `cdkd did not confirm ${plainOrDescribed(logicalId, "logical id")} (${opts?.commandFreeLine === true ? displayIdent(physicalId, { maxCodePoints: 613 }) : skipPhysicalIdShown(physicalId)}) was deleted ${duringClause}, so it may still exist: ${skipReasonShown(reason)}`;
|
|
@@ -22031,7 +22050,7 @@ var CloudControlProvider = class {
|
|
|
22031
22050
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
22032
22051
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
22033
22052
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
22034
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
22053
|
+
const { ASGProvider } = await import("./asg-provider-DhyYUns2.js");
|
|
22035
22054
|
const delegateRegion = ambientRegion();
|
|
22036
22055
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
22037
22056
|
if (asgProvider === void 0) {
|
|
@@ -22137,7 +22156,7 @@ var CloudControlProvider = class {
|
|
|
22137
22156
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
22138
22157
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
22139
22158
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
22140
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
22159
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-B0JrOskT.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DCgJR2NX.js"))).NeptuneProvider({ region: ccRegion });
|
|
22141
22160
|
this.sdkDeleteDelegates.set(family, {
|
|
22142
22161
|
region: ccRegion,
|
|
22143
22162
|
provider
|
|
@@ -23317,6 +23336,9 @@ function describeCfnResponseBody(body, parsed) {
|
|
|
23317
23336
|
const line = `Status=${capForLog(status)} PhysicalResourceId=${capForLog(physicalId)} ${dataPart}`;
|
|
23318
23337
|
return line.length > DESCRIBE_MAX_LINE_CHARS ? `${line.slice(0, DESCRIBE_MAX_LINE_CHARS)}...(${line.length} chars total)` : line;
|
|
23319
23338
|
}
|
|
23339
|
+
function respondedPhysicalId(response) {
|
|
23340
|
+
return hasAddressablePhysicalId({ physicalId: response.PhysicalResourceId }) ? response.PhysicalResourceId : void 0;
|
|
23341
|
+
}
|
|
23320
23342
|
var CustomResourceProvider = class CustomResourceProvider {
|
|
23321
23343
|
lambdaClient;
|
|
23322
23344
|
snsClient;
|
|
@@ -23423,7 +23445,7 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
23423
23445
|
ResourceProperties: this.stringifyProperties(properties)
|
|
23424
23446
|
}), maskerOrIdentity(context?.maskSecrets));
|
|
23425
23447
|
if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
|
|
23426
|
-
const physicalId = cfnResponse
|
|
23448
|
+
const physicalId = respondedPhysicalId(cfnResponse) ?? logicalId;
|
|
23427
23449
|
const attributes = cfnResponse.Data || {};
|
|
23428
23450
|
this.logger.debug(`Successfully created custom resource ${logicalId}: ${physicalId}`);
|
|
23429
23451
|
return {
|
|
@@ -23456,7 +23478,7 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
23456
23478
|
OldResourceProperties: this.stringifyProperties(previousProperties)
|
|
23457
23479
|
}), maskerOrIdentity(context?.maskSecrets));
|
|
23458
23480
|
if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
|
|
23459
|
-
const newPhysicalId = cfnResponse
|
|
23481
|
+
const newPhysicalId = respondedPhysicalId(cfnResponse) ?? physicalId;
|
|
23460
23482
|
const wasReplaced = newPhysicalId !== physicalId;
|
|
23461
23483
|
const attributes = cfnResponse.Data || {};
|
|
23462
23484
|
this.logger.debug(`Successfully updated custom resource ${logicalId}: ${newPhysicalId}${wasReplaced ? " (replaced)" : ""}`);
|
|
@@ -28239,7 +28261,8 @@ var ReplayResolvers = class {
|
|
|
28239
28261
|
};
|
|
28240
28262
|
function regionAmbiguousReplaySecretError(logicalId, propertyPath, secretName, foreignProducerRegions, consumerRegion, execCtx) {
|
|
28241
28263
|
const where = propertyPath === "" ? "" : ` property ${quotedPlainOr(propertyPath, "property path")}`;
|
|
28242
|
-
|
|
28264
|
+
const error = new CdkdError(`Rollback of ${shownLogicalId(logicalId)}${where} cannot re-resolve the secret reference ${quotedPlainOr(secretName, "secret name")}: the reference carries no region of its own, and this stack read across a region boundary (producer region(s) on record: ${foreignProducerRegions.map((r) => plainOrDescribed(r, "region")).join(", ")}), so it may have been resolved in one of those rather than in ${quotedOrDescribed(consumerRegion, "region")}. A secret of the same name in two regions is two independent values, so replaying this would write the WRONG secret to a live resource. Refusing instead. Resolve the reference in its own region and set the property directly (or spell it as a full ARN, which names its region and is resolved there), then re-run ${rerunRollbackPhrase(execCtx, "'cdkd rollback'")}.`, "ROLLBACK_SECRET_REGION_AMBIGUOUS");
|
|
28265
|
+
return markNonRetryable(error);
|
|
28243
28266
|
}
|
|
28244
28267
|
function refuseUnprovenReplaySecret(leaf, propertyPath, logicalId, execCtx) {
|
|
28245
28268
|
if (execCtx.producerRegionsIncomplete !== true) return;
|
|
@@ -29324,7 +29347,8 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
29324
29347
|
skipped: 0,
|
|
29325
29348
|
interrupted: false,
|
|
29326
29349
|
remainingFailedOps: [],
|
|
29327
|
-
orphaned: []
|
|
29350
|
+
orphaned: [],
|
|
29351
|
+
leftInPlace: 0
|
|
29328
29352
|
};
|
|
29329
29353
|
const { logger } = ctx;
|
|
29330
29354
|
const resolver = new ReplayResolvers(ctx.region);
|
|
@@ -29431,7 +29455,12 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
29431
29455
|
...finalSnapshotIdentifier !== void 0 && { finalSnapshotIdentifier },
|
|
29432
29456
|
...ctx.skipFinalSnapshot === true && { skipFinalSnapshot: true },
|
|
29433
29457
|
deletionPolicy: snapshotPolicy ? "Snapshot" : "Delete",
|
|
29434
|
-
recordedAttributes: failedCreateRecord?.attributes
|
|
29458
|
+
recordedAttributes: failedCreateRecord?.attributes,
|
|
29459
|
+
...op.physicalIdRecoveredFromError === true && {
|
|
29460
|
+
failedCreateOrphan: true,
|
|
29461
|
+
resolveAttemptedProperties: () => resolveReplayProps(op.attemptedProperties, resolver, secrets, ctx, op.logicalId),
|
|
29462
|
+
...ctx.writtenThisRun !== void 0 && { writtenThisRun: ctx.writtenThisRun }
|
|
29463
|
+
}
|
|
29435
29464
|
});
|
|
29436
29465
|
throwIfDeleteSkipped(failedCreateDelete, op.logicalId, op.physicalId, "while deleting the partially-created resource", {
|
|
29437
29466
|
ctx,
|
|
@@ -29440,6 +29469,12 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
29440
29469
|
provisionedBy: deleteRoutedVia,
|
|
29441
29470
|
mask
|
|
29442
29471
|
});
|
|
29472
|
+
const leftInPlace = deleteLeftInPlace(failedCreateDelete);
|
|
29473
|
+
if (leftInPlace !== void 0) {
|
|
29474
|
+
logger.warn(safeMsg` Rollback: deleted partially-created ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) only in part — ${leftInPlace}; manual attention may be required`);
|
|
29475
|
+
result.warnings++;
|
|
29476
|
+
result.leftInPlace++;
|
|
29477
|
+
}
|
|
29443
29478
|
if (!isReplacementOrphan(op)) delete stateResources[op.logicalId];
|
|
29444
29479
|
await options.afterOp?.(op.logicalId);
|
|
29445
29480
|
ctx.recordEvent?.({
|
|
@@ -30018,6 +30053,105 @@ function makeSiblingClaimReader(params) {
|
|
|
30018
30053
|
};
|
|
30019
30054
|
}
|
|
30020
30055
|
|
|
30056
|
+
//#endregion
|
|
30057
|
+
//#region src/deployment/secret-name-needles.ts
|
|
30058
|
+
function secretNameNeedlesOf(logicalId, record, secrets, options) {
|
|
30059
|
+
const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
|
|
30060
|
+
const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
|
|
30061
|
+
const mask = (text) => bag === void 0 ? text : maskSecretsInText(text, bag);
|
|
30062
|
+
const unresolved = (value) => value.includes("{{resolve:") || value === "***";
|
|
30063
|
+
const named = {
|
|
30064
|
+
resourceType: record?.resourceType,
|
|
30065
|
+
properties: record?.properties,
|
|
30066
|
+
logicalId
|
|
30067
|
+
};
|
|
30068
|
+
const needles = /* @__PURE__ */ new Set();
|
|
30069
|
+
const add = (needle) => {
|
|
30070
|
+
if (typeof needle === "string" && needle !== "") needles.add(needle);
|
|
30071
|
+
};
|
|
30072
|
+
for (const [raw, derived] of secretDerivedNamePairs({
|
|
30073
|
+
...named,
|
|
30074
|
+
physicalIds: []
|
|
30075
|
+
})) if (typeof raw === "string" && !unresolved(raw) && isSecretDerivedValue(raw, mask)) add(derived);
|
|
30076
|
+
for (const [raw, spelling] of secretDerivedNamePairs({
|
|
30077
|
+
...named,
|
|
30078
|
+
physicalIds: [physicalId ?? "cdkd-no-physical-id-yet"]
|
|
30079
|
+
})) {
|
|
30080
|
+
if (!isSecretDerivedValue(raw, mask)) continue;
|
|
30081
|
+
if (unresolved(raw)) {
|
|
30082
|
+
if (physicalId === void 0) continue;
|
|
30083
|
+
add(spelling);
|
|
30084
|
+
} else {
|
|
30085
|
+
add(raw);
|
|
30086
|
+
if (raw.toLowerCase() !== raw && raw.length >= 4) add(raw.toLowerCase());
|
|
30087
|
+
}
|
|
30088
|
+
}
|
|
30089
|
+
const properties = record?.properties;
|
|
30090
|
+
const path = properties !== null && typeof properties === "object" && Object.hasOwn(properties, "Path") ? properties["Path"] : void 0;
|
|
30091
|
+
if (physicalId !== void 0 && isSecretDerivedValue(path, mask)) add(physicalId);
|
|
30092
|
+
const embedded = options === void 0 ? secrets : options.embedded;
|
|
30093
|
+
const embeddedBag = embedded !== void 0 && hasMaskableValues(embedded) ? embedded : void 0;
|
|
30094
|
+
if (embeddedBag !== void 0 && physicalId !== void 0) {
|
|
30095
|
+
for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
|
|
30096
|
+
}
|
|
30097
|
+
return needles.size > 0 ? needles : void 0;
|
|
30098
|
+
}
|
|
30099
|
+
function secretNamesReadBy(logicalId, record, resources, judge = () => ({
|
|
30100
|
+
secrets: void 0,
|
|
30101
|
+
embedded: void 0
|
|
30102
|
+
})) {
|
|
30103
|
+
const read = /* @__PURE__ */ new Set();
|
|
30104
|
+
const leaves = [...wholeStringLeavesOf(record?.properties)].filter((leaf) => leaf !== "");
|
|
30105
|
+
if (leaves.length === 0) return read;
|
|
30106
|
+
for (const [otherId, other] of Object.entries(resources)) {
|
|
30107
|
+
if (otherId === logicalId) continue;
|
|
30108
|
+
const bags = judge(otherId);
|
|
30109
|
+
const needles = secretNameNeedlesOf(otherId, other, bags.secrets, { embedded: bags.embedded });
|
|
30110
|
+
if (needles === void 0) continue;
|
|
30111
|
+
for (const needle of needles) if (leaves.some((leaf) => leaf === needle || needle.length >= 4 && leaf.includes(needle))) read.add(needle);
|
|
30112
|
+
}
|
|
30113
|
+
return read;
|
|
30114
|
+
}
|
|
30115
|
+
function stateSecretNameNeedles(resources, secrets) {
|
|
30116
|
+
return (logicalId) => secretNameNeedlesOf(logicalId, Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0, secrets, { embedded: void 0 });
|
|
30117
|
+
}
|
|
30118
|
+
function secretNamePrintingBag(logicalId, resources) {
|
|
30119
|
+
const bag = /* @__PURE__ */ new Map();
|
|
30120
|
+
const record = Object.hasOwn(resources, logicalId) ? resources[logicalId] : void 0;
|
|
30121
|
+
for (const needle of secretNameNeedlesOf(logicalId, record, void 0) ?? []) recordLogOnlyValue(bag, needle);
|
|
30122
|
+
for (const needle of secretNamesReadBy(logicalId, record, resources)) recordLogOnlyValue(bag, needle);
|
|
30123
|
+
return bag;
|
|
30124
|
+
}
|
|
30125
|
+
function journaledOrphanPrintingBag(ops, stateResources) {
|
|
30126
|
+
const bag = /* @__PURE__ */ new Map();
|
|
30127
|
+
for (const op of ops) {
|
|
30128
|
+
const record = {
|
|
30129
|
+
resourceType: op.resourceType,
|
|
30130
|
+
physicalId: op.physicalId,
|
|
30131
|
+
properties: op.attemptedProperties
|
|
30132
|
+
};
|
|
30133
|
+
const replaced = Object.hasOwn(stateResources, op.logicalId) ? stateResources[op.logicalId] : void 0;
|
|
30134
|
+
for (const needle of [
|
|
30135
|
+
...secretNameNeedlesOf(op.logicalId, record, void 0) ?? [],
|
|
30136
|
+
...secretNameNeedlesOf(op.logicalId, replaced, void 0) ?? [],
|
|
30137
|
+
...secretNamesReadBy(op.logicalId, record, stateResources)
|
|
30138
|
+
]) recordLogOnlyValue(bag, needle);
|
|
30139
|
+
}
|
|
30140
|
+
return bag;
|
|
30141
|
+
}
|
|
30142
|
+
function maskEventTextWithBoundBags(event) {
|
|
30143
|
+
if (event.reason === void 0 && event.error === void 0) return event;
|
|
30144
|
+
const mask = currentLogLineMasker();
|
|
30145
|
+
if (mask === void 0) return event;
|
|
30146
|
+
const masked = { ...event };
|
|
30147
|
+
if (masked.error?.message && masked.error.ownLines !== true) masked.error = {
|
|
30148
|
+
...masked.error,
|
|
30149
|
+
message: mask(masked.error.message)
|
|
30150
|
+
};
|
|
30151
|
+
if (masked.reason) masked.reason = mask(masked.reason);
|
|
30152
|
+
return masked;
|
|
30153
|
+
}
|
|
30154
|
+
|
|
30021
30155
|
//#endregion
|
|
30022
30156
|
//#region src/deployment/rollback-executor/journaled-orphans.ts
|
|
30023
30157
|
const NONE = {
|
|
@@ -30078,24 +30212,32 @@ async function deleteJournaledOrphans(orphans, stateResources, stackName, ctx, o
|
|
|
30078
30212
|
failures: 0,
|
|
30079
30213
|
warnings: 0,
|
|
30080
30214
|
interrupted: false,
|
|
30081
|
-
handled: []
|
|
30215
|
+
handled: [],
|
|
30216
|
+
leftInPlace: 0
|
|
30082
30217
|
};
|
|
30083
30218
|
const inlinePolicyWriters = new RollbackInlinePolicyWriters();
|
|
30219
|
+
const record = ctx.recordEvent;
|
|
30220
|
+
const printing = journaledOrphanPrintingBag(orphans.segments.flatMap(({ ops, companions }) => [...companions ?? [], ...ops]), stateResources);
|
|
30221
|
+
const maskedCtx = record === void 0 ? ctx : {
|
|
30222
|
+
...ctx,
|
|
30223
|
+
recordEvent: (event) => record(maskEventTextWithBoundBags(event))
|
|
30224
|
+
};
|
|
30084
30225
|
for (const { segment, ops: orphanOps, companions } of orphans.segments) {
|
|
30085
30226
|
if (options.isInterrupted?.()) {
|
|
30086
30227
|
total.interrupted = true;
|
|
30087
30228
|
break;
|
|
30088
30229
|
}
|
|
30089
30230
|
const ops = [...companions ?? [], ...orphanOps];
|
|
30090
|
-
const replay = () => withStackName(stackName, () => replayFailedOperations(ops, stateResources, stackName,
|
|
30231
|
+
const replay = () => withPrintingSecrets(printing, () => withStackName(stackName, () => replayFailedOperations(ops, stateResources, stackName, maskedCtx, {
|
|
30091
30232
|
emitEnvelope: false,
|
|
30092
30233
|
inlinePolicyWriters,
|
|
30093
30234
|
forDestroy: true,
|
|
30094
30235
|
...options.isInterrupted && { isInterrupted: options.isInterrupted }
|
|
30095
|
-
}));
|
|
30236
|
+
})));
|
|
30096
30237
|
const result = segment.skipPrefix === void 0 ? await replay() : await withSkipPrefix(segment.skipPrefix, replay);
|
|
30097
30238
|
total.failures += result.failures;
|
|
30098
30239
|
total.warnings += result.warnings;
|
|
30240
|
+
total.leftInPlace += result.leftInPlace;
|
|
30099
30241
|
const pending = new Set(result.remainingFailedOps);
|
|
30100
30242
|
for (const op of ops) if (!pending.has(op)) total.handled.push({
|
|
30101
30243
|
segment,
|
|
@@ -30136,19 +30278,26 @@ async function settleJournaledOrphansOnSuccess(args) {
|
|
|
30136
30278
|
op
|
|
30137
30279
|
})));
|
|
30138
30280
|
let kept = all;
|
|
30281
|
+
let leftInPlace = 0;
|
|
30139
30282
|
if (stateResources === void 0) logger.warn(safeMsg`The rollback journal of stack ${stack} records ${all.length} resource(s) a failed deploy ` + `created, but the stack's state cannot be read, so whether a record now owns them is unknown: none is deleted.`);
|
|
30140
30283
|
else {
|
|
30141
30284
|
logger.info(safeMsg`The rollback journal of stack ${stack} records ${all.length} resource(s) a failed deploy ` + `created that no state record holds; acting on them per their DeletionPolicy before the journal is removed:`);
|
|
30142
30285
|
for (const line of journaledOrphanLines(orphans, logger)) logger.info(line);
|
|
30143
30286
|
try {
|
|
30144
30287
|
const { unreadable, tracked } = await applySuccessRule(orphans, stateResources, orphans.deployLogicalIds ?? /* @__PURE__ */ new Set(), args.foreignHolder, stack, logger, args.isInterrupted);
|
|
30145
|
-
const
|
|
30288
|
+
const acting = {
|
|
30146
30289
|
segments: orphans.segments.map(({ segment, ops }) => ({
|
|
30147
30290
|
segment,
|
|
30148
30291
|
ops: ops.filter((op) => !unreadable.has(op) && !tracked.has(op))
|
|
30149
30292
|
})).filter(({ ops }) => ops.length > 0),
|
|
30150
30293
|
count: orphans.count - unreadable.size - tracked.size
|
|
30151
|
-
}
|
|
30294
|
+
};
|
|
30295
|
+
const writtenThisRun = [...orphans.deployLogicalIds ?? []].filter((id) => Object.prototype.hasOwnProperty.call(stateResources, id)).map((id) => stateResources[id]).filter((r) => r !== void 0 && r !== null && typeof r === "object");
|
|
30296
|
+
const outcome = await deleteJournaledOrphans(acting, { ...stateResources }, stackName, {
|
|
30297
|
+
...ctx,
|
|
30298
|
+
writtenThisRun
|
|
30299
|
+
}, args.isInterrupted ? { isInterrupted: args.isInterrupted } : {});
|
|
30300
|
+
leftInPlace = outcome.leftInPlace;
|
|
30152
30301
|
kept = all.filter(({ segment, op }) => unreadable.has(op) || !tracked.has(op) && !isHandledOrphan(outcome.handled, segment, op));
|
|
30153
30302
|
} catch (err) {
|
|
30154
30303
|
logger.warn(safeMsg`Acting on the journaled resources of stack ${stack} failed: ${errorDetail(err)}`);
|
|
@@ -30169,7 +30318,7 @@ async function settleJournaledOrphansOnSuccess(args) {
|
|
|
30169
30318
|
}
|
|
30170
30319
|
};
|
|
30171
30320
|
if (kept.length === 0) return {
|
|
30172
|
-
unaddressed: skipped,
|
|
30321
|
+
unaddressed: skipped + leftInPlace,
|
|
30173
30322
|
keepJournal: false,
|
|
30174
30323
|
...stripCleared && { stripCleared }
|
|
30175
30324
|
};
|
|
@@ -30190,7 +30339,7 @@ async function settleJournaledOrphansOnSuccess(args) {
|
|
|
30190
30339
|
}
|
|
30191
30340
|
logger.warn(safeMsg`${kept.length} resource(s) a failed deploy of stack ${stack} created were not deleted ` + (reduced ? "(see above). The rollback journal, their only record, is kept with just them; the next " : "(see above). The rollback journal, their only record, is kept; the next ") + "successful deploy retries.");
|
|
30192
30341
|
return {
|
|
30193
|
-
unaddressed: kept.length + skipped,
|
|
30342
|
+
unaddressed: kept.length + skipped + leftInPlace,
|
|
30194
30343
|
keepJournal: true
|
|
30195
30344
|
};
|
|
30196
30345
|
}
|
|
@@ -30366,15 +30515,46 @@ async function adoptRollbackOrphans(currentState, effectiveTemplate) {
|
|
|
30366
30515
|
}),
|
|
30367
30516
|
logger: { debug: (m) => this.logger.debug(m) }
|
|
30368
30517
|
});
|
|
30369
|
-
|
|
30370
|
-
|
|
30518
|
+
const named = /* @__PURE__ */ new Map();
|
|
30519
|
+
for (const entry of records) {
|
|
30520
|
+
if (entry === null || typeof entry !== "object") continue;
|
|
30521
|
+
const { logicalId, state } = entry;
|
|
30522
|
+
if (typeof logicalId !== "string" || state === null || typeof state !== "object") continue;
|
|
30523
|
+
for (const needle of secretNameNeedlesOf(logicalId, state, void 0) ?? []) recordLogOnlyValue(named, needle);
|
|
30524
|
+
}
|
|
30525
|
+
for (const notice of plan.notices) this.logger.info(maskSecretsInText(notice, named));
|
|
30526
|
+
if (plan.refusals.length > 0) throw new Error(`Deploy refused — cdkd left ${plan.refusals.length} resource(s) in AWS that it cannot safely re-adopt:\n ${plan.refusals.map((r) => maskSecretsInText(r, named)).join("\n ")}`);
|
|
30371
30527
|
for (const [logicalId, record] of Object.entries(plan.adopted)) {
|
|
30372
30528
|
currentState.resources[logicalId] = record;
|
|
30373
|
-
this.logger.info(`Adopting ${displayIdent(logicalId)} (${displayIdent(record.resourceType)}) left in AWS by an earlier rollback as ${displaySafe(record.physicalId)}`);
|
|
30529
|
+
this.logger.info(`Adopting ${displayIdent(logicalId)} (${displayIdent(record.resourceType)}) left in AWS by an earlier rollback as ${displaySafe(maskSecretsInText(record.physicalId, named))}`);
|
|
30374
30530
|
}
|
|
30375
30531
|
if (records.length > 0) currentState.orphans = plan.remaining;
|
|
30376
30532
|
return plan;
|
|
30377
30533
|
}
|
|
30534
|
+
function orphanReplayPrintingBag(engine, orphanOps, stateResources) {
|
|
30535
|
+
const read = /* @__PURE__ */ new Map();
|
|
30536
|
+
for (const op of orphanOps) {
|
|
30537
|
+
const names = secretNamesReadBy(op.logicalId, { properties: op.attemptedProperties }, stateResources, (otherId) => ({
|
|
30538
|
+
secrets: engine.namingSecretsFor(otherId),
|
|
30539
|
+
embedded: engine.perResourceSecrets.get(otherId)
|
|
30540
|
+
}));
|
|
30541
|
+
for (const needle of names) recordLogOnlyValue(read, needle);
|
|
30542
|
+
}
|
|
30543
|
+
const own = /* @__PURE__ */ new Map();
|
|
30544
|
+
for (const op of orphanOps) {
|
|
30545
|
+
const needles = secretNameNeedlesOf(op.logicalId, {
|
|
30546
|
+
resourceType: op.resourceType,
|
|
30547
|
+
physicalId: op.physicalId,
|
|
30548
|
+
properties: op.attemptedProperties
|
|
30549
|
+
}, engine.namingSecretsFor(op.logicalId), { embedded: engine.perResourceSecrets.get(op.logicalId) });
|
|
30550
|
+
for (const needle of needles ?? []) recordLogOnlyValue(own, needle);
|
|
30551
|
+
}
|
|
30552
|
+
return unionOfSecretBags([
|
|
30553
|
+
...orphanOps.map((op) => engine.printingSecretsFor(op.logicalId)),
|
|
30554
|
+
own,
|
|
30555
|
+
read
|
|
30556
|
+
]);
|
|
30557
|
+
}
|
|
30378
30558
|
async function performRollback(completedOperations, stateResources, stackName, previousState, failedOperations = [], priorOrphans = []) {
|
|
30379
30559
|
const orphanIndexes = [];
|
|
30380
30560
|
const orphanOps = [];
|
|
@@ -30392,10 +30572,10 @@ async function performRollback(completedOperations, stateResources, stackName, p
|
|
|
30392
30572
|
const runId = this.options.eventRecorder?.runId;
|
|
30393
30573
|
const { result, failed, run } = await withNestedRevertRun(runId, async (scope) => {
|
|
30394
30574
|
return {
|
|
30395
|
-
failed: orphanOps.length > 0 ? await replayFailedOperations(orphanOps, stateResources, stackName, ctx, {
|
|
30575
|
+
failed: orphanOps.length > 0 ? await withPrintingSecrets(orphanReplayPrintingBag(this, orphanOps, stateResources), () => replayFailedOperations(orphanOps, stateResources, stackName, ctx, {
|
|
30396
30576
|
emitEnvelope: completedOperations.length === 0,
|
|
30397
30577
|
inlinePolicyWriters
|
|
30398
|
-
}) : void 0,
|
|
30578
|
+
})) : void 0,
|
|
30399
30579
|
result: await replayRollback(completedOperations, stateResources, stackName, ctx, { inlinePolicyWriters }),
|
|
30400
30580
|
run: scope
|
|
30401
30581
|
};
|
|
@@ -30542,7 +30722,7 @@ function rollbackExecutorContext(previousState, stackName) {
|
|
|
30542
30722
|
providerRegistry: this.providerRegistry,
|
|
30543
30723
|
region: this.stackRegion,
|
|
30544
30724
|
logger: this.logger,
|
|
30545
|
-
recordEvent: (event) => this.recordEvent(event),
|
|
30725
|
+
recordEvent: (event) => this.recordEvent(maskEventTextWithBoundBags(event)),
|
|
30546
30726
|
finalSnapshotClients: this.options.finalSnapshotClients,
|
|
30547
30727
|
skipFinalSnapshot: this.options.skipFinalSnapshot,
|
|
30548
30728
|
...this.options.parentStackInfo && { nestedChildStack: stackName },
|
|
@@ -30980,6 +31160,7 @@ function kickOffAutoRefreshObservedProperties(stateResources, crossStackReads) {
|
|
|
30980
31160
|
const candidates = [];
|
|
30981
31161
|
const masked = [];
|
|
30982
31162
|
for (const [logicalId, resource] of Object.entries(stateResources)) {
|
|
31163
|
+
if (!hasAddressablePhysicalId(resource)) continue;
|
|
30983
31164
|
if (resource.observedProperties !== void 0) {
|
|
30984
31165
|
if (isMaskedBaselineRecaptureCandidate(resource)) masked.push({
|
|
30985
31166
|
logicalId,
|
|
@@ -31174,47 +31355,6 @@ async function readReaderForFreshNoEchoCeiling(logicalId, currentResource, secre
|
|
|
31174
31355
|
function maskForResource(logicalId, text) {
|
|
31175
31356
|
return maskSecretsInText(text, this.printingSecretsFor(logicalId) ?? EMPTY_SECRETS);
|
|
31176
31357
|
}
|
|
31177
|
-
function secretNameNeedlesOf(logicalId, record, secrets, options) {
|
|
31178
|
-
const physicalId = typeof record?.physicalId === "string" && record.physicalId !== "" ? record.physicalId : void 0;
|
|
31179
|
-
const bag = secrets !== void 0 && hasMaskableValues(secrets) ? secrets : void 0;
|
|
31180
|
-
const mask = (text) => bag === void 0 ? text : maskSecretsInText(text, bag);
|
|
31181
|
-
const unresolved = (value) => value.includes("{{resolve:") || value === "***";
|
|
31182
|
-
const named = {
|
|
31183
|
-
resourceType: record?.resourceType,
|
|
31184
|
-
properties: record?.properties,
|
|
31185
|
-
logicalId
|
|
31186
|
-
};
|
|
31187
|
-
const needles = /* @__PURE__ */ new Set();
|
|
31188
|
-
const add = (needle) => {
|
|
31189
|
-
if (typeof needle === "string" && needle !== "") needles.add(needle);
|
|
31190
|
-
};
|
|
31191
|
-
for (const [raw, derived] of secretDerivedNamePairs({
|
|
31192
|
-
...named,
|
|
31193
|
-
physicalIds: []
|
|
31194
|
-
})) if (typeof raw === "string" && !unresolved(raw) && isSecretDerivedValue(raw, mask)) add(derived);
|
|
31195
|
-
for (const [raw, spelling] of secretDerivedNamePairs({
|
|
31196
|
-
...named,
|
|
31197
|
-
physicalIds: [physicalId ?? "cdkd-no-physical-id-yet"]
|
|
31198
|
-
})) {
|
|
31199
|
-
if (!isSecretDerivedValue(raw, mask)) continue;
|
|
31200
|
-
if (unresolved(raw)) {
|
|
31201
|
-
if (physicalId === void 0) continue;
|
|
31202
|
-
add(spelling);
|
|
31203
|
-
} else {
|
|
31204
|
-
add(raw);
|
|
31205
|
-
if (raw.toLowerCase() !== raw && raw.length >= 4) add(raw.toLowerCase());
|
|
31206
|
-
}
|
|
31207
|
-
}
|
|
31208
|
-
const properties = record?.properties;
|
|
31209
|
-
const path = properties !== null && typeof properties === "object" && Object.hasOwn(properties, "Path") ? properties["Path"] : void 0;
|
|
31210
|
-
if (physicalId !== void 0 && isSecretDerivedValue(path, mask)) add(physicalId);
|
|
31211
|
-
const embedded = options === void 0 ? secrets : options.embedded;
|
|
31212
|
-
const embeddedBag = embedded !== void 0 && hasMaskableValues(embedded) ? embedded : void 0;
|
|
31213
|
-
if (embeddedBag !== void 0 && physicalId !== void 0) {
|
|
31214
|
-
for (const needle of printingCorpusOf(embeddedBag).keys()) if (needle !== "" && (needle === physicalId || needle.length >= 4 && physicalId.includes(needle))) add(needle);
|
|
31215
|
-
}
|
|
31216
|
-
return needles.size > 0 ? needles : void 0;
|
|
31217
|
-
}
|
|
31218
31358
|
function secretNameBagFor(logicalId) {
|
|
31219
31359
|
let bag = this.secretNameNeedles.get(logicalId);
|
|
31220
31360
|
if (bag === void 0) {
|
|
@@ -31237,17 +31377,13 @@ function namingSecretsFor(logicalId) {
|
|
|
31237
31377
|
return unionOfSecretBags([own, noEcho]);
|
|
31238
31378
|
}
|
|
31239
31379
|
function noteSecretNamedReads(logicalId, record, resources) {
|
|
31240
|
-
const
|
|
31241
|
-
|
|
31242
|
-
|
|
31243
|
-
|
|
31244
|
-
|
|
31245
|
-
|
|
31246
|
-
|
|
31247
|
-
if (read.length === 0) continue;
|
|
31248
|
-
const registry = this.secretNameBagFor(logicalId);
|
|
31249
|
-
for (const needle of read) recordLogOnlyValue(registry, needle);
|
|
31250
|
-
}
|
|
31380
|
+
const read = secretNamesReadBy(logicalId, record, resources, (otherId) => ({
|
|
31381
|
+
secrets: this.namingSecretsFor(otherId),
|
|
31382
|
+
embedded: this.perResourceSecrets.get(otherId)
|
|
31383
|
+
}));
|
|
31384
|
+
if (read.size === 0) return;
|
|
31385
|
+
const registry = this.secretNameBagFor(logicalId);
|
|
31386
|
+
for (const needle of read) recordLogOnlyValue(registry, needle);
|
|
31251
31387
|
}
|
|
31252
31388
|
function printingSecretsFor(logicalId) {
|
|
31253
31389
|
const secrets = this.perResourceSecrets.get(logicalId);
|
|
@@ -31511,6 +31647,7 @@ async function deleteReplacedAfterCreate(logicalId, oldResourceType, currentReso
|
|
|
31511
31647
|
async function readRecordAttributes(input) {
|
|
31512
31648
|
const { provider, logicalId, resource, stackName, region } = input;
|
|
31513
31649
|
if (!provider.import) return { kind: "not-attempted" };
|
|
31650
|
+
if (!hasAddressablePhysicalId(resource)) return { kind: "not-attempted" };
|
|
31514
31651
|
const found = await provider.import({
|
|
31515
31652
|
logicalId,
|
|
31516
31653
|
resourceType: resource.resourceType,
|
|
@@ -34807,6 +34944,7 @@ async function provisionUpdate(logicalId, change, stateResources, stackName, tem
|
|
|
34807
34944
|
return;
|
|
34808
34945
|
}
|
|
34809
34946
|
this.refuseRedactedAttributeReads(logicalId, resourceType, context);
|
|
34947
|
+
if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) throw markRefusedBeforeApplying(markNonRetryable(new CdkdError(unaddressableUpdateRefusalMessage(stackName, this.stackRegion, logicalId, oldResourceType), STATE_RESOURCES_MALFORMED)));
|
|
34810
34948
|
this.attemptedResolvedProps.set(logicalId, resolvedProps);
|
|
34811
34949
|
const noEchoHeldPaths = /* @__PURE__ */ new Set();
|
|
34812
34950
|
if (change.propertyChanges?.some((pc) => pc.requiresReplacement) === true) {
|
|
@@ -35453,6 +35591,46 @@ async function provisionDelete(logicalId, change, stateResources, stackName, tem
|
|
|
35453
35591
|
await noteRetainedResource(resourceType, logicalId);
|
|
35454
35592
|
return;
|
|
35455
35593
|
}
|
|
35594
|
+
if (!(currentResource.resourceType === "AWS::CloudFormation::Stack" && currentResource.provisionedBy !== "cc-api") && !hasAddressablePhysicalId(currentResource)) {
|
|
35595
|
+
const reason = "state record has no physical id";
|
|
35596
|
+
if (progress) progress.current++;
|
|
35597
|
+
const skipPrefix = progress ? `[${progress.current}/${progress.total}] ` : " ";
|
|
35598
|
+
renderer.removeTask(logicalId);
|
|
35599
|
+
const skipLine = formatResourceLine("skipped", logicalId, resourceType, `skipped (${reason})`);
|
|
35600
|
+
this.logger.info(safeMsg`${skipPrefix}${skipLine}`);
|
|
35601
|
+
const showCommand = pasteableCommand("cdkd state show", [{
|
|
35602
|
+
value: stackName,
|
|
35603
|
+
hole: "stack",
|
|
35604
|
+
opts: { plainIdent: true }
|
|
35605
|
+
}, {
|
|
35606
|
+
flag: "--stack-region",
|
|
35607
|
+
value: this.stackRegion,
|
|
35608
|
+
hole: "region"
|
|
35609
|
+
}]).command;
|
|
35610
|
+
const dropCommand = pasteableCommand("cdkd state orphan", [
|
|
35611
|
+
{
|
|
35612
|
+
value: stackName,
|
|
35613
|
+
hole: "stack",
|
|
35614
|
+
opts: { plainIdent: true }
|
|
35615
|
+
},
|
|
35616
|
+
{
|
|
35617
|
+
flag: "--stack-region",
|
|
35618
|
+
value: this.stackRegion,
|
|
35619
|
+
hole: "region"
|
|
35620
|
+
},
|
|
35621
|
+
{
|
|
35622
|
+
flag: "--resource",
|
|
35623
|
+
value: logicalId,
|
|
35624
|
+
hole: "logicalId",
|
|
35625
|
+
opts: { plainIdent: true }
|
|
35626
|
+
}
|
|
35627
|
+
]).command;
|
|
35628
|
+
this.logger.warn(safeMsg`Resource ${displaySafe(logicalId)} (${displaySafe(resourceType)}) has no non-empty string 'physicalId' in its state record, so cdkd cannot address it in AWS and did not try to delete it while removing it from the template. Its cdkd state record was KEPT, so the next 'cdkd deploy' re-attempts the delete. Repair the record's 'physicalId', or delete the resource by hand and drop the record.
|
|
35629
|
+
Inspect it with: ${showCommand}
|
|
35630
|
+
Drop the record with: ${dropCommand}`);
|
|
35631
|
+
if (counts) counts.deleteSkipped++;
|
|
35632
|
+
return { deleteSkipped: reason };
|
|
35633
|
+
}
|
|
35456
35634
|
const governingPolicy = effectiveDeletionPolicy(resourceType, deletionPolicy, currentResource.properties);
|
|
35457
35635
|
const finalSnapshotIdentifier = await this.prepareFinalSnapshotForDelete(logicalId, resourceType, currentResource, governingPolicy);
|
|
35458
35636
|
const deleteRoute = this.providerRegistry.getProviderFor({
|
|
@@ -35711,7 +35889,7 @@ async function provisionResource(logicalId, change, stateResources, stackName, t
|
|
|
35711
35889
|
logicalId,
|
|
35712
35890
|
resourceType,
|
|
35713
35891
|
...stateResources[logicalId]?.provisionedBy ? { provisionedBy: stateResources[logicalId]?.provisionedBy } : labelRouting && { provisionedBy: labelRouting },
|
|
35714
|
-
...stateResources[logicalId]
|
|
35892
|
+
...stateResources[logicalId] !== void 0 && hasAddressablePhysicalId(stateResources[logicalId]) && { physicalId: stateResources[logicalId].physicalId },
|
|
35715
35893
|
reason: deleteSkipped,
|
|
35716
35894
|
durationMs: Date.now() - resourceStartedAt
|
|
35717
35895
|
});
|
|
@@ -36966,6 +37144,7 @@ async function doDeployWithPrefetch(stackName, template, createOnlyPrefetch) {
|
|
|
36966
37144
|
refuseMalformedOutputs(currentState, stackName, this.stackRegion);
|
|
36967
37145
|
refuseMalformedResourcesForDeploy(currentState, stackName, this.stackRegion);
|
|
36968
37146
|
refuseMalformedResourceEntriesForDeploy(currentState, stackName, this.stackRegion);
|
|
37147
|
+
refuseMalformedResourceProperties(currentState, stackName, this.stackRegion);
|
|
36969
37148
|
refuseMalformedOrphans(currentState, stackName, this.stackRegion);
|
|
36970
37149
|
refuseMalformedOrphanRecords(currentState, stackName, this.stackRegion);
|
|
36971
37150
|
const migrationPending = currentStateData?.migrationPending ?? false;
|
|
@@ -37742,5 +37921,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
|
|
|
37742
37921
|
DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
|
|
37743
37922
|
|
|
37744
37923
|
//#endregion
|
|
37745
|
-
export { resourcesNamingDeclaredParameter as $, recoverMaskedOutput as $a, findSilentDropProperties as $i, observeThenDisableInstanceApiTermination as $n, buildDenyExternalAccessPolicy as $o, malformedDriftResourcePropertiesWarning as $r, nullPrototypeRecord as $s, extractDeploymentEventError as $t, resolveDynamoDbDeleteBudgetClock as A, lambdaFunctionNameForMask as Aa, refuseMalformedResourceEntriesForDeploy as Ai, tagMapAsList as An, importableOutputs as Ao, carriesFetchableDynamicReference as Ar, resolveStateBucketWithDefault as As, planRollback as At, getPriorAttempts as B, literalSplitDelimitersOf as Ba, refuseMalformedResourcesForDestroy as Bi, CloudControlProvider as Bn, createAssetRedirectResolver as Bo, passedParameterClassesOf as Br, uploadCfnTemplate as Bs, createPreDeleteFinalSnapshot as Bt, perType as C, requireConfigObject as Ca, refuseMalformedOrphans as Ci, withCreateTokenLedger as Cn, acceptedCreateOnlyDropsOf as Co, s3BucketWebsiteUrl as Cr, getDefaultStateBucketName as Cs, getStackRecords as Ct, beginDeleteWait as D, describeTypeWithThrottleRetry as Da, refuseMalformedOutputsForDestroy as Di, planTagDiff as Dn, hasReasonlessBaselineRefusal as Do, getAccountInfo as Dr, resolveAutoAssetStorage as Ds, isJournaledOrphan as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, templateResourceTypes as Ea, refuseMalformedOutputs as Ei, DBPROXY_TAG_OPTIONS as En, hasReadableExportSet as Eo, parameterTypeMayLoseSecretIdentity as Er, resolveApp as Es, demoteSupersededOrphans as Et, waitForIndexesSettled as F, inheritNestedStackParameterAssociations as Fa, refuseMalformedResourcePropertiesForDestroy as Fi, ProviderRegistry as Fn, AssetPublisher as Fo, isStalePlaceholderArnAttribute as Fr, ssmResolvedValueType as Fs, inheritProducerRegions as Ft, cyan as G, shareLogOnlyValues as Ga, repairMalformedOutputsForReadOnly as Gi, deleteIndeterminateGuards as Gn, assertAssetBucketRegion as Go, UNREADABLE_RESOURCES_MAP_ROW as Gr, canonicalizeRegion as Gs, REDACTED_DELETE_ADDRESS_SKIP_REASON as Gt, formatResourceLine as H, printingCorpusOf as Ha, refuseMalformedState as Hi, ccProtectionRegistryTypes as Hn, rewriteTemplateAssetReferences as Ho, STATE_REGION_DIVERGED as Hr, decodeListingKey as Hs, isFinalSnapshotError as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, recordNestedStackParameterExpressions as Ia, refuseMalformedResourcePropertiesForDrift as Ii, ccBrokenReason as In, isSensitiveAttributeName as Io, refStateLookupFromResource as Ir, CFN_TEMPLATE_BODY_LIMIT as Is, ATOMIC_FINAL_SNAPSHOT_TYPES as It, red as J, maskSecretsInError as Ja, repairMalformedResourcesForReadOnly as Ji, isWaitAbandonedError as Jn, isCrossRegionRedirect as Jo, hasReadableOrphans as Jr, StageLoadError as Js, redactedDeleteAddressSkip as Jt, gray as K, createSecretMasker as Ka, repairMalformedResourceEntriesForReadOnly as Ki, deleteSkipReason as Kn, ensureAssetStorage as Ko, deployRefusesOrphanRowsReason as Kr, derivePartitionAndUrlSuffix as Ks, isRedactedRecordedValue as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, carryLogOnlyValues as La, refuseMalformedResourcePropertiesForExport as Li, wouldReturnToSdkProvider as Ln, stringifyValue as Lo, parseWebACLArn as Lr, CFN_TEMPLATE_URL_LIMIT as Ls, PRE_DELETE_SNAPSHOT_TYPES as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, DagBuilder as Ma, refuseMalformedResourceEntriesForImport as Mi, definedAttributes as Mn, orphansAfterRollback as Mo, keepsSecretReferenceToken as Mr, resolveUseCdkBootstrapAssets as Ms, resolveReplacementOldType as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, TemplateParser as Na, refuseMalformedResourceEntriesForImportSave as Ni, stringifyIfAssigned as Nn, orphansCarriedFrom as No, AWS_NO_VALUE as Nr, stateBucketExistenceConfirmed as Ns, findNestedStackTypeChanges as Nt, compensateRemovedDeletionProtection as O, withRetry as Oa, refuseMalformedResourceAttributesForOrphan as Oi, readTagList as On, hasUnverifiableParameterRefusal as Oo, isImpossibleEmptyStoredAttribute as Or, resolveCaptureObservedState as Os, isReplacementOrphan as Ot, deleteTableWithIndexBusyRetry as P, liveMatchesUnresolvedTokenFrame as Pa, refuseMalformedResourceEntriesForOrphan as Pi, CC_BROKEN_REASON as Pn, shouldRetainResource as Po, cfnRefValueFromPhysicalId as Pr, warnDeprecatedNoPrefixCliFlag as Ps, getCurrentProducerRegions as Pt, reachableDivergentParameters as Q, scrubResourceRecord as Qa, findActionableSilentDrops as Qi, isTerminationProtectionPropagationError as Qn, validateContainerRepoName as Qo, isReadableResourceEntry as Qr, hasPlainPrototype$1 as Qs, DeploymentEventsStore as Qt, hasCdkAutoDeleteTag as R, createUnionSecretMasker as Ra, refuseMalformedResourcePropertiesForOrphan as Ri, isCustomResourceType as Rn, WorkGraph as Ro, withSharedDrainBudget as Rr, MIGRATE_TMP_PREFIX as Rs, buildFinalSnapshotIdentifier as Rt, isProtectionValueActive as S, requireConfigArray as Sa, refuseMalformedOrphanRecordsForDestroy as Si, reserveStackCreateToken as Sn, splitImportedOps as So, s3BucketRegionalDomainName as Sr, synthesisStatusMessage as Ss, destroyStackRecordsView as St, DynamoDBGlobalTableProvider as T, prefetchCreateOnlyPropertyPaths as Ta, refuseMalformedOrphansForOrphan as Ti, DBPROXY_TAGS_WHAT as Tn, exportNamesCarriedFrom as To, isUnboundTemplateParameter as Tr, loadCdkJson as Ts, recordAfterRollbackUpdate as Tt, createReadOnlyAttributeHealerFactory as U, recordLogOnlyParameterValue as Ua, repairMalformedOrphanRecordsForReadOnly as Ui, unchangedBehindSecretReference as Un, AssetModeResolver as Uo, STATE_RESOURCES_MALFORMED as Ur, expectedOwnerParam as Us, refusesFinalSnapshot as Ut, markRefusedBeforeApplying as V, logOnlyValueCount as Va, refuseMalformedResourcesForExport as Vi, slowCcOperationTimeoutMs as Vn, loadPublishableAssetManifest as Vo, JSON_LISTING_HOLE_VALUE as Vr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Vs, effectiveDeletionPolicy as Vt, bold as W, recordLogOnlyValue as Wa, repairMalformedOrphansForReadOnly as Wi, UNSPECIFIED_SKIP_REASON as Wn, BOOTSTRAP_MARKER_PREFIX as Wo, UNREADABLE_ORPHANS_CONTAINER_ROW as Wr, PARTITION_TABLE as Ws, unsupportedFinalSnapshotError as Wt, computeParameterTaint as X, markSameGenerationBag as Xa, unreadableOrphanRecords as Xi, disableInstanceApiTermination as Xn, readBootstrapMarkerBody as Xo, hasReadableResources as Xr, defineOwnKey as Xs, updatePartialReason as Xt, yellow as Y, maskSecretsInText as Ya, unpreviewableOrphanRecords as Yi, markWaitAbandoned as Yn, parseBootstrapMarker as Yo, hasReadableOutputs as Yr, processStackMessages as Ys, updatePartialMessage as Yt, namesAnyDeclaredParameter as Z, redactSecretsForState as Za, unreadableResourceEntries as Zi, ec2InstanceProtectionSite as Zn, validateAssetBucketName as Zo, isReadableOrphanRecord as Zr, hasOwnKey as Zs, DeploymentEventsReader as Zt, makeCanonicalizePropertiesFn as _, configBooleanRefusal as _a, malformedStateRefusalMessage as _i, findDestructiveChanges as _n, isSingleDynamicReferenceToken as _o, envCredentialsAreAssumedRole as _r, escapeRegExp$3 as _s, getCurrentNestedStackContext as _t, findNestedTemplateTreeDefect as a, shownType as aa, resolveAssemblyPath as ac, malformedOrphanRecordsRefusalMessage as ai, secretSafeKeyDisplay as an, carriesSecretMask as ao, classifyReplaySecretRegion as ar, dockerSpawnEnvWithSensitive as as, makeSiblingClaimReader as at, recordedProtectionNote as b, readConfigString as ba, refuseMalformedNestedChildOutputs as bi, earliestDefined as bn, S3StateBackend as bo, s3BucketDomainName as br, getDockerImageBySourceHash as bs, replayRollback as bt, renderNestedTemplateTreeDefect as c, isStatefulRecreateTargetSync as ca, malformedOrphansRefusalMessage as ci, noEchoParameterValueSeed as cn, recordMaskOnlyValuesIn as co, applyRoleArnIfSet as cr, getDockerCmd as cs, displacedOpClause as ct, conditionInputsFrom as d, coerceWarmThroughput as da, malformedOutputsWarning as di, isExportAliasCollision as dn, wholeStringLeavesOf as do, explicitRoleArnOrThrow as dr, partitionSensitiveEnv as ds, getNestedRevertRun as dt, unwrittenCreateOnlyReplacement as ea, ownValue as ec, malformedExportNamesWarning as ei, WITHHELD_NAME_DISPLAY as en, DYNAMIC_REFERENCE_TOKEN_SCAN as eo, reDisableInstanceApiTermination as er, buildDockerImage as es, deleteJournaledOrphans as et, parentSuppliedValues as f, isWarmThroughputDecrease as fa, malformedRenderedContainersWarning as fi, bindingSkippedOutputs as fn, STATE_SOURCED_BASELINE_RULES as fo, isIamRoleArn as fr, redactDockerArgvValues as fs, nestedChildStackName as ft, mergeNoChangeOutputs as g, coerceCfnInteger as ga, malformedScrubResourceEntriesRefusalMessage as gi, constructPathOf as gn, WHOLE_DYNAMIC_REFERENCE_PATTERN as go, callerEnvCredentials as gr, warnFinchArgvExposure as gs, withNestedRevertRun as gt, keptWholeReasonText as h, coerceCfnBoolean as ha, malformedResourcesWarning as hi, maskingRetryLogger as hn, TEMPLATE_SOURCED_RULES as ho, applyCallerIdentityCredentials as hr, runDockerStreaming as hs, revertedNestedRowIds as ht, childTemplateLoader as i, findReplacedReadersOfRecreateTargets as ia, renderAssemblyPathEscape as ic, malformedLocalResourcesWarning as ii, secretBearingStateKeyWarning as in, identityKeyFor as io, IntrinsicFunctionResolver as ir, describeDockerFailure as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, sameLambdaFunctionAddress as ja, refuseMalformedResourceEntriesForDestroy as ji, tagPlanWarning as jn, isReadableBag as jo, isNamelessDynamicReferenceError as jr, resolveStateBucketWithDefaultAndSource as js, replacementNeverSwapped as jt, deleteBudgetKey as k, canonicalLambdaFunctionName as ka, refuseMalformedResourceEntries as ki, refuseMalformedDesiredTags as kn, importableOutputKeys as ko, carriesDynamicReference as kr, resolveSkipPrefix as ks, planFailedOps as kt, templateIdentity as l, renderStatefulReason as la, malformedOrphansWarning as li, collectDeclaredOutputNames as ln, recordNoEchoAttributeValues as lo, assertFlagRoleArn as lr, isDockerClientEnvKey as ls, displacedPhysicalIdShown as lt, isSecretBearingReferenceString as m, toFiniteNumber as ma, malformedResourcePropertiesWarning as mi, DEFAULT_RESOURCE_WARN_AFTER_MS as mn, STATE_SOURCED_READBACK_RULES as mo, AWS_CREDENTIAL_ENV_KEYS as mr, runDockerForeground as ms, revertNestedChildFromJournal as mt, IMPLICIT_DELETE_DEPENDENCIES as n, NO_CC_HANDLERS_REASON as na, describeFileReadFailure as nc, malformedLocalOutputsWarning as ni, exportAliasCollisionScrubWarning as nn, isUncertifiedBaselineMaskPosition as no, DiffCalculator as nr, describeDockerCapturedOutput as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, MULTI_REGION_RECREATE_BLOCKED_TYPES as oa, clearBucketRegionCache as oc, malformedOrphanRecordsWarning as oi, exportNameSecretExposure as on, provenPublicValue as oo, producerRegionsFromState as or, finchSecretArgvRefusal as os, planOrphanAdoption as ot, readRecordedConditionVerdicts as p, toCfnInteger as pa, malformedResourceEntriesWarning as pi, DEFAULT_RESOURCE_TIMEOUT_MS as pn, STATE_SOURCED_CROSS_GENERATION_RULES as po, sendableAssumeRoleCommand as pr, redactedDockerCause as ps, recordDisplacedSkips as pt, green as q, errorCauseChain as qa, repairMalformedResourcePropertiesForReadOnly as qi, withIndeterminateGuard as qn, getBootstrapMarkerKey as qo, displayLogicalId as qr, AssemblyReader as qs, redactedDeleteAddressFields as qt, computeImplicitDeleteEdges as r, hasNoCloudControlHandlers as ra, displayAssemblyPath as rc, malformedLocalResourceEntriesWarning as ri, secretBearing as rn, pathCrossesDottedKey as ro, INTRINSIC_KEYS as rr, describeDockerExecFailure as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, isStatefulRecreateTargetForReplace as sa, resolveBucketRegion as sc, malformedOrphanRowsKeptWarning as si, isWholeDynamicReferenceValue as sn, recordMaskOnlyValue as so, regionLessSecretName as sr, formatDockerLoginError as ss, NESTED_PENDING_PARENT_REASON as st, DeployEngine as t, withoutSilentDropProperties as ta, absoluteAssemblyPathEscape as tc, malformedExportSourceWarning as ti, displayTextOrWithheld as tn, dynamicReferenceTokens as to, reEnableInstanceApiTermination as tr, resolveDockerContextDirectory as ts, isHandledOrphan as tt, conditionFingerprint as u, WARM_THROUGHPUT_MEMBERS as ua, malformedOutputsRefusalMessage as ui, collectPublishedOutputNames as un, recordProvenPublicExpression as uo, assertSendableRoleArn as ur, isMalformedEnvKey as us, dropSettledNestedJournals as ut, withResourceDeadline as v, configIntegerRefusal as va, previewableOrphanRecords as vi, formatDestructiveChange as vn, LockManager as vo, isSettledInstanceState as vr, stripControlChars as vs, withNestedStackContext as vt, readProtection as w, requireConfigString as wa, refuseMalformedOrphansForDestroy as wi, acquireIdempotencyToken as wn, describeRegionValueKind as wo, coerceParameterTypedValue as wr, getLegacyStateBucketName as ws, withStackRecords as wt, PROTECTION_PROPERTY_BY_TYPE as x, replayWarn as xa, refuseMalformedOrphanRecords as xi, ledgerForStack as xn, rebuildClientForBucketRegion as xo, s3BucketDualStackDomainName as xr, Synthesizer as xs, awaitInFlightSibling as xt, recordedProtectionEvidence as y, configStringRefusal as ya, refuseDivergentRecordRegionForDestroy as yi, RollbackInlinePolicyWriters as yn, isLockInfoExpired as yo, s3BucketArn as yr, AssetManifestLoader as ys, replayFailedOperations as yt, isTruthyCfnBoolean as z, hasMaskableValues as za, refuseMalformedResourcesForDeploy as zi, getCurrentResourceSecrets as zn, buildAssetRedirectMap as zo, parameterInputsFor as zr, findLargeInlineResources as zs, ccRoutedFinalSnapshotError as zt };
|
|
37746
|
-
//# sourceMappingURL=deploy-engine-
|
|
37924
|
+
export { resourcesNamingDeclaredParameter as $, maskSecretsInError as $a, repairMalformedResourcesForReadOnly as $i, isWaitAbandonedError as $n, isCrossRegionRedirect as $o, hasReadableOrphans as $r, StageLoadError as $s, updatePartialMessage as $t, resolveDynamoDbDeleteBudgetClock as A, prefetchCreateOnlyPropertyPaths as Aa, refuseMalformedOrphansForOrphan as Ai, DBPROXY_TAG_OPTIONS as An, exportNamesCarriedFrom as Ao, isUnboundTemplateParameter as Ar, loadCdkJson as As, demoteSupersededOrphans as At, getPriorAttempts as B, inheritNestedStackParameterAssociations as Ba, refuseMalformedResourcePropertiesForDestroy as Bi, ccBrokenReason as Bn, AssetPublisher as Bo, isStalePlaceholderArnAttribute as Br, ssmResolvedValueType as Bs, ATOMIC_FINAL_SNAPSHOT_TYPES as Bt, perType as C, configIntegerRefusal as Ca, previewableOrphanRecords as Ci, RollbackInlinePolicyWriters as Cn, LockManager as Co, isSettledInstanceState as Cr, stripControlChars as Cs, replayFailedOperations as Ct, beginDeleteWait as D, requireConfigArray as Da, refuseMalformedOrphanRecordsForDestroy as Di, withCreateTokenLedger as Dn, splitImportedOps as Do, s3BucketRegionalDomainName as Dr, synthesisStatusMessage as Ds, getStackRecords as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, replayWarn as Ea, refuseMalformedOrphanRecords as Ei, reserveStackCreateToken as En, rebuildClientForBucketRegion as Eo, s3BucketDualStackDomainName as Er, Synthesizer as Es, destroyStackRecordsView as Et, waitForIndexesSettled as F, lambdaFunctionNameForMask as Fa, refuseMalformedResourceEntriesForDeploy as Fi, tagPlanWarning as Fn, importableOutputs as Fo, carriesFetchableDynamicReference as Fr, resolveStateBucketWithDefault as Fs, replacementNeverSwapped as Ft, cyan as G, literalSplitDelimitersOf as Ga, refuseMalformedResourcesForDestroy as Gi, CloudControlProvider as Gn, createAssetRedirectResolver as Go, passedParameterClassesOf as Gr, uploadCfnTemplate as Gs, effectiveDeletionPolicy as Gt, formatResourceLine as H, carryLogOnlyValues as Ha, refuseMalformedResourcePropertiesForExport as Hi, isCustomResourceType as Hn, stringifyValue as Ho, parseWebACLArn as Hr, CFN_TEMPLATE_URL_LIMIT as Hs, buildFinalSnapshotIdentifier as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, sameLambdaFunctionAddress as Ia, refuseMalformedResourceEntriesForDestroy as Ii, definedAttributes as In, isReadableBag as Io, isNamelessDynamicReferenceError as Ir, resolveStateBucketWithDefaultAndSource as Is, resolveReplacementOldType as It, red as J, recordLogOnlyParameterValue as Ja, repairMalformedOrphanRecordsForReadOnly as Ji, unchangedBehindSecretReference as Jn, AssetModeResolver as Jo, STATE_RESOURCES_MALFORMED as Jr, expectedOwnerParam as Js, unsupportedFinalSnapshotError as Jt, gray as K, logOnlyValueCount as Ka, refuseMalformedResourcesForExport as Ki, slowCcOperationTimeoutMs as Kn, loadPublishableAssetManifest as Ko, JSON_LISTING_HOLE_VALUE as Kr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Ks, isFinalSnapshotError as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, DagBuilder as La, refuseMalformedResourceEntriesForImport as Li, stringifyIfAssigned as Ln, orphansAfterRollback as Lo, keepsSecretReferenceToken as Lr, resolveUseCdkBootstrapAssets as Ls, findNestedStackTypeChanges as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, describeTypeWithThrottleRetry as Ma, refuseMalformedOutputsForDestroy as Mi, readTagList as Mn, hasReasonlessBaselineRefusal as Mo, getAccountInfo as Mr, resolveAutoAssetStorage as Ms, isReplacementOrphan as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, withRetry as Na, refuseMalformedResourceAttributesForOrphan as Ni, refuseMalformedDesiredTags as Nn, hasUnverifiableParameterRefusal as No, isImpossibleEmptyStoredAttribute as Nr, resolveCaptureObservedState as Ns, planFailedOps as Nt, compensateRemovedDeletionProtection as O, requireConfigObject as Oa, refuseMalformedOrphans as Oi, acquireIdempotencyToken as On, acceptedCreateOnlyDropsOf as Oo, s3BucketWebsiteUrl as Or, getDefaultStateBucketName as Os, withStackRecords as Ot, deleteTableWithIndexBusyRetry as P, canonicalLambdaFunctionName as Pa, refuseMalformedResourceEntries as Pi, tagMapAsList as Pn, importableOutputKeys as Po, carriesDynamicReference as Pr, resolveSkipPrefix as Ps, planRollback as Pt, reachableDivergentParameters as Q, errorCauseChain as Qa, repairMalformedResourcePropertiesForReadOnly as Qi, withIndeterminateGuard as Qn, getBootstrapMarkerKey as Qo, displayLogicalId as Qr, AssemblyReader as Qs, redactedDeleteAddressSkip as Qt, hasCdkAutoDeleteTag as R, TemplateParser as Ra, refuseMalformedResourceEntriesForImportSave as Ri, CC_BROKEN_REASON as Rn, orphansCarriedFrom as Ro, AWS_NO_VALUE as Rr, stateBucketExistenceConfirmed as Rs, getCurrentProducerRegions as Rt, isProtectionValueActive as S, configBooleanRefusal as Sa, malformedStateRefusalMessage as Si, formatDestructiveChange as Sn, isSingleDynamicReferenceToken as So, envCredentialsAreAssumedRole as Sr, escapeRegExp$3 as Ss, withNestedStackContext as St, DynamoDBGlobalTableProvider as T, readConfigString as Ta, refuseMalformedNestedChildOutputs as Ti, ledgerForStack as Tn, S3StateBackend as To, s3BucketDomainName as Tr, getDockerImageBySourceHash as Ts, awaitInFlightSibling as Tt, createReadOnlyAttributeHealerFactory as U, createUnionSecretMasker as Ua, refuseMalformedResourcePropertiesForOrphan as Ui, getCurrentResourceSecrets as Un, WorkGraph as Uo, withSharedDrainBudget as Ur, MIGRATE_TMP_PREFIX as Us, ccRoutedFinalSnapshotError as Ut, markRefusedBeforeApplying as V, recordNestedStackParameterExpressions as Va, refuseMalformedResourcePropertiesForDrift as Vi, wouldReturnToSdkProvider as Vn, isSensitiveAttributeName as Vo, refStateLookupFromResource as Vr, CFN_TEMPLATE_BODY_LIMIT as Vs, PRE_DELETE_SNAPSHOT_TYPES as Vt, bold as W, hasMaskableValues as Wa, refuseMalformedResourcesForDeploy as Wi, withPrintingSecrets as Wn, buildAssetRedirectMap as Wo, parameterInputsFor as Wr, findLargeInlineResources as Ws, createPreDeleteFinalSnapshot as Wt, computeParameterTaint as X, shareLogOnlyValues as Xa, repairMalformedOutputsForReadOnly as Xi, deleteIndeterminateGuards as Xn, assertAssetBucketRegion as Xo, UNREADABLE_RESOURCES_MAP_ROW as Xr, canonicalizeRegion as Xs, isRedactedRecordedValue as Xt, yellow as Y, recordLogOnlyValue as Ya, repairMalformedOrphansForReadOnly as Yi, UNSPECIFIED_SKIP_REASON as Yn, BOOTSTRAP_MARKER_PREFIX as Yo, UNREADABLE_ORPHANS_CONTAINER_ROW as Yr, PARTITION_TABLE as Ys, REDACTED_DELETE_ADDRESS_SKIP_REASON as Yt, namesAnyDeclaredParameter as Z, createSecretMasker as Za, repairMalformedResourceEntriesForReadOnly as Zi, deleteSkipReason as Zn, ensureAssetStorage as Zo, deployRefusesOrphanRowsReason as Zr, derivePartitionAndUrlSuffix as Zs, redactedDeleteAddressFields as Zt, makeCanonicalizePropertiesFn as _, isWarmThroughputDecrease as _a, malformedRenderedContainersWarning as _i, DEFAULT_RESOURCE_TIMEOUT_MS as _n, STATE_SOURCED_BASELINE_RULES as _o, isIamRoleArn as _r, redactDockerArgvValues as _s, recordDisplacedSkips as _t, findNestedTemplateTreeDefect as a, unwrittenCreateOnlyReplacement as aa, ownValue as ac, malformedExportNamesWarning as ai, displayTextOrWithheld as an, DYNAMIC_REFERENCE_TOKEN_SCAN as ao, reDisableInstanceApiTermination as ar, buildDockerImage as as, journaledOrphanPrintingBag as at, recordedProtectionNote as b, coerceCfnBoolean as ba, malformedResourcesWarning as bi, constructPathOf as bn, TEMPLATE_SOURCED_RULES as bo, applyCallerIdentityCredentials as br, runDockerStreaming as bs, withNestedRevertRun as bt, renderNestedTemplateTreeDefect as c, hasNoCloudControlHandlers as ca, displayAssemblyPath as cc, malformedLocalResourceEntriesWarning as ci, secretBearingStateKeyWarning as cn, pathCrossesDottedKey as co, INTRINSIC_KEYS as cr, describeDockerExecFailure as cs, stateSecretNameNeedles as ct, conditionInputsFrom as d, MULTI_REGION_RECREATE_BLOCKED_TYPES as da, clearBucketRegionCache as dc, malformedOrphanRecordsWarning as di, isWholeDynamicReferenceValue as dn, provenPublicValue as do, producerRegionsFromState as dr, finchSecretArgvRefusal as ds, NESTED_PENDING_PARENT_REASON as dt, unpreviewableOrphanRecords as ea, processStackMessages as ec, hasReadableOutputs as ei, updatePartialReason as en, maskSecretsInText as eo, markWaitAbandoned as er, parseBootstrapMarker as es, deleteJournaledOrphans as et, parentSuppliedValues as f, isStatefulRecreateTargetForReplace as fa, resolveBucketRegion as fc, malformedOrphanRowsKeptWarning as fi, noEchoParameterValueSeed as fn, recordMaskOnlyValue as fo, regionLessSecretName as fr, formatDockerLoginError as fs, displacedOpClause as ft, mergeNoChangeOutputs as g, coerceWarmThroughput as ga, malformedOutputsWarning as gi, bindingSkippedOutputs as gn, wholeStringLeavesOf as go, explicitRoleArnOrThrow as gr, partitionSensitiveEnv as gs, nestedChildStackName as gt, keptWholeReasonText as h, WARM_THROUGHPUT_MEMBERS as ha, malformedOutputsRefusalMessage as hi, isExportAliasCollision as hn, recordProvenPublicExpression as ho, assertSendableRoleArn as hr, isMalformedEnvKey as hs, getNestedRevertRun as ht, childTemplateLoader as i, findSilentDropProperties as ia, nullPrototypeRecord as ic, malformedDriftResourcePropertiesWarning as ii, WITHHELD_NAME_DISPLAY as in, recoverMaskedOutput as io, observeThenDisableInstanceApiTermination as ir, buildDenyExternalAccessPolicy as is, sameJournaledOrphans as it, resolveDynamoDbDeleteBudgetMs as j, templateResourceTypes as ja, refuseMalformedOutputs as ji, planTagDiff as jn, hasReadableExportSet as jo, parameterTypeMayLoseSecretIdentity as jr, resolveApp as js, isJournaledOrphan as jt, deleteBudgetKey as k, requireConfigString as ka, refuseMalformedOrphansForDestroy as ki, DBPROXY_TAGS_WHAT as kn, describeRegionValueKind as ko, coerceParameterTypedValue as kr, getLegacyStateBucketName as ks, recordAfterRollbackUpdate as kt, templateIdentity as l, findReplacedReadersOfRecreateTargets as la, renderAssemblyPathEscape as lc, malformedLocalResourcesWarning as li, secretSafeKeyDisplay as ln, identityKeyFor as lo, IntrinsicFunctionResolver as lr, describeDockerFailure as ls, makeSiblingClaimReader as lt, isSecretBearingReferenceString as m, renderStatefulReason as ma, malformedOrphansWarning as mi, collectPublishedOutputNames as mn, recordNoEchoAttributeValues as mo, assertFlagRoleArn as mr, isDockerClientEnvKey as ms, dropSettledNestedJournals as mt, IMPLICIT_DELETE_DEPENDENCIES as n, unreadableResourceEntries as na, hasOwnKey as nc, isReadableOrphanRecord as ni, DeploymentEventsStore as nn, redactSecretsForState as no, ec2InstanceProtectionSite as nr, validateAssetBucketName as ns, journaledOrphanLines as nt, isAbsoluteAssetPath as o, withoutSilentDropProperties as oa, absoluteAssemblyPathEscape as oc, malformedExportSourceWarning as oi, exportAliasCollisionScrubWarning as on, dynamicReferenceTokens as oo, reEnableInstanceApiTermination as or, resolveDockerContextDirectory as os, maskEventTextWithBoundBags as ot, readRecordedConditionVerdicts as p, isStatefulRecreateTargetSync as pa, malformedOrphansRefusalMessage as pi, collectDeclaredOutputNames as pn, recordMaskOnlyValuesIn as po, applyRoleArnIfSet as pr, getDockerCmd as ps, displacedPhysicalIdShown as pt, green as q, printingCorpusOf as qa, refuseMalformedState as qi, ccProtectionRegistryTypes as qn, rewriteTemplateAssetReferences as qo, STATE_REGION_DIVERGED as qr, decodeListingKey as qs, refusesFinalSnapshot as qt, computeImplicitDeleteEdges as r, findActionableSilentDrops as ra, hasPlainPrototype$1 as rc, isReadableResourceEntry as ri, extractDeploymentEventError as rn, scrubResourceRecord as ro, isTerminationProtectionPropagationError as rr, validateContainerRepoName as rs, loadJournaledOrphans as rt, listNestedTemplateRows as s, NO_CC_HANDLERS_REASON as sa, describeFileReadFailure as sc, malformedLocalOutputsWarning as si, secretBearing as sn, isUncertifiedBaselineMaskPosition as so, DiffCalculator as sr, describeDockerCapturedOutput as ss, secretNamePrintingBag as st, DeployEngine as t, unreadableOrphanRecords as ta, defineOwnKey as tc, hasReadableResources as ti, DeploymentEventsReader as tn, markSameGenerationBag as to, disableInstanceApiTermination as tr, readBootstrapMarkerBody as ts, isHandledOrphan as tt, conditionFingerprint as u, shownType as ua, resolveAssemblyPath as uc, malformedOrphanRecordsRefusalMessage as ui, exportNameSecretExposure as un, carriesSecretMask as uo, classifyReplaySecretRegion as ur, dockerSpawnEnvWithSensitive as us, planOrphanAdoption as ut, withResourceDeadline as v, toCfnInteger as va, malformedResourceEntriesWarning as vi, DEFAULT_RESOURCE_WARN_AFTER_MS as vn, STATE_SOURCED_CROSS_GENERATION_RULES as vo, sendableAssumeRoleCommand as vr, redactedDockerCause as vs, revertNestedChildFromJournal as vt, readProtection as w, configStringRefusal as wa, refuseDivergentRecordRegionForDestroy as wi, earliestDefined as wn, isLockInfoExpired as wo, s3BucketArn as wr, AssetManifestLoader as ws, replayRollback as wt, PROTECTION_PROPERTY_BY_TYPE as x, coerceCfnInteger as xa, malformedScrubResourceEntriesRefusalMessage as xi, findDestructiveChanges as xn, WHOLE_DYNAMIC_REFERENCE_PATTERN as xo, callerEnvCredentials as xr, warnFinchArgvExposure as xs, getCurrentNestedStackContext as xt, recordedProtectionEvidence as y, toFiniteNumber as ya, malformedResourcePropertiesWarning as yi, maskingRetryLogger as yn, STATE_SOURCED_READBACK_RULES as yo, AWS_CREDENTIAL_ENV_KEYS as yr, runDockerForeground as ys, revertedNestedRowIds as yt, isTruthyCfnBoolean as z, liveMatchesUnresolvedTokenFrame as za, refuseMalformedResourceEntriesForOrphan as zi, ProviderRegistry as zn, shouldRetainResource as zo, cfnRefValueFromPhysicalId as zr, warnDeprecatedNoPrefixCliFlag as zs, inheritProducerRegions as zt };
|
|
37925
|
+
//# sourceMappingURL=deploy-engine-Cm7z6aQk.js.map
|