@go-to-k/cdkd 0.295.0 → 0.295.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-DuAHOXvT.js → asg-provider-CbwOK2TQ.js} +2 -2
- package/dist/{asg-provider-DuAHOXvT.js.map → asg-provider-CbwOK2TQ.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-CuI_h_Ml.js → deploy-engine-DG-oC9YK.js} +287 -43
- package/dist/deploy-engine-DG-oC9YK.js.map +1 -0
- package/dist/{iam-role-provider-CyM-wxAp.js → iam-role-provider-DUZtt9lH.js} +2 -2
- package/dist/{iam-role-provider-CyM-wxAp.js.map → iam-role-provider-DUZtt9lH.js.map} +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-BGVccWhg.js → neptune-provider-TnGNCeLX.js} +2 -2
- package/dist/{neptune-provider-BGVccWhg.js.map → neptune-provider-TnGNCeLX.js.map} +1 -1
- package/dist/{program-Cbxe8TgI.js → program-DfJFegS1.js} +34 -13
- package/dist/program-DfJFegS1.js.map +1 -0
- package/dist/{provider-classes-DiWFkAOH.js → provider-classes-DUw5QAWI.js} +242 -37
- package/dist/provider-classes-DUw5QAWI.js.map +1 -0
- package/dist/{rds-provider-D6_Rcnub.js → rds-provider-COCDd7bS.js} +2 -2
- package/dist/{rds-provider-D6_Rcnub.js.map → rds-provider-COCDd7bS.js.map} +1 -1
- package/dist/{version-CMMITJVg.js → version-Bqzsng8Y.js} +2 -2
- package/dist/{version-CMMITJVg.js.map → version-Bqzsng8Y.js.map} +1 -1
- package/package.json +4 -4
- package/dist/deploy-engine-CuI_h_Ml.js.map +0 -1
- package/dist/program-Cbxe8TgI.js.map +0 -1
- package/dist/provider-classes-DiWFkAOH.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-B46YMG0h.js";
|
|
3
3
|
import { $t as StateError, A as isTerminalDeleteFailure, An as isAmbiguousCcHandlerErrorCode, At as clientDefaultsFor, Bn as isMarkedNonRetryable, Bt as IntrinsicResolutionRefusalError, C as refusalTypeShown, Cn as isNameCollisionErrorFrom, D as ProtectionFlipRegistry, Dt as withPasteableAwsProfile, En as isReplayedNameCollisionFrom, Fn as retryClassificationText, Gt as MalformedProducerRecordRefusalError, H as pasteableAwsCommand, Hn as markNonRetryable, In as describeAwsFailure, It as CrossAccountSecretRefusalError, J as isInterruptedWaitError, Jt as ProvisioningError, Lt as DependencyError, M as observeThenDisableProtection, Mn as isIamPropagationError, Mt as AccountIdUnavailableError, N as protectionFlipKey, Nn as isRetryableTransientError, Nt as AssetError, O as compensateProtectionFlip, On as markReplayMayCollide, Ot as ambientClientDefaults, Pn as isTransientServerError, Pt as CdkdError, Q as canonicalizeRoute53QueryName, R as DELETION_PROTECTION_DOC_POINTER, Rn as safeStringify$1, S as quotedRemedyLogicalId, Sn as hasReplayMayCollide, St as injectiveKey, T as resolveExplicitPhysicalId, Tn as isRecreateRetryableError, Tt as producerRecordKey, U as protectedReplacementAdvice, Un as markRedactedCause, Ut as LockError, Vn as isThrottlingError, Wn as wrapMaskedAwsError, Wt as MacroExpansionError, X as ElapsedBudgetRegistry, Xt as ResourceUpdateNotSupportedError, Y as startInterruptWatch, Yt as ResourceTimeoutError, Z as monotonicNowMs, _n as shellQuote, _t as formatLockOperation, at as segmentAfterAnchor, b as isQuotableImportValue, bt as CUSTOM_RESOURCE_RESPONSE_PREFIX, cn as UNSHOWABLE_VALUE, ct as isSecretDerivedValue, d as prepareRemovalForUpdate, dn as isInertUnquoted, dt as withDerivedNameMasks, en as SynthesisError, et as compositeIdSeparatorRefusal, f as removalWarning, fn as pasteableCommand, ft as UNREPRODUCIBLE_LOCK_CLAUSE, g as assertRegionMatch, gn as shellBoundedDisplay, gt as formatLockExpiry, h as RESOURCE_NOT_FOUND, hn as quotedOrDescribed, i as holdsSecretDerivedEntry, it as resourceTypeShown, jn as isAmbiguousOutcomeError, jt as credentialFingerprint, k as deleteWithProtectionCompensation, kn as formatRetryClassificationSignals, kt as ambientCredentialConfig, l as withUnchangedSecretPrincipalLists, ln as commandHole, lt as maskDeep, m as withoutInjectedRemovals, mn as plainOrDescribed, nt as logicalIdShown, on as SHELL_ACTIVE, ot as createMaskedLogSinks, pn as physicalIdShownBesideCommand, pt as buildForceUnlockCommand, rn as normalizeAwsError, sn as SHELL_ACTIVE_WHY, st as createMaskedRetryLogger, ut as maskerOrIdentity, vn as withheldTargetClause, vt as formatLockOwner, wn as isNameCooldownError, x as normalizeAwsTagsToCfn, xn as isUpdateUnsupportedError, xt as DEFAULT_STATE_PREFIX, yt as sanitizeRecoveryValue, zt as DynamicReferenceRegionAmbiguousError } from "./iam-policy-targets-CMSQGQnm.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-Bqzsng8Y.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";
|
|
@@ -2705,7 +2705,7 @@ var FileAssetPublisher = class {
|
|
|
2705
2705
|
|
|
2706
2706
|
//#endregion
|
|
2707
2707
|
//#region src/utils/regexp.ts
|
|
2708
|
-
function escapeRegExp$
|
|
2708
|
+
function escapeRegExp$3(value) {
|
|
2709
2709
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
2710
2710
|
}
|
|
2711
2711
|
function stripControlChars(value) {
|
|
@@ -3123,7 +3123,7 @@ function trailingShortFlagOfCluster(arg) {
|
|
|
3123
3123
|
for (const flag of ARGV_VALUE_BEARING_FLAGS) if (flag.length === 2 && flag.startsWith("-") && flag[1] !== "-" && flag[1] === last) return flag;
|
|
3124
3124
|
}
|
|
3125
3125
|
const ARGV_VALUE_TOKEN_RE = (() => {
|
|
3126
|
-
const alternation = [...ARGV_VALUE_BEARING_FLAGS].sort((a, b) => b.length - a.length || a.localeCompare(b)).map(escapeRegExp$
|
|
3126
|
+
const alternation = [...ARGV_VALUE_BEARING_FLAGS].sort((a, b) => b.length - a.length || a.localeCompare(b)).map(escapeRegExp$3).join("|");
|
|
3127
3127
|
if (alternation.length === 0 || [...ARGV_VALUE_BEARING_FLAGS].some((f) => f.trim() === "")) throw new Error("ARGV_VALUE_BEARING_FLAGS is empty or holds an empty flag: the token scan would match every k=v");
|
|
3128
3128
|
return new RegExp(`(^|\\s)(${alternation})(\\s+|=)([^\\s=]*)=\\S*`, "g");
|
|
3129
3129
|
})();
|
|
@@ -4133,10 +4133,10 @@ function flattenAssetPlaceholders(value, accountId, region, partition = "aws") {
|
|
|
4133
4133
|
return value.replace(/\$\{AWS::AccountId\}/g, accountId).replace(/\$\{AWS::Region\}/g, region).replace(/\$\{AWS::Partition\}/g, partition);
|
|
4134
4134
|
}
|
|
4135
4135
|
function isDefaultBootstrapBucketName(name, accountId, region) {
|
|
4136
|
-
return new RegExp(`^cdk-[a-z0-9]+-assets-${accountId}-${escapeRegExp$
|
|
4136
|
+
return new RegExp(`^cdk-[a-z0-9]+-assets-${accountId}-${escapeRegExp$3(region)}$`).test(name);
|
|
4137
4137
|
}
|
|
4138
4138
|
function isDefaultBootstrapRepoName(name, accountId, region) {
|
|
4139
|
-
return new RegExp(`^cdk-[a-z0-9]+-container-assets-${accountId}-${escapeRegExp$
|
|
4139
|
+
return new RegExp(`^cdk-[a-z0-9]+-container-assets-${accountId}-${escapeRegExp$3(region)}$`).test(name);
|
|
4140
4140
|
}
|
|
4141
4141
|
function buildAssetRedirectMap(manifest, marker, accountId, region, partition = "aws") {
|
|
4142
4142
|
const buckets = /* @__PURE__ */ new Map();
|
|
@@ -4145,7 +4145,7 @@ function buildAssetRedirectMap(manifest, marker, accountId, region, partition =
|
|
|
4145
4145
|
const addForms = (rawName, flattened, target) => {
|
|
4146
4146
|
sources.set(flattened, target);
|
|
4147
4147
|
if (rawName !== flattened) sources.set(rawName, target);
|
|
4148
|
-
const suffixRe = new RegExp(`-${accountId}-${escapeRegExp$
|
|
4148
|
+
const suffixRe = new RegExp(`-${accountId}-${escapeRegExp$3(region)}$`);
|
|
4149
4149
|
for (const suffix of [
|
|
4150
4150
|
"-${AWS::AccountId}-${AWS::Region}",
|
|
4151
4151
|
`-\${AWS::AccountId}-${region}`,
|
|
@@ -4186,7 +4186,7 @@ function buildAssetRedirectMap(manifest, marker, accountId, region, partition =
|
|
|
4186
4186
|
};
|
|
4187
4187
|
}
|
|
4188
4188
|
function buildBoundaryRegex(source) {
|
|
4189
|
-
return new RegExp(`(?<![A-Za-z0-9_.-])${escapeRegExp$
|
|
4189
|
+
return new RegExp(`(?<![A-Za-z0-9_.-])${escapeRegExp$3(source)}(?![A-Za-z0-9_-])`, "g");
|
|
4190
4190
|
}
|
|
4191
4191
|
function rewriteString(value, map, counter) {
|
|
4192
4192
|
let result = value;
|
|
@@ -4803,6 +4803,14 @@ function refuseMalformedOperation(shownStack, where, op) {
|
|
|
4803
4803
|
const attempted = o["attemptedProperties"];
|
|
4804
4804
|
if (attempted !== void 0 && (typeof attempted !== "object" || attempted === null || Array.isArray(attempted))) fail("attemptedProperties", attempted, "an object when present");
|
|
4805
4805
|
if (o["oldResourceRetained"] !== void 0 && typeof o["oldResourceRetained"] !== "boolean") fail("oldResourceRetained", o["oldResourceRetained"], "a boolean when present");
|
|
4806
|
+
if (o["physicalIdRecoveredFromError"] !== void 0 && typeof o["physicalIdRecoveredFromError"] !== "boolean") fail("physicalIdRecoveredFromError", o["physicalIdRecoveredFromError"], "a boolean when present");
|
|
4807
|
+
if (o["physicalIdRecoveredFromError"] !== void 0 && o["changeType"] !== "CREATE") refuseMalformed(shownStack, `${where}.physicalIdRecoveredFromError is only valid on a CREATE (got changeType ${kind(o["changeType"])}).`);
|
|
4808
|
+
if (o["deletionPolicy"] !== void 0 && ![
|
|
4809
|
+
"Delete",
|
|
4810
|
+
"Retain",
|
|
4811
|
+
"Snapshot",
|
|
4812
|
+
"RetainExceptOnCreate"
|
|
4813
|
+
].includes(o["deletionPolicy"])) fail("deletionPolicy", o["deletionPolicy"], "one of Delete, Retain, Snapshot, RetainExceptOnCreate when present");
|
|
4806
4814
|
if (o["previousResourceType"] !== void 0 && typeof o["previousResourceType"] !== "string") fail("previousResourceType", o["previousResourceType"], "a string when present");
|
|
4807
4815
|
}
|
|
4808
4816
|
function kind(v) {
|
|
@@ -6151,13 +6159,13 @@ function nanIfUncoercible(value) {
|
|
|
6151
6159
|
//#endregion
|
|
6152
6160
|
//#region src/deployment/secret-redaction/rules.ts
|
|
6153
6161
|
const MIN_NEEDLE_LENGTH = 4;
|
|
6154
|
-
function escapeRegExp$
|
|
6162
|
+
function escapeRegExp$2(value) {
|
|
6155
6163
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6156
6164
|
}
|
|
6157
6165
|
function buildNeedleRegex(values) {
|
|
6158
6166
|
const needles = Array.from(new Set(values)).filter((v) => v.length >= 4).sort((a, b) => b.length - a.length);
|
|
6159
6167
|
if (needles.length === 0) return void 0;
|
|
6160
|
-
return new RegExp(needles.map(escapeRegExp$
|
|
6168
|
+
return new RegExp(needles.map(escapeRegExp$2).join("|"), "g");
|
|
6161
6169
|
}
|
|
6162
6170
|
const TEMPLATE_DERIVED_RULES = {
|
|
6163
6171
|
descendArrays: true,
|
|
@@ -7323,7 +7331,7 @@ function intrinsicSkeletonPattern(source) {
|
|
|
7323
7331
|
return anchoredSkeletonPattern(segments);
|
|
7324
7332
|
}
|
|
7325
7333
|
function anchoredSkeletonPattern(segments) {
|
|
7326
|
-
const body = joinSkeletonSegments(segments.map((segment) => segment === UNKNOWN_PART ? SKELETON_WILDCARD : escapeRegExp$
|
|
7334
|
+
const body = joinSkeletonSegments(segments.map((segment) => segment === UNKNOWN_PART ? SKELETON_WILDCARD : escapeRegExp$2(segment)));
|
|
7327
7335
|
return body === void 0 ? void 0 : new RegExp(`^${body}$`);
|
|
7328
7336
|
}
|
|
7329
7337
|
const UNKNOWN_PART = Symbol("unknown intrinsic part");
|
|
@@ -9129,6 +9137,77 @@ function isAuxiliaryFailure(error) {
|
|
|
9129
9137
|
} catch {}
|
|
9130
9138
|
return false;
|
|
9131
9139
|
}
|
|
9140
|
+
const CREATED_BEFORE_FAILURE = Symbol.for("cdkd.createdBeforeFailure");
|
|
9141
|
+
function markCreatedBeforeFailure(error, ownerLogicalId, resourceType, physicalId) {
|
|
9142
|
+
try {
|
|
9143
|
+
if (typeof error !== "object" || error === null || !Object.isExtensible(error)) return error;
|
|
9144
|
+
if (physicalId === "") return error;
|
|
9145
|
+
Object.defineProperty(error, CREATED_BEFORE_FAILURE, {
|
|
9146
|
+
value: Object.freeze({
|
|
9147
|
+
logicalId: ownerLogicalId,
|
|
9148
|
+
resourceType,
|
|
9149
|
+
physicalId
|
|
9150
|
+
}),
|
|
9151
|
+
enumerable: false,
|
|
9152
|
+
writable: false,
|
|
9153
|
+
configurable: true
|
|
9154
|
+
});
|
|
9155
|
+
} catch {}
|
|
9156
|
+
return error;
|
|
9157
|
+
}
|
|
9158
|
+
function createdMarkOn(link) {
|
|
9159
|
+
const value = link[CREATED_BEFORE_FAILURE];
|
|
9160
|
+
if (typeof value !== "object" || value === null) return void 0;
|
|
9161
|
+
const { logicalId, resourceType, physicalId } = value;
|
|
9162
|
+
if (typeof logicalId !== "string" || typeof resourceType !== "string" || typeof physicalId !== "string" || physicalId === "") return;
|
|
9163
|
+
return {
|
|
9164
|
+
logicalId,
|
|
9165
|
+
resourceType,
|
|
9166
|
+
physicalId
|
|
9167
|
+
};
|
|
9168
|
+
}
|
|
9169
|
+
function createdBeforeFailure(error, logicalId, resourceType) {
|
|
9170
|
+
try {
|
|
9171
|
+
let current = error;
|
|
9172
|
+
for (let depth = 0; depth < 10 && typeof current === "object" && current !== null; depth++) {
|
|
9173
|
+
const mark = createdMarkOn(current);
|
|
9174
|
+
if (mark) return mark.logicalId === logicalId && mark.resourceType === resourceType ? mark.physicalId : void 0;
|
|
9175
|
+
const own = Object.getOwnPropertyDescriptor(current, "logicalId");
|
|
9176
|
+
if (typeof own?.value === "string" && own.value !== logicalId && !isAuxiliaryMarkOf(current, logicalId)) return;
|
|
9177
|
+
current = current.cause;
|
|
9178
|
+
}
|
|
9179
|
+
} catch {}
|
|
9180
|
+
}
|
|
9181
|
+
function hasCreatedBeforeFailure(error) {
|
|
9182
|
+
try {
|
|
9183
|
+
let current = error;
|
|
9184
|
+
for (let depth = 0; depth < 10 && typeof current === "object" && current !== null; depth++) {
|
|
9185
|
+
if (createdMarkOn(current)) return true;
|
|
9186
|
+
current = current.cause;
|
|
9187
|
+
}
|
|
9188
|
+
} catch {}
|
|
9189
|
+
return false;
|
|
9190
|
+
}
|
|
9191
|
+
function carryCreatedBeforeFailure(from, to) {
|
|
9192
|
+
try {
|
|
9193
|
+
if (typeof to !== "object" || to === null) return to;
|
|
9194
|
+
let current = from;
|
|
9195
|
+
let mark;
|
|
9196
|
+
for (let depth = 0; depth < 10 && typeof current === "object" && current !== null && !mark; depth++) {
|
|
9197
|
+
mark = createdMarkOn(current);
|
|
9198
|
+
current = current.cause;
|
|
9199
|
+
}
|
|
9200
|
+
if (!mark) return to;
|
|
9201
|
+
let probe = to;
|
|
9202
|
+
for (let depth = 0; depth < 10 && typeof probe === "object" && probe !== null; depth++) {
|
|
9203
|
+
if (createdMarkOn(probe)) return to;
|
|
9204
|
+
probe = probe.cause;
|
|
9205
|
+
}
|
|
9206
|
+
return markCreatedBeforeFailure(to, mark.logicalId, mark.resourceType, mark.physicalId);
|
|
9207
|
+
} catch {
|
|
9208
|
+
return to;
|
|
9209
|
+
}
|
|
9210
|
+
}
|
|
9132
9211
|
function markAuxiliaryFailure(error, ownerLogicalId) {
|
|
9133
9212
|
try {
|
|
9134
9213
|
let current = error;
|
|
@@ -9175,11 +9254,14 @@ async function withRetry(operation, logicalId, opts = {}) {
|
|
|
9175
9254
|
let nameCooldownSleptMs = 0;
|
|
9176
9255
|
let serverErrorRetries = 0;
|
|
9177
9256
|
let replayMayCollide = false;
|
|
9257
|
+
let previousError;
|
|
9178
9258
|
const settle = (error) => replayMayCollide ? markReplayMayCollide(markAuxiliaryFailure(error, RETRY_AUXILIARY_OWNER)) : error;
|
|
9179
9259
|
for (let attempt = 0; attempt <= attemptCeiling; attempt++) try {
|
|
9180
9260
|
return await operation();
|
|
9181
9261
|
} catch (error) {
|
|
9182
9262
|
lastError = error;
|
|
9263
|
+
const carried = carryCreatedBeforeFailure(previousError, error);
|
|
9264
|
+
if (hasCreatedBeforeFailure(carried) || !hasCreatedBeforeFailure(previousError)) previousError = carried;
|
|
9183
9265
|
if (isAuxiliaryFailure(error) || hasReplayMayCollide(error) || isAmbiguousOutcomeError(error)) replayMayCollide = true;
|
|
9184
9266
|
const message = describeAwsFailure(error).detail;
|
|
9185
9267
|
const classifyText = retryClassificationText(error);
|
|
@@ -15663,6 +15745,16 @@ function malformedDestroyResourceEntriesRefusalMessage(rawStackName, rawRegion,
|
|
|
15663
15745
|
const region = absentIfEmpty(rawRegion);
|
|
15664
15746
|
return `${namedEntriesClause(stackName, region, logicalIds)} 'cdkd destroy' DELETES what this map names, so it refuses rather than continuing: a null row stops the run on a bare TypeError in the listing above the prompt; a false, 0 or empty-string row is SKIPPED as 'not found in state' and the record removed with its resource still live in AWS; and any other row it cannot read, unless its own deletion policy retains it, is routed to a provider on whatever its type field holds — nothing, or a non-string — with a physical id nothing checked, so its delete either fails on a type-lookup error that names the row but not what is wrong with its record, after every readable row not retained was deleted, or is counted done, the record removed and success reported with its resource still live. Nothing was deleted or written FOR THIS STACK. Repair the row first; 'cdkd state orphan' drops the whole record with every resource left standing, which is more than this row asks for. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
|
|
15665
15747
|
}
|
|
15748
|
+
function refuseMalformedResourcePropertiesForDestroy(state, stackName, region, recovery) {
|
|
15749
|
+
const unreadable = unreadableResourcePropertyBags(state);
|
|
15750
|
+
if (unreadable.length === 0) return;
|
|
15751
|
+
throw markNonRetryable(new CdkdError(malformedDestroyResourcePropertiesRefusalMessage(stackName, region, unreadable, recovery), STATE_RESOURCES_MALFORMED));
|
|
15752
|
+
}
|
|
15753
|
+
function malformedDestroyResourcePropertiesRefusalMessage(rawStackName, rawRegion, logicalIds, recovery) {
|
|
15754
|
+
const stackName = absentIfEmpty(rawStackName);
|
|
15755
|
+
const region = absentIfEmpty(rawRegion);
|
|
15756
|
+
return `${namedPropertyBagsDiagnosis(stackName, region, logicalIds)} 'cdkd destroy' hands that map to the resource's delete, which reads keys off it — whether an RDS DB instance takes a final snapshot, whether an ECR repository is emptied first — so it refuses rather than continuing: the provider would get the torn value as it stands, and reading the map as EMPTY answers each of those keys as absent, a delete that fails or takes the wrong branch after every resource ordered before it was deleted. Nothing was deleted or written FOR THIS STACK. Repair the map first; 'cdkd state orphan' drops the whole record with every resource left standing, which is more than this asks for. ${inspectClause(stackName, region, recovery)}Inspect the record with: ` + inspectCommand(stackName, region, recovery);
|
|
15757
|
+
}
|
|
15666
15758
|
function refuseMalformedResourceEntriesForImport(state, reimportedLogicalIds, stackName, region, recovery) {
|
|
15667
15759
|
const reimported = new Set(reimportedLogicalIds);
|
|
15668
15760
|
const unreadable = unreadableResourceEntries(state).filter((id) => !reimported.has(id));
|
|
@@ -21381,13 +21473,13 @@ function resolvesReference(desired, previous, mask) {
|
|
|
21381
21473
|
rest = rest.slice(at + token.length);
|
|
21382
21474
|
}
|
|
21383
21475
|
literals.push(rest);
|
|
21384
|
-
const pattern = literals.map(escapeRegExp).join("[\\s\\S]*");
|
|
21476
|
+
const pattern = literals.map(escapeRegExp$1).join("[\\s\\S]*");
|
|
21385
21477
|
return new RegExp(`^${pattern}$`).test(desired);
|
|
21386
21478
|
}
|
|
21387
21479
|
function isPlainObject$1(value) {
|
|
21388
21480
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
21389
21481
|
}
|
|
21390
|
-
function escapeRegExp(text) {
|
|
21482
|
+
function escapeRegExp$1(text) {
|
|
21391
21483
|
return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
21392
21484
|
}
|
|
21393
21485
|
|
|
@@ -21795,7 +21887,10 @@ function isCcConflict(error) {
|
|
|
21795
21887
|
}
|
|
21796
21888
|
var CloudControlProvider = class {
|
|
21797
21889
|
cloudControlClient;
|
|
21798
|
-
|
|
21890
|
+
baseLogger = getLogger().child("CloudControlProvider");
|
|
21891
|
+
get logger() {
|
|
21892
|
+
return idLogScope.getStore() ?? this.baseLogger;
|
|
21893
|
+
}
|
|
21799
21894
|
patchGenerator = new JsonPatchGenerator();
|
|
21800
21895
|
warnedUnresolvableSchemaTypes = /* @__PURE__ */ new Set();
|
|
21801
21896
|
protectionFlips = new ProtectionFlipRegistry();
|
|
@@ -21810,7 +21905,12 @@ var CloudControlProvider = class {
|
|
|
21810
21905
|
const awsClients = getAwsClients();
|
|
21811
21906
|
this.cloudControlClient = awsClients.cloudControl;
|
|
21812
21907
|
}
|
|
21813
|
-
async create(logicalId, resourceType, properties) {
|
|
21908
|
+
async create(logicalId, resourceType, properties, context) {
|
|
21909
|
+
const mask = maskerOrIdentity(context?.maskSecrets);
|
|
21910
|
+
const idLog = new IdScrubLog(this.logger, mask, holdsSecretDerivedLeaf(properties, mask));
|
|
21911
|
+
return inIdLogScope(idLog, () => this.createInIdLogScope(logicalId, resourceType, properties, idLog));
|
|
21912
|
+
}
|
|
21913
|
+
async createInIdLogScope(logicalId, resourceType, properties, idLog) {
|
|
21814
21914
|
this.logger.debug(`Creating resource ${logicalId} (${resourceType})`);
|
|
21815
21915
|
try {
|
|
21816
21916
|
const ccProperties = stringifyJsonProperties(resourceType, stripNullValues(properties));
|
|
@@ -21824,6 +21924,7 @@ var CloudControlProvider = class {
|
|
|
21824
21924
|
this.logger.debug(`Create request submitted for ${logicalId}, token: ${createResponse.ProgressEvent.RequestToken}`);
|
|
21825
21925
|
const progressEvent = await this.waitForOperation(createResponse.ProgressEvent.RequestToken, logicalId, "CREATE", resourceType);
|
|
21826
21926
|
if (!progressEvent.Identifier) throw new ProvisioningError(`Failed to create resource ${logicalId}: No physical ID returned`, resourceType, logicalId);
|
|
21927
|
+
idLog.addId(progressEvent.Identifier);
|
|
21827
21928
|
this.logger.debug(`Created resource ${logicalId}, physical ID: ${progressEvent.Identifier}`);
|
|
21828
21929
|
const result = { physicalId: progressEvent.Identifier };
|
|
21829
21930
|
if (progressEvent.ResourceModel) result.attributes = this.parseResourceModel(progressEvent.ResourceModel);
|
|
@@ -21831,6 +21932,7 @@ var CloudControlProvider = class {
|
|
|
21831
21932
|
result.attributes = await this.enrichResourceAttributes(resourceType, progressEvent.Identifier, result.attributes);
|
|
21832
21933
|
return result;
|
|
21833
21934
|
} catch (error) {
|
|
21935
|
+
idLog.addId(identifierCarriedBy(error));
|
|
21834
21936
|
await this.cleanupFailedCreateRemnant(error, resourceType, logicalId);
|
|
21835
21937
|
this.handleError(error, "CREATE", resourceType, logicalId);
|
|
21836
21938
|
}
|
|
@@ -21851,7 +21953,10 @@ var CloudControlProvider = class {
|
|
|
21851
21953
|
} catch (cleanupError) {
|
|
21852
21954
|
const message = cleanupError instanceof Error ? cleanupError.message : String(cleanupError);
|
|
21853
21955
|
if (isWaitAbandonedError(cleanupError)) {
|
|
21854
|
-
|
|
21956
|
+
const line = `Could not confirm whether the remnant ${error.physicalId} left by the failed CREATE of ${logicalId} was removed (a retry may fail with AlreadyExists until it is removed manually): ${displaySafe(message)}`;
|
|
21957
|
+
const log = this.logger;
|
|
21958
|
+
if (log instanceof IdScrubLog) log.warnKeepingResume(line, abandonedRequestTokens(cleanupError));
|
|
21959
|
+
else log.warn(line);
|
|
21855
21960
|
return;
|
|
21856
21961
|
}
|
|
21857
21962
|
if (isNotFoundMessage(message)) {
|
|
@@ -21862,7 +21967,12 @@ var CloudControlProvider = class {
|
|
|
21862
21967
|
}
|
|
21863
21968
|
}
|
|
21864
21969
|
async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
21865
|
-
const
|
|
21970
|
+
const mask = maskerOrIdentity(context?.maskSecrets);
|
|
21971
|
+
const idLog = new IdScrubLog(this.logger, mask, holdsSecretDerivedLeaf(properties, mask) || holdsSecretDerivedLeaf(previousProperties, mask));
|
|
21972
|
+
idLog.addId(physicalId);
|
|
21973
|
+
return inIdLogScope(idLog, () => this.updateInIdLogScope(logicalId, physicalId, resourceType, properties, previousProperties, context, idLog));
|
|
21974
|
+
}
|
|
21975
|
+
async updateInIdLogScope(logicalId, physicalId, resourceType, properties, previousProperties, context, idLog) {
|
|
21866
21976
|
idLog.debug(`Updating resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
|
|
21867
21977
|
await this.assertRecordedRegionAgainstClient("pre-update", context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21868
21978
|
try {
|
|
@@ -21936,26 +22046,41 @@ var CloudControlProvider = class {
|
|
|
21936
22046
|
this.handleError(error, "UPDATE", resourceType, logicalId, physicalId);
|
|
21937
22047
|
}
|
|
21938
22048
|
}
|
|
21939
|
-
async delete(logicalId, physicalId, resourceType,
|
|
22049
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
22050
|
+
const mask = maskerOrIdentity(void 0);
|
|
22051
|
+
const idLog = new IdScrubLog(this.logger, mask, holdsSecretDerivedLeaf(properties, mask));
|
|
22052
|
+
idLog.addId(physicalId);
|
|
22053
|
+
const result = await inIdLogScope(idLog, () => this.deleteInIdLogScope(logicalId, physicalId, resourceType, properties, context));
|
|
22054
|
+
if (!idLog.withheld || !result) return result;
|
|
22055
|
+
return {
|
|
22056
|
+
...result,
|
|
22057
|
+
...result.outcome === "skipped" && { reason: idLog.scrub(result.reason) },
|
|
22058
|
+
...Array.isArray(result.indeterminateGuards) && { indeterminateGuards: result.indeterminateGuards.map((guard) => ({
|
|
22059
|
+
...guard,
|
|
22060
|
+
reason: idLog.scrub(guard.reason)
|
|
22061
|
+
})) }
|
|
22062
|
+
};
|
|
22063
|
+
}
|
|
22064
|
+
async deleteInIdLogScope(logicalId, physicalId, resourceType, properties, context) {
|
|
21940
22065
|
this.logger.debug(`Deleting resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
|
|
21941
22066
|
if (context?.finalSnapshotIdentifier !== void 0) throw new ProvisioningError(`${logicalId} (${resourceType}) requires a final snapshot (DeletionPolicy: Snapshot), but the Cloud Control API delete route has no final-snapshot parameter. Re-run with --skip-final-snapshot after snapshotting manually, or retain the resource.`, resourceType, logicalId, physicalId);
|
|
21942
22067
|
await this.assertRecordedRegionAgainstClient("pre-delete", context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
21943
22068
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
21944
22069
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
21945
22070
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
21946
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
22071
|
+
const { ASGProvider } = await import("./asg-provider-CbwOK2TQ.js");
|
|
21947
22072
|
const delegateRegion = ambientRegion();
|
|
21948
22073
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
21949
22074
|
if (asgProvider === void 0) {
|
|
21950
22075
|
asgProvider = new ASGProvider();
|
|
21951
22076
|
this.asgDeleteDelegates.set(delegateRegion, asgProvider);
|
|
21952
22077
|
}
|
|
21953
|
-
return withIndeterminateGuard(await asgProvider.delete(logicalId, physicalId, resourceType,
|
|
22078
|
+
return withIndeterminateGuard(await asgProvider.delete(logicalId, physicalId, resourceType, properties, context), indeterminateGuard);
|
|
21954
22079
|
}
|
|
21955
22080
|
if ((context?.deletionPolicy === "Delete" || context?.skipFinalSnapshot === true) && SDK_DELETE_FAMILIES.has(resourceType)) {
|
|
21956
|
-
if (deletesThroughSdkProvider(resourceType,
|
|
22081
|
+
if (deletesThroughSdkProvider(resourceType, properties)) {
|
|
21957
22082
|
const delegate = await this.sdkDeleteDelegateInCcRegion(resourceType, logicalId, physicalId);
|
|
21958
|
-
return withIndeterminateGuard(await delegate.delete(logicalId, physicalId, resourceType,
|
|
22083
|
+
return withIndeterminateGuard(await delegate.delete(logicalId, physicalId, resourceType, properties, context), indeterminateGuard);
|
|
21959
22084
|
}
|
|
21960
22085
|
this.logger.warn(safeMsg`${logicalId} (${resourceType}) records a GlobalClusterIdentifier cdkd cannot detach it from, so it is deleted through ` + `Cloud Control, which handles the global-cluster membership. Its handler ` + safeMsg`can take a manual final snapshot of ${physicalId}, which cdkd does not record; ` + `delete it yourself if you do not want it.`);
|
|
21961
22086
|
}
|
|
@@ -22049,7 +22174,7 @@ var CloudControlProvider = class {
|
|
|
22049
22174
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
22050
22175
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
22051
22176
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
22052
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
22177
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-COCDd7bS.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-TnGNCeLX.js"))).NeptuneProvider({ region: ccRegion });
|
|
22053
22178
|
this.sdkDeleteDelegates.set(family, {
|
|
22054
22179
|
region: ccRegion,
|
|
22055
22180
|
provider
|
|
@@ -22752,20 +22877,94 @@ var CloudControlProvider = class {
|
|
|
22752
22877
|
return masked;
|
|
22753
22878
|
}
|
|
22754
22879
|
};
|
|
22755
|
-
|
|
22756
|
-
|
|
22757
|
-
|
|
22758
|
-
|
|
22759
|
-
|
|
22760
|
-
|
|
22761
|
-
|
|
22762
|
-
|
|
22763
|
-
|
|
22764
|
-
|
|
22765
|
-
|
|
22880
|
+
var IdScrubLog = class {
|
|
22881
|
+
needles = [];
|
|
22882
|
+
base;
|
|
22883
|
+
mask;
|
|
22884
|
+
evidence;
|
|
22885
|
+
constructor(base, mask, evidence) {
|
|
22886
|
+
this.base = base;
|
|
22887
|
+
this.mask = mask;
|
|
22888
|
+
this.evidence = evidence;
|
|
22889
|
+
}
|
|
22890
|
+
get withheld() {
|
|
22891
|
+
return this.needles.length > 0;
|
|
22892
|
+
}
|
|
22893
|
+
addId(id) {
|
|
22894
|
+
if (!this.evidence || id === void 0 || id === "") return;
|
|
22895
|
+
const parts = [id, ...id.split("|")].filter((needle) => needle !== "");
|
|
22896
|
+
const raw = [...new Set(parts.flatMap((part) => [
|
|
22897
|
+
part,
|
|
22898
|
+
displaySafe(part),
|
|
22899
|
+
displaySafe(part, { asciiOnly: true })
|
|
22900
|
+
]))].filter((needle) => needle !== "" && needle !== "***");
|
|
22901
|
+
const masked = raw.map((needle) => this.mask(needle));
|
|
22902
|
+
this.needles = [.../* @__PURE__ */ new Set([
|
|
22903
|
+
...this.needles,
|
|
22904
|
+
...raw,
|
|
22905
|
+
...masked.filter((m, i) => m !== "" && m !== raw[i] && m !== "***")
|
|
22906
|
+
])].sort((a, b) => b.length - a.length);
|
|
22907
|
+
}
|
|
22908
|
+
scrub = (text) => this.needles.reduce((out, needle) => out.split(needle).join("***"), this.mask(text));
|
|
22909
|
+
scrubKeepingResume(text, requestTokens) {
|
|
22910
|
+
const tokens = requestTokens.filter((token) => token !== "");
|
|
22911
|
+
if (tokens.length === 0) return this.scrub(text);
|
|
22912
|
+
const keep = new RegExp(`(${[RESUME_COMMAND.source, ...tokens.map(escapeRegExp)].join("|")})`);
|
|
22913
|
+
return text.split(keep).map((segment, i) => i % 2 === 1 ? this.mask(segment) : this.scrub(segment)).join("");
|
|
22914
|
+
}
|
|
22915
|
+
scrubError(error) {
|
|
22916
|
+
if (this.needles.length === 0 || !(error instanceof Error)) return error;
|
|
22917
|
+
const original = errorCauseChain(error);
|
|
22918
|
+
const tokens = abandonedRequestTokens(error);
|
|
22919
|
+
const scrubbed = maskSecretsInError(error, /* @__PURE__ */ new Map(), (text) => this.scrubKeepingResume(text, tokens));
|
|
22920
|
+
const clones = errorCauseChain(scrubbed);
|
|
22921
|
+
original.forEach((link, i) => {
|
|
22922
|
+
const clone = clones[i];
|
|
22923
|
+
if (clone === void 0 || clone === link) return;
|
|
22924
|
+
for (const key of VERBATIM_ERROR_FIELDS) {
|
|
22925
|
+
const descriptor = Object.getOwnPropertyDescriptor(link, key);
|
|
22926
|
+
if (descriptor === void 0 || typeof descriptor.value !== "string") continue;
|
|
22927
|
+
try {
|
|
22928
|
+
Object.defineProperty(clone, key, descriptor);
|
|
22929
|
+
} catch {}
|
|
22930
|
+
}
|
|
22931
|
+
});
|
|
22932
|
+
return scrubbed;
|
|
22933
|
+
}
|
|
22934
|
+
warnKeepingResume(message, requestTokens) {
|
|
22935
|
+
this.base.warn(this.scrubKeepingResume(message, requestTokens));
|
|
22936
|
+
}
|
|
22937
|
+
debug(message) {
|
|
22938
|
+
this.base.debug(this.scrub(message));
|
|
22939
|
+
}
|
|
22940
|
+
info(message) {
|
|
22941
|
+
this.base.info(this.scrub(message));
|
|
22942
|
+
}
|
|
22943
|
+
warn(message) {
|
|
22944
|
+
this.base.warn(this.scrub(message));
|
|
22945
|
+
}
|
|
22946
|
+
error(message) {
|
|
22947
|
+
this.base.error(this.scrub(message));
|
|
22948
|
+
}
|
|
22949
|
+
};
|
|
22950
|
+
const VERBATIM_ERROR_FIELDS = ["logicalId", "resourceType"];
|
|
22951
|
+
function escapeRegExp(text) {
|
|
22952
|
+
return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
22953
|
+
}
|
|
22954
|
+
const RESUME_COMMAND = /aws(?: --profile (?:'(?:[^'\n]|'\\'')*'|\S+))? cloudcontrol get-resource-request-status --request-token \S+(?: --region \S+)?/;
|
|
22955
|
+
function abandonedRequestTokens(error) {
|
|
22956
|
+
return error instanceof Error ? errorCauseChain(error).flatMap((link) => link instanceof CloudControlWaitAbandonedError ? [link.requestToken] : []) : [];
|
|
22766
22957
|
}
|
|
22767
|
-
|
|
22768
|
-
|
|
22958
|
+
const idLogScope = new AsyncLocalStorage();
|
|
22959
|
+
async function inIdLogScope(idLog, fn) {
|
|
22960
|
+
try {
|
|
22961
|
+
return await idLogScope.run(idLog, fn);
|
|
22962
|
+
} catch (error) {
|
|
22963
|
+
throw idLog.scrubError(error);
|
|
22964
|
+
}
|
|
22965
|
+
}
|
|
22966
|
+
function identifierCarriedBy(error) {
|
|
22967
|
+
return error instanceof ProvisioningError ? error.physicalId : void 0;
|
|
22769
22968
|
}
|
|
22770
22969
|
function holdsSecretDerivedLeaf(value, mask, depth = 0) {
|
|
22771
22970
|
if (typeof value === "string") return isSecretDerivedValue(value, mask);
|
|
@@ -28154,6 +28353,15 @@ function classifyFailedOp(op, stateResources) {
|
|
|
28154
28353
|
const current = stateResources[op.logicalId];
|
|
28155
28354
|
if (op.changeType === "CREATE") {
|
|
28156
28355
|
if (!op.physicalId) return "skip-failed-unknown";
|
|
28356
|
+
if (op.physicalIdRecoveredFromError === false) return "skip-failed-superseded";
|
|
28357
|
+
if (op.physicalIdRecoveredFromError === true) {
|
|
28358
|
+
if (current) return current.physicalId === op.physicalId ? "skip-failed-noop" : "skip-failed-mismatch";
|
|
28359
|
+
if (stateHoldsPhysicalId(stateResources, op.resourceType, op.physicalId)) return "skip-failed-noop";
|
|
28360
|
+
const orphanPolicy = effectiveDeletionPolicy(op.resourceType, op.deletionPolicy, op.attemptedProperties);
|
|
28361
|
+
if (orphanPolicy === "Retain") return "orphan-failed-create-retain";
|
|
28362
|
+
if (orphanPolicy === "Snapshot") return "delete-failed-create-with-final-snapshot";
|
|
28363
|
+
return "delete-failed-create";
|
|
28364
|
+
}
|
|
28157
28365
|
if (!current) return "skip-failed-noop";
|
|
28158
28366
|
if (current.physicalId !== op.physicalId) return "skip-failed-mismatch";
|
|
28159
28367
|
const policy = effectiveDeletionPolicy(current.resourceType, current.deletionPolicy, current.properties);
|
|
@@ -28165,6 +28373,28 @@ function classifyFailedOp(op, stateResources) {
|
|
|
28165
28373
|
if (isTypeChangeOp(op)) return "skip-failed-type-change";
|
|
28166
28374
|
return "revert-failed-update";
|
|
28167
28375
|
}
|
|
28376
|
+
function stateHoldsPhysicalId(stateResources, resourceType, physicalId) {
|
|
28377
|
+
return Object.values(stateResources).some((r) => r?.resourceType === resourceType && r.physicalId === physicalId);
|
|
28378
|
+
}
|
|
28379
|
+
function demoteSupersededOrphans(segments, orphans = []) {
|
|
28380
|
+
let demoted = 0;
|
|
28381
|
+
segments.forEach((segment, s) => {
|
|
28382
|
+
for (const op of segment.failedOperations ?? []) {
|
|
28383
|
+
if (op.changeType !== "CREATE" || op.physicalIdRecoveredFromError !== true) continue;
|
|
28384
|
+
if (segments.slice(s + 1).some((t) => (t.operations ?? []).some((o) => mayOwn(o, op, true)) || (t.failedOperations ?? []).some((o) => mayOwn(o, op, false))) || segments.slice(s).some((t) => t.supersededLogicalIds?.includes(op.logicalId) === true) || orphans.some((o) => o?.logicalId === op.logicalId || o?.state?.resourceType === op.resourceType && o.state?.physicalId === op.physicalId)) {
|
|
28385
|
+
op.physicalIdRecoveredFromError = false;
|
|
28386
|
+
demoted++;
|
|
28387
|
+
}
|
|
28388
|
+
}
|
|
28389
|
+
});
|
|
28390
|
+
return demoted;
|
|
28391
|
+
}
|
|
28392
|
+
function mayOwn(o, orphan, completed) {
|
|
28393
|
+
if (o?.resourceType !== orphan.resourceType) return false;
|
|
28394
|
+
if (completed && o.changeType === "CREATE") return true;
|
|
28395
|
+
if (o.physicalId === orphan.physicalId) return true;
|
|
28396
|
+
return o.previousState?.physicalId === orphan.physicalId;
|
|
28397
|
+
}
|
|
28168
28398
|
function planFailedOps(failedOps, stateResources) {
|
|
28169
28399
|
return failedOps.map((op) => ({
|
|
28170
28400
|
op,
|
|
@@ -28997,6 +29227,10 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
28997
29227
|
logger.warn(safeMsg` Rollback: Skipping failed CREATE of ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) — it recorded ${mask(String(op.physicalId))}, which is not the resource state tracks under this id; manual attention may be required`);
|
|
28998
29228
|
recordRollbackSkip(skipScope, op, "The failed CREATE recorded a physical id other than the one state now tracks under this logical id, so the rollback left it as it is; manual attention may be required.");
|
|
28999
29229
|
break;
|
|
29230
|
+
case "skip-failed-superseded":
|
|
29231
|
+
logger.warn(safeMsg` Rollback: Skipping failed CREATE of ${shownLogicalId(op.logicalId)} (${refusalResourceType(op.resourceType)}) — it created ${mask(String(op.physicalId))} before failing, and a later deploy or rollback may own a resource under that id now; if it is not in use, delete it manually`);
|
|
29232
|
+
recordRollbackSkip(skipScope, op, "The failed CREATE created its resource before failing, but a later deploy or rollback may own a resource under that id now, so the rollback left it as it is; manual attention may be required.");
|
|
29233
|
+
break;
|
|
29000
29234
|
case "skip-failed-unknown":
|
|
29001
29235
|
logger.warn(` Rollback: failed CREATE of ${safe(op.logicalId)} (${safe(op.resourceType)}) recorded no physical id — if it was partially created in AWS, delete it manually`);
|
|
29002
29236
|
recordRollbackSkip(skipScope, op, "The failed CREATE recorded no physical id, so the rollback cannot address it; if it was partially created in AWS, delete it manually.");
|
|
@@ -29024,7 +29258,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
29024
29258
|
}
|
|
29025
29259
|
delete stateResources[op.logicalId];
|
|
29026
29260
|
await noteRetainedResource(op.resourceType, op.logicalId);
|
|
29027
|
-
logger.info(` Rollback: leaving partially-created ${safe(op.logicalId)} (${safe(op.resourceType)}) in AWS (DeletionPolicy: Retain) — removed from state
|
|
29261
|
+
logger.info(` Rollback: leaving partially-created ${safe(op.logicalId)} (${safe(op.resourceType)}) in AWS (DeletionPolicy: Retain)` + (failedCreateRecord ? " — removed from state" : " — it was never in state"));
|
|
29028
29262
|
await options.afterOp?.(op.logicalId);
|
|
29029
29263
|
ctx.recordEvent?.({
|
|
29030
29264
|
eventType: "ROLLBACK_RESOURCE_SUCCEEDED",
|
|
@@ -29165,7 +29399,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
29165
29399
|
error: maskedRollbackEventError(revertError, mask)
|
|
29166
29400
|
});
|
|
29167
29401
|
}
|
|
29168
|
-
inlinePolicyWriters.noteOutcome(op, action === "skip-failed-noop" || action === "skip-failed-mismatch" || ownRecord(stateResources, op.logicalId) !== recordBefore);
|
|
29402
|
+
inlinePolicyWriters.noteOutcome(op, action === "skip-failed-noop" || action === "skip-failed-mismatch" || action === "skip-failed-superseded" || ownRecord(stateResources, op.logicalId) !== recordBefore);
|
|
29169
29403
|
}
|
|
29170
29404
|
if (result.interrupted) await restoreHeldInlinePolicies(inlinePolicyWriters, stateResources, stackName, ctx, result, { refuseAll: true });
|
|
29171
29405
|
if (emitEnvelope) ctx.recordEvent?.({
|
|
@@ -30850,6 +31084,7 @@ function priorAttemptsInJournal(journal, logicalId, resourceType) {
|
|
|
30850
31084
|
}
|
|
30851
31085
|
function recordedAsNewResource(op) {
|
|
30852
31086
|
if (typeof op.physicalId !== "string" || op.physicalId === "") return false;
|
|
31087
|
+
if (op.physicalIdRecoveredFromError === true) return false;
|
|
30853
31088
|
if (op.changeType === "CREATE") return true;
|
|
30854
31089
|
const previous = op.previousState?.physicalId;
|
|
30855
31090
|
return typeof previous === "string" && previous !== op.physicalId;
|
|
@@ -34979,15 +35214,20 @@ async function executeDeployment(template, currentState, changes, dag, execution
|
|
|
34979
35214
|
this.interrupted = true;
|
|
34980
35215
|
this.interruptCause ??= "sibling-failure";
|
|
34981
35216
|
const refused = isRefusedBeforeApplying(provisionError, logicalId);
|
|
34982
|
-
const
|
|
34983
|
-
if (refused && change.changeType === "CREATE" &&
|
|
35217
|
+
const statePhysicalId = newResources[logicalId]?.physicalId ?? previousState?.physicalId;
|
|
35218
|
+
if (refused && change.changeType === "CREATE" && statePhysicalId === void 0) throw provisionError;
|
|
35219
|
+
const createdId = change.changeType === "CREATE" && statePhysicalId === void 0 ? createdBeforeFailure(provisionError, logicalId, change.resourceType) : void 0;
|
|
34984
35220
|
failedOperations.push({
|
|
34985
35221
|
logicalId,
|
|
34986
35222
|
changeType: change.changeType,
|
|
34987
35223
|
resourceType: change.resourceType,
|
|
34988
|
-
provisionedBy: newResources[logicalId]?.provisionedBy ?? previousState?.provisionedBy,
|
|
35224
|
+
provisionedBy: createdId !== void 0 ? "sdk" : newResources[logicalId]?.provisionedBy ?? previousState?.provisionedBy,
|
|
34989
35225
|
...previousState && { previousState },
|
|
34990
|
-
physicalId,
|
|
35226
|
+
physicalId: createdId ?? statePhysicalId,
|
|
35227
|
+
...createdId !== void 0 && {
|
|
35228
|
+
physicalIdRecoveredFromError: true,
|
|
35229
|
+
deletionPolicy: journaledOrphanPolicy(this.extractTemplateAttributes(template, logicalId).deletionPolicy)
|
|
35230
|
+
},
|
|
34991
35231
|
...!refused && { attemptedProperties: this.attemptedResolvedProps.get(logicalId) }
|
|
34992
35232
|
});
|
|
34993
35233
|
throw provisionError;
|
|
@@ -35265,6 +35505,10 @@ async function persistStateAfterOutputFailure(stackName, currentState, newResour
|
|
|
35265
35505
|
}
|
|
35266
35506
|
}
|
|
35267
35507
|
}
|
|
35508
|
+
function journaledOrphanPolicy(policy) {
|
|
35509
|
+
if (policy === void 0) return void 0;
|
|
35510
|
+
return policy === "Delete" || policy === "Retain" || policy === "Snapshot" || policy === "RetainExceptOnCreate" ? policy : "Retain";
|
|
35511
|
+
}
|
|
35268
35512
|
|
|
35269
35513
|
//#endregion
|
|
35270
35514
|
//#region src/provisioning/canonicalize-properties.ts
|
|
@@ -36654,5 +36898,5 @@ DeployEngine.prototype.replacementNameOrigin = replacementNameOrigin;
|
|
|
36654
36898
|
DeployEngine.prototype.orphanedNameCollisionAdvice = orphanedNameCollisionAdvice;
|
|
36655
36899
|
|
|
36656
36900
|
//#endregion
|
|
36657
|
-
export { resourcesNamingDeclaredParameter as $, wholeStringLeavesOf as $a, isWarmThroughputDecrease as $i, explicitRoleArnOrThrow as $n, partitionSensitiveEnv as $o, malformedOutputsWarning as $r, noEchoParameterValueSeed as $t, resolveDynamoDbDeleteBudgetClock as A, printingCorpusOf as Aa, repairMalformedOrphanRecordsForReadOnly as Ai, ccProtectionRegistryTypes as An, rewriteTemplateAssetReferences as Ao, STATE_REGION_DIVERGED as Ar, expectedOwnerParam as As, ccRoutedFinalSnapshotError as At, getPriorAttempts as B, scrubResourceRecord as Ba, findSilentDropProperties as Bi, isTerminationProtectionPropagationError as Bn, validateContainerRepoName as Bo, isReadableResourceEntry as Br, nullPrototypeRecord as Bs, updatePartialMessage as Bt, perType as C, inheritNestedStackParameterAssociations as Ca, refuseMalformedResourcePropertiesForDrift as Ci, ProviderRegistry as Cn, AssetPublisher as Co, isStalePlaceholderArnAttribute as Cr, CFN_TEMPLATE_BODY_LIMIT as Cs, resolveReplacementOldType as Ct, beginDeleteWait as D, hasMaskableValues as Da, refuseMalformedResourcesForDestroy as Di, getCurrentResourceSecrets as Dn, buildAssetRedirectMap as Do, parameterInputsFor as Dr, uploadCfnTemplate as Ds, ATOMIC_FINAL_SNAPSHOT_TYPES as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, createUnionSecretMasker as Ea, refuseMalformedResourcesForDeploy as Ei, isCustomResourceType as En, WorkGraph as Eo, withSharedDrainBudget as Er, findLargeInlineResources as Es, inheritProducerRegions as Et, waitForIndexesSettled as F, errorCauseChain as Fa, repairMalformedResourcesForReadOnly as Fi, withIndeterminateGuard as Fn, getBootstrapMarkerKey as Fo, displayLogicalId as Fr, StageLoadError as Fs, unsupportedFinalSnapshotError as Ft, cyan as G, pathCrossesDottedKey as Ga, findReplacedReadersOfRecreateTargets as Gi, INTRINSIC_KEYS as Gn, describeDockerExecFailure as Go, malformedLocalResourceEntriesWarning as Gr, renderAssemblyPathEscape as Gs, WITHHELD_NAME_DISPLAY as Gt, formatResourceLine as H, DYNAMIC_REFERENCE_TOKEN_SCAN as Ha, withoutSilentDropProperties as Hi, reDisableInstanceApiTermination as Hn, buildDockerImage as Ho, malformedExportNamesWarning as Hr, absoluteAssemblyPathEscape as Hs, DeploymentEventsReader as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, maskSecretsInError as Ia, unpreviewableOrphanRecords as Ii, isWaitAbandonedError as In, isCrossRegionRedirect as Io, hasReadableOrphans as Ir, processStackMessages as Is, REDACTED_DELETE_ADDRESS_SKIP_REASON as It, red as J, provenPublicValue as Ja, isStatefulRecreateTargetForReplace as Ji, producerRegionsFromState as Jn, finchSecretArgvRefusal as Jo, malformedOrphanRecordsWarning as Jr, resolveBucketRegion as Js, secretBearing as Jt, gray as K, identityKeyFor as Ka, shownType as Ki, IntrinsicFunctionResolver as Kn, describeDockerFailure as Ko, malformedLocalResourcesWarning as Kr, resolveAssemblyPath as Ks, displayTextOrWithheld as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, maskSecretsInText as La, unreadableOrphanRecords as Li, markWaitAbandoned as Ln, parseBootstrapMarker as Lo, hasReadableOutputs as Lr, defineOwnKey as Ls, isRedactedRecordedValue as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, recordLogOnlyValue as Ma, repairMalformedOutputsForReadOnly as Mi, UNSPECIFIED_SKIP_REASON as Mn, BOOTSTRAP_MARKER_PREFIX as Mo, UNREADABLE_ORPHANS_CONTAINER_ROW as Mr, canonicalizeRegion as Ms, effectiveDeletionPolicy as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, shareLogOnlyValues as Na, repairMalformedResourceEntriesForReadOnly as Ni, deleteIndeterminateGuards as Nn, assertAssetBucketRegion as No, UNREADABLE_RESOURCES_MAP_ROW as Nr, derivePartitionAndUrlSuffix as Ns, isFinalSnapshotError as Nt, compensateRemovedDeletionProtection as O, literalSplitDelimitersOf as Oa, refuseMalformedResourcesForExport as Oi, CloudControlProvider as On, createAssetRedirectResolver as Oo, passedParameterClassesOf as Or, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Os, PRE_DELETE_SNAPSHOT_TYPES as Ot, deleteTableWithIndexBusyRetry as P, createSecretMasker as Pa, repairMalformedResourcePropertiesForReadOnly as Pi, deleteSkipReason as Pn, ensureAssetStorage as Po, deployRefusesOrphanRowsReason as Pr, AssemblyReader as Ps, refusesFinalSnapshot as Pt, reachableDivergentParameters as Q, recordProvenPublicExpression as Qa, coerceWarmThroughput as Qi, assertSendableRoleArn as Qn, isMalformedEnvKey as Qo, malformedOutputsRefusalMessage as Qr, isWholeDynamicReferenceValue as Qt, hasCdkAutoDeleteTag as R, markSameGenerationBag as Ra, unreadableResourceEntries as Ri, disableInstanceApiTermination as Rn, readBootstrapMarkerBody as Ro, hasReadableResources as Rr, hasOwnKey as Rs, redactedDeleteAddressFields as Rt, isProtectionValueActive as S, liveMatchesUnresolvedTokenFrame as Sa, refuseMalformedResourceEntriesForOrphan as Si, CC_BROKEN_REASON as Sn, shouldRetainResource as So, cfnRefValueFromPhysicalId as Sr, ssmResolvedValueType as Ss, planRollback as St, DynamoDBGlobalTableProvider as T, carryLogOnlyValues as Ta, refuseMalformedResourcePropertiesForOrphan as Ti, wouldReturnToSdkProvider as Tn, stringifyValue as To, parseWebACLArn as Tr, MIGRATE_TMP_PREFIX as Ts, getCurrentProducerRegions as Tt, createReadOnlyAttributeHealerFactory as U, dynamicReferenceTokens as Ua, NO_CC_HANDLERS_REASON as Ui, reEnableInstanceApiTermination as Un, resolveDockerContextDirectory as Uo, malformedExportSourceWarning as Ur, describeFileReadFailure as Us, DeploymentEventsStore as Ut, markRefusedBeforeApplying as V, recoverMaskedOutput as Va, unwrittenCreateOnlyReplacement as Vi, observeThenDisableInstanceApiTermination as Vn, buildDenyExternalAccessPolicy as Vo, malformedDriftResourcePropertiesWarning as Vr, ownValue as Vs, updatePartialReason as Vt, bold as W, isUncertifiedBaselineMaskPosition as Wa, hasNoCloudControlHandlers as Wi, DiffCalculator as Wn, describeDockerCapturedOutput as Wo, malformedLocalOutputsWarning as Wr, displayAssemblyPath as Ws, extractDeploymentEventError as Wt, computeParameterTaint as X, recordMaskOnlyValuesIn as Xa, renderStatefulReason as Xi, applyRoleArnIfSet as Xn, getDockerCmd as Xo, malformedOrphansRefusalMessage as Xr, secretSafeKeyDisplay as Xt, yellow as Y, recordMaskOnlyValue as Ya, isStatefulRecreateTargetSync as Yi, regionLessSecretName as Yn, formatDockerLoginError as Yo, malformedOrphanRowsKeptWarning as Yr, secretBearingStateKeyWarning as Yt, namesAnyDeclaredParameter as Z, recordNoEchoAttributeValues as Za, WARM_THROUGHPUT_MEMBERS as Zi, assertFlagRoleArn as Zn, isDockerClientEnvKey as Zo, malformedOrphansWarning as Zr, exportNameSecretExposure as Zt, makeCanonicalizePropertiesFn as _, canonicalLambdaFunctionName as _a, refuseMalformedResourceEntries as _i, refuseMalformedDesiredTags as _n, importableOutputKeys as _o, carriesDynamicReference as _r, resolveStateBucketWithDefault as _s, destroyStackRecordsView as _t, findNestedTemplateTreeDefect as a, configIntegerRefusal as aa, malformedStateRefusalMessage as ai, DEFAULT_RESOURCE_WARN_AFTER_MS as an, isSingleDynamicReferenceToken as ao, envCredentialsAreAssumedRole as ar, escapeRegExp$2 as as, dropSettledNestedJournals as at, recordedProtectionNote as b, DagBuilder as ba, refuseMalformedResourceEntriesForImport as bi, definedAttributes as bn, orphansAfterRollback as bo, keepsSecretReferenceToken as br, stateBucketExistenceConfirmed as bs, recordAfterRollbackUpdate as bt, renderNestedTemplateTreeDefect as c, replayWarn as ca, refuseMalformedNestedChildOutputs as ci, earliestDefined as cn, S3StateBackend as co, s3BucketDomainName as cr, getDockerImageBySourceHash as cs, recordDisplacedSkips as ct, conditionInputsFrom as d, requireConfigString as da, refuseMalformedOrphans as di, withCreateTokenLedger as dn, acceptedCreateOnlyDropsOf as do, s3BucketWebsiteUrl as dr, getDefaultStateBucketName as ds, withNestedRevertRun as dt, toCfnInteger as ea, malformedRenderedContainersWarning as ei, collectDeclaredOutputNames as en, STATE_SOURCED_BASELINE_RULES as eo, isIamRoleArn as er, redactDockerArgvValues as es, makeSiblingClaimReader as et, parentSuppliedValues as f, prefetchCreateOnlyPropertyPaths as fa, refuseMalformedOrphansForDestroy as fi, acquireIdempotencyToken as fn, describeRegionValueKind as fo, coerceParameterTypedValue as fr, getLegacyStateBucketName as fs, getCurrentNestedStackContext as ft, mergeNoChangeOutputs as g, markAuxiliaryFailure as ga, refuseMalformedResourceAttributesForOrphan as gi, readTagList as gn, hasUnverifiableParameterRefusal as go, isImpossibleEmptyStoredAttribute as gr, resolveSkipPrefix as gs, awaitInFlightSibling as gt, keptWholeReasonText as h, withRetry as ha, refuseMalformedOutputsForDestroy as hi, planTagDiff as hn, hasReasonlessBaselineRefusal as ho, getAccountInfo as hr, resolveCaptureObservedState as hs, replayRollback as ht, childTemplateLoader as i, configBooleanRefusal as ia, malformedScrubResourceEntriesRefusalMessage as ii, DEFAULT_RESOURCE_TIMEOUT_MS as in, WHOLE_DYNAMIC_REFERENCE_PATTERN as io, callerEnvCredentials as ir, warnFinchArgvExposure as is, displacedPhysicalIdShown as it, resolveDynamoDbDeleteBudgetMs as j, recordLogOnlyParameterValue as ja, repairMalformedOrphansForReadOnly as ji, unchangedBehindSecretReference as jn, AssetModeResolver as jo, STATE_RESOURCES_MALFORMED as jr, PARTITION_TABLE as js, createPreDeleteFinalSnapshot as jt, deleteBudgetKey as k, logOnlyValueCount as ka, refuseMalformedState as ki, slowCcOperationTimeoutMs as kn, loadPublishableAssetManifest as ko, JSON_LISTING_HOLE_VALUE as kr, decodeListingKey as ks, buildFinalSnapshotIdentifier as kt, templateIdentity as l, requireConfigArray as la, refuseMalformedOrphanRecords as li, ledgerForStack as ln, rebuildClientForBucketRegion as lo, s3BucketDualStackDomainName as lr, Synthesizer as ls, revertNestedChildFromJournal as lt, isSecretBearingReferenceString as m, describeTypeWithThrottleRetry as ma, refuseMalformedOutputs as mi, DBPROXY_TAG_OPTIONS as mn, hasReadableExportSet as mo, parameterTypeMayLoseSecretIdentity as mr, resolveAutoAssetStorage as ms, replayFailedOperations as mt, IMPLICIT_DELETE_DEPENDENCIES as n, coerceCfnBoolean as na, malformedResourcePropertiesWarning as ni, isExportAliasCollision as nn, STATE_SOURCED_READBACK_RULES as no, AWS_CREDENTIAL_ENV_KEYS as nr, runDockerForeground as ns, NESTED_PENDING_PARENT_REASON as nt, isAbsoluteAssetPath as o, configStringRefusal as oa, previewableOrphanRecords as oi, maskingRetryLogger as on, LockManager as oo, isSettledInstanceState as or, stripControlChars as os, getNestedRevertRun as ot, readRecordedConditionVerdicts as p, templateResourceTypes as pa, refuseMalformedOrphansForOrphan as pi, DBPROXY_TAGS_WHAT as pn, exportNamesCarriedFrom as po, isUnboundTemplateParameter as pr, resolveApp as ps, withNestedStackContext as pt, green as q, carriesSecretMask as qa, MULTI_REGION_RECREATE_BLOCKED_TYPES as qi, classifyReplaySecretRegion as qn, dockerSpawnEnvWithSensitive as qo, malformedOrphanRecordsRefusalMessage as qr, clearBucketRegionCache as qs, exportAliasCollisionScrubWarning as qt, computeImplicitDeleteEdges as r, coerceCfnInteger as ra, malformedResourcesWarning as ri, bindingSkippedOutputs as rn, TEMPLATE_SOURCED_RULES as ro, applyCallerIdentityCredentials as rr, runDockerStreaming as rs, displacedOpClause as rt, listNestedTemplateRows as s, readConfigString as sa, refuseDivergentRecordRegionForDestroy as si, RollbackInlinePolicyWriters as sn, isLockInfoExpired as so, s3BucketArn as sr, AssetManifestLoader as ss, nestedChildStackName as st, DeployEngine as t, toFiniteNumber as ta, malformedResourceEntriesWarning as ti, collectPublishedOutputNames as tn, STATE_SOURCED_CROSS_GENERATION_RULES as to, sendableAssumeRoleCommand as tr, redactedDockerCause as ts, planOrphanAdoption as tt, conditionFingerprint as u, requireConfigObject as ua, refuseMalformedOrphanRecordsForDestroy as ui, reserveStackCreateToken as un, splitImportedOps as uo, s3BucketRegionalDomainName as ur, synthesisStatusMessage as us, revertedNestedRowIds as ut, withResourceDeadline as v, lambdaFunctionNameForMask as va, refuseMalformedResourceEntriesForDeploy as vi, tagMapAsList as vn, importableOutputs as vo, carriesFetchableDynamicReference as vr, resolveStateBucketWithDefaultAndSource as vs, getStackRecords as vt, readProtection as w, recordNestedStackParameterExpressions as wa, refuseMalformedResourcePropertiesForExport as wi, ccBrokenReason as wn, isSensitiveAttributeName as wo, refStateLookupFromResource as wr, CFN_TEMPLATE_URL_LIMIT as ws, findNestedStackTypeChanges as wt, PROTECTION_PROPERTY_BY_TYPE as x, TemplateParser as xa, refuseMalformedResourceEntriesForImportSave as xi, stringifyIfAssigned as xn, orphansCarriedFrom as xo, AWS_NO_VALUE as xr, warnDeprecatedNoPrefixCliFlag as xs, planFailedOps as xt, recordedProtectionEvidence as y, sameLambdaFunctionAddress as ya, refuseMalformedResourceEntriesForDestroy as yi, tagPlanWarning as yn, isReadableBag as yo, isNamelessDynamicReferenceError as yr, resolveUseCdkBootstrapAssets as ys, withStackRecords as yt, isTruthyCfnBoolean as z, redactSecretsForState as za, findActionableSilentDrops as zi, ec2InstanceProtectionSite as zn, validateAssetBucketName as zo, isReadableOrphanRecord as zr, hasPlainPrototype$1 as zs, redactedDeleteAddressSkip as zt };
|
|
36658
|
-
//# sourceMappingURL=deploy-engine-
|
|
36901
|
+
export { resourcesNamingDeclaredParameter as $, recordMaskOnlyValuesIn as $a, WARM_THROUGHPUT_MEMBERS as $i, assertSendableRoleArn as $n, getDockerCmd as $o, malformedOutputsRefusalMessage as $r, isWholeDynamicReferenceValue as $t, resolveDynamoDbDeleteBudgetClock as A, hasMaskableValues as Aa, refuseMalformedResourcesForExport as Ai, slowCcOperationTimeoutMs as An, buildAssetRedirectMap as Ao, JSON_LISTING_HOLE_VALUE as Ar, uploadCfnTemplate as As, buildFinalSnapshotIdentifier as At, getPriorAttempts as B, maskSecretsInText as Ba, unreadableResourceEntries as Bi, ec2InstanceProtectionSite as Bn, parseBootstrapMarker as Bo, isReadableOrphanRecord as Br, defineOwnKey as Bs, redactedDeleteAddressSkip as Bt, perType as C, DagBuilder as Ca, refuseMalformedResourceEntriesForOrphan as Ci, CC_BROKEN_REASON as Cn, orphansAfterRollback as Co, cfnRefValueFromPhysicalId as Cr, stateBucketExistenceConfirmed as Cs, planRollback as Ct, beginDeleteWait as D, recordNestedStackParameterExpressions as Da, refuseMalformedResourcePropertiesForOrphan as Di, isCustomResourceType as Dn, isSensitiveAttributeName as Do, withSharedDrainBudget as Dr, CFN_TEMPLATE_URL_LIMIT as Ds, inheritProducerRegions as Dt, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as E, inheritNestedStackParameterAssociations as Ea, refuseMalformedResourcePropertiesForExport as Ei, wouldReturnToSdkProvider as En, AssetPublisher as Eo, parseWebACLArn as Er, CFN_TEMPLATE_BODY_LIMIT as Es, getCurrentProducerRegions as Et, waitForIndexesSettled as F, recordLogOnlyValue as Fa, repairMalformedResourceEntriesForReadOnly as Fi, deleteSkipReason as Fn, BOOTSTRAP_MARKER_PREFIX as Fo, deployRefusesOrphanRowsReason as Fr, canonicalizeRegion as Fs, refusesFinalSnapshot as Ft, cyan as G, DYNAMIC_REFERENCE_TOKEN_SCAN as Ga, NO_CC_HANDLERS_REASON as Gi, DiffCalculator as Gn, buildDockerImage as Go, malformedLocalOutputsWarning as Gr, absoluteAssemblyPathEscape as Gs, extractDeploymentEventError as Gt, formatResourceLine as H, redactSecretsForState as Ha, findSilentDropProperties as Hi, observeThenDisableInstanceApiTermination as Hn, validateAssetBucketName as Ho, malformedDriftResourcePropertiesWarning as Hr, hasPlainPrototype$1 as Hs, updatePartialReason as Ht, ECR_AUTO_DELETE_IMAGES_TAG as I, shareLogOnlyValues as Ia, repairMalformedResourcePropertiesForReadOnly as Ii, withIndeterminateGuard as In, assertAssetBucketRegion as Io, displayLogicalId as Ir, derivePartitionAndUrlSuffix as Is, unsupportedFinalSnapshotError as It, red as J, pathCrossesDottedKey as Ja, shownType as Ji, classifyReplaySecretRegion as Jn, describeDockerExecFailure as Jo, malformedOrphanRecordsRefusalMessage as Jr, renderAssemblyPathEscape as Js, exportAliasCollisionScrubWarning as Jt, gray as K, dynamicReferenceTokens as Ka, hasNoCloudControlHandlers as Ki, INTRINSIC_KEYS as Kn, resolveDockerContextDirectory as Ko, malformedLocalResourceEntriesWarning as Kr, describeFileReadFailure as Ks, WITHHELD_NAME_DISPLAY as Kt, S3_AUTO_DELETE_OBJECTS_TAG as L, createSecretMasker as La, repairMalformedResourcesForReadOnly as Li, isWaitAbandonedError as Ln, ensureAssetStorage as Lo, hasReadableOrphans as Lr, AssemblyReader as Ls, REDACTED_DELETE_ADDRESS_SKIP_REASON as Lt, DELETE_INDEX_WAIT_PROCEED_NOTE as M, logOnlyValueCount as Ma, repairMalformedOrphanRecordsForReadOnly as Mi, unchangedBehindSecretReference as Mn, loadPublishableAssetManifest as Mo, STATE_RESOURCES_MALFORMED as Mr, decodeListingKey as Ms, createPreDeleteFinalSnapshot as Mt, INDEX_SETTLE_POLL_INTERVAL_MS as N, printingCorpusOf as Na, repairMalformedOrphansForReadOnly as Ni, UNSPECIFIED_SKIP_REASON as Nn, rewriteTemplateAssetReferences as No, UNREADABLE_ORPHANS_CONTAINER_ROW as Nr, expectedOwnerParam as Ns, effectiveDeletionPolicy as Nt, compensateRemovedDeletionProtection as O, carryLogOnlyValues as Oa, refuseMalformedResourcesForDeploy as Oi, getCurrentResourceSecrets as On, stringifyValue as Oo, parameterInputsFor as Or, MIGRATE_TMP_PREFIX as Os, ATOMIC_FINAL_SNAPSHOT_TYPES as Ot, deleteTableWithIndexBusyRetry as P, recordLogOnlyParameterValue as Pa, repairMalformedOutputsForReadOnly as Pi, deleteIndeterminateGuards as Pn, AssetModeResolver as Po, UNREADABLE_RESOURCES_MAP_ROW as Pr, PARTITION_TABLE as Ps, isFinalSnapshotError as Pt, reachableDivergentParameters as Q, recordMaskOnlyValue as Qa, renderStatefulReason as Qi, assertFlagRoleArn as Qn, formatDockerLoginError as Qo, malformedOrphansWarning as Qr, exportNameSecretExposure as Qt, hasCdkAutoDeleteTag as R, errorCauseChain as Ra, unpreviewableOrphanRecords as Ri, markWaitAbandoned as Rn, getBootstrapMarkerKey as Ro, hasReadableOutputs as Rr, StageLoadError as Rs, isRedactedRecordedValue as Rt, isProtectionValueActive as S, sameLambdaFunctionAddress as Sa, refuseMalformedResourceEntriesForImportSave as Si, stringifyIfAssigned as Sn, isReadableBag as So, AWS_NO_VALUE as Sr, resolveUseCdkBootstrapAssets as Ss, planFailedOps as St, DynamoDBGlobalTableProvider as T, liveMatchesUnresolvedTokenFrame as Ta, refuseMalformedResourcePropertiesForDrift as Ti, ccBrokenReason as Tn, shouldRetainResource as To, refStateLookupFromResource as Tr, ssmResolvedValueType as Ts, findNestedStackTypeChanges as Tt, createReadOnlyAttributeHealerFactory as U, scrubResourceRecord as Ua, unwrittenCreateOnlyReplacement as Ui, reDisableInstanceApiTermination as Un, validateContainerRepoName as Uo, malformedExportNamesWarning as Ur, nullPrototypeRecord as Us, DeploymentEventsReader as Ut, markRefusedBeforeApplying as V, markSameGenerationBag as Va, findActionableSilentDrops as Vi, isTerminationProtectionPropagationError as Vn, readBootstrapMarkerBody as Vo, isReadableResourceEntry as Vr, hasOwnKey as Vs, updatePartialMessage as Vt, bold as W, recoverMaskedOutput as Wa, withoutSilentDropProperties as Wi, reEnableInstanceApiTermination as Wn, buildDenyExternalAccessPolicy as Wo, malformedExportSourceWarning as Wr, ownValue as Ws, DeploymentEventsStore as Wt, computeParameterTaint as X, carriesSecretMask as Xa, isStatefulRecreateTargetForReplace as Xi, regionLessSecretName as Xn, dockerSpawnEnvWithSensitive as Xo, malformedOrphanRowsKeptWarning as Xr, clearBucketRegionCache as Xs, secretBearingStateKeyWarning as Xt, yellow as Y, identityKeyFor as Ya, MULTI_REGION_RECREATE_BLOCKED_TYPES as Yi, producerRegionsFromState as Yn, describeDockerFailure as Yo, malformedOrphanRecordsWarning as Yr, resolveAssemblyPath as Ys, secretBearing as Yt, namesAnyDeclaredParameter as Z, provenPublicValue as Za, isStatefulRecreateTargetSync as Zi, applyRoleArnIfSet as Zn, finchSecretArgvRefusal as Zo, malformedOrphansRefusalMessage as Zr, resolveBucketRegion as Zs, secretSafeKeyDisplay as Zt, makeCanonicalizePropertiesFn as _, withRetry as _a, refuseMalformedResourceAttributesForOrphan as _i, readTagList as _n, hasReadableExportSet as _o, isImpossibleEmptyStoredAttribute as _r, resolveAutoAssetStorage as _s, destroyStackRecordsView as _t, findNestedTemplateTreeDefect as a, coerceCfnInteger as aa, malformedScrubResourceEntriesRefusalMessage as ai, DEFAULT_RESOURCE_TIMEOUT_MS as an, STATE_SOURCED_READBACK_RULES as ao, callerEnvCredentials as ar, runDockerForeground as as, dropSettledNestedJournals as at, recordedProtectionNote as b, canonicalLambdaFunctionName as ba, refuseMalformedResourceEntriesForDestroy as bi, tagPlanWarning as bn, importableOutputKeys as bo, isNamelessDynamicReferenceError as br, resolveStateBucketWithDefault as bs, recordAfterRollbackUpdate as bt, renderNestedTemplateTreeDefect as c, configStringRefusal as ca, refuseDivergentRecordRegionForDestroy as ci, RollbackInlinePolicyWriters as cn, isSingleDynamicReferenceToken as co, s3BucketArn as cr, escapeRegExp$3 as cs, recordDisplacedSkips as ct, conditionInputsFrom as d, requireConfigArray as da, refuseMalformedOrphanRecordsForDestroy as di, reserveStackCreateToken as dn, S3StateBackend as do, s3BucketRegionalDomainName as dr, getDockerImageBySourceHash as ds, withNestedRevertRun as dt, coerceWarmThroughput as ea, malformedOutputsWarning as ei, noEchoParameterValueSeed as en, recordNoEchoAttributeValues as eo, explicitRoleArnOrThrow as er, isDockerClientEnvKey as es, makeSiblingClaimReader as et, parentSuppliedValues as f, requireConfigObject as fa, refuseMalformedOrphans as fi, withCreateTokenLedger as fn, rebuildClientForBucketRegion as fo, s3BucketWebsiteUrl as fr, Synthesizer as fs, getCurrentNestedStackContext as ft, mergeNoChangeOutputs as g, describeTypeWithThrottleRetry as ga, refuseMalformedOutputsForDestroy as gi, planTagDiff as gn, exportNamesCarriedFrom as go, getAccountInfo as gr, resolveApp as gs, awaitInFlightSibling as gt, keptWholeReasonText as h, templateResourceTypes as ha, refuseMalformedOutputs as hi, DBPROXY_TAG_OPTIONS as hn, describeRegionValueKind as ho, parameterTypeMayLoseSecretIdentity as hr, getLegacyStateBucketName as hs, replayRollback as ht, childTemplateLoader as i, coerceCfnBoolean as ia, malformedResourcesWarning as ii, bindingSkippedOutputs as in, STATE_SOURCED_CROSS_GENERATION_RULES as io, applyCallerIdentityCredentials as ir, redactedDockerCause as is, displacedPhysicalIdShown as it, resolveDynamoDbDeleteBudgetMs as j, literalSplitDelimitersOf as ja, refuseMalformedState as ji, ccProtectionRegistryTypes as jn, createAssetRedirectResolver as jo, STATE_REGION_DIVERGED as jr, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as js, ccRoutedFinalSnapshotError as jt, deleteBudgetKey as k, createUnionSecretMasker as ka, refuseMalformedResourcesForDestroy as ki, CloudControlProvider as kn, WorkGraph as ko, passedParameterClassesOf as kr, findLargeInlineResources as ks, PRE_DELETE_SNAPSHOT_TYPES as kt, templateIdentity as l, readConfigString as la, refuseMalformedNestedChildOutputs as li, earliestDefined as ln, LockManager as lo, s3BucketDomainName as lr, stripControlChars as ls, revertNestedChildFromJournal as lt, isSecretBearingReferenceString as m, prefetchCreateOnlyPropertyPaths as ma, refuseMalformedOrphansForOrphan as mi, DBPROXY_TAGS_WHAT as mn, acceptedCreateOnlyDropsOf as mo, isUnboundTemplateParameter as mr, getDefaultStateBucketName as ms, replayFailedOperations as mt, IMPLICIT_DELETE_DEPENDENCIES as n, toCfnInteger as na, malformedResourceEntriesWarning as ni, collectPublishedOutputNames as nn, wholeStringLeavesOf as no, sendableAssumeRoleCommand as nr, partitionSensitiveEnv as ns, NESTED_PENDING_PARENT_REASON as nt, isAbsoluteAssetPath as o, configBooleanRefusal as oa, malformedStateRefusalMessage as oi, DEFAULT_RESOURCE_WARN_AFTER_MS as on, TEMPLATE_SOURCED_RULES as oo, envCredentialsAreAssumedRole as or, runDockerStreaming as os, getNestedRevertRun as ot, readRecordedConditionVerdicts as p, requireConfigString as pa, refuseMalformedOrphansForDestroy as pi, acquireIdempotencyToken as pn, splitImportedOps as po, coerceParameterTypedValue as pr, synthesisStatusMessage as ps, withNestedStackContext as pt, green as q, isUncertifiedBaselineMaskPosition as qa, findReplacedReadersOfRecreateTargets as qi, IntrinsicFunctionResolver as qn, describeDockerCapturedOutput as qo, malformedLocalResourcesWarning as qr, displayAssemblyPath as qs, displayTextOrWithheld as qt, computeImplicitDeleteEdges as r, toFiniteNumber as ra, malformedResourcePropertiesWarning as ri, isExportAliasCollision as rn, STATE_SOURCED_BASELINE_RULES as ro, AWS_CREDENTIAL_ENV_KEYS as rr, redactDockerArgvValues as rs, displacedOpClause as rt, listNestedTemplateRows as s, configIntegerRefusal as sa, previewableOrphanRecords as si, maskingRetryLogger as sn, WHOLE_DYNAMIC_REFERENCE_PATTERN as so, isSettledInstanceState as sr, warnFinchArgvExposure as ss, nestedChildStackName as st, DeployEngine as t, isWarmThroughputDecrease as ta, malformedRenderedContainersWarning as ti, collectDeclaredOutputNames as tn, recordProvenPublicExpression as to, isIamRoleArn as tr, isMalformedEnvKey as ts, planOrphanAdoption as tt, conditionFingerprint as u, replayWarn as ua, refuseMalformedOrphanRecords as ui, ledgerForStack as un, isLockInfoExpired as uo, s3BucketDualStackDomainName as ur, AssetManifestLoader as us, revertedNestedRowIds as ut, withResourceDeadline as v, markAuxiliaryFailure as va, refuseMalformedResourceEntries as vi, refuseMalformedDesiredTags as vn, hasReasonlessBaselineRefusal as vo, carriesDynamicReference as vr, resolveCaptureObservedState as vs, getStackRecords as vt, readProtection as w, TemplateParser as wa, refuseMalformedResourcePropertiesForDestroy as wi, ProviderRegistry as wn, orphansCarriedFrom as wo, isStalePlaceholderArnAttribute as wr, warnDeprecatedNoPrefixCliFlag as ws, resolveReplacementOldType as wt, PROTECTION_PROPERTY_BY_TYPE as x, lambdaFunctionNameForMask as xa, refuseMalformedResourceEntriesForImport as xi, definedAttributes as xn, importableOutputs as xo, keepsSecretReferenceToken as xr, resolveStateBucketWithDefaultAndSource as xs, demoteSupersededOrphans as xt, recordedProtectionEvidence as y, markCreatedBeforeFailure as ya, refuseMalformedResourceEntriesForDeploy as yi, tagMapAsList as yn, hasUnverifiableParameterRefusal as yo, carriesFetchableDynamicReference as yr, resolveSkipPrefix as ys, withStackRecords as yt, isTruthyCfnBoolean as z, maskSecretsInError as za, unreadableOrphanRecords as zi, disableInstanceApiTermination as zn, isCrossRegionRedirect as zo, hasReadableResources as zr, processStackMessages as zs, redactedDeleteAddressFields as zt };
|
|
36902
|
+
//# sourceMappingURL=deploy-engine-DG-oC9YK.js.map
|