@go-to-k/cdkd 0.268.1 → 0.268.3
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/README.md +21 -9
- package/dist/{asg-provider-_vnp1pfL.js → asg-provider-bxS6B6Ja.js} +2 -2
- package/dist/{asg-provider-_vnp1pfL.js.map → asg-provider-bxS6B6Ja.js.map} +1 -1
- package/dist/cli.js +152 -40
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-A2CeJkZr.js → deploy-engine-DEi5-8x-.js} +117 -41
- package/dist/deploy-engine-DEi5-8x-.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/deploy-engine-A2CeJkZr.js.map +0 -1
|
@@ -102,6 +102,24 @@ var SynthesisError = class SynthesisError extends CdkdError {
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
/**
|
|
105
|
+
* Control-flow signal: the user declined a pre-provisioning confirmation
|
|
106
|
+
* prompt, so the deploy must unwind WITHOUT being reported as a failure.
|
|
107
|
+
*
|
|
108
|
+
* Raised from `DeployEngineOptions.onCurrentStateLoaded` (the post-lock
|
|
109
|
+
* gate the `--prefix-user-supplied-names` migration check runs in). The
|
|
110
|
+
* engine does not catch it — it propagates out of `deploy()` through the
|
|
111
|
+
* usual `finally`, which releases the lock and stops the renderer — and the
|
|
112
|
+
* deploy CLI catches it and returns quietly instead of logging an error or
|
|
113
|
+
* recording a FAILED run event. Nothing has been provisioned at that point.
|
|
114
|
+
*/
|
|
115
|
+
var DeployCancelledError = class DeployCancelledError extends CdkdError {
|
|
116
|
+
constructor(message = "Deployment cancelled by user") {
|
|
117
|
+
super(message, "DEPLOY_CANCELLED");
|
|
118
|
+
this.name = "DeployCancelledError";
|
|
119
|
+
Object.setPrototypeOf(this, DeployCancelledError.prototype);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
105
123
|
* Asset errors
|
|
106
124
|
*/
|
|
107
125
|
var AssetError = class AssetError extends CdkdError {
|
|
@@ -7946,6 +7964,7 @@ async function withRetry(operation, logicalId, opts = {}) {
|
|
|
7946
7964
|
const defaultSchedule = opts.maxRetries === void 0 && opts.initialDelayMs === void 0 && opts.maxDelayMs === void 0 && opts.isRetryable === void 0;
|
|
7947
7965
|
const attemptCeiling = defaultSchedule ? Math.max(maxRetries, 26) : maxRetries;
|
|
7948
7966
|
let lastError;
|
|
7967
|
+
let sawPropagation = false;
|
|
7949
7968
|
for (let attempt = 0; attempt <= attemptCeiling; attempt++) try {
|
|
7950
7969
|
return await operation();
|
|
7951
7970
|
} catch (error) {
|
|
@@ -7953,7 +7972,8 @@ async function withRetry(operation, logicalId, opts = {}) {
|
|
|
7953
7972
|
const message = error instanceof Error ? error.message : String(error);
|
|
7954
7973
|
const retryable = opts.isRetryable ? opts.isRetryable(message, error) : isRetryableTransientError(error, message);
|
|
7955
7974
|
const propagation = defaultSchedule && isIamPropagationError(message);
|
|
7956
|
-
|
|
7975
|
+
if (propagation) sawPropagation = true;
|
|
7976
|
+
const attemptLimit = sawPropagation ? 26 : maxRetries;
|
|
7957
7977
|
if (!retryable || attempt >= attemptLimit) throw error;
|
|
7958
7978
|
const delay = propagation ? Math.min(250 * Math.pow(2, attempt), IAM_PROPAGATION_MAX_DELAY_MS) : Math.min(initialDelayMs * Math.pow(2, attempt), maxDelayMs);
|
|
7959
7979
|
opts.logger?.debug(` ⏳ Retrying ${logicalId} in ${delay / 1e3}s (attempt ${attempt + 1}/${attemptLimit}) - ${message}`);
|
|
@@ -8020,6 +8040,30 @@ function describeTypeWithThrottleRetry(resourceType, client) {
|
|
|
8020
8040
|
...describeTypeRetryDelays.sleep ? { sleep: describeTypeRetryDelays.sleep } : {}
|
|
8021
8041
|
});
|
|
8022
8042
|
}
|
|
8043
|
+
/**
|
|
8044
|
+
* Resource types that have NO CloudFormation registry schema, so
|
|
8045
|
+
* `DescribeType` can only ever fail for them:
|
|
8046
|
+
*
|
|
8047
|
+
* - `Custom::<Name>` — the two-segment form the `TypeName` parameter
|
|
8048
|
+
* rejects outright at validation time.
|
|
8049
|
+
* - `AWS::CloudFormation::CustomResource` — the generic custom-resource
|
|
8050
|
+
* alias; replacement semantics are handler-driven, not schema-driven.
|
|
8051
|
+
* - `AWS::CDK::Metadata` — the CDK-injected construct-tree marker. It is a
|
|
8052
|
+
* synth-only sentinel that cdkd never provisions (the deploy pre-flight,
|
|
8053
|
+
* the diff, `synth`, `import` and `export` all filter it), yet the
|
|
8054
|
+
* create-only schema PREFETCH iterated the raw template type set and so
|
|
8055
|
+
* issued a guaranteed-to-fail `DescribeType` for it on EVERY deploy —
|
|
8056
|
+
* burning one API call and emitting a "Grant cloudformation:DescribeType"
|
|
8057
|
+
* warning that named a pseudo-resource the user cannot act on.
|
|
8058
|
+
*
|
|
8059
|
+
* Callers must short-circuit on this predicate rather than paying the round
|
|
8060
|
+
* trip plus the misleading warning. Kept next to
|
|
8061
|
+
* {@link describeTypeWithThrottleRetry} so every DescribeType-backed
|
|
8062
|
+
* resolver shares ONE list instead of re-deriving its own inline literal.
|
|
8063
|
+
*/
|
|
8064
|
+
function hasNoRegistrySchema(resourceType) {
|
|
8065
|
+
return resourceType === "AWS::CDK::Metadata" || resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::");
|
|
8066
|
+
}
|
|
8023
8067
|
|
|
8024
8068
|
//#endregion
|
|
8025
8069
|
//#region src/provisioning/create-only-properties.ts
|
|
@@ -8083,7 +8127,7 @@ const createOnlyPropertiesCache = /* @__PURE__ */ new Map();
|
|
|
8083
8127
|
* (a transient throttle must not poison the deploy's replacement detection).
|
|
8084
8128
|
*/
|
|
8085
8129
|
function getCreateOnlyPropertyPaths(resourceType) {
|
|
8086
|
-
if (
|
|
8130
|
+
if (hasNoRegistrySchema(resourceType)) return Promise.resolve([]);
|
|
8087
8131
|
const cached = createOnlyPropertiesCache.get(resourceType);
|
|
8088
8132
|
if (cached) return cached;
|
|
8089
8133
|
const entry = fetchCreateOnlyPropertyPaths(resourceType).catch((error) => {
|
|
@@ -8096,15 +8140,6 @@ function getCreateOnlyPropertyPaths(resourceType) {
|
|
|
8096
8140
|
return entry;
|
|
8097
8141
|
}
|
|
8098
8142
|
/**
|
|
8099
|
-
* True for the two custom-resource type shapes CloudFormation accepts:
|
|
8100
|
-
* `AWS::CloudFormation::CustomResource` and anything under the `Custom::`
|
|
8101
|
-
* prefix. Neither has a registry schema, so schema-driven lookups
|
|
8102
|
-
* (DescribeType) must be skipped for them.
|
|
8103
|
-
*/
|
|
8104
|
-
function isCustomResourceType(resourceType) {
|
|
8105
|
-
return resourceType === "AWS::CloudFormation::CustomResource" || resourceType.startsWith("Custom::");
|
|
8106
|
-
}
|
|
8107
|
-
/**
|
|
8108
8143
|
* Decide whether a change to top-level property `topLevelKey` requires
|
|
8109
8144
|
* replacement per the schema's createOnly paths.
|
|
8110
8145
|
*
|
|
@@ -11340,6 +11375,7 @@ const writeOnlyPropertiesCache = /* @__PURE__ */ new Map();
|
|
|
11340
11375
|
* DescribeType (a transient throttle must not poison the deploy).
|
|
11341
11376
|
*/
|
|
11342
11377
|
function getTopLevelWriteOnlyProperties(resourceType) {
|
|
11378
|
+
if (hasNoRegistrySchema(resourceType)) return Promise.resolve(/* @__PURE__ */ new Set());
|
|
11343
11379
|
const cached = writeOnlyPropertiesCache.get(resourceType);
|
|
11344
11380
|
if (cached) return cached;
|
|
11345
11381
|
const entry = fetchTopLevelWriteOnlyProperties(resourceType).catch((error) => {
|
|
@@ -11905,7 +11941,7 @@ var CloudControlProvider = class {
|
|
|
11905
11941
|
this.logger.debug(`Deleting resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
|
|
11906
11942
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
11907
11943
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
11908
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
11944
|
+
const { ASGProvider } = await import("./asg-provider-bxS6B6Ja.js").then((n) => n.n);
|
|
11909
11945
|
await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
|
|
11910
11946
|
return;
|
|
11911
11947
|
}
|
|
@@ -17617,7 +17653,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
17617
17653
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
17618
17654
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
17619
17655
|
function getCdkdVersion() {
|
|
17620
|
-
return "0.268.
|
|
17656
|
+
return "0.268.3";
|
|
17621
17657
|
}
|
|
17622
17658
|
/**
|
|
17623
17659
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -17721,11 +17757,33 @@ var DeploymentEventsStore = class {
|
|
|
17721
17757
|
}
|
|
17722
17758
|
if (this.events.length === 0) return;
|
|
17723
17759
|
await this.enqueueWrite(async () => {
|
|
17760
|
+
const indexRead = this.readIndexRuns();
|
|
17761
|
+
indexRead.catch(() => {});
|
|
17724
17762
|
await this.doFlush();
|
|
17725
|
-
|
|
17726
|
-
await this.pruneSupersededRunFiles(keptRunIds);
|
|
17763
|
+
await this.writeIndexAndPrune(result, await indexRead);
|
|
17727
17764
|
});
|
|
17728
17765
|
}
|
|
17766
|
+
/**
|
|
17767
|
+
* Second half of {@link finalize}'s write: build + PUT the index, then
|
|
17768
|
+
* delete the run streams that fell out of the retained window.
|
|
17769
|
+
*
|
|
17770
|
+
* The prune's LIST is issued concurrently with the index PUT — the cutoff
|
|
17771
|
+
* is derived from `runs` (already known before the PUT), the LIST is
|
|
17772
|
+
* read-only, and the DELETE still happens strictly AFTER the PUT resolves.
|
|
17773
|
+
* So the on-S3 ordering is unchanged (a stream is only deleted once the
|
|
17774
|
+
* index that dropped it is durable); only the round trip is overlapped.
|
|
17775
|
+
*/
|
|
17776
|
+
async writeIndexAndPrune(result, existingRuns) {
|
|
17777
|
+
const { key, file, runs } = this.buildIndexUpdate(result, existingRuns);
|
|
17778
|
+
const keptRunIds = runs.map((r) => r.runId);
|
|
17779
|
+
const willPrune = keptRunIds.length >= 20;
|
|
17780
|
+
const dirPrefix = deploymentsDirPrefix(this.backend.prefix, this.stackName, this.region);
|
|
17781
|
+
const staleKeysRead = willPrune ? this.backend.listRawKeys(dirPrefix) : void 0;
|
|
17782
|
+
staleKeysRead?.catch(() => {});
|
|
17783
|
+
await this.backend.putRawObject(key, JSON.stringify(file, null, 2));
|
|
17784
|
+
if (!staleKeysRead) return;
|
|
17785
|
+
await this.pruneSupersededRunFiles(keptRunIds, dirPrefix, await staleKeysRead);
|
|
17786
|
+
}
|
|
17729
17787
|
/** Await any in-flight async flushes (used by tests). */
|
|
17730
17788
|
async drain() {
|
|
17731
17789
|
await this.writeChain;
|
|
@@ -17756,27 +17814,40 @@ var DeploymentEventsStore = class {
|
|
|
17756
17814
|
this.persistedCount = snapshotCount;
|
|
17757
17815
|
}
|
|
17758
17816
|
/**
|
|
17759
|
-
*
|
|
17760
|
-
* the
|
|
17761
|
-
* write
|
|
17762
|
-
*
|
|
17817
|
+
* READ half of the index read-modify-write. Returns the currently indexed
|
|
17818
|
+
* run summaries, or an empty list when the index is absent / corrupt /
|
|
17819
|
+
* unreadable (in which case the write half rebuilds from this run alone —
|
|
17820
|
+
* the .jsonl files remain readable directly via `cdkd events --run`).
|
|
17763
17821
|
*
|
|
17764
|
-
*
|
|
17765
|
-
*
|
|
17766
|
-
*
|
|
17822
|
+
* Split out of the former single `updateIndex` so {@link finalize} can
|
|
17823
|
+
* issue it CONCURRENTLY with the event-stream flush: the two touch
|
|
17824
|
+
* different objects and the read does not depend on the flush.
|
|
17767
17825
|
*/
|
|
17768
|
-
async
|
|
17826
|
+
async readIndexRuns() {
|
|
17769
17827
|
const key = deploymentEventsIndexKey(this.backend.prefix, this.stackName, this.region);
|
|
17770
|
-
let existingRuns = [];
|
|
17771
17828
|
try {
|
|
17772
17829
|
const raw = await this.backend.getRawObject(key);
|
|
17773
17830
|
if (raw !== null) {
|
|
17774
17831
|
const parsed = JSON.parse(raw);
|
|
17775
|
-
if (Array.isArray(parsed.runs))
|
|
17832
|
+
if (Array.isArray(parsed.runs)) return parsed.runs;
|
|
17776
17833
|
}
|
|
17777
17834
|
} catch (err) {
|
|
17778
17835
|
this.logger.debug(`Deployment-events index unreadable, rewriting: ${err instanceof Error ? err.message : String(err)}`);
|
|
17779
17836
|
}
|
|
17837
|
+
return [];
|
|
17838
|
+
}
|
|
17839
|
+
/**
|
|
17840
|
+
* MODIFY half of the index read-modify-write (pure): prepend this run's
|
|
17841
|
+
* summary to `existingRuns`, truncated to the last
|
|
17842
|
+
* {@link DEPLOYMENT_EVENTS_MAX_INDEX_RUNS} runs. No optimistic locking —
|
|
17843
|
+
* last-writer-wins (documented trade-off; the per-run `.jsonl` files are
|
|
17844
|
+
* the source of truth).
|
|
17845
|
+
*
|
|
17846
|
+
* `runs` (newest-first) doubles as the retained-run window that
|
|
17847
|
+
* {@link pruneSupersededRunFiles} bounds the `.jsonl` files to.
|
|
17848
|
+
*/
|
|
17849
|
+
buildIndexUpdate(result, existingRuns) {
|
|
17850
|
+
const key = deploymentEventsIndexKey(this.backend.prefix, this.stackName, this.region);
|
|
17780
17851
|
const runs = [{
|
|
17781
17852
|
runId: this.runId,
|
|
17782
17853
|
command: this.command,
|
|
@@ -17786,15 +17857,17 @@ var DeploymentEventsStore = class {
|
|
|
17786
17857
|
result,
|
|
17787
17858
|
eventCount: this.persistedCount
|
|
17788
17859
|
}, ...existingRuns.filter((r) => r.runId !== this.runId)].slice(0, 20);
|
|
17789
|
-
|
|
17790
|
-
|
|
17791
|
-
|
|
17792
|
-
|
|
17793
|
-
|
|
17794
|
-
|
|
17860
|
+
return {
|
|
17861
|
+
key,
|
|
17862
|
+
file: {
|
|
17863
|
+
indexVersion: 1,
|
|
17864
|
+
stackName: this.stackName,
|
|
17865
|
+
region: this.region,
|
|
17866
|
+
runs,
|
|
17867
|
+
lastModified: Date.now()
|
|
17868
|
+
},
|
|
17869
|
+
runs
|
|
17795
17870
|
};
|
|
17796
|
-
await this.backend.putRawObject(key, JSON.stringify(file, null, 2));
|
|
17797
|
-
return runs.map((r) => r.runId);
|
|
17798
17871
|
}
|
|
17799
17872
|
/**
|
|
17800
17873
|
* Self-bounding prune (issue #885): delete `{runId}.jsonl` streams that
|
|
@@ -17811,12 +17884,15 @@ var DeploymentEventsStore = class {
|
|
|
17811
17884
|
* runs finalized while it ran — an extreme edge that self-heals anyway,
|
|
17812
17885
|
* since the whole JSONL body is re-PUT on that run's next flush / finalize
|
|
17813
17886
|
* (S3 has no append; each flush rewrites the full stream).
|
|
17887
|
+
*
|
|
17888
|
+
* `dirPrefix` + `keys` are supplied by the caller so the LIST can be
|
|
17889
|
+
* overlapped with the index PUT (see {@link writeIndexAndPrune}); the
|
|
17890
|
+
* DELETE this method issues still runs strictly after that PUT.
|
|
17814
17891
|
*/
|
|
17815
|
-
async pruneSupersededRunFiles(keptRunIds) {
|
|
17892
|
+
async pruneSupersededRunFiles(keptRunIds, dirPrefix, keys) {
|
|
17816
17893
|
if (keptRunIds.length < 20) return;
|
|
17817
17894
|
const cutoff = keptRunIds.reduce((min, id) => id < min ? id : min, keptRunIds[0]);
|
|
17818
|
-
const
|
|
17819
|
-
const stale = (await this.backend.listRawKeys(dirPrefix)).filter((k) => {
|
|
17895
|
+
const stale = keys.filter((k) => {
|
|
17820
17896
|
const runId = runIdFromJsonlKey(k, dirPrefix);
|
|
17821
17897
|
return runId !== null && runId < cutoff;
|
|
17822
17898
|
});
|
|
@@ -18426,7 +18502,7 @@ var DeployEngine = class {
|
|
|
18426
18502
|
async doDeploy(stackName, template) {
|
|
18427
18503
|
const startTime = Date.now();
|
|
18428
18504
|
this.logger.debug(`Starting deployment for stack: ${stackName}`);
|
|
18429
|
-
for (const type of new Set(Object.values(template.Resources).map((r) => r.Type))) getCreateOnlyPropertyPaths(type).catch(() => {});
|
|
18505
|
+
for (const type of new Set(Object.values(template.Resources).map((r) => r.Type).filter((type) => !hasNoRegistrySchema(type)))) getCreateOnlyPropertyPaths(type).catch(() => {});
|
|
18430
18506
|
await this.lockManager.acquireLockWithRetry(stackName, this.stackRegion, void 0, "deploy");
|
|
18431
18507
|
const renderer = getLiveRenderer();
|
|
18432
18508
|
renderer.start();
|
|
@@ -18453,6 +18529,7 @@ var DeployEngine = class {
|
|
|
18453
18529
|
const currentEtag = currentStateData?.etag;
|
|
18454
18530
|
const migrationPending = currentStateData?.migrationPending ?? false;
|
|
18455
18531
|
this.logger.debug(`Loaded current state: ${Object.keys(currentState.resources).length} resources`);
|
|
18532
|
+
if (this.options.onCurrentStateLoaded) await this.options.onCurrentStateLoaded(stackName, currentStateData?.state);
|
|
18456
18533
|
try {
|
|
18457
18534
|
const journal = await this.stateBackend.loadRollbackJournal(stackName, this.stackRegion);
|
|
18458
18535
|
if (journal && journal.segments.length > 0) {
|
|
@@ -18566,8 +18643,7 @@ var DeployEngine = class {
|
|
|
18566
18643
|
await this.drainObservedCaptures(newState.resources);
|
|
18567
18644
|
const newEtag = await this.stateBackend.saveState(stackName, this.stackRegion, this.withParentInfo(newState));
|
|
18568
18645
|
this.logger.debug(`State saved (ETag: ${newEtag})`);
|
|
18569
|
-
await this.deleteRollbackJournalBestEffort(stackName);
|
|
18570
|
-
if (this.exportIndexStore) await this.exportIndexStore.updateForStack(stackName, this.stackRegion, newState.outputs ?? {});
|
|
18646
|
+
await Promise.all([this.deleteRollbackJournalBestEffort(stackName), this.exportIndexStore ? this.exportIndexStore.updateForStack(stackName, this.stackRegion, newState.outputs ?? {}) : Promise.resolve()]);
|
|
18571
18647
|
const durationMs = Date.now() - startTime;
|
|
18572
18648
|
const unchangedCount = this.diffCalculator.filterByType(changes, "NO_CHANGE").length + actualCounts.skipped;
|
|
18573
18649
|
return {
|
|
@@ -19622,5 +19698,5 @@ var DeployEngine = class {
|
|
|
19622
19698
|
};
|
|
19623
19699
|
|
|
19624
19700
|
//#endregion
|
|
19625
|
-
export { WorkGraph as $,
|
|
19626
|
-
//# sourceMappingURL=deploy-engine-
|
|
19701
|
+
export { WorkGraph as $, LockError as $t, slowCcOperationTimeoutMs as A, warnDeprecatedNoPrefixCliFlag as At, applyRoleArnIfSet as B, resolveBucketRegion as Bt, yellow as C, resolveAutoAssetStorage as Ct, ProviderRegistry as D, resolveStateBucketWithDefaultAndSource as Dt, clearOnUpdateRemoval as E, resolveStateBucketWithDefault as Et, refStateLookupFromResource as F, uploadCfnTemplate as Ft, DagBuilder as G, AssetError as Gt, describeTypeWithThrottleRetry as H, getAwsClients as Ht, WAFv2WebACLProvider as I, expectedOwnerParam as It, S3StateBackend as J, DependencyError as Jt, TemplateParser as K, CdkdError as Kt, normalizeAwsTagsToCfn as L, AssemblyReader as Lt, isTerminationProtectionPropagationError as M, CFN_TEMPLATE_URL_LIMIT as Mt, IntrinsicFunctionResolver as N, MIGRATE_TMP_PREFIX as Nt, findActionableSilentDrops as O, resolveUseCdkBootstrapAssets as Ot, cfnRefValueFromPhysicalId as P, findLargeInlineResources as Pt, stringifyValue as Q, LocalStartServiceError as Qt, resolveExplicitPhysicalId as R, processStackMessages as Rt, red as S, resolveApp as St, collectInlinePolicyNamesManagedBySiblings as T, resolveSkipPrefix as Tt, withRetry as U, resetAwsClients as Ut, DiffCalculator as V, AwsClients as Vt, isRetryableTransientError as W, setAwsClients as Wt, shouldRetainResource as X, LocalInvokeBuildError as Xt, rebuildClientForBucketRegion as Y, DeployCancelledError as Yt, AssetPublisher as Z, LocalMigrateError as Zt, formatResourceLine as _, getDockerImageBySourceHash as _t, DeploymentEventsStore as a, ResourceUpdateNotSupportedError as an, BOOTSTRAP_MARKER_PREFIX as at, gray as b, getDefaultStateBucketName as bt, replayFailedOperations as c, StateError as cn, parseBootstrapMarker as ct, IMPLICIT_DELETE_DEPENDENCIES as d, isCdkdError as dn, buildDockerImage as dt, MissingCdkCliError as en, buildAssetRedirectMap as et, computeImplicitDeleteEdges as f, normalizeAwsError as fn, formatDockerLoginError as ft, renderStatefulReason as g, AssetManifestLoader as gt, isStatefulRecreateTargetSync as h, runDockerStreaming as ht, DeploymentEventsReader as i, ResourceTimeoutError as in, AssetModeResolver as it, disableInstanceApiTermination as j, CFN_TEMPLATE_BODY_LIMIT as jt, CloudControlProvider as k, stateBucketExistenceConfirmed as kt, replayRollback as l, SynthesisError as ln, validateAssetBucketName as lt, MULTI_REGION_RECREATE_BLOCKED_TYPES as m, __exportAll as mn, runDockerForeground as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, PartialFailureError as nn, loadPublishableAssetManifest as nt, planFailedOps as o, StackHasActiveImportsError as on, ensureAssetStorage as ot, extractDeploymentEventError as p, withErrorHandling as pn, getDockerCmd as pt, LockManager as q, ConfigError as qt, DeployEngine as r, ProvisioningError as rn, rewriteTemplateAssetReferences as rt, planRollback as s, StackTerminationProtectionError as sn, getBootstrapMarkerKey as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, NestedStackChildDirectDestroyError as tn, createAssetRedirectResolver as tt, withResourceDeadline as u, formatError as un, validateContainerRepoName as ut, bold as v, Synthesizer as vt, IAMRoleProvider as w, resolveCaptureObservedState as wt, green as x, getLegacyStateBucketName as xt, cyan as y, synthesisStatusMessage as yt, assertRegionMatch as z, clearBucketRegionCache as zt };
|
|
19702
|
+
//# sourceMappingURL=deploy-engine-DEi5-8x-.js.map
|