@go-to-k/cdkd 0.310.0 → 0.311.0
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-I1bFHVsO.js → asg-provider-CIg_guZ-.js} +5 -3
- package/dist/asg-provider-CIg_guZ-.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{iam-policy-targets-D94wh05t.js → created-resource-sink-DlzoIY-1.js} +51 -2
- package/dist/created-resource-sink-DlzoIY-1.js.map +1 -0
- package/dist/{db-instance-modify-retry-BUG7NMWS.js → db-instance-modify-retry-1y0kIPCO.js} +2 -2
- package/dist/{db-instance-modify-retry-BUG7NMWS.js.map → db-instance-modify-retry-1y0kIPCO.js.map} +1 -1
- package/dist/{deploy-engine-DZO2SOQJ.js → deploy-engine-BF5exXUb.js} +617 -113
- package/dist/deploy-engine-BF5exXUb.js.map +1 -0
- package/dist/{iam-role-provider-BWw7I-SZ.js → iam-role-provider-qvhlVnrn.js} +5 -3
- package/dist/iam-role-provider-qvhlVnrn.js.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/{neptune-provider-8kjFmR1l.js → neptune-provider-D9ac71Ca.js} +6 -4
- package/dist/neptune-provider-D9ac71Ca.js.map +1 -0
- package/dist/{program-CS420Kx9.js → program-DbnTHlwR.js} +26 -14
- package/dist/program-DbnTHlwR.js.map +1 -0
- package/dist/{provider-classes-KsrvwO_r.js → provider-classes-DktsDsTf.js} +1063 -146
- package/dist/provider-classes-DktsDsTf.js.map +1 -0
- package/dist/{rds-provider-BqwTQeS-.js → rds-provider-0LUsn9Wl.js} +7 -4
- package/dist/rds-provider-0LUsn9Wl.js.map +1 -0
- package/dist/{version-QOtLxcEo.js → version-BA4rBBLp.js} +2 -2
- package/dist/{version-QOtLxcEo.js.map → version-BA4rBBLp.js.map} +1 -1
- package/package.json +2 -2
- package/dist/asg-provider-I1bFHVsO.js.map +0 -1
- package/dist/deploy-engine-DZO2SOQJ.js.map +0 -1
- package/dist/iam-policy-targets-D94wh05t.js.map +0 -1
- package/dist/iam-role-provider-BWw7I-SZ.js.map +0 -1
- package/dist/neptune-provider-8kjFmR1l.js.map +0 -1
- package/dist/program-CS420Kx9.js.map +0 -1
- package/dist/provider-classes-KsrvwO_r.js.map +0 -1
- package/dist/rds-provider-BqwTQeS-.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
|
|
2
2
|
import { A as isNameGeneration, B as SECRET_REF_MAX_CODE_POINTS, D as getCurrentStackInstanceId, E as getCurrentSkipPrefix, F as withSkipPrefix, G as displayAwsMessage, H as UNRENDERABLE, I as withStackScope, J as displayStackName, K as displayIdent, L as withStackScopeBeforeStateRead, N as stackInstanceNameSuffix, O as getCurrentStackName, P as withNameGeneration, Q as safeMsg, R as withoutGeneratedFallbackName, S as fallbackNamePropertyFor, T as generatedNameFor, U as asIsMessage, V as STACK_REF_MAX_CODE_POINTS, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify$1, c as isStdoutReservedForPayload, et as terminalSafe, f as currentLogLineMasker, j as looksLikeCdkdGeneratedName, m as getLiveRenderer, n as describeAwsFailure, p as installLogLineMaskerSource, q as displaySafe, s as getLogger, t as VERBOSE_POINTER, tt as truncateCodePoints, v as applyDefaultNameForFallback, w as generateResourceNameWithFallback, x as explicitNamePropertyFor, y as currentNameGeneration, z as SAFE_MSG_ALTERED_CHAR } from "./aws-failure-text-NSBdKPYK.js";
|
|
3
|
-
import { $n as
|
|
3
|
+
import { $ as observeThenDisableProtection, $n as shellBoundedDisplay, $t as recoveryCommandFlags, A as RESOURCE_NOT_FOUND, An as ProvisioningError, Ar as wrapMaskedAwsError, At as isSecretDerivedValue, B as refusalTypeShown, Bn as normalizeAwsError, Bt as isAuxiliaryFailure, Cr as isTransientServerError, Ct as logicalIdShown, Dn as MalformedProducerRecordRefusalError, Dr as isThrottlingError, Dt as stateOrphanRecordRemedy, En as MacroExpansionError, Er as isMarkedNonRetryable, Et as segmentAfterAnchor, Fn as StateError, Ft as carryCreatedBeforeFailure, G as compensateProtectionFlip, Gn as UNSHOWABLE_VALUE, Gt as replayMadeAnotherResource, H as resolveExplicitPhysicalId, Ht as markAuxiliaryFailure, In as SynthesisError, Jn as isInertUnquoted, Kn as commandHole, Kt as UNREPRODUCIBLE_LOCK_CLAUSE, L as isQuotableImportValue, Lt as createdBeforeFailure, M as markNotGone, Mn as ResourceUpdateNotSupportedError, Mt as maskerOrIdentity, N as assertRegionMatch, Nt as withDerivedNameMasks, Or as markNonRetryable, Ot as createMaskedLogSinks, Pt as RETRY_AUXILIARY_OWNER, Qn as quotedOrDescribed, Qt as formatLockOwner, R as normalizeAwsTagsToCfn, Rt as createdResourceIdentityBeforeFailure, Sn as IntrinsicResolutionRefusalError, Sr as isRetryableTransientError, Tn as LockError, Tt as resourceTypeShown, Un as SHELL_ACTIVE, Ut as markCreatedBeforeFailure, Vt as isAuxiliaryMarkOf, W as ProtectionFlipRegistry, Wn as SHELL_ACTIVE_WHY, Xn as physicalIdShownBesideCommand, Xt as formatLockExpiry, Yn as pasteableCommand, Z as isTerminalDeleteFailure, Zn as plainOrDescribed, Zt as formatLockOperation, _ as removalWarning, _n as CrossAccountSecretRefusalError, _r as formatRetryClassificationSignals, _t as isInterruptedWaitError, a as retractCreatedResource, ar as hasReplayMayCollide, at as DELETION_PROTECTION_DOC_POINTER, bn as DeploymentNotApprovedError, cn as withPasteableAwsProfile, cr as isRecreateRetryableError, dn as clientDefaultsFor, dr as markReplayMayCollide, en as sanitizeRecoveryValue, er as shellQuote, et as protectionFlipKey, fn as credentialFingerprint, fr as relayedNameCollision, ft as ElapsedBudgetRegistry, g as prepareRemovalForUpdate, hn as CdkdError, i as reportCreatedResource, ir as isUpdateUnsupportedError, j as isMarkedNotGone, jn as ResourceTimeoutError, jt as maskDeep, k as withoutServerErrorRetries, kr as markRedactedCause, kt as createMaskedRetryLogger, l as holdsSecretDerivedEntry, ln as ambientClientDefaults, lr as isReplayedNameCollisionFrom, lt as pasteableAwsCommand, m as withUnchangedSecretPrincipalLists, mn as AssetError, mr as stripControlChars, n as clearCreatedReport, nn as DEFAULT_STATE_PREFIX, nt as runDeleteAttempt, on as producerRecordKey, or as isNameCollisionErrorFrom, pn as AccountIdUnavailableError, pr as escapeRegExp$3, pt as monotonicNowMs, q as deleteWithProtectionCompensation, qt as buildForceUnlockCommand, r as collectCreatedResources, rn as injectiveKey, sr as isNameCooldownError, t as CreatedResourceSink, tn as CUSTOM_RESOURCE_RESPONSE_PREFIX, tr as withheldTargetClause, un as ambientCredentialConfig, ut as protectedReplacementAdvice, vn as DependencyError, vr as isAmbiguousCcHandlerErrorCode, vt as startInterruptWatch, wr as retryClassificationText, xn as DynamicReferenceRegionAmbiguousError, xr as isIamPropagationError, xt as compositeIdSeparatorRefusal, y as withoutInjectedRemovals, yr as isAmbiguousOutcomeError, yt as canonicalizeRoute53QueryName, z as quotedRemedyLogicalId, zn as isSoftAbort, zt as hasCreatedBeforeFailure } from "./created-resource-sink-DlzoIY-1.js";
|
|
4
4
|
import { a as setAssumedRoleCredentials, c as ambientRegion, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as quietS3Logger, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-BX9Y_fKp.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-BA4rBBLp.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -4987,7 +4987,8 @@ const STATE_SCHEMA_VERSIONS_READABLE = [
|
|
|
4987
4987
|
11,
|
|
4988
4988
|
12,
|
|
4989
4989
|
13,
|
|
4990
|
-
14
|
|
4990
|
+
14,
|
|
4991
|
+
15
|
|
4991
4992
|
];
|
|
4992
4993
|
function hasUnverifiableParameterRefusal(record) {
|
|
4993
4994
|
return record?.observedBaselineRefused === true && record.observedBaselineRefusalReason === "unverifiable-parameter";
|
|
@@ -6047,7 +6048,7 @@ var S3StateBackend = class S3StateBackend {
|
|
|
6047
6048
|
const body = {
|
|
6048
6049
|
...state,
|
|
6049
6050
|
...stackInstanceIdCarriedFrom(state),
|
|
6050
|
-
version:
|
|
6051
|
+
version: 15,
|
|
6051
6052
|
stackName,
|
|
6052
6053
|
region
|
|
6053
6054
|
};
|
|
@@ -10278,6 +10279,11 @@ function scrubResourceRecord(record, secrets, sourceProperties, observedProvenan
|
|
|
10278
10279
|
secrets
|
|
10279
10280
|
});
|
|
10280
10281
|
}
|
|
10282
|
+
const attemptedItems = record.unsettledItems;
|
|
10283
|
+
if (typeof attemptedItems === "object" && attemptedItems !== null && !Array.isArray(attemptedItems)) next.unsettledItems = redactForState(attemptedItems, {
|
|
10284
|
+
provenance: "value-scan",
|
|
10285
|
+
secrets
|
|
10286
|
+
});
|
|
10281
10287
|
if (record.observedProperties) next.observedProperties = redactAtProvenance(record.observedProperties, secrets, sourceProperties ?? next.properties, observedProvenance ?? (sourceProperties !== void 0 ? "template-sourced" : secrets.size === 0 && observedClaimed ? "state-baseline" : "state-readback"), observedClaimed);
|
|
10282
10288
|
return next;
|
|
10283
10289
|
}
|
|
@@ -15233,6 +15239,7 @@ const STATEFUL_TYPES = /* @__PURE__ */ new Set([
|
|
|
15233
15239
|
"AWS::MemoryDB::Snapshot",
|
|
15234
15240
|
"AWS::Redshift::Snapshot",
|
|
15235
15241
|
"AWS::Timestream::InfluxDBBackup",
|
|
15242
|
+
"AWS::EC2::Snapshot",
|
|
15236
15243
|
"AWS::StorageGateway::Volume",
|
|
15237
15244
|
"AWS::FSx::FileCache",
|
|
15238
15245
|
"AWS::DirectoryService::MicrosoftAD",
|
|
@@ -16283,21 +16290,20 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16283
16290
|
"AgentRuntimeArtifact",
|
|
16284
16291
|
"AgentRuntimeName",
|
|
16285
16292
|
"AuthorizerConfiguration",
|
|
16293
|
+
"CapacityProviderConfiguration",
|
|
16286
16294
|
"ClientToken",
|
|
16287
16295
|
"Description",
|
|
16288
16296
|
"EnvironmentVariables",
|
|
16297
|
+
"FilesystemConfigurations",
|
|
16289
16298
|
"LifecycleConfiguration",
|
|
16290
16299
|
"NetworkConfiguration",
|
|
16300
|
+
"PlatformVersion",
|
|
16291
16301
|
"ProtocolConfiguration",
|
|
16292
|
-
"
|
|
16293
|
-
|
|
16294
|
-
|
|
16295
|
-
["CapacityProviderConfiguration", "not yet implemented by cdkd"],
|
|
16296
|
-
["FilesystemConfigurations", "not yet implemented by cdkd"],
|
|
16297
|
-
["PlatformVersion", "not yet implemented by cdkd"],
|
|
16298
|
-
["RequestHeaderConfiguration", "not yet implemented by cdkd"],
|
|
16299
|
-
["Tags", "not yet implemented by cdkd"]
|
|
16302
|
+
"RequestHeaderConfiguration",
|
|
16303
|
+
"RoleArn",
|
|
16304
|
+
"Tags"
|
|
16300
16305
|
]),
|
|
16306
|
+
silentDrop: /* @__PURE__ */ new Map(),
|
|
16301
16307
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
16302
16308
|
readOnly: /* @__PURE__ */ new Set([
|
|
16303
16309
|
"AgentRuntimeArn",
|
|
@@ -16424,6 +16430,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16424
16430
|
}],
|
|
16425
16431
|
["AWS::CloudWatch::Alarm", {
|
|
16426
16432
|
handled: /* @__PURE__ */ new Set([
|
|
16433
|
+
"ActionConfiguration",
|
|
16427
16434
|
"ActionsEnabled",
|
|
16428
16435
|
"AlarmActions",
|
|
16429
16436
|
"AlarmDescription",
|
|
@@ -16432,7 +16439,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16432
16439
|
"DatapointsToAlarm",
|
|
16433
16440
|
"Dimensions",
|
|
16434
16441
|
"EvaluateLowSampleCountPercentile",
|
|
16442
|
+
"EvaluationCriteria",
|
|
16443
|
+
"EvaluationInterval",
|
|
16435
16444
|
"EvaluationPeriods",
|
|
16445
|
+
"EvaluationWindow",
|
|
16436
16446
|
"ExtendedStatistic",
|
|
16437
16447
|
"InsufficientDataActions",
|
|
16438
16448
|
"MetricName",
|
|
@@ -16445,15 +16455,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16445
16455
|
"Threshold",
|
|
16446
16456
|
"ThresholdMetricId",
|
|
16447
16457
|
"TreatMissingData",
|
|
16448
|
-
"Unit"
|
|
16449
|
-
|
|
16450
|
-
silentDrop: /* @__PURE__ */ new Map([
|
|
16451
|
-
["ActionConfiguration", "not yet implemented by cdkd"],
|
|
16452
|
-
["EvaluationCriteria", "Absent from both the SDK PutMetricAlarm input and the aws-cdk-lib CfnAlarm L1 (a newer CFn-schema-only property ahead of SDK/CDK support); no wire path to forward it and no CDK app can emit it."],
|
|
16453
|
-
["EvaluationInterval", "Absent from both the SDK PutMetricAlarm input and the aws-cdk-lib CfnAlarm L1 (a newer CFn-schema-only property ahead of SDK/CDK support); no wire path to forward it and no CDK app can emit it."],
|
|
16454
|
-
["EvaluationWindow", "not yet implemented by cdkd"],
|
|
16455
|
-
["WarmUpConfiguration", "not yet implemented by cdkd"]
|
|
16458
|
+
"Unit",
|
|
16459
|
+
"WarmUpConfiguration"
|
|
16456
16460
|
]),
|
|
16461
|
+
silentDrop: /* @__PURE__ */ new Map(),
|
|
16457
16462
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
16458
16463
|
readOnly: /* @__PURE__ */ new Set(["Arn"]),
|
|
16459
16464
|
ccRouteUnavailable: false
|
|
@@ -17995,7 +18000,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
17995
18000
|
"RetentionInDays",
|
|
17996
18001
|
"Tags"
|
|
17997
18002
|
]),
|
|
17998
|
-
silentDrop: /* @__PURE__ */ new Map([["ResourcePolicyDocument", "
|
|
18003
|
+
silentDrop: /* @__PURE__ */ new Map([["ResourcePolicyDocument", "not driven by this provider by decision (issue #1412): no CreateLogGroup / PutRetentionPolicy member carries it, and both policy lifecycles — the account-scoped AWS::Logs::ResourcePolicy type and the log-group-scoped logs:PutResourcePolicy (resourceArn + policyScope RESOURCE) — are ones this provider does not take on — routed via Cloud Control, whose handler applies it"]]),
|
|
17999
18004
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
18000
18005
|
readOnly: /* @__PURE__ */ new Set(["Arn"]),
|
|
18001
18006
|
ccRouteUnavailable: false
|
|
@@ -18479,17 +18484,16 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18479
18484
|
}],
|
|
18480
18485
|
["AWS::S3Express::DirectoryBucket", {
|
|
18481
18486
|
handled: /* @__PURE__ */ new Set([
|
|
18487
|
+
"BucketEncryption",
|
|
18482
18488
|
"BucketName",
|
|
18483
18489
|
"DataRedundancy",
|
|
18490
|
+
"InventoryConfigurations",
|
|
18491
|
+
"LifecycleConfiguration",
|
|
18484
18492
|
"LocationName",
|
|
18493
|
+
"MetricsConfigurations",
|
|
18485
18494
|
"Tags"
|
|
18486
18495
|
]),
|
|
18487
|
-
silentDrop: /* @__PURE__ */ new Map(
|
|
18488
|
-
["BucketEncryption", "not yet implemented by cdkd"],
|
|
18489
|
-
["InventoryConfigurations", "not yet implemented by cdkd"],
|
|
18490
|
-
["LifecycleConfiguration", "not yet implemented by cdkd"],
|
|
18491
|
-
["MetricsConfigurations", "not yet implemented by cdkd"]
|
|
18492
|
-
]),
|
|
18496
|
+
silentDrop: /* @__PURE__ */ new Map(),
|
|
18493
18497
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
18494
18498
|
readOnly: /* @__PURE__ */ new Set(["Arn", "AvailabilityZoneName"]),
|
|
18495
18499
|
ccRouteUnavailable: false
|
|
@@ -18770,25 +18774,24 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18770
18774
|
}],
|
|
18771
18775
|
["AWS::WAFv2::WebACL", {
|
|
18772
18776
|
handled: /* @__PURE__ */ new Set([
|
|
18777
|
+
"ApplicationConfig",
|
|
18773
18778
|
"AssociationConfig",
|
|
18774
18779
|
"CaptchaConfig",
|
|
18775
18780
|
"ChallengeConfig",
|
|
18776
18781
|
"CustomResponseBodies",
|
|
18782
|
+
"DataProtectionConfig",
|
|
18777
18783
|
"DefaultAction",
|
|
18778
18784
|
"Description",
|
|
18785
|
+
"MonetizationConfig",
|
|
18779
18786
|
"Name",
|
|
18787
|
+
"OnSourceDDoSProtectionConfig",
|
|
18780
18788
|
"Rules",
|
|
18781
18789
|
"Scope",
|
|
18782
18790
|
"Tags",
|
|
18783
18791
|
"TokenDomains",
|
|
18784
18792
|
"VisibilityConfig"
|
|
18785
18793
|
]),
|
|
18786
|
-
silentDrop: /* @__PURE__ */ new Map(
|
|
18787
|
-
["ApplicationConfig", "not yet implemented by cdkd"],
|
|
18788
|
-
["DataProtectionConfig", "not yet implemented by cdkd"],
|
|
18789
|
-
["MonetizationConfig", "not yet implemented by cdkd"],
|
|
18790
|
-
["OnSourceDDoSProtectionConfig", "not yet implemented by cdkd"]
|
|
18791
|
-
]),
|
|
18794
|
+
silentDrop: /* @__PURE__ */ new Map(),
|
|
18792
18795
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
18793
18796
|
readOnly: /* @__PURE__ */ new Set([
|
|
18794
18797
|
"Arn",
|
|
@@ -26006,14 +26009,80 @@ function withUnsettledProperties(record, names) {
|
|
|
26006
26009
|
};
|
|
26007
26010
|
}
|
|
26008
26011
|
function withoutUnsettledProperties(record) {
|
|
26009
|
-
if (!Object.hasOwn(record, "unsettledProperties")) return record;
|
|
26010
|
-
const { unsettledProperties: _cleared, ...rest } = record;
|
|
26012
|
+
if (!Object.hasOwn(record, "unsettledProperties") && !Object.hasOwn(record, "unsettledItems")) return record;
|
|
26013
|
+
const { unsettledProperties: _cleared, unsettledItems: _items, ...rest } = record;
|
|
26011
26014
|
return rest;
|
|
26012
26015
|
}
|
|
26016
|
+
const UNSETTLED_ITEMS_PER_PATH_CAP = 100;
|
|
26017
|
+
const UNSETTLED_ITEM_LENGTH_CAP = 255;
|
|
26018
|
+
function unsettledItemsTopKey(path) {
|
|
26019
|
+
const cut = path.search(/[.[]/);
|
|
26020
|
+
return cut === -1 ? path : path.slice(0, cut);
|
|
26021
|
+
}
|
|
26022
|
+
function unsettledItemsOf(record) {
|
|
26023
|
+
const out = /* @__PURE__ */ new Map();
|
|
26024
|
+
if (record === null || typeof record !== "object") return out;
|
|
26025
|
+
const value = record.unsettledItems;
|
|
26026
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return out;
|
|
26027
|
+
const unsettled = unsettledPropertiesOf(record);
|
|
26028
|
+
for (const [path, entries] of Object.entries(value)) {
|
|
26029
|
+
if (!unsettled.has(unsettledItemsTopKey(path))) continue;
|
|
26030
|
+
if (!Array.isArray(entries) || entries.length > 100) continue;
|
|
26031
|
+
const names = entries.filter((entry) => typeof entry === "string" && entry !== "" && entry.length <= 255);
|
|
26032
|
+
if (names.length > 0) out.set(path, new Set(names));
|
|
26033
|
+
}
|
|
26034
|
+
return out;
|
|
26035
|
+
}
|
|
26036
|
+
function isUsableAttemptedName(name) {
|
|
26037
|
+
return !name.includes("{{resolve:") && !name.includes("***");
|
|
26038
|
+
}
|
|
26039
|
+
function withUnsettledItems(record, items) {
|
|
26040
|
+
const merged = /* @__PURE__ */ new Map();
|
|
26041
|
+
for (const [path, names] of unsettledItemsOf(record)) merged.set(path, new Set(names));
|
|
26042
|
+
const unsettled = unsettledPropertiesOf(record);
|
|
26043
|
+
let added = false;
|
|
26044
|
+
for (const [path, names] of items) {
|
|
26045
|
+
if (!unsettled.has(unsettledItemsTopKey(path))) continue;
|
|
26046
|
+
const set = merged.get(path) ?? /* @__PURE__ */ new Set();
|
|
26047
|
+
for (const name of names) {
|
|
26048
|
+
if (typeof name !== "string" || name === "" || name.length > 255) continue;
|
|
26049
|
+
if (!set.has(name)) {
|
|
26050
|
+
set.add(name);
|
|
26051
|
+
added = true;
|
|
26052
|
+
}
|
|
26053
|
+
}
|
|
26054
|
+
if (set.size > 0) merged.set(path, set);
|
|
26055
|
+
}
|
|
26056
|
+
if (!added) return record;
|
|
26057
|
+
const field = {};
|
|
26058
|
+
for (const [path, set] of [...merged].sort(([a], [b]) => a.localeCompare(b))) if (set.size <= 100) field[path] = [...set].sort();
|
|
26059
|
+
return {
|
|
26060
|
+
...record,
|
|
26061
|
+
unsettledItems: field
|
|
26062
|
+
};
|
|
26063
|
+
}
|
|
26064
|
+
function unsettledItemsField(source, keys) {
|
|
26065
|
+
const allowed = new Set(keys);
|
|
26066
|
+
const field = {};
|
|
26067
|
+
for (const [path, names] of unsettledItemsOf(source)) if (allowed.has(unsettledItemsTopKey(path))) field[path] = [...names].sort();
|
|
26068
|
+
return Object.keys(field).length > 0 ? { unsettledItems: field } : {};
|
|
26069
|
+
}
|
|
26013
26070
|
function unsettledContextOf(...records) {
|
|
26014
26071
|
const names = /* @__PURE__ */ new Set();
|
|
26015
|
-
|
|
26016
|
-
|
|
26072
|
+
const items = /* @__PURE__ */ new Map();
|
|
26073
|
+
for (const record of records) {
|
|
26074
|
+
for (const name of unsettledPropertiesOf(record)) names.add(name);
|
|
26075
|
+
for (const [path, set] of unsettledItemsOf(record)) {
|
|
26076
|
+
const merged = items.get(path) ?? /* @__PURE__ */ new Set();
|
|
26077
|
+
for (const name of set) merged.add(name);
|
|
26078
|
+
items.set(path, merged);
|
|
26079
|
+
}
|
|
26080
|
+
}
|
|
26081
|
+
if (names.size === 0) return {};
|
|
26082
|
+
return {
|
|
26083
|
+
unsettledProperties: names,
|
|
26084
|
+
...items.size > 0 && { unsettledItems: items }
|
|
26085
|
+
};
|
|
26017
26086
|
}
|
|
26018
26087
|
|
|
26019
26088
|
//#endregion
|
|
@@ -28671,7 +28740,7 @@ var CloudControlProvider = class {
|
|
|
28671
28740
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
28672
28741
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
28673
28742
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
28674
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
28743
|
+
const { ASGProvider } = await import("./asg-provider-CIg_guZ-.js");
|
|
28675
28744
|
const delegateRegion = ambientRegion();
|
|
28676
28745
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
28677
28746
|
if (asgProvider === void 0) {
|
|
@@ -28780,7 +28849,7 @@ var CloudControlProvider = class {
|
|
|
28780
28849
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
28781
28850
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
28782
28851
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
28783
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
28852
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-0LUsn9Wl.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-D9ac71Ca.js"))).NeptuneProvider({ region: ccRegion });
|
|
28784
28853
|
this.sdkDeleteDelegates.set(family, {
|
|
28785
28854
|
region: ccRegion,
|
|
28786
28855
|
provider
|
|
@@ -35758,7 +35827,50 @@ function noEchoAttributeNamesFor(run, logicalId, record, carried, leaves) {
|
|
|
35758
35827
|
if (declared === void 0 && prior === void 0 && !echoed) return void 0;
|
|
35759
35828
|
return [...names].sort();
|
|
35760
35829
|
}
|
|
35830
|
+
function withNoEchoItemsMasked(run, deps, logicalId, record) {
|
|
35831
|
+
const items = record.unsettledItems;
|
|
35832
|
+
if (typeof items !== "object" || items === null || Array.isArray(items)) return record;
|
|
35833
|
+
const secrets = deps.perResourceSecrets().get(logicalId);
|
|
35834
|
+
const plaintexts = secrets === void 0 ? [] : noEchoParameterPlaintextsOf(secrets).filter((plaintext) => plaintext !== "");
|
|
35835
|
+
const positioned = /* @__PURE__ */ new Set();
|
|
35836
|
+
for (const json of run.noEchoPositionedValues.get(logicalId) ?? []) {
|
|
35837
|
+
let value;
|
|
35838
|
+
try {
|
|
35839
|
+
value = JSON.parse(json);
|
|
35840
|
+
} catch {
|
|
35841
|
+
continue;
|
|
35842
|
+
}
|
|
35843
|
+
if (typeof value === "string" && value !== "") positioned.add(value);
|
|
35844
|
+
}
|
|
35845
|
+
if (plaintexts.length === 0 && positioned.size === 0) return record;
|
|
35846
|
+
return withAttemptedItemsMasked(record, [...positioned, ...plaintexts]);
|
|
35847
|
+
}
|
|
35848
|
+
function withAttemptedItemsMasked(record, needles) {
|
|
35849
|
+
const items = record.unsettledItems;
|
|
35850
|
+
if (typeof items !== "object" || items === null || Array.isArray(items)) return record;
|
|
35851
|
+
const usable = needles.filter((needle) => needle !== "" && needle !== "***");
|
|
35852
|
+
if (usable.length === 0) return record;
|
|
35853
|
+
let changed = false;
|
|
35854
|
+
const masked = {};
|
|
35855
|
+
for (const [path, entries] of Object.entries(items)) {
|
|
35856
|
+
if (!Array.isArray(entries)) {
|
|
35857
|
+
masked[path] = entries;
|
|
35858
|
+
continue;
|
|
35859
|
+
}
|
|
35860
|
+
masked[path] = [...new Set(entries.map((entry) => {
|
|
35861
|
+
if (typeof entry !== "string") return entry;
|
|
35862
|
+
const served = usable.some((needle) => entry.includes(needle));
|
|
35863
|
+
if (served) changed = true;
|
|
35864
|
+
return served ? "***" : entry;
|
|
35865
|
+
}))];
|
|
35866
|
+
}
|
|
35867
|
+
return changed ? {
|
|
35868
|
+
...record,
|
|
35869
|
+
unsettledItems: masked
|
|
35870
|
+
} : record;
|
|
35871
|
+
}
|
|
35761
35872
|
function applyNoEchoPersist(run, deps, logicalId, record, scrubbed, templateProps, resources, secrets, carried = false) {
|
|
35873
|
+
scrubbed = withNoEchoItemsMasked(run, deps, logicalId, scrubbed);
|
|
35762
35874
|
const sources = noEchoPositionSources(run, resources);
|
|
35763
35875
|
if (sources === void 0) return scrubbed;
|
|
35764
35876
|
const leaves = noEchoLeavesFor(run, deps, logicalId, record, templateProps, sources);
|
|
@@ -37258,6 +37370,10 @@ function maskingRetryLogger(logger, secrets) {
|
|
|
37258
37370
|
//#region src/deployment/deploy-engine/options.ts
|
|
37259
37371
|
const DEFAULT_RESOURCE_WARN_AFTER_MS = 3e5;
|
|
37260
37372
|
const DEFAULT_RESOURCE_TIMEOUT_MS = 18e5;
|
|
37373
|
+
const DEFAULT_UNSETTLED_REVERT_WAIT = {
|
|
37374
|
+
timeoutMs: DEFAULT_RESOURCE_TIMEOUT_MS,
|
|
37375
|
+
pollMs: 1e4
|
|
37376
|
+
};
|
|
37261
37377
|
|
|
37262
37378
|
//#endregion
|
|
37263
37379
|
//#region src/analyzer/skipped-outputs.ts
|
|
@@ -39533,7 +39649,7 @@ const MERGE_SEMANTICS_KEYS = /* @__PURE__ */ new Set(["Tags"]);
|
|
|
39533
39649
|
async function readLive(args, names) {
|
|
39534
39650
|
const { provider, physicalId, logicalId, resourceType, recordedProperties } = args;
|
|
39535
39651
|
let live;
|
|
39536
|
-
if (provider.readUnsettled !== void 0) live = await provider.readUnsettled(physicalId, logicalId, resourceType, names, recordedProperties, args.desired);
|
|
39652
|
+
if (provider.readUnsettled !== void 0) live = await provider.readUnsettled(physicalId, logicalId, resourceType, names, recordedProperties, args.desired, args.attemptedItems);
|
|
39537
39653
|
else if (provider.readCurrentState !== void 0) live = await provider.readCurrentState(physicalId, logicalId, resourceType, recordedProperties);
|
|
39538
39654
|
else return;
|
|
39539
39655
|
if (typeof live !== "object" || live === null || Array.isArray(live)) return "unreadable";
|
|
@@ -39551,23 +39667,55 @@ async function settleUnsettledPrevious(args) {
|
|
|
39551
39667
|
if (moving.size > 0) throw refusal(args, moving, "AWS is still changing it or cdkd could not confirm it settled");
|
|
39552
39668
|
}
|
|
39553
39669
|
const substituted = new Set([...names].filter((name) => !MERGE_SEMANTICS_KEYS.has(name)));
|
|
39554
|
-
|
|
39670
|
+
const attemptedTags = [...args.attemptedItems?.get("Tags") ?? []].filter(isUsableAttemptedName);
|
|
39671
|
+
const mergeNeedsLive = names.has("Tags") && attemptedTags.length > 0;
|
|
39672
|
+
if (substituted.size === 0 && !mergeNeedsLive) return previous;
|
|
39555
39673
|
let live;
|
|
39556
39674
|
try {
|
|
39557
|
-
live = await readLive(args, substituted);
|
|
39675
|
+
live = await readLive(args, substituted.size > 0 ? substituted : /* @__PURE__ */ new Set(["Tags"]));
|
|
39558
39676
|
} catch (error) {
|
|
39677
|
+
if (substituted.size === 0) return previous;
|
|
39559
39678
|
if (error instanceof ProvisioningError) throw error;
|
|
39560
39679
|
const wrapped = refusal(args, substituted, "the resource could not be read to converge it");
|
|
39561
39680
|
if (error instanceof Error) wrapped.cause = error;
|
|
39562
39681
|
throw wrapped;
|
|
39563
39682
|
}
|
|
39564
39683
|
if (live === void 0) return previous;
|
|
39565
|
-
if (live === "unreadable")
|
|
39684
|
+
if (live === "unreadable") {
|
|
39685
|
+
if (substituted.size === 0) return previous;
|
|
39686
|
+
throw refusal(args, substituted, "the resource could not be read to converge it");
|
|
39687
|
+
}
|
|
39566
39688
|
const out = { ...previous };
|
|
39567
39689
|
for (const name of substituted) if (Object.hasOwn(live, name) && live[name] !== void 0) out[name] = live[name];
|
|
39568
39690
|
else delete out[name];
|
|
39691
|
+
if (mergeNeedsLive) {
|
|
39692
|
+
const withAttempted = withAttemptedTags(out["Tags"], live["Tags"], args.desired?.["Tags"], attemptedTags);
|
|
39693
|
+
if (withAttempted !== void 0) out["Tags"] = withAttempted;
|
|
39694
|
+
}
|
|
39569
39695
|
return out;
|
|
39570
39696
|
}
|
|
39697
|
+
function withAttemptedTags(recorded, live, desired, attempted) {
|
|
39698
|
+
const keysOf = (value) => {
|
|
39699
|
+
if (value === void 0 || value === null) return /* @__PURE__ */ new Set();
|
|
39700
|
+
if (!Array.isArray(value)) return void 0;
|
|
39701
|
+
const keys = /* @__PURE__ */ new Set();
|
|
39702
|
+
for (const entry of value) {
|
|
39703
|
+
const key = entry?.Key;
|
|
39704
|
+
if (typeof key !== "string") return void 0;
|
|
39705
|
+
keys.add(key);
|
|
39706
|
+
}
|
|
39707
|
+
return keys;
|
|
39708
|
+
};
|
|
39709
|
+
const recordedKeys = keysOf(recorded);
|
|
39710
|
+
const desiredKeys = keysOf(desired);
|
|
39711
|
+
if (recordedKeys === void 0 || desiredKeys === void 0 || !Array.isArray(live)) return void 0;
|
|
39712
|
+
const removable = live.filter((entry) => {
|
|
39713
|
+
const key = entry?.Key;
|
|
39714
|
+
return typeof key === "string" && attempted.includes(key) && !recordedKeys.has(key) && !desiredKeys.has(key);
|
|
39715
|
+
});
|
|
39716
|
+
if (removable.length === 0) return void 0;
|
|
39717
|
+
return [...recorded ?? [], ...removable];
|
|
39718
|
+
}
|
|
39571
39719
|
function tagsHeld(desired, live) {
|
|
39572
39720
|
const asMap = (value) => {
|
|
39573
39721
|
if (value === void 0 || value === null) return /* @__PURE__ */ new Map();
|
|
@@ -39624,7 +39772,42 @@ async function withUnprovenUnsettled(record, args, warn) {
|
|
|
39624
39772
|
const kept = await unsettledAfterUpdate(args);
|
|
39625
39773
|
if (kept.length === 0) return record;
|
|
39626
39774
|
warn(safeMsg`${args.logicalId} (${args.resourceType}): the update succeeded, but AWS does not yet show the requested ${kept.join(", ")}; cdkd keeps ${kept.length === 1 ? "it" : "them"} unsettled and converges again on the next deploy.`);
|
|
39627
|
-
|
|
39775
|
+
const withNames = withUnsettledProperties(record, kept);
|
|
39776
|
+
return withUnsettledItems(withNames, args.attemptedItems ?? /* @__PURE__ */ new Map());
|
|
39777
|
+
}
|
|
39778
|
+
async function waitForUnsettledSettled(args) {
|
|
39779
|
+
const { provider, names } = args;
|
|
39780
|
+
const deadline = Date.now() + args.timeoutMs;
|
|
39781
|
+
if (args.running !== void 0) {
|
|
39782
|
+
let returned = false;
|
|
39783
|
+
const done = args.running.then(() => {
|
|
39784
|
+
returned = true;
|
|
39785
|
+
}, () => {
|
|
39786
|
+
returned = true;
|
|
39787
|
+
});
|
|
39788
|
+
while (!returned) {
|
|
39789
|
+
if (args.isInterrupted()) return "interrupted";
|
|
39790
|
+
const left = deadline - Date.now();
|
|
39791
|
+
if (left <= 0) return "moving";
|
|
39792
|
+
await Promise.race([done, new Promise((resolve) => setTimeout(resolve, Math.min(250, left)))]);
|
|
39793
|
+
}
|
|
39794
|
+
}
|
|
39795
|
+
if (provider.unsettledInTransition === void 0 || names.size === 0) return "settled";
|
|
39796
|
+
for (;;) {
|
|
39797
|
+
if (args.isInterrupted()) return "interrupted";
|
|
39798
|
+
let moving = true;
|
|
39799
|
+
try {
|
|
39800
|
+
moving = (await provider.unsettledInTransition(args.physicalId, args.logicalId, args.resourceType, names, args.recordedProperties)).size > 0;
|
|
39801
|
+
} catch {}
|
|
39802
|
+
if (!moving) return "settled";
|
|
39803
|
+
const left = deadline - Date.now();
|
|
39804
|
+
if (left <= 0) return "moving";
|
|
39805
|
+
const until = Date.now() + Math.min(args.pollMs, left);
|
|
39806
|
+
while (Date.now() < until) {
|
|
39807
|
+
if (args.isInterrupted()) return "interrupted";
|
|
39808
|
+
await new Promise((resolve) => setTimeout(resolve, Math.min(250, until - Date.now())));
|
|
39809
|
+
}
|
|
39810
|
+
}
|
|
39628
39811
|
}
|
|
39629
39812
|
function splitUnhandledRemovals(unhandled, recordedPrevious, unsettled) {
|
|
39630
39813
|
const addedByFailedUpdate = unhandled.filter((name) => unsettled.has(name) && !Object.hasOwn(recordedPrevious, name));
|
|
@@ -39655,7 +39838,8 @@ async function updateWithRollbackRetry(provider, args, logicalId, logger, isInte
|
|
|
39655
39838
|
recordedProperties: recordedPrevious,
|
|
39656
39839
|
names: context?.unsettledProperties ?? /* @__PURE__ */ new Set(),
|
|
39657
39840
|
previous: recordedPrevious,
|
|
39658
|
-
desired
|
|
39841
|
+
desired,
|
|
39842
|
+
...context?.unsettledItems !== void 0 && { attemptedItems: context.unsettledItems }
|
|
39659
39843
|
});
|
|
39660
39844
|
const removal = prepareRemovalForUpdate(provider, resourceType, desired, previous);
|
|
39661
39845
|
const revertArgs = [
|
|
@@ -40012,7 +40196,8 @@ async function replayRevert(s) {
|
|
|
40012
40196
|
resourceType: op.resourceType,
|
|
40013
40197
|
recordedProperties: current.properties ?? {},
|
|
40014
40198
|
names: unsettledContextOf(current, previousState).unsettledProperties ?? /* @__PURE__ */ new Set(),
|
|
40015
|
-
desired: desiredProps ?? {}
|
|
40199
|
+
desired: desiredProps ?? {},
|
|
40200
|
+
...unsettledContextOf(current, previousState).unsettledItems !== void 0 && { attemptedItems: unsettledContextOf(current, previousState).unsettledItems }
|
|
40016
40201
|
}, (message) => logger.warn(mask(message)));
|
|
40017
40202
|
if (updatePartialReason(revertResult) === void 0) inlinePolicyWriters.record(op.logicalId, "update", stateResources[op.logicalId], !deepEqual$2(previousState.properties?.["Policies"], current.properties?.["Policies"]), revertVia);
|
|
40018
40203
|
const rollbackPartial = updatePartialReason(revertResult);
|
|
@@ -40674,6 +40859,12 @@ async function replaySingle(op, stateResources, stackName, ctx, resolver, orphan
|
|
|
40674
40859
|
function ownRecord(stateResources, logicalId) {
|
|
40675
40860
|
return Object.hasOwn(stateResources, logicalId) ? stateResources[logicalId] : void 0;
|
|
40676
40861
|
}
|
|
40862
|
+
function withKeysFrom(bag, source, keys) {
|
|
40863
|
+
const out = { ...bag };
|
|
40864
|
+
for (const key of keys) if (source !== void 0 && Object.hasOwn(source, key)) out[key] = source[key];
|
|
40865
|
+
else delete out[key];
|
|
40866
|
+
return out;
|
|
40867
|
+
}
|
|
40677
40868
|
async function replayFailedOperationsUnbound(failedOps, stateResources, stackName, ctx, options = {}) {
|
|
40678
40869
|
const inlinePolicyWriters = options.inlinePolicyWriters ?? new RollbackInlinePolicyWriters();
|
|
40679
40870
|
const result = {
|
|
@@ -40906,7 +41097,14 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
40906
41097
|
skipUnaddressableReplay(skipScope, logger, op, "force-revert failed UPDATE of");
|
|
40907
41098
|
break;
|
|
40908
41099
|
}
|
|
40909
|
-
|
|
41100
|
+
const own = options.previousFromRecord?.get(op.logicalId);
|
|
41101
|
+
const fromRecord = own !== void 0;
|
|
41102
|
+
const attemptedBag = fromRecord ? void 0 : op.attemptedProperties;
|
|
41103
|
+
const revertUnsettled = fromRecord ? own.names.size === 0 ? {} : {
|
|
41104
|
+
unsettledProperties: own.names,
|
|
41105
|
+
...own.items.size > 0 && { unsettledItems: own.items }
|
|
41106
|
+
} : unsettledContextOf(current, prev);
|
|
41107
|
+
logger.info(!fromRecord ? ` Rollback: force-reverting failed UPDATE of ${safe(op.logicalId)} (${safe(op.resourceType)}) to its pre-deploy properties (--revert-failed; remote state is unknown)` : own.lateSuccess ? ` Rollback: reverting the failed UPDATE of ${safe(op.logicalId)} (${safe(op.resourceType)}), whose call completed after the deploy gave up on it, to its pre-deploy properties` : ` Rollback: reverting what the failed UPDATE of ${safe(op.logicalId)} (${safe(op.resourceType)}) left unsettled (${[...own.names].map(safe).join(", ")}) to its pre-deploy properties`);
|
|
40910
41108
|
const { provider, provisionedBy: revertVia } = ctx.providerRegistry.getProviderFor({
|
|
40911
41109
|
resourceType: op.resourceType,
|
|
40912
41110
|
provisionedBy: op.provisionedBy ?? current.provisionedBy
|
|
@@ -40923,7 +41121,13 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
40923
41121
|
});
|
|
40924
41122
|
const desiredProps = noEcho.desired;
|
|
40925
41123
|
refuseMaskedReplayBaseline(desiredProps, op.logicalId, noEcho.inert);
|
|
40926
|
-
const
|
|
41124
|
+
const resolvedPrevious = noEcho.onPreviousSide(await resolveReplayProps(attemptedBag ?? current.properties, resolver, secrets, ctx, op.logicalId, attemptedBag === void 0 ? current : void 0));
|
|
41125
|
+
const excludedKeys = own?.lateSuccess === true ? [...unsettledPropertiesOf(prev)] : [];
|
|
41126
|
+
const attemptedProps = excludedKeys.length === 0 || resolvedPrevious === void 0 ? resolvedPrevious : withKeysFrom(resolvedPrevious, desiredProps, excludedKeys);
|
|
41127
|
+
if (excludedKeys.length > 0) {
|
|
41128
|
+
const one = excludedKeys.length === 1;
|
|
41129
|
+
logger.warn(safeMsg` Rollback: ${safe(op.logicalId)} (${safe(op.resourceType)}): ${excludedKeys.map(safe).join(", ")} ${one ? "was" : "were"} left unsettled by an earlier failed deploy, so this revert leaves ${one ? "it" : "them"} as AWS holds ${one ? "it" : "them"}; the next deploy converges ${one ? "it" : "them"}.`);
|
|
41130
|
+
}
|
|
40927
41131
|
recordNestedStackParameterExpressions(secrets, op.resourceType, desiredProps, prev.properties, "state-derived");
|
|
40928
41132
|
opMasker.addNamed({
|
|
40929
41133
|
resourceType: op.resourceType,
|
|
@@ -40957,7 +41161,7 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
40957
41161
|
replayingState: true,
|
|
40958
41162
|
recordedAttributes: current.attributes,
|
|
40959
41163
|
...revertFailedClaimed && { inlinePolicyClaimed: revertFailedClaimed },
|
|
40960
|
-
...
|
|
41164
|
+
...revertUnsettled
|
|
40961
41165
|
}
|
|
40962
41166
|
], op.logicalId, logger, options.isInterrupted, secrets, mask));
|
|
40963
41167
|
if (revertFailedResult) recordNoEchoAttributeValues(revertFailedResult, secrets, desiredProps);
|
|
@@ -40968,10 +41172,12 @@ async function replayFailedOperationsUnbound(failedOps, stateResources, stackNam
|
|
|
40968
41172
|
physicalId: current.physicalId,
|
|
40969
41173
|
resourceType: op.resourceType,
|
|
40970
41174
|
recordedProperties: current.properties ?? {},
|
|
40971
|
-
names:
|
|
40972
|
-
desired: desiredProps ?? {}
|
|
41175
|
+
names: revertUnsettled.unsettledProperties ?? /* @__PURE__ */ new Set(),
|
|
41176
|
+
desired: desiredProps ?? {},
|
|
41177
|
+
...revertUnsettled.unsettledItems !== void 0 && { attemptedItems: revertUnsettled.unsettledItems }
|
|
40973
41178
|
}, (message) => logger.warn(mask(message)));
|
|
40974
|
-
if (
|
|
41179
|
+
if (fromRecord) stateResources[op.logicalId] = withUnsettledItems(withUnsettledProperties(stateResources[op.logicalId], unsettledPropertiesOf(prev)), unsettledItemsOf(prev));
|
|
41180
|
+
if (updatePartialReason(revertFailedResult) === void 0) inlinePolicyWriters.record(op.logicalId, "update", stateResources[op.logicalId], !deepEqual$2(prev.properties?.["Policies"], (attemptedBag ?? current.properties)?.["Policies"]), revertVia);
|
|
40975
41181
|
const revertFailedPartial = updatePartialReason(revertFailedResult);
|
|
40976
41182
|
if (revertFailedPartial !== void 0) logger.warn(mask(` Rollback: ${safe(op.logicalId)} reverted, ${updatePartialMessage(revertFailedPartial)}`));
|
|
40977
41183
|
else logger.info(` Rollback: ${safe(op.logicalId)} reverted successfully`);
|
|
@@ -42885,7 +43091,7 @@ async function revertNestedChildFromJournal(args) {
|
|
|
42885
43091
|
...carried,
|
|
42886
43092
|
...stackInstanceIdCarriedFrom(base),
|
|
42887
43093
|
...supersededAfterRollback(base, supersededHost),
|
|
42888
|
-
version:
|
|
43094
|
+
version: 15,
|
|
42889
43095
|
region,
|
|
42890
43096
|
resources: { ...stateResources },
|
|
42891
43097
|
...orphansAfterRollback(base, mintedOrphans),
|
|
@@ -43652,7 +43858,7 @@ function replayPrintingBag(deps, entries, stateResources) {
|
|
|
43652
43858
|
read
|
|
43653
43859
|
]);
|
|
43654
43860
|
}
|
|
43655
|
-
async function performRollback(deps, completedOperations, stateResources, stackName, previousState, failedOperations = [], priorOrphans = []) {
|
|
43861
|
+
async function performRollback(deps, completedOperations, stateResources, stackName, previousState, failedOperations = [], priorOrphans = [], unsettledRevert) {
|
|
43656
43862
|
const orphanIndexes = [];
|
|
43657
43863
|
const orphanOps = [];
|
|
43658
43864
|
failedOperations.forEach((op, i) => {
|
|
@@ -43677,7 +43883,7 @@ async function performRollback(deps, completedOperations, stateResources, stackN
|
|
|
43677
43883
|
const inlinePolicyWriters = new RollbackInlinePolicyWriters();
|
|
43678
43884
|
const supersededHost = {};
|
|
43679
43885
|
const runId = deps.options.eventRecorder?.runId;
|
|
43680
|
-
const { result, failed, run } = await withNestedRevertRun(runId, async (scope) => {
|
|
43886
|
+
const { result, failed, unsettled, run } = await withNestedRevertRun(runId, async (scope) => {
|
|
43681
43887
|
return {
|
|
43682
43888
|
failed: orphanOps.length > 0 ? await withPrintingSecrets(replayPrintingBag(deps, orphanOps.map((op) => ({
|
|
43683
43889
|
...op,
|
|
@@ -43686,6 +43892,11 @@ async function performRollback(deps, completedOperations, stateResources, stackN
|
|
|
43686
43892
|
emitEnvelope: completedOperations.length === 0,
|
|
43687
43893
|
inlinePolicyWriters
|
|
43688
43894
|
})) : void 0,
|
|
43895
|
+
unsettled: await revertUnsettledFailedUpdates(deps, ctx, stackName, stateResources, failedOperations, new Set(orphanIndexes), {
|
|
43896
|
+
emitEnvelope: completedOperations.length === 0 && orphanOps.length === 0,
|
|
43897
|
+
inlinePolicyWriters,
|
|
43898
|
+
hooks: unsettledRevert
|
|
43899
|
+
}),
|
|
43689
43900
|
result: await withPrintingSecrets(replayPrintingBag(deps, completedReplayEntries(completedOperations), stateResources), () => replayRollback(completedOperations, stateResources, stackName, ctx, {
|
|
43690
43901
|
inlinePolicyWriters,
|
|
43691
43902
|
failedOperations,
|
|
@@ -43698,11 +43909,12 @@ async function performRollback(deps, completedOperations, stateResources, stackN
|
|
|
43698
43909
|
});
|
|
43699
43910
|
const pendingOrphans = new Set(failed?.remainingFailedOps ?? []);
|
|
43700
43911
|
const handled = new Set(orphanIndexes.filter((_, k) => !pendingOrphans.has(orphanOps[k])));
|
|
43912
|
+
for (const index of unsettled.handled) handled.add(index);
|
|
43701
43913
|
return {
|
|
43702
43914
|
failures: result.failures + (failed?.failures ?? 0),
|
|
43703
|
-
warnings: result.warnings + run.warnings + (failed?.warnings ?? 0),
|
|
43915
|
+
warnings: result.warnings + run.warnings + (failed?.warnings ?? 0) + unsettled.warnings,
|
|
43704
43916
|
skipped: result.skipped + (failed?.skipped ?? 0),
|
|
43705
|
-
interrupted: result.interrupted,
|
|
43917
|
+
interrupted: result.interrupted || unsettled.interrupted,
|
|
43706
43918
|
orphaned: [...failed?.orphaned ?? [], ...result.orphaned],
|
|
43707
43919
|
rolledBackCreates: [...failed?.rolledBackCreates ?? [], ...result.rolledBackCreates],
|
|
43708
43920
|
superseded: supersededHost.supersededResources ?? [],
|
|
@@ -43710,6 +43922,152 @@ async function performRollback(deps, completedOperations, stateResources, stackN
|
|
|
43710
43922
|
remainingFailedOps: failedOperations.filter((_, i) => !handled.has(i))
|
|
43711
43923
|
};
|
|
43712
43924
|
}
|
|
43925
|
+
function waitText(ms) {
|
|
43926
|
+
return ms >= 6e4 ? `${Math.round(ms / 6e4)} min` : `${Math.max(1, Math.round(ms / 1e3))}s`;
|
|
43927
|
+
}
|
|
43928
|
+
async function revertUnsettledFailedUpdates(deps, ctx, stackName, stateResources, failedOperations, alreadyReplayed, options) {
|
|
43929
|
+
const out = {
|
|
43930
|
+
handled: [],
|
|
43931
|
+
warnings: 0,
|
|
43932
|
+
interrupted: false
|
|
43933
|
+
};
|
|
43934
|
+
const hooks = options.hooks;
|
|
43935
|
+
if (hooks === void 0) return out;
|
|
43936
|
+
const ownMarks = (logicalId) => {
|
|
43937
|
+
const onRecord = unsettledPropertiesOf(stateResources[logicalId]);
|
|
43938
|
+
const marks = hooks.runMarks(logicalId);
|
|
43939
|
+
const names = new Set([...marks.names].filter((name) => onRecord.has(name)));
|
|
43940
|
+
return {
|
|
43941
|
+
names,
|
|
43942
|
+
items: new Map([...marks.items].filter(([path]) => names.has(unsettledItemsTopKey(path)))),
|
|
43943
|
+
lateSuccess: false
|
|
43944
|
+
};
|
|
43945
|
+
};
|
|
43946
|
+
const candidates = [];
|
|
43947
|
+
failedOperations.forEach((op, index) => {
|
|
43948
|
+
if (alreadyReplayed.has(index) || op.changeType !== "UPDATE") return;
|
|
43949
|
+
if (failedOpOwnRecord(op, stateResources) === void 0) return;
|
|
43950
|
+
const own = ownMarks(op.logicalId);
|
|
43951
|
+
const running = hooks.stillRunning(op.logicalId);
|
|
43952
|
+
if (own.names.size === 0 && running === void 0) return;
|
|
43953
|
+
if (classifyFailedOp(op, stateResources, [...failedOperations]) !== "revert-failed-update") return;
|
|
43954
|
+
candidates.push({
|
|
43955
|
+
index,
|
|
43956
|
+
op,
|
|
43957
|
+
own,
|
|
43958
|
+
running
|
|
43959
|
+
});
|
|
43960
|
+
});
|
|
43961
|
+
if (candidates.length === 0) return out;
|
|
43962
|
+
const { logger } = deps;
|
|
43963
|
+
const isInterrupted = () => deps.userInterrupted();
|
|
43964
|
+
const fallback = (names) => {
|
|
43965
|
+
const one = names.size === 1;
|
|
43966
|
+
const retry = deps.options.parentStackInfo === void 0 ? `, or revert ${one ? "it" : "them"} now with: ${pasteableCommand("cdkd rollback", [{
|
|
43967
|
+
value: stackName,
|
|
43968
|
+
hole: "stack"
|
|
43969
|
+
}, { literal: "--revert-failed" }]).command}` : "";
|
|
43970
|
+
return `cdkd keeps ${one ? "it" : "them"} unsettled: the next deploy converges ${one ? "it" : "them"}${retry}`;
|
|
43971
|
+
};
|
|
43972
|
+
const wait = deps.options.unsettledRevertWait ?? DEFAULT_UNSETTLED_REVERT_WAIT;
|
|
43973
|
+
const verdicts = await Promise.all(candidates.map(async (candidate) => {
|
|
43974
|
+
const { op } = candidate;
|
|
43975
|
+
let provider;
|
|
43976
|
+
try {
|
|
43977
|
+
provider = ctx.providerRegistry.getProviderFor({
|
|
43978
|
+
resourceType: op.resourceType,
|
|
43979
|
+
provisionedBy: op.provisionedBy ?? stateResources[op.logicalId].provisionedBy
|
|
43980
|
+
}).provider;
|
|
43981
|
+
} catch {
|
|
43982
|
+
return "error";
|
|
43983
|
+
}
|
|
43984
|
+
logger.info(safeMsg` Rollback: waiting for ${op.logicalId} (${op.resourceType}) to settle before reverting the failed update`);
|
|
43985
|
+
const started = Date.now();
|
|
43986
|
+
const identity = () => {
|
|
43987
|
+
const record = stateResources[op.logicalId];
|
|
43988
|
+
return {
|
|
43989
|
+
provider,
|
|
43990
|
+
logicalId: op.logicalId,
|
|
43991
|
+
physicalId: record.physicalId,
|
|
43992
|
+
resourceType: op.resourceType,
|
|
43993
|
+
recordedProperties: record.properties ?? {},
|
|
43994
|
+
names: candidate.own.names,
|
|
43995
|
+
timeoutMs: Math.max(0, wait.timeoutMs - (Date.now() - started)),
|
|
43996
|
+
pollMs: wait.pollMs,
|
|
43997
|
+
isInterrupted
|
|
43998
|
+
};
|
|
43999
|
+
};
|
|
44000
|
+
if (candidate.running !== void 0) {
|
|
44001
|
+
let succeeded = false;
|
|
44002
|
+
const returned = await waitForUnsettledSettled({
|
|
44003
|
+
...identity(),
|
|
44004
|
+
names: /* @__PURE__ */ new Set(),
|
|
44005
|
+
running: candidate.running.then((ok) => {
|
|
44006
|
+
succeeded = ok;
|
|
44007
|
+
})
|
|
44008
|
+
});
|
|
44009
|
+
if (returned === "moving") return "call-running";
|
|
44010
|
+
if (returned === "interrupted") return returned;
|
|
44011
|
+
hooks.recordMarks(op.logicalId);
|
|
44012
|
+
candidate.own = {
|
|
44013
|
+
...ownMarks(op.logicalId),
|
|
44014
|
+
lateSuccess: succeeded
|
|
44015
|
+
};
|
|
44016
|
+
if (!succeeded && candidate.own.names.size === 0) return "none";
|
|
44017
|
+
}
|
|
44018
|
+
try {
|
|
44019
|
+
return await waitForUnsettledSettled(identity());
|
|
44020
|
+
} catch {
|
|
44021
|
+
return "error";
|
|
44022
|
+
}
|
|
44023
|
+
}));
|
|
44024
|
+
const ready = [];
|
|
44025
|
+
candidates.forEach((candidate, k) => {
|
|
44026
|
+
const verdict = verdicts[k];
|
|
44027
|
+
if (verdict === "settled") {
|
|
44028
|
+
ready.push(candidate);
|
|
44029
|
+
return;
|
|
44030
|
+
}
|
|
44031
|
+
if (verdict === "none") return;
|
|
44032
|
+
if (verdict === "interrupted") {
|
|
44033
|
+
out.interrupted = true;
|
|
44034
|
+
return;
|
|
44035
|
+
}
|
|
44036
|
+
const { op } = candidate;
|
|
44037
|
+
const names = candidate.own.names;
|
|
44038
|
+
const them = names.size === 1 ? "it" : "them";
|
|
44039
|
+
const subject = names.size > 0 ? `the failed update left ${[...names].join(", ")} unsettled` : "the failed update may have applied part of the template";
|
|
44040
|
+
const why = verdict === "call-running" ? `cdkd's own update call, abandoned at the per-resource deadline, had not returned after ${waitText(wait.timeoutMs)}` : verdict === "error" ? "cdkd could not reach its provider to wait for it" : `AWS had not settled ${them} after ${waitText(wait.timeoutMs)}`;
|
|
44041
|
+
logger.warn(safeMsg`${op.logicalId} (${op.resourceType}): ${subject}, and ${why}, so the automatic rollback did not revert ${names.size > 0 ? them : "it"}. ${fallback(names)}`);
|
|
44042
|
+
out.warnings++;
|
|
44043
|
+
});
|
|
44044
|
+
if (ready.length === 0 || out.interrupted) return out;
|
|
44045
|
+
const ops = ready.map(({ op }) => ({ ...op }));
|
|
44046
|
+
const own = new Map(ready.map(({ op, own: marks }) => [op.logicalId, marks]));
|
|
44047
|
+
const replay = await withPrintingSecrets(replayPrintingBag(deps, ops.map((op) => ({
|
|
44048
|
+
...op,
|
|
44049
|
+
properties: op.attemptedProperties
|
|
44050
|
+
})), stateResources), () => replayFailedOperations(ops, stateResources, stackName, ctx, {
|
|
44051
|
+
emitEnvelope: options.emitEnvelope,
|
|
44052
|
+
inlinePolicyWriters: options.inlinePolicyWriters,
|
|
44053
|
+
isInterrupted,
|
|
44054
|
+
previousFromRecord: own
|
|
44055
|
+
}));
|
|
44056
|
+
out.warnings += replay.warnings + replay.failures;
|
|
44057
|
+
if (replay.interrupted) out.interrupted = true;
|
|
44058
|
+
const pending = new Set(replay.remainingFailedOps);
|
|
44059
|
+
const skipped = new Set(replay.skippedOps ?? []);
|
|
44060
|
+
ops.forEach((op, k) => {
|
|
44061
|
+
const { index, own: marks } = ready[k];
|
|
44062
|
+
if (pending.has(op) || skipped.has(op)) {
|
|
44063
|
+
if (!replay.interrupted) logger.warn(safeMsg`${op.logicalId} (${op.resourceType}): the automatic rollback could not revert ${marks.names.size > 0 ? `what the failed update left unsettled (${[...marks.names].join(", ")})` : "the failed update"} (see above). ${fallback(marks.names)}`);
|
|
44064
|
+
return;
|
|
44065
|
+
}
|
|
44066
|
+
out.handled.push(index);
|
|
44067
|
+
hooks.onReverted(op.logicalId, marks.names);
|
|
44068
|
+
});
|
|
44069
|
+
return out;
|
|
44070
|
+
}
|
|
43713
44071
|
function foreignHolderResolver(deps) {
|
|
43714
44072
|
const sameBucketHolderFor = makeForeignHolderScan(deps.stateBackend);
|
|
43715
44073
|
const crossPrefixHolder = deps.options.crossPrefixHolder;
|
|
@@ -46604,6 +46962,7 @@ async function provisionCreate(engine, logicalId, change, stateResources, stackN
|
|
|
46604
46962
|
...templateAttrs,
|
|
46605
46963
|
provisionedBy: createDecision.provisionedBy
|
|
46606
46964
|
};
|
|
46965
|
+
clearCreatedReport();
|
|
46607
46966
|
engine.recordInlinePolicyWrite(logicalId, "create");
|
|
46608
46967
|
await establishNoEchoEchoFidelity(engine.noEchoRun, engine.noEchoDeps(), logicalId, stateResources[logicalId], resolvedProps, stateResources, createSecrets);
|
|
46609
46968
|
const createCaptureSiblings = await buildObservedCaptureSiblings({
|
|
@@ -47945,7 +48304,8 @@ function identityKeyOf(...lists) {
|
|
|
47945
48304
|
return entries.some((entry) => isPlainObject(entry) && IDENTITY_KEYS.some((candidate) => typeof entry[candidate] === "string")) ? "ambiguous" : void 0;
|
|
47946
48305
|
}
|
|
47947
48306
|
const POSITIONAL_LIST_KEYS = /* @__PURE__ */ new Set(["KeySchema"]);
|
|
47948
|
-
function projectNamed(live, own, wanted, path, unnamed) {
|
|
48307
|
+
function projectNamed(live, own, wanted, path, unnamed, attempted = /* @__PURE__ */ new Map()) {
|
|
48308
|
+
const attemptedAt = (at) => new Set([...attempted.get(at) ?? []].filter(isUsableAttemptedName));
|
|
47949
48309
|
if (isPlainObject(live) && (isPlainObject(own) || isPlainObject(wanted))) {
|
|
47950
48310
|
const ownBag = isPlainObject(own) ? own : void 0;
|
|
47951
48311
|
const wantedBag = isPlainObject(wanted) ? wanted : void 0;
|
|
@@ -47956,10 +48316,12 @@ function projectNamed(live, own, wanted, path, unnamed) {
|
|
|
47956
48316
|
if (IDENTITY_KEYS.includes(key)) continue;
|
|
47957
48317
|
if (key === "Tags") {
|
|
47958
48318
|
if (ownBag !== void 0 && Object.hasOwn(ownBag, "Tags")) out["Tags"] = ownBag["Tags"];
|
|
48319
|
+
const withAttempted = withAttemptedReplicaTags(ownBag?.["Tags"], wantedBag?.["Tags"], live["Tags"], attemptedAt(`${path}.Tags`));
|
|
48320
|
+
if (withAttempted !== void 0) out["Tags"] = withAttempted;
|
|
47959
48321
|
continue;
|
|
47960
48322
|
}
|
|
47961
48323
|
if (!Object.hasOwn(live, key) || live[key] === void 0) continue;
|
|
47962
|
-
out[key] = POSITIONAL_LIST_KEYS.has(key) ? live[key] : projectNamed(live[key], ownBag?.[key], wantedBag?.[key], `${path}.${key}`, unnamed);
|
|
48324
|
+
out[key] = POSITIONAL_LIST_KEYS.has(key) ? live[key] : projectNamed(live[key], ownBag?.[key], wantedBag?.[key], `${path}.${key}`, unnamed, attempted);
|
|
47963
48325
|
}
|
|
47964
48326
|
return out;
|
|
47965
48327
|
}
|
|
@@ -47986,6 +48348,7 @@ function projectNamed(live, own, wanted, path, unnamed) {
|
|
|
47986
48348
|
const ownEntry = ownById.get(value);
|
|
47987
48349
|
const wantedEntry = wantedById.get(value);
|
|
47988
48350
|
if (ownEntry === void 0 && wantedEntry === void 0) {
|
|
48351
|
+
if (attemptedAt(path).has(value)) return [entry];
|
|
47989
48352
|
unnamed.push({
|
|
47990
48353
|
identity: id,
|
|
47991
48354
|
value,
|
|
@@ -47993,11 +48356,34 @@ function projectNamed(live, own, wanted, path, unnamed) {
|
|
|
47993
48356
|
});
|
|
47994
48357
|
return [];
|
|
47995
48358
|
}
|
|
47996
|
-
return [projectNamed(entry, ownEntry, wantedEntry, `${path}[${value}]`, unnamed)];
|
|
48359
|
+
return [projectNamed(entry, ownEntry, wantedEntry, `${path}[${value}]`, unnamed, attempted)];
|
|
47997
48360
|
});
|
|
47998
48361
|
}
|
|
47999
48362
|
return live;
|
|
48000
48363
|
}
|
|
48364
|
+
function withAttemptedReplicaTags(recorded, desired, live, attempted) {
|
|
48365
|
+
if (attempted.size === 0 || !Array.isArray(live)) return void 0;
|
|
48366
|
+
const keysOf = (value) => {
|
|
48367
|
+
if (value === void 0 || value === null) return /* @__PURE__ */ new Set();
|
|
48368
|
+
if (!Array.isArray(value)) return void 0;
|
|
48369
|
+
const keys = /* @__PURE__ */ new Set();
|
|
48370
|
+
for (const entry of value) {
|
|
48371
|
+
const key = entry?.Key;
|
|
48372
|
+
if (typeof key !== "string") return void 0;
|
|
48373
|
+
keys.add(key);
|
|
48374
|
+
}
|
|
48375
|
+
return keys;
|
|
48376
|
+
};
|
|
48377
|
+
const recordedKeys = keysOf(recorded);
|
|
48378
|
+
const desiredKeys = keysOf(desired);
|
|
48379
|
+
if (recordedKeys === void 0 || desiredKeys === void 0) return void 0;
|
|
48380
|
+
const removable = live.filter((entry) => {
|
|
48381
|
+
const key = entry?.Key;
|
|
48382
|
+
return typeof key === "string" && attempted.has(key) && !recordedKeys.has(key) && !desiredKeys.has(key);
|
|
48383
|
+
});
|
|
48384
|
+
if (removable.length === 0) return void 0;
|
|
48385
|
+
return [...recorded ?? [], ...removable];
|
|
48386
|
+
}
|
|
48001
48387
|
const strictReadScope = new AsyncLocalStorage();
|
|
48002
48388
|
function strictFor(key) {
|
|
48003
48389
|
return strictReadScope.getStore()?.has(key) === true;
|
|
@@ -48008,6 +48394,12 @@ function replicaStrictness(status) {
|
|
|
48008
48394
|
return new Set([...current].filter((key) => key !== "Replicas"));
|
|
48009
48395
|
}
|
|
48010
48396
|
const unsettledScope = new AsyncLocalStorage();
|
|
48397
|
+
const REGION_SEGMENT = /^[a-z]{2}(-[a-z]+)+-\d+$/;
|
|
48398
|
+
function markAttemptedItems(path, items) {
|
|
48399
|
+
const scope = unsettledScope.getStore();
|
|
48400
|
+
if (scope?.attempted === void 0 || items.length === 0) return;
|
|
48401
|
+
scope.attempted(path, items);
|
|
48402
|
+
}
|
|
48011
48403
|
function markUnsettled(...keys) {
|
|
48012
48404
|
const scope = unsettledScope.getStore();
|
|
48013
48405
|
if (scope === void 0) return;
|
|
@@ -48276,6 +48668,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48276
48668
|
let createdTableId;
|
|
48277
48669
|
try {
|
|
48278
48670
|
createdTableId = (await (await this.getCreateClient()).send(new CreateTableCommand(createParams)))?.TableDescription?.TableId;
|
|
48671
|
+
reportCreatedResource(logicalId, resourceType, tableName, createdTableId);
|
|
48279
48672
|
log.debug(`CreateTable initiated for ${log.value(tableName)}, waiting for ACTIVE`);
|
|
48280
48673
|
} catch (error) {
|
|
48281
48674
|
const cause = error instanceof Error ? error : void 0;
|
|
@@ -48347,6 +48740,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48347
48740
|
}
|
|
48348
48741
|
}
|
|
48349
48742
|
await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
|
|
48743
|
+
retractCreatedResource(logicalId, resourceType, tableName);
|
|
48350
48744
|
} catch (cleanupErr) {
|
|
48351
48745
|
tableLeftBehind = true;
|
|
48352
48746
|
warn(`Partial-create cleanup failed for ${tableName}: ${this.cleanupFailureText(log, `Partial-create cleanup failed for ${tableName}: `, cleanupErr)} To remove the orphaned AWS-side table, run: ` + pasteableAwsCommand(maskSecrets)`aws dynamodb delete-table --table-name ${tableName}`.render());
|
|
@@ -48394,6 +48788,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48394
48788
|
TableName: tableName,
|
|
48395
48789
|
ReplicaUpdates: replicaUpdates
|
|
48396
48790
|
}));
|
|
48791
|
+
markAttemptedItems("Replicas", [region]);
|
|
48397
48792
|
break;
|
|
48398
48793
|
} catch (error) {
|
|
48399
48794
|
if (attempt >= 3 || !isReplicaCopyExistsRefusal(error)) throw error;
|
|
@@ -49047,7 +49442,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49047
49442
|
async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
49048
49443
|
return unsettledScope.run({
|
|
49049
49444
|
mark: (key) => context?.markUnsettled?.(key),
|
|
49050
|
-
unsettled: context?.unsettledProperties ?? /* @__PURE__ */ new Set()
|
|
49445
|
+
unsettled: context?.unsettledProperties ?? /* @__PURE__ */ new Set(),
|
|
49446
|
+
attempted: (path, items) => context?.markAttempted?.(path, items)
|
|
49051
49447
|
}, () => this.updateInScope(logicalId, physicalId, resourceType, properties, previousProperties, context));
|
|
49052
49448
|
}
|
|
49053
49449
|
async updateInScope(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
@@ -49132,7 +49528,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49132
49528
|
const extractLocalTags = (props) => {
|
|
49133
49529
|
return localReplicaEntry(props, currentRegion)?.["Tags"];
|
|
49134
49530
|
};
|
|
49135
|
-
if (tableArn) await this.applyTagDiff(tableArn, resourceType, logicalId, extractLocalTags(previousProperties), extractLocalTags(properties), maskSecrets);
|
|
49531
|
+
if (tableArn) await this.applyTagDiff(tableArn, resourceType, logicalId, extractLocalTags(previousProperties), extractLocalTags(properties), maskSecrets, currentRegion);
|
|
49136
49532
|
const liveWarmByIndexName = /* @__PURE__ */ new Map();
|
|
49137
49533
|
for (const liveGsi of describeResp.Table?.GlobalSecondaryIndexes ?? []) {
|
|
49138
49534
|
const name = liveGsi.IndexName;
|
|
@@ -49506,6 +49902,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49506
49902
|
AttributeDefinitions: newAttrs,
|
|
49507
49903
|
GlobalSecondaryIndexUpdates: [gsiUpdate]
|
|
49508
49904
|
}));
|
|
49905
|
+
markAttemptedItems("GlobalSecondaryIndexes", [gsi.IndexName]);
|
|
49509
49906
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
49510
49907
|
}
|
|
49511
49908
|
for (const gsi of gsiDiff.modified) {
|
|
@@ -49625,8 +50022,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49625
50022
|
throw this.wrapMaskedError(log, error, (text) => new ProvisioningError(`Failed to update DynamoDB GlobalTable ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
49626
50023
|
}
|
|
49627
50024
|
}
|
|
49628
|
-
async applyTagDiff(tableArn, resourceType, logicalId, oldTagsRaw, newTagsRaw, maskSecrets) {
|
|
49629
|
-
await this.applyTagDiffOnClient(this.dynamoDBClient, tableArn, resourceType, logicalId, oldTagsRaw, newTagsRaw, maskSecrets);
|
|
50025
|
+
async applyTagDiff(tableArn, resourceType, logicalId, oldTagsRaw, newTagsRaw, maskSecrets, region) {
|
|
50026
|
+
await this.applyTagDiffOnClient(this.dynamoDBClient, tableArn, resourceType, logicalId, oldTagsRaw, newTagsRaw, maskSecrets, region);
|
|
49630
50027
|
}
|
|
49631
50028
|
async applyCrossRegionReplicaTagsDiff(tableArn, region, oldTags, newTags, resourceType, logicalId, physicalIdForLogs, maskSecrets = (text) => text) {
|
|
49632
50029
|
const warn = (message) => this.logger.warn(maskSecrets(message));
|
|
@@ -49642,12 +50039,12 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49642
50039
|
}
|
|
49643
50040
|
try {
|
|
49644
50041
|
const regionalClient = this.getRegionalClient(region);
|
|
49645
|
-
await this.applyTagDiffOnClient(regionalClient, replicaArn, resourceType, `${logicalId} (replica ${region})`, oldTags, newTags, maskSecrets);
|
|
50042
|
+
await this.applyTagDiffOnClient(regionalClient, replicaArn, resourceType, `${logicalId} (replica ${region})`, oldTags, newTags, maskSecrets, region);
|
|
49646
50043
|
} catch (tagErr) {
|
|
49647
50044
|
warn(`Could not apply Tags diff to cross-region replica ${region} of ${physicalIdForLogs}: ${describeAwsFailure(tagErr).detail}. The replica's Tags state will surface as drift until the next successful deploy.`);
|
|
49648
50045
|
}
|
|
49649
50046
|
}
|
|
49650
|
-
async applyTagDiffOnClient(client, tableArn, resourceType, id, oldTagsRaw, newTagsRaw, maskSecrets = (text) => text) {
|
|
50047
|
+
async applyTagDiffOnClient(client, tableArn, resourceType, id, oldTagsRaw, newTagsRaw, maskSecrets = (text) => text, region) {
|
|
49651
50048
|
const plan = planTagDiff(oldTagsRaw, newTagsRaw);
|
|
49652
50049
|
const tagWarning = tagPlanWarning(plan, resourceType, id);
|
|
49653
50050
|
if (tagWarning !== void 0) this.logger.warn(maskSecrets(tagWarning));
|
|
@@ -49669,6 +50066,15 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49669
50066
|
ResourceArn: tableArn,
|
|
49670
50067
|
Tags: tagsToAdd
|
|
49671
50068
|
}));
|
|
50069
|
+
if (region !== void 0 && REGION_SEGMENT.test(region)) {
|
|
50070
|
+
let recordedKeys;
|
|
50071
|
+
try {
|
|
50072
|
+
recordedKeys = /* @__PURE__ */ new Set([...planTagDiff(void 0, oldTagsRaw).set.keys()]);
|
|
50073
|
+
} catch {
|
|
50074
|
+
recordedKeys = void 0;
|
|
50075
|
+
}
|
|
50076
|
+
if (recordedKeys !== void 0) markAttemptedItems(`Replicas[${region}].Tags`, tagsToAdd.map((t) => t.Key).filter((key) => !recordedKeys.has(key)));
|
|
50077
|
+
}
|
|
49672
50078
|
this.logger.debug(maskSecrets(`Added/updated ${tagsToAdd.length} tag(s) on DynamoDB GlobalTable ${tableArn}`));
|
|
49673
50079
|
}
|
|
49674
50080
|
}
|
|
@@ -50088,7 +50494,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50088
50494
|
throw err;
|
|
50089
50495
|
}
|
|
50090
50496
|
}
|
|
50091
|
-
async readUnsettled(physicalId, logicalId, resourceType, names, recordedProperties, desiredProperties) {
|
|
50497
|
+
async readUnsettled(physicalId, logicalId, resourceType, names, recordedProperties, desiredProperties, attemptedItems) {
|
|
50092
50498
|
const live = await strictReadScope.run(names, () => this.readCurrentState(physicalId, logicalId, resourceType, recordedProperties));
|
|
50093
50499
|
if (typeof live !== "object" || live === null) return live;
|
|
50094
50500
|
const out = { ...live };
|
|
@@ -50096,7 +50502,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50096
50502
|
const unnamed = [];
|
|
50097
50503
|
for (const name of names) {
|
|
50098
50504
|
if (!Object.hasOwn(out, name)) continue;
|
|
50099
|
-
out[name] = projectNamed(out[name], recordedProperties?.[name], desiredProperties?.[name], name, unnamed);
|
|
50505
|
+
out[name] = projectNamed(out[name], recordedProperties?.[name], desiredProperties?.[name], name, unnamed, attemptedItems);
|
|
50100
50506
|
}
|
|
50101
50507
|
for (const entry of unnamed.filter((e) => e.ambiguous === true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS has entries cdkd cannot key by an identity, so convergence keeps the recorded ${entry.path} rather than risk removing an entry neither the record nor the template declares. Check it with 'cdkd drift'.`);
|
|
50102
50508
|
for (const entry of unnamed.filter((e) => e.ambiguous !== true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS holds ${entry.identity} ${entry.value}, which neither the record nor the template declares, so cdkd leaves it in place. If the failed update added it and it should not be there, remove it by hand (for a replica: aws dynamodb update-table --replica-updates Delete; for an index: --global-secondary-index-updates Delete).`);
|
|
@@ -51801,6 +52207,7 @@ async function updateByReplacement(engine, { change, counts, currentProps, curre
|
|
|
51801
52207
|
...extractTemplateAttributes(template, logicalId),
|
|
51802
52208
|
provisionedBy: replaceDecision.provisionedBy
|
|
51803
52209
|
};
|
|
52210
|
+
clearCreatedReport();
|
|
51804
52211
|
engine.recordInlinePolicyWrite(logicalId, "create");
|
|
51805
52212
|
await establishNoEchoEchoFidelity(engine.noEchoRun, engine.noEchoDeps(), logicalId, stateResources[logicalId], resolvedProps, stateResources, updateSecrets);
|
|
51806
52213
|
engine.observedCapture.kickOffObservedCapture(replaceProvider, logicalId, createResult.physicalId, resourceType, resolvedProps, { afterOwnWrite: true }, updateSecrets);
|
|
@@ -51878,6 +52285,7 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
51878
52285
|
const changedForProvider = new Set(changedProperties);
|
|
51879
52286
|
for (const key of /* @__PURE__ */ new Set([...Object.keys(previousWithNoEchoHeld), ...Object.keys(previousForUpdate)])) if (keyOrderFreeJson(previousForUpdate[key]) !== keyOrderFreeJson(previousWithNoEchoHeld[key])) changedForProvider.add(key);
|
|
51880
52287
|
const unsettled = unsettledPropertiesOf(currentResource);
|
|
52288
|
+
const unsettledItems = unsettledItemsOf(currentResource);
|
|
51881
52289
|
if (changedForProvider.size === 0) for (const key of /* @__PURE__ */ new Set([...Object.keys(updateProps), ...Object.keys(previousForUpdate)])) changedForProvider.add(key);
|
|
51882
52290
|
if (reattached !== void 0) engine.logger.info(safeMsg` ${logicalId} (${resourceType}) lost its attachment to ${reattached.parents.join(", ")}, which this deploy re-created under the same name: attaching it again`);
|
|
51883
52291
|
if (droppedPrincipalKinds.length > 0) {
|
|
@@ -51895,7 +52303,8 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
51895
52303
|
...unsettledIdentity,
|
|
51896
52304
|
names: unsettled,
|
|
51897
52305
|
previous: previousForUpdate,
|
|
51898
|
-
desired: updateProps
|
|
52306
|
+
desired: updateProps,
|
|
52307
|
+
attemptedItems: unsettledItems
|
|
51899
52308
|
});
|
|
51900
52309
|
if (unsettled.has("Tags")) engine.logger.warn(safeMsg`${logicalId} (${resourceType}): an earlier failed update left Tags unsettled. cdkd re-applies the template's tags and removes only the recorded ones the template dropped; a tag that failed update added and no template declares is left on the resource. Remove it by hand if it should not be there.`);
|
|
51901
52310
|
const removal = prepareRemovalForUpdate(updateProvider, resourceType, updateProps, previousSettled);
|
|
@@ -51925,10 +52334,23 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
51925
52334
|
}
|
|
51926
52335
|
marks.add(propertyName);
|
|
51927
52336
|
},
|
|
51928
|
-
|
|
52337
|
+
markAttempted: (path, items) => {
|
|
52338
|
+
if (typeof path !== "string" || path === "") return;
|
|
52339
|
+
let byPath = engine.unsettledItemMarks.get(logicalId);
|
|
52340
|
+
if (byPath === void 0) {
|
|
52341
|
+
byPath = /* @__PURE__ */ new Map();
|
|
52342
|
+
engine.unsettledItemMarks.set(logicalId, byPath);
|
|
52343
|
+
}
|
|
52344
|
+
const names = byPath.get(path) ?? /* @__PURE__ */ new Set();
|
|
52345
|
+
for (const item of items) if (typeof item === "string" && item !== "") names.add(item);
|
|
52346
|
+
byPath.set(path, names);
|
|
52347
|
+
},
|
|
52348
|
+
...unsettled.size > 0 && { unsettledProperties: unsettled },
|
|
52349
|
+
...unsettledItems.size > 0 && { unsettledItems }
|
|
51929
52350
|
})), logicalId, void 0, void 0, updateProvider);
|
|
51930
52351
|
if (result.sentNothing === true) engine.replacementRun.updatesThatSentNothing.add(logicalId);
|
|
51931
52352
|
engine.unsettledMarks.delete(logicalId);
|
|
52353
|
+
engine.unsettledItemMarks.delete(logicalId);
|
|
51932
52354
|
if (result.wasReplaced === true && result.outcome === "partial") engine.replacementRun.replacedOldMaySurvive.set(logicalId, result.oldResourceSurvivor === "kept" ? "kept" : "unconfirmed");
|
|
51933
52355
|
result = withoutInjectedRemovals(result, removal.injected);
|
|
51934
52356
|
const unhandledByCause = splitUnhandledRemovals(removal.unhandled, previousForUpdate, unsettled);
|
|
@@ -52114,6 +52536,7 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
52114
52536
|
generation: fallbackGeneration
|
|
52115
52537
|
}, replaceFallback));
|
|
52116
52538
|
engine.unsettledMarks.delete(logicalId);
|
|
52539
|
+
engine.unsettledItemMarks.delete(logicalId);
|
|
52117
52540
|
result = fallbackOutcome.result;
|
|
52118
52541
|
resultProvisionedBy = fallbackOutcome.provisionedBy;
|
|
52119
52542
|
captureProvider = fallbackOutcome.captureProvider;
|
|
@@ -52137,7 +52560,8 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
52137
52560
|
const stillUnsettled = result.wasReplaced ? [] : await unsettledAfterUpdate({
|
|
52138
52561
|
...unsettledIdentity,
|
|
52139
52562
|
names: unsettled,
|
|
52140
|
-
desired: updateProps
|
|
52563
|
+
desired: updateProps,
|
|
52564
|
+
attemptedItems: unsettledItems
|
|
52141
52565
|
});
|
|
52142
52566
|
if (stillUnsettled.length > 0) engine.logger.warn(safeMsg`${logicalId} (${resourceType}): the update succeeded, but AWS does not yet show the template's ${stillUnsettled.join(", ")}; cdkd keeps ${stillUnsettled.length === 1 ? "it" : "them"} unsettled and converges again on the next deploy.`);
|
|
52143
52567
|
engine.replacementRun.updateWasReplaced.set(logicalId, result.wasReplaced === true);
|
|
@@ -52176,12 +52600,16 @@ async function updateInPlace(engine, { changedProperties, conditions, counts, cu
|
|
|
52176
52600
|
...dependencies && dependencies.length > 0 && { dependencies },
|
|
52177
52601
|
...extractTemplateAttributes(template, logicalId),
|
|
52178
52602
|
provisionedBy: resultProvisionedBy,
|
|
52179
|
-
...stillUnsettled.length > 0 && {
|
|
52603
|
+
...stillUnsettled.length > 0 && {
|
|
52604
|
+
unsettledProperties: stillUnsettled,
|
|
52605
|
+
...unsettledItemsField(currentResource, stillUnsettled)
|
|
52606
|
+
},
|
|
52180
52607
|
...keepsParameterRefusal && {
|
|
52181
52608
|
observedBaselineRefused: true,
|
|
52182
52609
|
observedBaselineRefusalReason: "unverifiable-parameter"
|
|
52183
52610
|
}
|
|
52184
52611
|
};
|
|
52612
|
+
clearCreatedReport();
|
|
52185
52613
|
if (updatePartialReason(result) === void 0) engine.recordInlinePolicyWrite(logicalId, "update");
|
|
52186
52614
|
if (keepsParameterRefusal) engine.logger.debug(safeMsg`observedProperties capture SKIPPED for updated ${logicalId} (${resourceType}): 'cdkd import' refused its baseline because a template parameter was not provably deployed at its 'Default', and this deploy bound the same 'Default' — an in-place update cannot show that AWS no longer holds the deployed value. The refusal stands until the resource is replaced or re-imported against a CloudFormation stack that proves the parameter.`);
|
|
52187
52615
|
const updateCaptureSiblings = keepsParameterRefusal ? void 0 : await buildObservedCaptureSiblings({
|
|
@@ -53038,7 +53466,7 @@ async function provisionResource(engine, logicalId, change, stateResources, stac
|
|
|
53038
53466
|
let nestedChildUnaddressed;
|
|
53039
53467
|
const deleteGuards = [];
|
|
53040
53468
|
try {
|
|
53041
|
-
await withPrintingSecrets(printingRegistry, () => withResourceDeadline(async () => {
|
|
53469
|
+
await withPrintingSecrets(printingRegistry, () => withResourceDeadline(trackInFlightBody(engine, logicalId, async () => {
|
|
53042
53470
|
try {
|
|
53043
53471
|
const { value: bodyResult, unaddressed } = await collectDeleteGuards(deleteGuards, () => collectNestedChildUnaddressed(() => provisionResourceBody(engine, logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress)));
|
|
53044
53472
|
deleteSkipped = bodyResult?.deleteSkipped;
|
|
@@ -53070,7 +53498,7 @@ async function provisionResource(engine, logicalId, change, stateResources, stac
|
|
|
53070
53498
|
reason: guard.reason
|
|
53071
53499
|
});
|
|
53072
53500
|
}
|
|
53073
|
-
}, {
|
|
53501
|
+
}), {
|
|
53074
53502
|
warnAfterMs,
|
|
53075
53503
|
timeoutMs,
|
|
53076
53504
|
onWarn: (elapsedMs) => {
|
|
@@ -53148,6 +53576,17 @@ async function provisionResource(engine, logicalId, change, stateResources, stac
|
|
|
53148
53576
|
renderer.removeTask(logicalId);
|
|
53149
53577
|
}
|
|
53150
53578
|
}
|
|
53579
|
+
function trackInFlightBody(engine, logicalId, body) {
|
|
53580
|
+
return () => {
|
|
53581
|
+
const running = body();
|
|
53582
|
+
const entry = running.then(() => true, () => false);
|
|
53583
|
+
engine.inFlightBodies.set(logicalId, entry);
|
|
53584
|
+
entry.then(() => {
|
|
53585
|
+
if (engine.inFlightBodies.get(logicalId) === entry) engine.inFlightBodies.delete(logicalId);
|
|
53586
|
+
});
|
|
53587
|
+
return running;
|
|
53588
|
+
};
|
|
53589
|
+
}
|
|
53151
53590
|
async function provisionResourceBody(engine, logicalId, change, stateResources, stackName, template, parameterValues, conditions, counts, progress) {
|
|
53152
53591
|
const loadJournal = () => engine.stateBackend.loadRollbackJournal(stackName, engine.stackRegion);
|
|
53153
53592
|
const priorAttempts = priorAttemptLookup(logicalId, async () => priorAttemptsInJournal(await loadJournal(), logicalId, change.resourceType), async () => provenOrphanIdsInJournal(await loadJournal(), logicalId, change.resourceType));
|
|
@@ -53183,6 +53622,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53183
53622
|
};
|
|
53184
53623
|
const completedOperations = [];
|
|
53185
53624
|
const failedOperations = [];
|
|
53625
|
+
const reportedCreatesToSettle = [];
|
|
53186
53626
|
let pendingMigration = migrationPending;
|
|
53187
53627
|
const phaseScope = phaseScopeForStack(stackName, engine.stackRegion);
|
|
53188
53628
|
let saveChain = Promise.resolve();
|
|
@@ -53200,7 +53640,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53200
53640
|
const savedFor = savedIds.join(", ");
|
|
53201
53641
|
try {
|
|
53202
53642
|
const partialState = {
|
|
53203
|
-
version:
|
|
53643
|
+
version: 15,
|
|
53204
53644
|
region: engine.stackRegion,
|
|
53205
53645
|
stackName: currentState.stackName,
|
|
53206
53646
|
resources: newResources,
|
|
@@ -53317,9 +53757,10 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53317
53757
|
settle
|
|
53318
53758
|
});
|
|
53319
53759
|
let succeeded = false;
|
|
53760
|
+
const createdSink = new CreatedResourceSink(logicalId, change.resourceType);
|
|
53320
53761
|
try {
|
|
53321
53762
|
try {
|
|
53322
|
-
await timePhase(phaseScope, `resource ${change.changeType.toLowerCase()}`, () => provisionResource(engine, logicalId, change, newResources, stackName, template, parameterValues, conditions, actualCounts, progress), `${logicalId} ${change.resourceType}`);
|
|
53763
|
+
await timePhase(phaseScope, `resource ${change.changeType.toLowerCase()}`, () => collectCreatedResources(createdSink, () => provisionResource(engine, logicalId, change, newResources, stackName, template, parameterValues, conditions, actualCounts, progress)), `${logicalId} ${change.resourceType}`);
|
|
53323
53764
|
settledUpdates.add(logicalId);
|
|
53324
53765
|
succeeded = true;
|
|
53325
53766
|
} finally {
|
|
@@ -53334,10 +53775,11 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53334
53775
|
const attemptedGeneration = change.changeType === "UPDATE" && !refused && !isReplacementNameRefusal(provisionError, logicalId) ? engine.replacementRun.attemptedNameGeneration.get(logicalId) : void 0;
|
|
53335
53776
|
const statePhysicalId = newResources[logicalId]?.physicalId ?? previousState?.physicalId;
|
|
53336
53777
|
if (refused && change.changeType === "CREATE" && statePhysicalId === void 0) throw provisionError;
|
|
53337
|
-
const
|
|
53778
|
+
const markedCreatedId = createdBeforeFailure(provisionError, logicalId, change.resourceType);
|
|
53779
|
+
const createdId = change.changeType === "CREATE" && statePhysicalId === void 0 ? markedCreatedId : void 0;
|
|
53338
53780
|
const heldRecord = newResources[logicalId] ?? previousState;
|
|
53339
53781
|
const replaced = change.changeType === "UPDATE" && !NO_REPLACEMENT_ORPHAN_TYPES.has(change.resourceType) && statePhysicalId !== void 0 && statePhysicalId !== "" && heldRecord?.physicalId === statePhysicalId ? heldRecord : void 0;
|
|
53340
|
-
const replacementCreatedId = replaced ?
|
|
53782
|
+
const replacementCreatedId = replaced ? markedCreatedId : void 0;
|
|
53341
53783
|
const orphanedBy = replaced !== void 0 && replacementCreatedId !== void 0 && replacementCreatedId !== replaced.physicalId ? {
|
|
53342
53784
|
record: replaced,
|
|
53343
53785
|
createdId: replacementCreatedId
|
|
@@ -53373,34 +53815,17 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53373
53815
|
if (attemptedGeneration !== void 0 && heldNow !== void 0) newResources[logicalId] = withNameGenerationReached(heldNow, logicalId, attemptedGeneration);
|
|
53374
53816
|
let replacementOrphanOp;
|
|
53375
53817
|
if (orphanedBy !== void 0) {
|
|
53376
|
-
replacementOrphanOp =
|
|
53377
|
-
logicalId,
|
|
53378
|
-
changeType: "CREATE",
|
|
53379
|
-
resourceType: change.resourceType,
|
|
53380
|
-
provisionedBy: "sdk",
|
|
53381
|
-
physicalId: orphanedBy.createdId,
|
|
53382
|
-
physicalIdRecoveredFromError: true,
|
|
53383
|
-
deletionPolicy: journaledOrphanPolicy(extractTemplateAttributes(template, logicalId).deletionPolicy),
|
|
53384
|
-
replacedPhysicalId: orphanedBy.record.physicalId,
|
|
53385
|
-
replacedResourceType: orphanedBy.record.resourceType,
|
|
53386
|
-
...engine.replacementRun.oldDeletedBeforeCreate.has(logicalId) && { replacedResourceDeleted: true },
|
|
53387
|
-
...!refused && { attemptedProperties: engine.attemptedResolvedProps.get(logicalId) }
|
|
53388
|
-
};
|
|
53818
|
+
replacementOrphanOp = replacementOrphanOpFor(engine, template, logicalId, change.resourceType, orphanedBy.record, orphanedBy.createdId, refused);
|
|
53389
53819
|
failedOperations.push(replacementOrphanOp);
|
|
53390
53820
|
}
|
|
53821
|
+
if (markedCreatedId === void 0 && (change.changeType === "CREATE" && statePhysicalId === void 0 || replaced !== void 0) && deadlineFiredFor(provisionError, logicalId)) reportedCreatesToSettle.push({
|
|
53822
|
+
sink: createdSink,
|
|
53823
|
+
failedOp,
|
|
53824
|
+
...replaced !== void 0 && { replaced },
|
|
53825
|
+
refused
|
|
53826
|
+
});
|
|
53391
53827
|
const orphanOp = createdId !== void 0 ? failedOp : replacementOrphanOp;
|
|
53392
|
-
if (orphanOp
|
|
53393
|
-
const markedIdentity = createdResourceIdentityBeforeFailure(provisionError, logicalId, change.resourceType);
|
|
53394
|
-
if (markedIdentity !== void 0) orphanOp.createdResourceIdentity = markedIdentity;
|
|
53395
|
-
else if (engine.interruptCause !== "user") {
|
|
53396
|
-
const identity = await readResourceIdentity(engine.providerRegistry, {
|
|
53397
|
-
resourceType: orphanOp.resourceType,
|
|
53398
|
-
physicalId: orphanOp.physicalId,
|
|
53399
|
-
provisionedBy: orphanOp.provisionedBy
|
|
53400
|
-
}, engine.stackRegion);
|
|
53401
|
-
if (typeof identity === "string") orphanOp.createdResourceIdentity = identity;
|
|
53402
|
-
}
|
|
53403
|
-
}
|
|
53828
|
+
if (orphanOp !== void 0) await journalOrphanIdentity(engine, orphanOp, createdResourceIdentityBeforeFailure(provisionError, logicalId, change.resourceType));
|
|
53404
53829
|
throw provisionError;
|
|
53405
53830
|
}
|
|
53406
53831
|
completedOperations.push({
|
|
@@ -53551,9 +53976,10 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53551
53976
|
engine.logger.warn(safeMsg` ⚠ ${lost.logicalId} (${childType}) was removed from a resource this deploy re-created under the same id, and the deploy failed before writing it again: the next deploy writes it there again (its record keeps only the holders it is still on).`.concat(mayStillBeLive));
|
|
53552
53977
|
}
|
|
53553
53978
|
}
|
|
53979
|
+
await settleReportedCreates(engine, template, failedOperations, reportedCreatesToSettle);
|
|
53554
53980
|
try {
|
|
53555
53981
|
const preRollbackState = {
|
|
53556
|
-
version:
|
|
53982
|
+
version: 15,
|
|
53557
53983
|
region: engine.stackRegion,
|
|
53558
53984
|
stackName: currentState.stackName,
|
|
53559
53985
|
resources: newResources,
|
|
@@ -53594,7 +54020,15 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53594
54020
|
engine.logger.warn(safeMsg`Partial state has been saved. ${recoveryHint(engine.rollbackDeps(), "Run 'cdkd deploy' to resume, 'cdkd rollback' to revert, or destroy to clean up.")}`);
|
|
53595
54021
|
} else {
|
|
53596
54022
|
autoRollbackJournaled = await writeRollbackJournalSegment(engine.rollbackDeps(), stackName, completedOperations, failedOperations, "auto-rollback-started", initialDeploy);
|
|
53597
|
-
const rollbackResult = await performRollback(engine.rollbackDeps(), completedOperations, newResources, stackName, currentState, failedOperations, currentState.orphans ?? []
|
|
54023
|
+
const rollbackResult = await performRollback(engine.rollbackDeps(), completedOperations, newResources, stackName, currentState, failedOperations, currentState.orphans ?? [], {
|
|
54024
|
+
runMarks: (logicalId) => ({
|
|
54025
|
+
names: engine.unsettledMarks.get(logicalId) ?? /* @__PURE__ */ new Set(),
|
|
54026
|
+
items: engine.unsettledItemMarks.get(logicalId) ?? /* @__PURE__ */ new Map()
|
|
54027
|
+
}),
|
|
54028
|
+
stillRunning: (logicalId) => engine.inFlightBodies.get(logicalId),
|
|
54029
|
+
recordMarks: (logicalId) => recordUnsettledMarks(engine, newResources, logicalId),
|
|
54030
|
+
onReverted: (logicalId, settled) => dropUnsettledMarks(engine, logicalId, settled)
|
|
54031
|
+
});
|
|
53598
54032
|
autoRollbackClean = autoRollbackJournaled && rollbackResult.failures === 0 && rollbackResult.skipped === 0 && !rollbackResult.interrupted;
|
|
53599
54033
|
if (rollbackResult.interrupted && rollbackResult.failures === 0 && rollbackResult.skipped === 0) {
|
|
53600
54034
|
const remedy = autoRollbackJournaled ? recoveryHint(engine.rollbackDeps(), "The rollback journal keeps them; finish the rollback with: " + pasteableCommand("cdkd rollback", [{
|
|
@@ -53619,7 +54053,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53619
54053
|
recordUnsettledMarks(engine, newResources);
|
|
53620
54054
|
try {
|
|
53621
54055
|
const postRollbackState = {
|
|
53622
|
-
version:
|
|
54056
|
+
version: 15,
|
|
53623
54057
|
region: engine.stackRegion,
|
|
53624
54058
|
stackName: currentState.stackName,
|
|
53625
54059
|
resources: newResources,
|
|
@@ -53642,7 +54076,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53642
54076
|
const freshEtag = (await engine.stateBackend.getState(stackName, engine.stackRegion))?.etag;
|
|
53643
54077
|
recordUnsettledMarks(engine, newResources);
|
|
53644
54078
|
const postRollbackState = {
|
|
53645
|
-
version:
|
|
54079
|
+
version: 15,
|
|
53646
54080
|
region: engine.stackRegion,
|
|
53647
54081
|
stackName: currentState.stackName,
|
|
53648
54082
|
resources: newResources,
|
|
@@ -53679,7 +54113,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53679
54113
|
}
|
|
53680
54114
|
return {
|
|
53681
54115
|
state: {
|
|
53682
|
-
version:
|
|
54116
|
+
version: 15,
|
|
53683
54117
|
region: engine.stackRegion,
|
|
53684
54118
|
stackName: currentState.stackName,
|
|
53685
54119
|
resources: newResources,
|
|
@@ -53698,7 +54132,7 @@ async function executeDeployment(engine, template, currentState, changes, dag, e
|
|
|
53698
54132
|
}
|
|
53699
54133
|
async function persistStateAfterOutputFailure(engine, stackName, currentState, newResources, currentEtag, pendingMigration) {
|
|
53700
54134
|
const buildState = () => ({
|
|
53701
|
-
version:
|
|
54135
|
+
version: 15,
|
|
53702
54136
|
region: engine.stackRegion,
|
|
53703
54137
|
stackName: currentState.stackName,
|
|
53704
54138
|
resources: newResources,
|
|
@@ -53737,6 +54171,73 @@ function recordUnsettledMarks(engine, newResources, only) {
|
|
|
53737
54171
|
if (only !== void 0 && logicalId !== only) continue;
|
|
53738
54172
|
if (marks.size === 0 || !Object.hasOwn(newResources, logicalId)) continue;
|
|
53739
54173
|
newResources[logicalId] = withUnsettledProperties(newResources[logicalId], marks);
|
|
54174
|
+
const items = engine.unsettledItemMarks.get(logicalId);
|
|
54175
|
+
if (items !== void 0 && items.size > 0) newResources[logicalId] = withUnsettledItems(newResources[logicalId], items);
|
|
54176
|
+
}
|
|
54177
|
+
}
|
|
54178
|
+
function dropUnsettledMarks(engine, logicalId, names) {
|
|
54179
|
+
const marks = engine.unsettledMarks.get(logicalId);
|
|
54180
|
+
if (marks !== void 0) for (const name of names) marks.delete(name);
|
|
54181
|
+
const items = engine.unsettledItemMarks.get(logicalId);
|
|
54182
|
+
if (items !== void 0) {
|
|
54183
|
+
for (const path of [...items.keys()]) if (names.has(unsettledItemsTopKey(path))) items.delete(path);
|
|
54184
|
+
}
|
|
54185
|
+
}
|
|
54186
|
+
function deadlineFiredFor(error, logicalId) {
|
|
54187
|
+
try {
|
|
54188
|
+
let current = error;
|
|
54189
|
+
for (let depth = 0; depth < 5 && typeof current === "object" && current !== null; depth++) {
|
|
54190
|
+
if (current instanceof ResourceTimeoutError) return current.logicalId === logicalId;
|
|
54191
|
+
current = current.cause;
|
|
54192
|
+
}
|
|
54193
|
+
} catch {}
|
|
54194
|
+
return false;
|
|
54195
|
+
}
|
|
54196
|
+
async function settleReportedCreates(engine, template, failedOperations, pending) {
|
|
54197
|
+
for (const { sink, failedOp, replaced, refused } of pending) {
|
|
54198
|
+
const report = sink.report;
|
|
54199
|
+
if (report === void 0) continue;
|
|
54200
|
+
let orphanOp;
|
|
54201
|
+
if (replaced === void 0) {
|
|
54202
|
+
failedOp.provisionedBy = "sdk";
|
|
54203
|
+
failedOp.physicalId = report.physicalId;
|
|
54204
|
+
failedOp.physicalIdRecoveredFromError = true;
|
|
54205
|
+
failedOp.deletionPolicy = journaledOrphanPolicy(extractTemplateAttributes(template, failedOp.logicalId).deletionPolicy);
|
|
54206
|
+
orphanOp = failedOp;
|
|
54207
|
+
} else {
|
|
54208
|
+
if (report.physicalId === replaced.physicalId) continue;
|
|
54209
|
+
failedOp.replacementOrphaned = engine.replacementRun.oldDeletedBeforeCreate.has(failedOp.logicalId) ? "delete-first" : "create-first";
|
|
54210
|
+
orphanOp = replacementOrphanOpFor(engine, template, failedOp.logicalId, failedOp.resourceType, replaced, report.physicalId, refused);
|
|
54211
|
+
failedOperations.push(orphanOp);
|
|
54212
|
+
}
|
|
54213
|
+
await journalOrphanIdentity(engine, orphanOp, report.createdResourceIdentity);
|
|
54214
|
+
}
|
|
54215
|
+
}
|
|
54216
|
+
function replacementOrphanOpFor(engine, template, logicalId, resourceType, record, createdId, refused) {
|
|
54217
|
+
return {
|
|
54218
|
+
logicalId,
|
|
54219
|
+
changeType: "CREATE",
|
|
54220
|
+
resourceType,
|
|
54221
|
+
provisionedBy: "sdk",
|
|
54222
|
+
physicalId: createdId,
|
|
54223
|
+
physicalIdRecoveredFromError: true,
|
|
54224
|
+
deletionPolicy: journaledOrphanPolicy(extractTemplateAttributes(template, logicalId).deletionPolicy),
|
|
54225
|
+
replacedPhysicalId: record.physicalId,
|
|
54226
|
+
replacedResourceType: record.resourceType,
|
|
54227
|
+
...engine.replacementRun.oldDeletedBeforeCreate.has(logicalId) && { replacedResourceDeleted: true },
|
|
54228
|
+
...!refused && { attemptedProperties: engine.attemptedResolvedProps.get(logicalId) }
|
|
54229
|
+
};
|
|
54230
|
+
}
|
|
54231
|
+
async function journalOrphanIdentity(engine, orphanOp, carried) {
|
|
54232
|
+
if (orphanOp.physicalId === void 0 || orphanOp.deletionPolicy === "Retain" || !orphanNeedsIdentity(orphanOp)) return;
|
|
54233
|
+
if (carried !== void 0) orphanOp.createdResourceIdentity = carried;
|
|
54234
|
+
else if (engine.interruptCause !== "user") {
|
|
54235
|
+
const identity = await readResourceIdentity(engine.providerRegistry, {
|
|
54236
|
+
resourceType: orphanOp.resourceType,
|
|
54237
|
+
physicalId: orphanOp.physicalId,
|
|
54238
|
+
provisionedBy: orphanOp.provisionedBy
|
|
54239
|
+
}, engine.stackRegion);
|
|
54240
|
+
if (typeof identity === "string") orphanOp.createdResourceIdentity = identity;
|
|
53740
54241
|
}
|
|
53741
54242
|
}
|
|
53742
54243
|
|
|
@@ -53780,7 +54281,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
|
|
|
53780
54281
|
clock.lap("state load");
|
|
53781
54282
|
noteDeployStateRecord(currentStateData?.state !== void 0);
|
|
53782
54283
|
const currentState = currentStateData?.state ?? {
|
|
53783
|
-
version:
|
|
54284
|
+
version: 15,
|
|
53784
54285
|
region: engine.stackRegion,
|
|
53785
54286
|
stackName,
|
|
53786
54287
|
resources: {},
|
|
@@ -54083,7 +54584,7 @@ async function doDeployWithPrefetch(engine, stackName, template, createOnlyPrefe
|
|
|
54083
54584
|
await resolveStackInstanceId();
|
|
54084
54585
|
try {
|
|
54085
54586
|
const refreshedState = {
|
|
54086
|
-
version:
|
|
54587
|
+
version: 15,
|
|
54087
54588
|
region: engine.stackRegion,
|
|
54088
54589
|
stackName: currentState.stackName,
|
|
54089
54590
|
resources: currentState.resources,
|
|
@@ -54372,6 +54873,8 @@ var DeployEngine = class {
|
|
|
54372
54873
|
outputsRun = new OutputsRunState();
|
|
54373
54874
|
attemptedResolvedProps = /* @__PURE__ */ new Map();
|
|
54374
54875
|
unsettledMarks = /* @__PURE__ */ new Map();
|
|
54876
|
+
unsettledItemMarks = /* @__PURE__ */ new Map();
|
|
54877
|
+
inFlightBodies = /* @__PURE__ */ new Map();
|
|
54375
54878
|
resumedCreates = /* @__PURE__ */ new Map();
|
|
54376
54879
|
generatedNameGuard;
|
|
54377
54880
|
liveTaskLabels = /* @__PURE__ */ new Map();
|
|
@@ -54565,6 +55068,7 @@ var DeployEngine = class {
|
|
|
54565
55068
|
this.replacementRun = new ReplacementRunState();
|
|
54566
55069
|
this.attemptedResolvedProps = /* @__PURE__ */ new Map();
|
|
54567
55070
|
this.unsettledMarks = /* @__PURE__ */ new Map();
|
|
55071
|
+
this.unsettledItemMarks = /* @__PURE__ */ new Map();
|
|
54568
55072
|
this.resumedCreates = /* @__PURE__ */ new Map();
|
|
54569
55073
|
this.generatedNameGuard = void 0;
|
|
54570
55074
|
this.liveTaskLabels = /* @__PURE__ */ new Map();
|
|
@@ -54769,5 +55273,5 @@ function sameGenerationClaimsOf(record) {
|
|
|
54769
55273
|
}
|
|
54770
55274
|
|
|
54771
55275
|
//#endregion
|
|
54772
|
-
export { computeImplicitDeleteEdges as $, coerceParameterTypedValue as $a, DYNAMIC_REFERENCE_TOKEN_SCAN as $c, applyCustomResourceResponseExpiration as $i, stringifyValue as $l, WITHHELD_NAME_DISPLAY as $n, refuseMalformedOrphanRecords as $o, noEchoExactEchoLeavesOf as $r, readConfigString as $s, lookupEachName as $t, MIGRATE_TMP_PREFIX as $u, beginDeleteWait as A, s3BucketRegionalDomainName as Aa, valueAtCoordinate as Ac, isRefusedByName as Ai, isAccessDenied$1 as Al, resolveReplacementOldType as An, isReadableResourceEntry as Ao, awaitInFlightSibling as Ar, withheldAccountClause as As, displacedOpClause as At, redactedDockerCause as Au, waitForIndexesSettled as B, assertFlagRoleArn as Ba, logOnlyValueCount as Bc, stringifyIfAssigned as Bi, hasUnverifiableParameterRefusal as Bl, updatePartialMessage as Bn, malformedOrphansRefusalMessage as Bo, yellow as Br, isStatefulRecreateTargetForReplace as Bs, getCurrentNestedStackContext as Bt, loadCdkJson as Bu, planContributorInsightsOp as C, withoutUnsettledProperties as Ca, noEchoCoordinatesOf as Cc, resolveAssemblyPath as Cd, ledgerForStack as Ci, isLockInfoExpired as Cl, isJournaledOrphan as Cn, accountArgs as Co, rollbackOrphanIds as Cr, repairMalformedOutputsForReadOnly as Cs, makeSiblingClaimReader as Ct, formatDockerLoginError as Cu, reverseMapTableContributorInsights as D, s3BucketArn as Da, readbackPathFor as Dc, resolveBucketRegion as Dd, DeploymentEventsReader as Di, CrossPrefixScanCache as Dl, recheckFailedPlan as Dn, hasReadableOutputs as Do, mappingPairs as Dr, unpreviewableOrphanRecords as Ds, keptForRetainedRecord as Dt, partitionSensitiveEnv as Du, reverseMapIndexContributorInsights as E, isSettledInstanceState as Ea, passedNoEchoParametersOf as Ec, clearBucketRegionCache as Ed, acquireIdempotencyToken as Ei, CrossPrefixReadError as El, planRollback as En, hasReadableOrphans as Eo, looselyEqual as Er, repairMalformedResourcesForReadOnly as Es, resolvePendingCloudControlRequests as Et, isMalformedEnvKey as Eu, DELETE_INDEX_WAIT_PROCEED_NOTE as F, keepHeldTokenProvenance as Fa, snapshotPassProvenance as Fc, readTagList as Fi, acceptedCreateOnlyDropsOf as Fl, inheritProducerRegions as Fn, malformedLocalResourceEntriesWarning as Fo, bold as Fr, NO_CC_HANDLERS_REASON as Fs, recordDisplacedSkips as Ft, getDockerImageBySourceHash as Fu, sendTtlWaitingOutRateLimit as G, AWS_CREDENTIAL_ENV_KEYS as Ga, unionOfSecretBags as Gc, wouldReturnToSdkProvider as Gi, orphansCarriedFrom as Gl, retiredAfterRollback as Gn, malformedResourceEntriesWarning as Go, removeSuperseded as Gr, isWarmThroughputDecrease as Gs, isHandledOrphan as Gt, resolveStateBucketWithDefault as Gu, isTtlRateLimited as H, explicitRoleArnOrThrow as Ha, recordLogOnlyParameterValue as Hc, ProviderRegistry as Hi, importableOutputs as Hl, nameGenerationCarriedFrom as Hn, malformedOutputsRefusalMessage as Ho, deleteSupersededEntry as Hr, renderStatefulReason as Hs, deleteJournaledOrphans as Ht, resolveAutoAssetStorage as Hu, INDEX_SETTLE_POLL_INTERVAL_MS as I, outputReferenceProvenanceOf as Ia, carryLogOnlyValues as Ic, refuseMalformedDesiredTags as Ii, describeRegionValueKind as Il, REDACTED_DELETE_ADDRESS_SKIP_REASON as In, malformedLocalResourcesWarning as Io, cyan as Ir, hasNoCloudControlHandlers as Is, revertNestedChildFromJournal as It, Synthesizer as Iu, hasCdkAutoDeleteTag as J, envCredentialsAreAssumedRole as Ja, maskSecretsInError as Jc, readsNoEchoDeleteValues as Ji, PhaseClock as Jl, withNameGenerationReached as Jn, malformedScrubResourceEntriesRefusalMessage as Jo, supersededHolderOf as Jr, coerceCfnBoolean as Js, makeForeignHolderScan as Jt, stateBucketExistenceConfirmed as Ju, ECR_AUTO_DELETE_IMAGES_TAG as K, applyCallerIdentityCredentials as Ka, createSecretMasker as Kc, waitForLambdaFunctionActive as Ki, shouldRetainResource as Kl, retiredNameGenerationsAfter as Kn, malformedResourcePropertiesWarning as Ko, supersededAfterRollback as Kr, toCfnInteger as Ks, journaledOrphanLines as Kt, resolveStateBucketWithDefaultAndSource as Ku, deleteTableWithIndexBusyRetry as L, recordedOutputReferenceRegions as La, createUnionSecretMasker as Lc, tagMapAsList as Li, exportNamesCarriedFrom as Ll, isRedactedRecordedValue as Ln, malformedOrphanRecordsRefusalMessage as Lo, gray as Lr, findReplacedReadersOfRecreateTargets as Ls, revertedNestedRowIds as Lt, synthesisStatusMessage as Lu, deleteBudgetKey as M, resolveDynamicReferences as Ma, markSameGenerationBag as Mc, DBPROXY_TAGS_WHAT as Mi, stackInstanceIdOf as Ml, orphanNeedsIdentity as Mn, malformedExportNamesWarning as Mo, getStackRecords as Mr, findSilentDropProperties as Ms, dropSettledNestedJournals as Mt, runDockerStreaming as Mu, resolveDynamoDbDeleteBudgetClock as N, producerLookupOver as Na, redactForState as Nc, DBPROXY_TAG_OPTIONS as Ni, withStackInstanceIdWithheld as Nl, findNestedStackTypeChanges as Nn, malformedExportSourceWarning as No, withStackRecords as Nr, unwrittenCreateOnlyReplacement as Ns, getNestedRevertRun as Nt, warnFinchArgvExposure as Nu, stripIndexContributorInsights as O, s3BucketDomainName as Oa, readsNoEchoSource as Oc, DeploymentEventsStore as Oi, applyCrossPrefixScan as Ol, recordUnderIdIsNotOwn as On, hasReadableResources as Oo, parseMappingFile as Or, unreadableOrphanRecords as Os, recordRetainedForReadoption as Ot, redactDockerArgvValues as Ou, resolveDynamoDbDeleteBudgetMs as P, refuseUnreadableCdkCrossAccountRefs as Pa, recordReferenceProvenanceEntry as Pc, planTagDiff as Pi, splitImportedOps as Pl, getCurrentProducerRegions as Pn, malformedLocalOutputsWarning as Po, replacedDeleteFailureVerdict as Pr, withoutSilentDropProperties as Ps, nestedChildStackName as Pt, AssetManifestLoader as Pu, IMPLICIT_DELETE_DEPENDENCIES as Q, regionLessSecretName as Qa, withoutPhysicalNameCopies as Qc, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as Qi, isSensitiveAttributeName as Ql, resourcesNamingDeclaredParameter as Qn, refuseMalformedNestedChildOutputs as Qo, noEchoComparisonForTemplate as Qr, configStringRefusal as Qs, isAccessDeniedError as Qt, CFN_TEMPLATE_URL_LIMIT as Qu, maskedLogger as R, recordedReferenceRegions as Ra, hasMaskableValues as Rc, tagPlanWarning as Ri, hasReadableExportSet as Rl, redactedDeleteAddressFields as Rn, malformedOrphanRecordsWarning as Ro, green as Rr, shownType as Rs, withNestedRevertRun as Rt, getDefaultStateBucketName as Ru, indexDeclaresContributorInsights as S, withUnsettledProperties as Sa, maskedLeafCoordinatesOf as Sc, renderAssemblyPathEscape as Sd, earliestDefined as Si, LockManager as Sl, demoteSupersededOrphans as Sn, UNREADABLE_RESOURCES_MAP_ROW as So, movedToHint as Sr, repairMalformedOrphansForReadOnly as Ss, makeCanonicalizePropertiesFn as St, finchSecretArgvRefusal as Su, readContributorInsightsSpec as T, poisonRenderedSpellingsCollidingIn as Ta, noEchoOutputsComparison as Tc, injectedAwsRegionValue as Td, withCreateTokenLedger as Ti, rebuildClientForBucketRegion as Tl, planFailedOps as Tn, displayLogicalId as To, isPairableType as Tr, repairMalformedResourcePropertiesForReadOnly as Ts, pendingRequestCount as Tt, isDockerClientEnvKey as Tu, planTimeToLive as U, isIamRoleArn as Ua, recordLogOnlyValue as Uc, ccBrokenReason as Ui, isReadableBag as Ul, nameGenerationHighWaterOf as Un, malformedOutputsWarning as Uo, holdsSupersededResources as Ur, WARM_THROUGHPUT_MEMBERS as Us, dropFailedCommands as Ut, resolveCaptureObservedState as Uu, isTtlAlreadyDisabled as V, assertSendableRoleArn as Va, printingCorpusOf as Vc, CC_BROKEN_REASON as Vi, importableOutputKeys as Vl, updatePartialReason as Vn, malformedOrphansWarning as Vo, addSuperseded as Vr, isStatefulRecreateTargetSync as Vs, withNestedStackContext as Vt, resolveApp as Vu, readTtlSpec as W, sendableAssumeRoleCommand as Wa, shareLogOnlyValues as Wc, isCustomResource as Wi, orphansAfterRollback as Wl, nameScopeOf as Wn, malformedRenderedContainersWarning as Wo, isSupersededResourceRecord as Wr, coerceWarmThroughput as Ws, dropFailedHint as Wt, resolveSkipPrefix as Wu, getPriorAttempts as X, classifyReplaySecretRegion as Xa, scrubResourceRecord as Xc, getCurrentResourceSecrets as Xi, timePhase as Xl, namesAnyDeclaredParameter as Xn, previewableOrphanRecords as Xo, withoutSuperseded as Xr, configBooleanRefusal as Xs, formatResourceLine as Xt, ssmResolvedValueType as Xu, isTruthyCfnBoolean as Y, classifyRecordedSecretRegion as Ya, maskSecretsInText as Yc, isCustomResourceType as Yi, renderPhaseTimings as Yl, computeParameterTaint as Yn, malformedStateRefusalMessage as Yo, supersededResourcesOf as Yr, coerceCfnInteger as Ys, sameJournaledOrphans as Yt, warnDeprecatedNoPrefixCliFlag as Yu, markRefusedBeforeApplying as Z, producerRegionsFromState as Za, withPhysicalNameCopies as Zc, withPrintingSecrets as Zi, AssetPublisher as Zl, reachableDivergentParameters as Zn, refuseDivergentRecordRegionForDestroy as Zo, noEchoAttributeNamesOf as Zr, configIntegerRefusal as Zs, chunks as Zt, CFN_TEMPLATE_BODY_LIMIT as Zu, streamMemberRefusals as _, reDisableInstanceApiTermination as _a, canonicalCoordinates as _c, nullPrototypeRecord as _d, createPreDeleteFinalSnapshot as _i, recordNoEchoParameterFreshValue as _l, withUnprovenUnsettled as _n, declaresNoEcho as _o, constructPathOf as _r, refuseMalformedResourcesForDeploy as _s, withResourceDeadline as _t, resolveDockerContextDirectory as _u, isProtectionValueActive as a, RollbackInlinePolicyWriters as aa, templateResourceTypes as ac, PARTITION_TABLE as ad, namingSecretsWithRecordedNoEcho as ai, inheritNestedStackParameterAssociations as al, refuseRefactorMarker as an, carriesFetchableDynamicReference as ao, carriedExportAliasExposure as ar, refuseMalformedOutputsForDestroy as as, childTemplateLoader as at, AssetModeResolver as au, CONTRIBUTOR_INSIGHTS_KEY as b, INTRINSIC_KEYS as ba, maskReadbackAtCoordinates as bc, describeFileReadFailure as bd, refusesFinalSnapshot as bi, WHOLE_DYNAMIC_REFERENCE_PATTERN as bl, equalModuloMask as bn, STATE_RESOURCES_MALFORMED as bo, findRefactorHints as br, refuseMalformedState as bs, keptWholeReasonText as bt, describeDockerFailure as bu, DynamoDBGlobalTableProvider as c, deleteLeftInPlace as ca, blockDeviceMappingsDifferOnlyInDeleteOnTermination as cc, AssemblyReader as cd, secretNamePrintingBags as ci, physicalNameCopiesOf as cl, hasPendingMovesOut as cn, AWS_NO_VALUE as co, isWholeDynamicReferenceValue as cr, refuseMalformedResourceEntriesForDeploy as cs, listNestedTemplateRows as ct, ensureAssetStorage as cu, declaredStreamPolicyMember as d, isWaitAbandonedError as da, emrClusterInstancesReplaced as dc, describeJsonParseFailure as dd, stateSecretNameNeedles as di, splitGetAttStringForm as dl, refusePendingMovesOut as dn, lacksRecordedTableArn as do, collectPublishedOutputNames as dr, refuseMalformedResourceEntriesForImportSave as ds, conditionFingerprint as dt, parseBootstrapMarker as du, customResourceResponseExpirationWarning as ea, replayWarn as ec, findLargeInlineResources as ed, noEchoParameterNamesOf as ei, dynamicReferenceTokens as el, withApiLimit as en, isUnboundTemplateParameter as eo, displayTextOrWithheld as er, refuseMalformedOrphanRecordsForDestroy as es, crossStackOutputProvenanceSource as et, WorkGraph as eu, declaredStreamTagsMember as f, markWaitAbandoned as fa, canonicalLambdaFunctionName as fc, parseFailureDebugDetail as fd, storedSecretNameNeedles as fi, carriesSecretMask as fl, replayFailedOperations as fn, refStateLookupFromResource as fo, isExportAliasCollision as fr, refuseMalformedResourceEntriesForOrphan as fs, conditionInputsFrom as ft, readBootstrapMarkerBody as fu, streamDeclaresTags as g, observeThenDisableInstanceApiTermination as ga, TemplateParser as gc, hasPlainPrototype$1 as gd, ccRoutedFinalSnapshotError as gi, recordNoEchoAttributeValues as gl, settleUnsettledPrevious as gn, passedParameterClassesOf as go, maskingRetryLogger as gr, refuseMalformedResourcePropertiesForOrphan as gs, enclosingDeadlineRemainingMs as gt, buildDockerImage as gu, streamDeclaresPolicy as h, isTerminationProtectionPropagationError as ha, DagBuilder as hc, hasOwnKey as hd, buildFinalSnapshotIdentifier as hi, recordMaskOnlyValuesIn as hl, recordAfterRollbackUpdate as hn, parameterInputsFor as ho, DEFAULT_RESOURCE_WARN_AFTER_MS as hr, refuseMalformedResourcePropertiesForExport as hs, enclosingDeadlineExpired as ht, buildDenyExternalAccessPolicy as hu, PROTECTION_PROPERTY_BY_TYPE as i, unchangedBehindSecretReference as ia, prefetchCreateOnlyPropertyPaths as ic, expectedOwnerParam as id, maskEventTextWithBoundBags as ii, identityKeyFor as il, refactorMarkerRefusalMessage as in, carriesDynamicReference as io, secretSafeKeyDisplay as ir, refuseMalformedOutputs as is, serviceTokenBlockingReason as it, rewriteTemplateAssetReferences as iu, compensateRemovedDeletionProtection as j, s3BucketWebsiteUrl as ja, liveMatchesUnresolvedTokenFrame as jc, markDeleteStarted as ji, isNotImplemented as jl, seedsDeleteFirstGuard as jn, malformedDriftResourcePropertiesWarning as jo, destroyStackRecordsView as jr, findActionableSilentDrops as js, displacedPhysicalIdShown as jt, runDockerForeground as ju, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, s3BucketDualStackDomainName as ka, recordedNoEchoValuesOf as kc, extractDeploymentEventError as ki, crossPrefixDeniedWarning as kl, replacementNeverSwapped as kn, isReadableOrphanRecord as ko, proposeRenames as kr, unreadableResourceEntries as ks, NESTED_PENDING_PARENT_REASON as kt, redactedCause as ku, STREAM_POLICY_KEY as l, deleteSkipReason as la, dbInstanceEngineChangeIsInPlace as lc, StageLoadError as ld, secretNamedAttributeNamesOf as li, recordAttributeIdCopy as ll, pendingMovesOutOf as ln, cfnRefValueFromPhysicalId as lo, noEchoParameterValueSeed as lr, refuseMalformedResourceEntriesForDestroy as ls, renderNestedTemplateTreeDefect as lt, getBootstrapMarkerKey as lu, reverseMapStreamPolicy as m, ec2InstanceProtectionSite as ma, sameLambdaFunctionAddress as mc, defineOwnKey as md, PRE_DELETE_SNAPSHOT_TYPES as mi, recordMaskOnlyValue as ml, removeProtectionTypeList as mn, withSharedDrainBudget as mo, DEFAULT_RESOURCE_TIMEOUT_MS as mr, refuseMalformedResourcePropertiesForDrift as ms, readRecordedConditionVerdicts as mt, validateContainerRepoName as mu, recordedProtectionEvidence as n, slowCcOperationTimeoutMs as na, requireConfigObject as nc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as nd, completedReplayEntries as ni, pathCrossesDottedKey as nl, readRefactorMarkerOnce as nn, getAccountInfo as no, secretBearing as nr, refuseMalformedOrphansForDestroy as ns, deferredServiceTokenWarning as nt, createAssetRedirectResolver as nu, perType as o, UNSPECIFIED_SKIP_REASON as oa, describeTypeWithThrottleRetry as oc, canonicalizeRegion as od, orphanRecordsPrintingBag as oi, recordNestedStackParameterExpressions as ol, sameMove as on, isNamelessDynamicReferenceError as oo, exportNameNoEchoParameters as or, refuseMalformedResourceAttributesForOrphan as os, findNestedTemplateTreeDefect as ot, BOOTSTRAP_MARKER_PREFIX as ou, planStreamMemberOps as p, disableInstanceApiTermination as pa, lambdaFunctionNameForMask as pc, utf8ByteLength as pd, ATOMIC_FINAL_SNAPSHOT_TYPES as pi, provenPublicValue as pl, replayRollback as pn, parseWebACLArn as po, bindingSkippedOutputs as pr, refuseMalformedResourcePropertiesForDestroy as ps, parentSuppliedValues as pt, validateAssetBucketName as pu, S3_AUTO_DELETE_OBJECTS_TAG as q, callerEnvCredentials as qa, errorCauseChain as qc, TemplateNoEchoReresolver as qi, stackInstanceIdCarriedFrom as ql, retiredNameGenerationsLeaving as qn, malformedResourcesWarning as qo, supersededHeldByOtherTypeWarning as qr, toFiniteNumber as qs, loadJournaledOrphans as qt, resolveUseCdkBootstrapAssets as qu, recordedProtectionNote as r, onlySecretReferencesDiffer as ra, requireConfigString as rc, decodeListingKey as rd, journaledOrphanPrintingBag as ri, spelledKeysOf as rl, refactorMarkerMovesOf as rn, isImpossibleEmptyStoredAttribute as ro, secretBearingStateKeyWarning as rr, refuseMalformedOrphansForOrphan as rs, findServiceTokenRefusals as rt, loadPublishableAssetManifest as ru, readProtection as s, deleteIndeterminateGuards as sa, withRetry as sc, derivePartitionAndUrlSuffix as sd, secretNamePrintingBag as si, recoverMaskedOutput as sl, updateRefactorMarker as sn, keepsSecretReferenceToken as so, exportNameSecretExposure as sr, refuseMalformedResourceEntries as ss, isAbsoluteAssetPath as st, assertAssetBucketRegion as su, DeployEngine as t, CloudControlProvider as ta, requireConfigArray as tc, uploadCfnTemplate as td, createReadOnlyAttributeHealerFactory as ti, isUncertifiedBaselineMaskPosition as tl, readRefactorMarker as tn, parameterTypeMayLoseSecretIdentity as to, exportAliasCollisionScrubWarning as tr, refuseMalformedOrphans as ts, inheritedProvenanceForChildDiff as tt, buildAssetRedirectMap as tu, STREAM_TAGS_KEY as u, withIndeterminateGuard as ua, ecsServiceLaunchTypeSetOrChanged as uc, processStackMessages as ud, secretNamedRecordNeedles as ui, recordPhysicalNameCopy as ul, pendingMovesRefusalMessage as un, isStalePlaceholderArnAttribute as uo, collectDeclaredOutputNames as ur, refuseMalformedResourceEntriesForImport as us, templateIdentity as ut, isCrossRegionRedirect as uu, streamPolicyMatchesDeclared as v, reEnableInstanceApiTermination as va, isMarkedCoordinate as vc, ownValue as vd, effectiveDeletionPolicy as vi, recordProvenPublicExpression as vl, calculateResourceDrift as vn, JSON_LISTING_HOLE_VALUE as vo, findDestructiveChanges as vr, refuseMalformedResourcesForDestroy as vs, diffSecurity as vt, describeDockerCapturedOutput as vu, planIndexContributorInsightsOps as w, IntrinsicFunctionResolver as wa, noEchoLeavesOf as wc, injectAwsRegion as wd, reserveStackCreateToken as wi, S3StateBackend as wl, isReplacementOrphan as wn, deployRefusesOrphanRowsReason as wo, withMovedTo as wr, repairMalformedResourceEntriesForReadOnly as ws, planOrphanAdoption as wt, getDockerCmd as wu, contributorInsightsRefusals as x, unsettledPropertiesOf as xa, maskWholeValue as xc, displayAssemblyPath as xd, unsupportedFinalSnapshotError as xi, isSingleDynamicReferenceToken as xl, undeclaredEmptyObservedKeys as xn, UNREADABLE_ORPHANS_CONTAINER_ROW as xo, hintSidesOf as xr, repairMalformedOrphanRecordsForReadOnly as xs, mergeNoChangeOutputs as xt, dockerSpawnEnvWithSensitive as xu, streamTagsMatchDeclared as y, DiffCalculator as ya, maskAtCoordinates as yc, absoluteAssemblyPathEscape as yd, isFinalSnapshotError as yi, wholeStringLeavesOf as yl, equalModuloMarkedMask as yn, STATE_REGION_DIVERGED as yo, formatDestructiveChange as yr, refuseMalformedResourcesForExport as ys, isSecretBearingReferenceString as yt, describeDockerExecFailure as yu, relayedIndexBusyDelete as z, applyRoleArnIfSet as za, literalSplitDelimitersOf as zc, definedAttributes as zi, hasReasonlessBaselineRefusal as zl, redactedDeleteAddressSkip as zn, malformedOrphanRowsKeptWarning as zo, red as zr, MULTI_REGION_RECREATE_BLOCKED_TYPES as zs, collectNestedChildUnaddressed as zt, getLegacyStateBucketName as zu };
|
|
54773
|
-
//# sourceMappingURL=deploy-engine-
|
|
55276
|
+
export { IMPLICIT_DELETE_DEPENDENCIES as $, envCredentialsAreAssumedRole as $a, maskSecretsInError as $c, withPrintingSecrets as $i, PhaseClock as $l, resourcesNamingDeclaredParameter as $n, malformedScrubResourceEntriesRefusalMessage as $o, noEchoComparisonForTemplate as $r, coerceCfnBoolean as $s, isAccessDeniedError as $t, stateBucketExistenceConfirmed as $u, DYNAMODB_DELETE_POLL_COST_MS as A, poisonRenderedSpellingsCollidingIn as Aa, noEchoOutputsComparison as Ac, injectedAwsRegionValue as Ad, DeploymentEventsStore as Ai, rebuildClientForBucketRegion as Al, replacementNeverSwapped as An, displayLogicalId as Ao, proposeRenames as Ar, repairMalformedResourcePropertiesForReadOnly as As, NESTED_PENDING_PARENT_REASON as At, isDockerClientEnvKey as Au, relayedIndexBusyDelete as B, keepHeldTokenProvenance as Ba, snapshotPassProvenance as Bc, tagPlanWarning as Bi, acceptedCreateOnlyDropsOf as Bl, redactedDeleteAddressSkip as Bn, malformedLocalResourceEntriesWarning as Bo, red as Br, NO_CC_HANDLERS_REASON as Bs, collectNestedChildUnaddressed as Bt, getDockerImageBySourceHash as Bu, planContributorInsightsOp as C, isUsableAttemptedName as Ca, isMarkedCoordinate as Cc, ownValue as Cd, unsupportedFinalSnapshotError as Ci, recordProvenPublicExpression as Cl, demoteSupersededOrphans as Cn, JSON_LISTING_HOLE_VALUE as Co, movedToHint as Cr, refuseMalformedResourcesForDestroy as Cs, makeCanonicalizePropertiesFn as Ct, describeDockerCapturedOutput as Cu, reverseMapTableContributorInsights as D, withUnsettledProperties as Da, maskedLeafCoordinatesOf as Dc, renderAssemblyPathEscape as Dd, withCreateTokenLedger as Di, LockManager as Dl, planRollback as Dn, UNREADABLE_RESOURCES_MAP_ROW as Do, looselyEqual as Dr, repairMalformedOrphansForReadOnly as Ds, resolvePendingCloudControlRequests as Dt, finchSecretArgvRefusal as Du, reverseMapIndexContributorInsights as E, unsettledPropertiesOf as Ea, maskWholeValue as Ec, displayAssemblyPath as Ed, reserveStackCreateToken as Ei, isSingleDynamicReferenceToken as El, planFailedOps as En, UNREADABLE_ORPHANS_CONTAINER_ROW as Eo, isPairableType as Er, repairMalformedOrphanRecordsForReadOnly as Es, pendingRequestCount as Et, dockerSpawnEnvWithSensitive as Eu, resolveDynamoDbDeleteBudgetMs as F, s3BucketRegionalDomainName as Fa, valueAtCoordinate as Fc, DBPROXY_TAG_OPTIONS as Fi, isAccessDenied$1 as Fl, getCurrentProducerRegions as Fn, isReadableResourceEntry as Fo, replacedDeleteFailureVerdict as Fr, withheldAccountClause as Fs, nestedChildStackName as Ft, redactedDockerCause as Fu, readTtlSpec as G, assertFlagRoleArn as Ga, logOnlyValueCount as Gc, ccBrokenReason as Gi, hasUnverifiableParameterRefusal as Gl, nameScopeOf as Gn, malformedOrphansRefusalMessage as Go, isSupersededResourceRecord as Gr, isStatefulRecreateTargetForReplace as Gs, dropFailedHint as Gt, loadCdkJson as Gu, isTtlAlreadyDisabled as H, recordedOutputReferenceRegions as Ha, createUnionSecretMasker as Hc, stringifyIfAssigned as Hi, exportNamesCarriedFrom as Hl, updatePartialReason as Hn, malformedOrphanRecordsRefusalMessage as Ho, addSuperseded as Hr, findReplacedReadersOfRecreateTargets as Hs, withNestedStackContext as Ht, synthesisStatusMessage as Hu, DELETE_INDEX_WAIT_PROCEED_NOTE as I, s3BucketWebsiteUrl as Ia, liveMatchesUnresolvedTokenFrame as Ic, planTagDiff as Ii, isNotImplemented as Il, inheritProducerRegions as In, malformedDriftResourcePropertiesWarning as Io, bold as Ir, findActionableSilentDrops as Is, recordDisplacedSkips as It, runDockerForeground as Iu, S3_AUTO_DELETE_OBJECTS_TAG as J, isIamRoleArn as Ja, recordLogOnlyValue as Jc, waitForLambdaFunctionActive as Ji, isReadableBag as Jl, retiredNameGenerationsLeaving as Jn, malformedOutputsWarning as Jo, supersededHeldByOtherTypeWarning as Jr, WARM_THROUGHPUT_MEMBERS as Js, loadJournaledOrphans as Jt, resolveCaptureObservedState as Ju, sendTtlWaitingOutRateLimit as K, assertSendableRoleArn as Ka, printingCorpusOf as Kc, isCustomResource as Ki, importableOutputKeys as Kl, retiredAfterRollback as Kn, malformedOrphansWarning as Ko, removeSuperseded as Kr, isStatefulRecreateTargetSync as Ks, isHandledOrphan as Kt, resolveApp as Ku, INDEX_SETTLE_POLL_INTERVAL_MS as L, resolveDynamicReferences as La, markSameGenerationBag as Lc, readTagList as Li, stackInstanceIdOf as Ll, REDACTED_DELETE_ADDRESS_SKIP_REASON as Ln, malformedExportNamesWarning as Lo, cyan as Lr, findSilentDropProperties as Ls, revertNestedChildFromJournal as Lt, runDockerStreaming as Lu, compensateRemovedDeletionProtection as M, s3BucketArn as Ma, readbackPathFor as Mc, resolveBucketRegion as Md, isRefusedByName as Mi, CrossPrefixScanCache as Ml, seedsDeleteFirstGuard as Mn, hasReadableOutputs as Mo, destroyStackRecordsView as Mr, unpreviewableOrphanRecords as Ms, displacedPhysicalIdShown as Mt, partitionSensitiveEnv as Mu, deleteBudgetKey as N, s3BucketDomainName as Na, readsNoEchoSource as Nc, markDeleteStarted as Ni, applyCrossPrefixScan as Nl, orphanNeedsIdentity as Nn, hasReadableResources as No, getStackRecords as Nr, unreadableOrphanRecords as Ns, dropSettledNestedJournals as Nt, redactDockerArgvValues as Nu, stripIndexContributorInsights as O, withoutUnsettledProperties as Oa, noEchoCoordinatesOf as Oc, resolveAssemblyPath as Od, acquireIdempotencyToken as Oi, isLockInfoExpired as Ol, recheckFailedPlan as On, accountArgs as Oo, mappingPairs as Or, repairMalformedOutputsForReadOnly as Os, keptForRetainedRecord as Ot, formatDockerLoginError as Ou, resolveDynamoDbDeleteBudgetClock as P, s3BucketDualStackDomainName as Pa, recordedNoEchoValuesOf as Pc, DBPROXY_TAGS_WHAT as Pi, crossPrefixDeniedWarning as Pl, findNestedStackTypeChanges as Pn, isReadableOrphanRecord as Po, withStackRecords as Pr, unreadableResourceEntries as Ps, getNestedRevertRun as Pt, redactedCause as Pu, markRefusedBeforeApplying as Q, callerEnvCredentials as Qa, errorCauseChain as Qc, getCurrentResourceSecrets as Qi, stackInstanceIdCarriedFrom as Ql, reachableDivergentParameters as Qn, malformedResourcesWarning as Qo, noEchoAttributeNamesOf as Qr, toFiniteNumber as Qs, chunks as Qt, resolveUseCdkBootstrapAssets as Qu, deleteTableWithIndexBusyRetry as R, producerLookupOver as Ra, redactForState as Rc, refuseMalformedDesiredTags as Ri, withStackInstanceIdWithheld as Rl, isRedactedRecordedValue as Rn, malformedExportSourceWarning as Ro, gray as Rr, unwrittenCreateOnlyReplacement as Rs, revertedNestedRowIds as Rt, warnFinchArgvExposure as Ru, indexDeclaresContributorInsights as S, INTRINSIC_KEYS as Sa, canonicalCoordinates as Sc, nullPrototypeRecord as Sd, refusesFinalSnapshot as Si, recordNoEchoParameterFreshValue as Sl, undeclaredEmptyObservedKeys as Sn, declaresNoEcho as So, hintSidesOf as Sr, refuseMalformedResourcesForDeploy as Ss, mergeNoChangeOutputs as St, resolveDockerContextDirectory as Su, readContributorInsightsSpec as T, unsettledItemsOf as Ta, maskReadbackAtCoordinates as Tc, describeFileReadFailure as Td, ledgerForStack as Ti, WHOLE_DYNAMIC_REFERENCE_PATTERN as Tl, isReplacementOrphan as Tn, STATE_RESOURCES_MALFORMED as To, withMovedTo as Tr, refuseMalformedState as Ts, planOrphanAdoption as Tt, describeDockerFailure as Tu, isTtlRateLimited as U, recordedReferenceRegions as Ua, hasMaskableValues as Uc, CC_BROKEN_REASON as Ui, hasReadableExportSet as Ul, nameGenerationCarriedFrom as Un, malformedOrphanRecordsWarning as Uo, deleteSupersededEntry as Ur, shownType as Us, deleteJournaledOrphans as Ut, getDefaultStateBucketName as Uu, waitForIndexesSettled as V, outputReferenceProvenanceOf as Va, carryLogOnlyValues as Vc, definedAttributes as Vi, describeRegionValueKind as Vl, updatePartialMessage as Vn, malformedLocalResourcesWarning as Vo, yellow as Vr, hasNoCloudControlHandlers as Vs, getCurrentNestedStackContext as Vt, Synthesizer as Vu, planTimeToLive as W, applyRoleArnIfSet as Wa, literalSplitDelimitersOf as Wc, ProviderRegistry as Wi, hasReasonlessBaselineRefusal as Wl, nameGenerationHighWaterOf as Wn, malformedOrphanRowsKeptWarning as Wo, holdsSupersededResources as Wr, MULTI_REGION_RECREATE_BLOCKED_TYPES as Ws, dropFailedCommands as Wt, getLegacyStateBucketName as Wu, isTruthyCfnBoolean as X, AWS_CREDENTIAL_ENV_KEYS as Xa, unionOfSecretBags as Xc, readsNoEchoDeleteValues as Xi, orphansCarriedFrom as Xl, computeParameterTaint as Xn, malformedResourceEntriesWarning as Xo, supersededResourcesOf as Xr, isWarmThroughputDecrease as Xs, sameJournaledOrphans as Xt, resolveStateBucketWithDefault as Xu, hasCdkAutoDeleteTag as Y, sendableAssumeRoleCommand as Ya, shareLogOnlyValues as Yc, TemplateNoEchoReresolver as Yi, orphansAfterRollback as Yl, withNameGenerationReached as Yn, malformedRenderedContainersWarning as Yo, supersededHolderOf as Yr, coerceWarmThroughput as Ys, makeForeignHolderScan as Yt, resolveSkipPrefix as Yu, getPriorAttempts as Z, applyCallerIdentityCredentials as Za, createSecretMasker as Zc, isCustomResourceType as Zi, shouldRetainResource as Zl, namesAnyDeclaredParameter as Zn, malformedResourcePropertiesWarning as Zo, withoutSuperseded as Zr, toCfnInteger as Zs, formatResourceLine as Zt, resolveStateBucketWithDefaultAndSource as Zu, streamMemberRefusals as _, isTerminationProtectionPropagationError as _a, canonicalLambdaFunctionName as _c, parseFailureDebugDetail as _d, buildFinalSnapshotIdentifier as _i, carriesSecretMask as _l, settleUnsettledPrevious as _n, refStateLookupFromResource as _o, maskingRetryLogger as _r, refuseMalformedResourceEntriesForOrphan as _s, enclosingDeadlineRemainingMs as _t, readBootstrapMarkerBody as _u, isProtectionValueActive as a, onlySecretReferencesDiffer as aa, replayWarn as ac, findLargeInlineResources as ad, journaledOrphanPrintingBag as ai, dynamicReferenceTokens as al, refactorMarkerRefusalMessage as an, isUnboundTemplateParameter as ao, secretSafeKeyDisplay as ar, refuseMalformedOrphanRecordsForDestroy as as, serviceTokenBlockingReason as at, WorkGraph as au, CONTRIBUTOR_INSIGHTS_KEY as b, reEnableInstanceApiTermination as ba, DagBuilder as bc, hasOwnKey as bd, effectiveDeletionPolicy as bi, recordMaskOnlyValuesIn as bl, equalModuloMarkedMask as bn, parameterInputsFor as bo, formatDestructiveChange as br, refuseMalformedResourcePropertiesForExport as bs, isSecretBearingReferenceString as bt, buildDenyExternalAccessPolicy as bu, DynamoDBGlobalTableProvider as c, UNSPECIFIED_SKIP_REASON as ca, requireConfigString as cc, decodeListingKey as cd, orphanRecordsPrintingBag as ci, spelledKeysOf as cl, updateRefactorMarker as cn, isImpossibleEmptyStoredAttribute as co, exportNameSecretExposure as cr, refuseMalformedOrphansForOrphan as cs, isAbsoluteAssetPath as ct, loadPublishableAssetManifest as cu, declaredStreamPolicyMember as d, deleteSkipReason as da, describeTypeWithThrottleRetry as dc, canonicalizeRegion as dd, secretNamedAttributeNamesOf as di, recordNestedStackParameterExpressions as dl, pendingMovesRefusalMessage as dn, isNamelessDynamicReferenceError as do, collectDeclaredOutputNames as dr, refuseMalformedResourceAttributesForOrphan as ds, templateIdentity as dt, BOOTSTRAP_MARKER_PREFIX as du, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as ea, coerceCfnInteger as ec, warnDeprecatedNoPrefixCliFlag as ed, noEchoExactEchoLeavesOf as ei, maskSecretsInText as el, lookupEachName as en, classifyRecordedSecretRegion as eo, WITHHELD_NAME_DISPLAY as er, malformedStateRefusalMessage as es, computeImplicitDeleteEdges as et, renderPhaseTimings as eu, declaredStreamTagsMember as f, withIndeterminateGuard as fa, withRetry as fc, derivePartitionAndUrlSuffix as fd, secretNamedRecordNeedles as fi, recoverMaskedOutput as fl, refusePendingMovesOut as fn, keepsSecretReferenceToken as fo, collectPublishedOutputNames as fr, refuseMalformedResourceEntries as fs, conditionFingerprint as ft, assertAssetBucketRegion as fu, streamDeclaresTags as g, ec2InstanceProtectionSite as ga, emrClusterInstancesReplaced as gc, describeJsonParseFailure as gd, PRE_DELETE_SNAPSHOT_TYPES as gi, splitGetAttStringForm as gl, recordAfterRollbackUpdate as gn, lacksRecordedTableArn as go, DEFAULT_RESOURCE_WARN_AFTER_MS as gr, refuseMalformedResourceEntriesForImportSave as gs, enclosingDeadlineExpired as gt, parseBootstrapMarker as gu, streamDeclaresPolicy as h, disableInstanceApiTermination as ha, ecsServiceLaunchTypeSetOrChanged as hc, processStackMessages as hd, ATOMIC_FINAL_SNAPSHOT_TYPES as hi, recordPhysicalNameCopy as hl, removeProtectionTypeList as hn, isStalePlaceholderArnAttribute as ho, DEFAULT_RESOURCE_TIMEOUT_MS as hr, refuseMalformedResourceEntriesForImport as hs, readRecordedConditionVerdicts as ht, isCrossRegionRedirect as hu, PROTECTION_PROPERTY_BY_TYPE as i, slowCcOperationTimeoutMs as ia, readConfigString as ic, MIGRATE_TMP_PREFIX as id, completedReplayEntries as ii, DYNAMIC_REFERENCE_TOKEN_SCAN as il, refactorMarkerMovesOf as in, coerceParameterTypedValue as io, secretBearingStateKeyWarning as ir, refuseMalformedOrphanRecords as is, findServiceTokenRefusals as it, stringifyValue as iu, beginDeleteWait as j, isSettledInstanceState as ja, passedNoEchoParametersOf as jc, clearBucketRegionCache as jd, extractDeploymentEventError as ji, CrossPrefixReadError as jl, resolveReplacementOldType as jn, hasReadableOrphans as jo, awaitInFlightSibling as jr, repairMalformedResourcesForReadOnly as js, displacedOpClause as jt, isMalformedEnvKey as ju, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as k, IntrinsicFunctionResolver as ka, noEchoLeavesOf as kc, injectAwsRegion as kd, DeploymentEventsReader as ki, S3StateBackend as kl, recordUnderIdIsNotOwn as kn, deployRefusesOrphanRowsReason as ko, parseMappingFile as kr, repairMalformedResourceEntriesForReadOnly as ks, recordRetainedForReadoption as kt, getDockerCmd as ku, STREAM_POLICY_KEY as l, deleteIndeterminateGuards as la, prefetchCreateOnlyPropertyPaths as lc, expectedOwnerParam as ld, secretNamePrintingBag as li, identityKeyFor as ll, hasPendingMovesOut as ln, carriesDynamicReference as lo, isWholeDynamicReferenceValue as lr, refuseMalformedOutputs as ls, listNestedTemplateRows as lt, rewriteTemplateAssetReferences as lu, reverseMapStreamPolicy as m, markWaitAbandoned as ma, dbInstanceEngineChangeIsInPlace as mc, StageLoadError as md, storedSecretNameNeedles as mi, recordAttributeIdCopy as ml, replayRollback as mn, cfnRefValueFromPhysicalId as mo, bindingSkippedOutputs as mr, refuseMalformedResourceEntriesForDestroy as ms, parentSuppliedValues as mt, getBootstrapMarkerKey as mu, recordedProtectionEvidence as n, customResourceResponseExpirationWarning as na, configIntegerRefusal as nc, CFN_TEMPLATE_BODY_LIMIT as nd, withAttemptedItemsMasked as ni, withPhysicalNameCopies as nl, readRefactorMarker as nn, producerRegionsFromState as no, exportAliasCollisionScrubWarning as nr, refuseDivergentRecordRegionForDestroy as ns, inheritedProvenanceForChildDiff as nt, AssetPublisher as nu, perType as o, unchangedBehindSecretReference as oa, requireConfigArray as oc, uploadCfnTemplate as od, maskEventTextWithBoundBags as oi, isUncertifiedBaselineMaskPosition as ol, refuseRefactorMarker as on, parameterTypeMayLoseSecretIdentity as oo, carriedExportAliasExposure as or, refuseMalformedOrphans as os, childTemplateLoader as ot, buildAssetRedirectMap as ou, planStreamMemberOps as p, isWaitAbandonedError as pa, blockDeviceMappingsDifferOnlyInDeleteOnTermination as pc, AssemblyReader as pd, stateSecretNameNeedles as pi, physicalNameCopiesOf as pl, replayFailedOperations as pn, AWS_NO_VALUE as po, isExportAliasCollision as pr, refuseMalformedResourceEntriesForDeploy as ps, conditionInputsFrom as pt, ensureAssetStorage as pu, ECR_AUTO_DELETE_IMAGES_TAG as q, explicitRoleArnOrThrow as qa, recordLogOnlyParameterValue as qc, wouldReturnToSdkProvider as qi, importableOutputs as ql, retiredNameGenerationsAfter as qn, malformedOutputsRefusalMessage as qo, supersededAfterRollback as qr, renderStatefulReason as qs, journaledOrphanLines as qt, resolveAutoAssetStorage as qu, recordedProtectionNote as r, CloudControlProvider as ra, configStringRefusal as rc, CFN_TEMPLATE_URL_LIMIT as rd, createReadOnlyAttributeHealerFactory as ri, withoutPhysicalNameCopies as rl, readRefactorMarkerOnce as rn, regionLessSecretName as ro, secretBearing as rr, refuseMalformedNestedChildOutputs as rs, deferredServiceTokenWarning as rt, isSensitiveAttributeName as ru, readProtection as s, RollbackInlinePolicyWriters as sa, requireConfigObject as sc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as sd, namingSecretsWithRecordedNoEcho as si, pathCrossesDottedKey as sl, sameMove as sn, getAccountInfo as so, exportNameNoEchoParameters as sr, refuseMalformedOrphansForDestroy as ss, findNestedTemplateTreeDefect as st, createAssetRedirectResolver as su, DeployEngine as t, applyCustomResourceResponseExpiration as ta, configBooleanRefusal as tc, ssmResolvedValueType as td, noEchoParameterNamesOf as ti, scrubResourceRecord as tl, withApiLimit as tn, classifyReplaySecretRegion as to, displayTextOrWithheld as tr, previewableOrphanRecords as ts, crossStackOutputProvenanceSource as tt, timePhase as tu, STREAM_TAGS_KEY as u, deleteLeftInPlace as ua, templateResourceTypes as uc, PARTITION_TABLE as ud, secretNamePrintingBags as ui, inheritNestedStackParameterAssociations as ul, pendingMovesOutOf as un, carriesFetchableDynamicReference as uo, noEchoParameterValueSeed as ur, refuseMalformedOutputsForDestroy as us, renderNestedTemplateTreeDefect as ut, AssetModeResolver as uu, streamPolicyMatchesDeclared as v, observeThenDisableInstanceApiTermination as va, lambdaFunctionNameForMask as vc, utf8ByteLength as vd, ccRoutedFinalSnapshotError as vi, provenPublicValue as vl, withUnprovenUnsettled as vn, parseWebACLArn as vo, constructPathOf as vr, refuseMalformedResourcePropertiesForDestroy as vs, withResourceDeadline as vt, validateAssetBucketName as vu, planIndexContributorInsightsOps as w, unsettledItemsField as wa, maskAtCoordinates as wc, absoluteAssemblyPathEscape as wd, earliestDefined as wi, wholeStringLeavesOf as wl, isJournaledOrphan as wn, STATE_REGION_DIVERGED as wo, rollbackOrphanIds as wr, refuseMalformedResourcesForExport as ws, makeSiblingClaimReader as wt, describeDockerExecFailure as wu, contributorInsightsRefusals as x, DiffCalculator as xa, TemplateParser as xc, hasPlainPrototype$1 as xd, isFinalSnapshotError as xi, recordNoEchoAttributeValues as xl, equalModuloMask as xn, passedParameterClassesOf as xo, findRefactorHints as xr, refuseMalformedResourcePropertiesForOrphan as xs, keptWholeReasonText as xt, buildDockerImage as xu, streamTagsMatchDeclared as y, reDisableInstanceApiTermination as ya, sameLambdaFunctionAddress as yc, defineOwnKey as yd, createPreDeleteFinalSnapshot as yi, recordMaskOnlyValue as yl, calculateResourceDrift as yn, withSharedDrainBudget as yo, findDestructiveChanges as yr, refuseMalformedResourcePropertiesForDrift as ys, diffSecurity as yt, validateContainerRepoName as yu, maskedLogger as z, refuseUnreadableCdkCrossAccountRefs as za, recordReferenceProvenanceEntry as zc, tagMapAsList as zi, splitImportedOps as zl, redactedDeleteAddressFields as zn, malformedLocalOutputsWarning as zo, green as zr, withoutSilentDropProperties as zs, withNestedRevertRun as zt, AssetManifestLoader as zu };
|
|
55277
|
+
//# sourceMappingURL=deploy-engine-BF5exXUb.js.map
|