@go-to-k/cdkd 0.284.19 → 0.284.21

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.
@@ -1237,6 +1237,27 @@ var aws_clients_exports = /* @__PURE__ */ __exportAll({
1237
1237
  /**
1238
1238
  * AWS clients manager
1239
1239
  */
1240
+ /**
1241
+ * {@link canonicalizeRegion}'s body, inlined.
1242
+ *
1243
+ * This module may NOT import it — `scripts/audit-provider-coverage.ts` runs
1244
+ * under `node` with native type stripping and imports this file as
1245
+ * `'../src/utils/aws-clients.ts'`, and Node resolves relative specifiers
1246
+ * LITERALLY: it does not rewrite `.js` to `.ts` the way TypeScript does at emit
1247
+ * time. So a `./aws-partition.js` import here is fine for the bundle and fails
1248
+ * the script with `ERR_MODULE_NOT_FOUND` (which is exactly how this was found —
1249
+ * 32 `gen-nested-key-coverage` cases went red on the first cut of issue #2065).
1250
+ * That constraint had never been written down, because until now this file
1251
+ * happened to have NO relative import at all; the script's own import carries
1252
+ * the other half of the note.
1253
+ *
1254
+ * `tests/unit/utils/aws-clients-region-fold.test.ts` fences BOTH halves: that
1255
+ * this stays byte-equivalent to `canonicalizeRegion` over a table of spellings,
1256
+ * and that this file gains no relative import that would break the script.
1257
+ */
1258
+ function foldRegion(region) {
1259
+ return region.toLowerCase();
1260
+ }
1240
1261
  var AwsClients = class AwsClients {
1241
1262
  s3Client;
1242
1263
  cloudControlClient;
@@ -1262,7 +1283,10 @@ var AwsClients = class AwsClients {
1262
1283
  lambdaMicrovmsClient;
1263
1284
  config;
1264
1285
  constructor(config = {}) {
1265
- this.config = config;
1286
+ this.config = {
1287
+ ...config,
1288
+ ...config.region !== void 0 && { region: foldRegion(config.region) }
1289
+ };
1266
1290
  }
1267
1291
  get clientOptions() {
1268
1292
  return {
@@ -10464,8 +10488,86 @@ function isKnownSecretExpression(expression, secretExpressions) {
10464
10488
  return expression.startsWith("{{resolve:secretsmanager:") || secretExpressions.has(expression) || isRecordedSecretExpression(expression);
10465
10489
  }
10466
10490
  /**
10467
- * Is this source leaf a SINGLE complete `{{resolve:...}}` token and nothing
10468
- * else?
10491
+ * The character class a `{{resolve:...}}` reference's INNER text is built from,
10492
+ * and the SINGLE SOURCE OF TRUTH every dynamic-reference predicate in cdkd
10493
+ * derives from (issue
10494
+ * [#1936](https://github.com/go-to-k/cdkd/issues/1936)).
10495
+ *
10496
+ * **THE AUTHORITY IS THE RESOLVER.**
10497
+ * `IntrinsicFunctionResolver.resolveDynamicReferences`
10498
+ * (`src/deployment/intrinsic-function-resolver.ts`) scans with
10499
+ * `/\{\{resolve:([^}]+)\}\}/g`, so what cdkd will actually RESOLVE is exactly
10500
+ * `{{resolve:` followed by one or more non-`}` characters followed by `}}`.
10501
+ * A predicate that answers a different question than that scan is answering
10502
+ * about a string the resolver already substituted a value INTO, which is how a
10503
+ * leaf ends up classified as "not a token" while holding the plaintext the
10504
+ * resolver put there.
10505
+ *
10506
+ * Three sites disagreed before this constant existed, and the STRICTEST of them
10507
+ * was the one that persisted plaintext. `isSingleDynamicReferenceToken` here and
10508
+ * `isWholeDynamicReference` in `src/cli/commands/drift.ts` both spelled the
10509
+ * inner class `[^{}]*`, while `survivingDynamicReferences` (same file) spelled
10510
+ * it `[^}]+` to match the resolver. For a reference whose inner text contains a
10511
+ * `{` — a Secrets Manager JSON key or a secret name, e.g.
10512
+ * `{{resolve:secretsmanager:app/db:SecretString:my{key}}` — the resolver
10513
+ * resolves it fine, but the strict spelling said it was not a single token, so
10514
+ * `redactByPath`'s source arm refused it and on an EMPTY-map path the RESOLVED
10515
+ * PLAINTEXT was persisted verbatim. A disclosure, narrow and pre-existing.
10516
+ *
10517
+ * `cdkd scrub` is the only leaking command, and it leaks on BOTH of its walks
10518
+ * -- the second one named after the issue #2088 security review, which found
10519
+ * the first draft of this note incomplete:
10520
+ *
10521
+ * - the `properties` walk under `TEMPLATE_SOURCED_RULES`, where
10522
+ * `isKnownSecretExpression` answers true by SPELLING but the strict
10523
+ * predicate refused the leaf before it could; and
10524
+ * - the cross-generation `observedProperties` walk, whose value scan has no
10525
+ * needles (issue #1900).
10526
+ *
10527
+ * The empty map is reachable on both because `scrub.ts` resolves BEST-EFFORT
10528
+ * (a deleted secret, or a role lacking read permission on it, leaves
10529
+ * `recordedSecretValues` empty) and then records `perResourceTemplateProps`
10530
+ * UNCONDITIONALLY while recording `perResourceSecrets` only when non-empty --
10531
+ * so the position source is present with no map beside it.
10532
+ *
10533
+ * `cdkd state refresh-observed` and the deploy's `drainObservedCaptures` are
10534
+ * NOT affected: they take `STATE_SOURCED_READBACK_RULES`, which sets
10535
+ * `sourceIsSameGeneration`, so {@link refuseUncertifiedReadbackPositions}
10536
+ * restores the source even under the old strict class.
10537
+ *
10538
+ * Excluding `{` bought nothing. The mangled / concatenated shapes it might seem
10539
+ * to guard — `{{resolve:a}}{{resolve:b}}`, a spliced token — are already
10540
+ * rejected by `[^}]+` under an ANCHORED pattern, because the class cannot cross
10541
+ * the first `}`. (A claim that `[^}]+` would let `{{resolve:a}}{{resolve:b}}`
10542
+ * through circulated in review and is FALSE: that string does not match
10543
+ * `^\{\{resolve:[^}]+\}\}$` either.) The only strings the two spellings
10544
+ * classify differently are the ones with a `{` inside a single token, i.e.
10545
+ * exactly the disclosure above.
10546
+ *
10547
+ * `+` rather than `*` for the same reason: `{{resolve:}}` is not something the
10548
+ * resolver would try to resolve, so nothing here may call it a token.
10549
+ *
10550
+ * The class is exported as a STRING rather than as a finished `RegExp` because
10551
+ * three different pattern shapes are built from it — anchored, global, and
10552
+ * {@link SKELETON_WILDCARD}'s zero-or-more form — and a shared global `RegExp`
10553
+ * instance would carry `lastIndex` across callers.
10554
+ */
10555
+ const DYNAMIC_REFERENCE_INNER_CHAR = "[^}]";
10556
+ /**
10557
+ * The inner-text pattern fragment of a complete `{{resolve:...}}` reference,
10558
+ * byte-identical to the resolver's own `([^}]+)` capture. See
10559
+ * {@link DYNAMIC_REFERENCE_INNER_CHAR} for why this is one constant.
10560
+ */
10561
+ const DYNAMIC_REFERENCE_INNER = `${DYNAMIC_REFERENCE_INNER_CHAR}+`;
10562
+ /**
10563
+ * Anchored: the WHOLE string is one complete `{{resolve:...}}` token.
10564
+ *
10565
+ * A non-global `RegExp`, so `.test` carries no `lastIndex` state and the shared
10566
+ * instance is safe to reuse.
10567
+ */
10568
+ const WHOLE_DYNAMIC_REFERENCE_PATTERN = new RegExp(`^\\{\\{resolve:${DYNAMIC_REFERENCE_INNER}\\}\\}$`);
10569
+ /**
10570
+ * Is this leaf a SINGLE complete `{{resolve:...}}` token and nothing else?
10469
10571
  *
10470
10572
  * Whole-leaf substitution is only correct for that shape. A MIXED leaf --
10471
10573
  * `pre{{resolve:ssm:/public}}-{{resolve:secretsmanager:x}}post`, i.e. anything
@@ -10473,9 +10575,15 @@ function isKnownSecretExpression(expression, secretExpressions) {
10473
10575
  * scan, which rewrites just the secret substring. Substituting the whole leaf
10474
10576
  * there would re-introduce every other token in it, including a public ssm
10475
10577
  * reference the resolver deliberately left resolved (issue #1901).
10578
+ *
10579
+ * EXPORTED since issue #1936 so `src/cli/commands/drift.ts` can consume this
10580
+ * one definition instead of carrying a hand-copied twin. Its copy's own comment
10581
+ * said "copied rather than imported because that helper is module-private and
10582
+ * this file may not widen that module's exports" — widening the exports is the
10583
+ * cheaper half of that trade once the copies have provably disagreed.
10476
10584
  */
10477
10585
  function isSingleDynamicReferenceToken(value) {
10478
- return /^\{\{resolve:[^{}]*\}\}$/.test(value);
10586
+ return WHOLE_DYNAMIC_REFERENCE_PATTERN.test(value);
10479
10587
  }
10480
10588
  function isPlainObject$2(value) {
10481
10589
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -10484,14 +10592,18 @@ function isPlainObject$2(value) {
10484
10592
  * Stands in for a source part the skeleton cannot know — an `Fn::Join` element
10485
10593
  * that is itself an intrinsic, or an `Fn::Sub` `${...}` variable.
10486
10594
  *
10487
- * `[^}]*` rather than `.*` because a recorded expression's INNER text never
10488
- * contains `}`: the resolver matches them with `/\{\{resolve:([^}]+)\}\}/`, so
10489
- * the first `}` after `{{resolve:` is already the terminator. Excluding it
10490
- * means a wildcard can never swallow one token's terminator and run into the
10491
- * next, so a skeleton for ONE reference cannot match a candidate built from a
10492
- * different one.
10595
+ * Built from {@link DYNAMIC_REFERENCE_INNER_CHAR} rather than `.` because a
10596
+ * recorded expression's INNER text never contains `}`: the resolver matches
10597
+ * them with `/\{\{resolve:([^}]+)\}\}/`, so the first `}` after `{{resolve:` is
10598
+ * already the terminator. Excluding it means a wildcard can never swallow one
10599
+ * token's terminator and run into the next, so a skeleton for ONE reference
10600
+ * cannot match a candidate built from a different one.
10601
+ *
10602
+ * Zero-or-more here, unlike {@link DYNAMIC_REFERENCE_INNER}: this stands in for
10603
+ * an unknown SPAN, which may legitimately be empty (an `Fn::Join` part that
10604
+ * resolved to `''`), whereas a token with no inner text is not a token.
10493
10605
  */
10494
- const SKELETON_WILDCARD = "[^}]*";
10606
+ const SKELETON_WILDCARD = `${DYNAMIC_REFERENCE_INNER_CHAR}*`;
10495
10607
  /**
10496
10608
  * More wildcards than this and the skeleton is REFUSED outright.
10497
10609
  *
@@ -10947,9 +11059,51 @@ function subtreeHasDynamicReference(value) {
10947
11059
  if (isPlainObject$2(value)) return Object.values(value).some(subtreeHasDynamicReference);
10948
11060
  return false;
10949
11061
  }
10950
- /** Every complete `{{resolve:...}}` token inside a string. */
11062
+ /**
11063
+ * Every complete `{{resolve:...}}` token inside a string.
11064
+ *
11065
+ * This was a FOURTH spelling of the token pattern (`[^{}]*`, global) and is
11066
+ * built from {@link DYNAMIC_REFERENCE_INNER} since issue #1936, so it agrees
11067
+ * with the resolver like every other predicate here.
11068
+ *
11069
+ * EXPORTED, and `drift.ts`'s `survivingDynamicReferences` calls it rather than
11070
+ * re-spelling the scan (issue #2088 review). The character CLASS was shared
11071
+ * from #1936, but the assembled PATTERN was still byte-duplicated in the two
11072
+ * files — which is how a later flag or anchor change re-forks exactly the way
11073
+ * the four spellings did.
11074
+ *
11075
+ * The pattern is a module-level constant. An earlier revision built a fresh
11076
+ * `RegExp` per call, justified as "a shared global instance carries
11077
+ * `lastIndex` between callers" — that is FALSE for this use and was measured:
11078
+ * `String.prototype.match` with a `/g` pattern sets `lastIndex` to 0 on entry
11079
+ * and leaves it 0, so no state crosses callers. The per-call construction was
11080
+ * compiling a pattern per string leaf at the persist choke point, which walks
11081
+ * every record. Do NOT call `.exec` / `.test` on this constant — those DO
11082
+ * advance `lastIndex`, which is exactly why the shared instance is safe only
11083
+ * for `.match`.
11084
+ *
11085
+ * Widening it changes one answer, in the SAFE direction for BOTH readers.
11086
+ *
11087
+ * `drift.ts`'s `survivingDynamicReferences` is the reader that is easy to
11088
+ * forget, because it lives in another file — it feeds `isSecretBySpelling`,
11089
+ * so seeing MORE tokens can only mask more, never less. Do not shorten this
11090
+ * to "the only reader": that sentence is what a later editor uses to bound
11091
+ * the blast radius of touching the class, and getting it wrong points them
11092
+ * away from the report / `--json` / `--accept` path where an unmasked
11093
+ * `ssm-secure` survivor would surface.
11094
+ *
11095
+ * The other reader is the DECLARED direction for issue #1901:
11096
+ * {@link mixedLeafMayCarryPublicReference}, which asks whether a MIXED leaf
11097
+ * embeds a `{{resolve:ssm:` token the verdict store does not know. A token
11098
+ * carrying a `{` inside it used to be INVISIBLE here, so such a leaf was
11099
+ * always treated as secret-bearing and the source expression was substituted
11100
+ * over the resolved value. Now it is seen and classified by the same rule as
11101
+ * every other token — which, on a POPULATED map, means a genuinely public ssm
11102
+ * parameter keeps the resolved value it is supposed to keep.
11103
+ */
11104
+ const DYNAMIC_REFERENCE_TOKEN_SCAN = new RegExp(`\\{\\{resolve:${DYNAMIC_REFERENCE_INNER}\\}\\}`, "g");
10951
11105
  function dynamicReferenceTokens(value) {
10952
- return value.match(/\{\{resolve:[^{}]*\}\}/g) ?? [];
11106
+ return value.match(DYNAMIC_REFERENCE_TOKEN_SCAN) ?? [];
10953
11107
  }
10954
11108
  /**
10955
11109
  * Does this MIXED leaf embed a reference that may be PUBLIC config?
@@ -16598,7 +16752,7 @@ var CloudControlProvider = class {
16598
16752
  if (context?.finalSnapshotIdentifier !== void 0) throw new ProvisioningError(`${logicalId} (${resourceType}) requires a final snapshot (DeletionPolicy: Snapshot), but the Cloud Control API delete route has no final-snapshot parameter. Re-run with --skip-final-snapshot after snapshotting manually, or retain the resource.`, resourceType, logicalId, physicalId);
16599
16753
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
16600
16754
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
16601
- const { ASGProvider } = await import("./asg-provider-CuSoYdf6.js").then((n) => n.n);
16755
+ const { ASGProvider } = await import("./asg-provider-D5G53CUp.js").then((n) => n.n);
16602
16756
  return await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
16603
16757
  }
16604
16758
  const isProtectedEc2Instance = context?.removeProtection === true && resourceType === "AWS::EC2::Instance";
@@ -24771,7 +24925,7 @@ const FLUSH_INTERVAL_MS = 2e3;
24771
24925
  const FLUSH_EVENT_THRESHOLD = 50;
24772
24926
  /** Build-time cdkd version, with a dev fallback for non-built contexts. */
24773
24927
  function getCdkdVersion() {
24774
- return "0.284.19";
24928
+ return "0.284.21";
24775
24929
  }
24776
24930
  /**
24777
24931
  * Generate a time-sortable unique run id, e.g.
@@ -27310,5 +27464,5 @@ var DeployEngine = class {
27310
27464
  };
27311
27465
 
27312
27466
  //#endregion
27313
- export { isTerminationProtectionPropagationError as $, ResourceTimeoutError as $n, readBootstrapMarkerBody as $t, renderStatefulReason as A, canonicalizeRegion as An, INTRINSIC_KEYS as At, exportAliasCollisionScrubWarning as B, AssetError as Bn, stringifyValue as Bt, isFinalSnapshotError as C, CFN_TEMPLATE_BODY_LIMIT as Cn, s3BucketArn as Ct, extractDeploymentEventError as D, uploadCfnTemplate as Dn, s3BucketWebsiteUrl as Dt, makeCanonicalizePropertiesFn as E, findLargeInlineResources as En, s3BucketRegionalDomainName as Et, green as F, resolveBucketRegion as Fn, LockManager as Ft, collectInlinePolicyNamesManagedBySiblings as G, LocalInvokeBuildError as Gn, rewriteTemplateAssetReferences as Gt, secretBearingStateKeyWarning as H, ConfigError as Hn, buildAssetRedirectMap as Ht, red as I, AwsClients as In, S3StateBackend as It, findActionableSilentDrops as J, LockError as Jn, AssetModeResolver as Jt, clearOnUpdateRemoval as K, LocalMigrateError as Kn, escapeRegExp$1 as Kt, yellow as L, getAwsClients as Ln, rebuildClientForBucketRegion as Lt, bold as M, AssemblyReader as Mn, withRetry as Mt, cyan as N, processStackMessages as Nn, DagBuilder as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, expectedOwnerParam as On, applyRoleArnIfSet as Ot, gray as P, clearBucketRegionCache as Pn, TemplateParser as Pt, disableInstanceApiTermination as Q, ProvisioningError as Qn, parseBootstrapMarker as Qt, collectDeclaredOutputNames as R, resetAwsClients as Rn, shouldRetainResource as Rt, createPreDeleteFinalSnapshot as S, warnDeprecatedNoPrefixCliFlag as Sn, scrubResourceRecord as St, unsupportedFinalSnapshotError as T, MIGRATE_TMP_PREFIX as Tn, s3BucketDualStackDomainName as Tt, stateKeySecretExposure as U, DependencyError as Un, createAssetRedirectResolver as Ut, isExportAliasCollision as V, CdkdError as Vn, WorkGraph as Vt, IAMRoleProvider as W, DeployCancelledError as Wn, loadPublishableAssetManifest as Wt, CloudControlProvider as X, NestedStackChildDirectDestroyError as Xn, ensureAssetStorage as Xt, findSilentDropProperties as Y, MissingCdkCliError as Yn, BOOTSTRAP_MARKER_PREFIX as Yt, slowCcOperationTimeoutMs as Z, PartialFailureError as Zn, getBootstrapMarkerKey as Zt, computeImplicitDeleteEdges as _, resolveSkipPrefix as _n, STATE_SOURCED_READBACK_RULES as _t, DeploymentEventsStore as a, getDockerCmd as an, formatError as ar, normalizeAwsTagsToCfn as at, buildFinalSnapshotIdentifier as b, resolveUseCdkBootstrapAssets as bn, maskSecretsInText as bt, replayFailedOperations as c, AssetManifestLoader as cn, withErrorHandling as cr, coerceCfnBoolean as ct, updatePartialReason as d, synthesisStatusMessage as dn, isThrottlingError as dr, readConfigString as dt, validateAssetBucketName as en, ResourceUpdateNotSupportedError as er, IntrinsicFunctionResolver as et, UNSPECIFIED_SKIP_REASON as f, getDefaultStateBucketName as fn, markNonRetryable as fr, replayWarn as ft, IMPLICIT_DELETE_DEPENDENCIES as g, resolveCaptureObservedState as gn, STATE_SOURCED_CROSS_GENERATION_RULES as gt, maskingRetryLogger as h, resolveAutoAssetStorage as hn, requireConfigString as ht, DeploymentEventsReader as i, formatDockerLoginError as in, SynthesisError as ir, WAFv2WebACLProvider as it, formatResourceLine as j, derivePartitionAndUrlSuffix as jn, describeTypeWithThrottleRetry as jt, isStatefulRecreateTargetSync as k, PARTITION_TABLE as kn, DiffCalculator as kt, replayRollback as l, getDockerImageBySourceHash as ln, isMarkedNonRetryable as lr, configBooleanRefusal as lt, withResourceDeadline as m, resolveApp as mn, requireConfigObject as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, buildDenyExternalAccessPolicy as nn, StackTerminationProtectionError as nr, getAccountInfo as nt, planFailedOps as o, runDockerForeground as on, isCdkdError as or, resolveExplicitPhysicalId as ot, deleteSkipReason as p, getLegacyStateBucketName as pn, __exportAll as pr, requireConfigArray as pt, ProviderRegistry as q, LocalStartServiceError as qn, stripControlChars as qt, DeployEngine as r, buildDockerImage as rn, StateError as rr, refStateLookupFromResource as rt, planRollback as s, runDockerStreaming as sn, normalizeAwsError as sr, assertRegionMatch as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, validateContainerRepoName as tn, StackHasActiveImportsError as tr, cfnRefValueFromPhysicalId as tt, updatePartialMessage as u, Synthesizer as un, isRetryableTransientError as ur, configStringRefusal as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, resolveStateBucketWithDefault as vn, TEMPLATE_SOURCED_RULES as vt, refusesFinalSnapshot as w, CFN_TEMPLATE_URL_LIMIT as wn, s3BucketDomainName as wt, ccRoutedFinalSnapshotError as x, stateBucketExistenceConfirmed as xn, redactSecretsForState as xt, PRE_DELETE_SNAPSHOT_TYPES as y, resolveStateBucketWithDefaultAndSource as yn, createSecretMasker as yt, collectPublishedOutputNames as z, setAwsClients as zn, AssetPublisher as zt };
27314
- //# sourceMappingURL=deploy-engine-Bh_LPdju.js.map
27467
+ export { isTerminationProtectionPropagationError as $, PartialFailureError as $n, getBootstrapMarkerKey as $t, renderStatefulReason as A, expectedOwnerParam as An, applyRoleArnIfSet as At, exportAliasCollisionScrubWarning as B, resetAwsClients as Bn, shouldRetainResource as Bt, isFinalSnapshotError as C, stateBucketExistenceConfirmed as Cn, redactSecretsForState as Ct, extractDeploymentEventError as D, MIGRATE_TMP_PREFIX as Dn, s3BucketDualStackDomainName as Dt, makeCanonicalizePropertiesFn as E, CFN_TEMPLATE_URL_LIMIT as En, s3BucketDomainName as Et, green as F, processStackMessages as Fn, DagBuilder as Ft, collectInlinePolicyNamesManagedBySiblings as G, DependencyError as Gn, createAssetRedirectResolver as Gt, secretBearingStateKeyWarning as H, AssetError as Hn, stringifyValue as Ht, red as I, clearBucketRegionCache as In, TemplateParser as It, findActionableSilentDrops as J, LocalMigrateError as Jn, escapeRegExp$1 as Jt, clearOnUpdateRemoval as K, DeployCancelledError as Kn, loadPublishableAssetManifest as Kt, yellow as L, resolveBucketRegion as Ln, LockManager as Lt, bold as M, canonicalizeRegion as Mn, INTRINSIC_KEYS as Mt, cyan as N, derivePartitionAndUrlSuffix as Nn, describeTypeWithThrottleRetry as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, findLargeInlineResources as On, s3BucketRegionalDomainName as Ot, gray as P, AssemblyReader as Pn, withRetry as Pt, disableInstanceApiTermination as Q, NestedStackChildDirectDestroyError as Qn, ensureAssetStorage as Qt, collectDeclaredOutputNames as R, AwsClients as Rn, S3StateBackend as Rt, createPreDeleteFinalSnapshot as S, resolveUseCdkBootstrapAssets as Sn, maskSecretsInText as St, unsupportedFinalSnapshotError as T, CFN_TEMPLATE_BODY_LIMIT as Tn, s3BucketArn as Tt, stateKeySecretExposure as U, CdkdError as Un, WorkGraph as Ut, isExportAliasCollision as V, setAwsClients as Vn, AssetPublisher as Vt, IAMRoleProvider as W, ConfigError as Wn, buildAssetRedirectMap as Wt, CloudControlProvider as X, LockError as Xn, AssetModeResolver as Xt, findSilentDropProperties as Y, LocalStartServiceError as Yn, stripControlChars as Yt, slowCcOperationTimeoutMs as Z, MissingCdkCliError as Zn, BOOTSTRAP_MARKER_PREFIX as Zt, computeImplicitDeleteEdges as _, resolveAutoAssetStorage as _n, STATE_SOURCED_READBACK_RULES as _t, DeploymentEventsStore as a, buildDockerImage as an, StateError as ar, normalizeAwsTagsToCfn as at, buildFinalSnapshotIdentifier as b, resolveStateBucketWithDefault as bn, dynamicReferenceTokens as bt, replayFailedOperations as c, runDockerForeground as cn, isCdkdError as cr, coerceCfnBoolean as ct, updatePartialReason as d, getDockerImageBySourceHash as dn, isMarkedNonRetryable as dr, readConfigString as dt, parseBootstrapMarker as en, ProvisioningError as er, IntrinsicFunctionResolver as et, UNSPECIFIED_SKIP_REASON as f, Synthesizer as fn, isRetryableTransientError as fr, replayWarn as ft, IMPLICIT_DELETE_DEPENDENCIES as g, resolveApp as gn, STATE_SOURCED_CROSS_GENERATION_RULES as gt, maskingRetryLogger as h, getLegacyStateBucketName as hn, __exportAll as hr, requireConfigString as ht, DeploymentEventsReader as i, buildDenyExternalAccessPolicy as in, StackTerminationProtectionError as ir, WAFv2WebACLProvider as it, formatResourceLine as j, PARTITION_TABLE as jn, DiffCalculator as jt, isStatefulRecreateTargetSync as k, uploadCfnTemplate as kn, s3BucketWebsiteUrl as kt, replayRollback as l, runDockerStreaming as ln, normalizeAwsError as lr, configBooleanRefusal as lt, withResourceDeadline as m, getDefaultStateBucketName as mn, markNonRetryable as mr, requireConfigObject as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, validateAssetBucketName as nn, ResourceUpdateNotSupportedError as nr, getAccountInfo as nt, planFailedOps as o, formatDockerLoginError as on, SynthesisError as or, resolveExplicitPhysicalId as ot, deleteSkipReason as p, synthesisStatusMessage as pn, isThrottlingError as pr, requireConfigArray as pt, ProviderRegistry as q, LocalInvokeBuildError as qn, rewriteTemplateAssetReferences as qt, DeployEngine as r, validateContainerRepoName as rn, StackHasActiveImportsError as rr, refStateLookupFromResource as rt, planRollback as s, getDockerCmd as sn, formatError as sr, assertRegionMatch as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, readBootstrapMarkerBody as tn, ResourceTimeoutError as tr, cfnRefValueFromPhysicalId as tt, updatePartialMessage as u, AssetManifestLoader as un, withErrorHandling as ur, configStringRefusal as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, resolveCaptureObservedState as vn, TEMPLATE_SOURCED_RULES as vt, refusesFinalSnapshot as w, warnDeprecatedNoPrefixCliFlag as wn, scrubResourceRecord as wt, ccRoutedFinalSnapshotError as x, resolveStateBucketWithDefaultAndSource as xn, isSingleDynamicReferenceToken as xt, PRE_DELETE_SNAPSHOT_TYPES as y, resolveSkipPrefix as yn, createSecretMasker as yt, collectPublishedOutputNames as z, getAwsClients as zn, rebuildClientForBucketRegion as zt };
27468
+ //# sourceMappingURL=deploy-engine--N_xnvjI.js.map