@go-to-k/cdkd 0.290.37 → 0.290.38

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/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as isVersionOnlyInvocation, t as getCdkdVersion } from "./version-COEQwjCP.js";
2
+ import { n as isVersionOnlyInvocation, t as getCdkdVersion } from "./version-BeHfM5ow.js";
3
3
 
4
4
  //#region src/cli/pipe-close-handler.ts
5
5
  /**
@@ -74,7 +74,7 @@ async function main() {
74
74
  console.log(getCdkdVersion());
75
75
  return;
76
76
  }
77
- const { buildProgram } = await import("./program-CUOo1x11.js");
77
+ const { buildProgram } = await import("./program-Br4uc31m.js");
78
78
  const program = buildProgram();
79
79
  const args = reorderArgs(process.argv);
80
80
  await program.parseAsync(args);
@@ -1,6 +1,6 @@
1
1
  import { C as displayAwsMessage, D as truncateCodePoints, E as isPasteableIdent, S as UNRENDERABLE, T as displaySafe, d as applyDefaultNameForFallback, f as explicitNamePropertyFor, g as looksLikeCdkdGeneratedName, h as getCurrentStackName, m as generateResourceNameWithFallback, n as getLogger, p as generateResourceName, r as isStdoutReservedForPayload, s as getLiveRenderer, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS, y as withoutGeneratedFallbackName } from "./logger-BX4pJk0T.js";
2
2
  import { a as setAssumedRoleCredentials, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-BoIxyCir.js";
3
- import { t as getCdkdVersion } from "./version-COEQwjCP.js";
3
+ import { t as getCdkdVersion } from "./version-BeHfM5ow.js";
4
4
  import { AsyncLocalStorage } from "node:async_hooks";
5
5
  import { createHash, randomUUID } from "node:crypto";
6
6
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -15055,7 +15055,10 @@ function positionListByCrossStackSource(bag, source, secrets) {
15055
15055
  function redactByPath(bag, source, secrets, rules, secretExpressions, bagIsSameGeneration) {
15056
15056
  if (isDynamicReferenceString(source) && typeof bag === "string") {
15057
15057
  if (isSingleDynamicReferenceToken(source) && (rules.trustAnyExpression || isKnownSecretExpression(source, secretExpressions))) {
15058
- if (!rules.sourceIsSameGeneration && isSingleDynamicReferenceToken(bag)) return secrets.get(bag) ?? bag;
15058
+ if (!rules.sourceIsSameGeneration && isSingleDynamicReferenceToken(bag)) {
15059
+ if (!spanNamesResolvableService(bag)) return redactSecretsForState(bag, secrets);
15060
+ return secrets.get(bag) ?? bag;
15061
+ }
15059
15062
  return source;
15060
15063
  }
15061
15064
  return positionByEmbeddedSpan(bag, source, secrets, bagIsSameGeneration);
@@ -15176,7 +15179,8 @@ function subtreeHasDynamicReference(value) {
15176
15179
  * compiling a pattern per string leaf at the persist choke point, which walks
15177
15180
  * every record. Do NOT call `.exec` / `.test` on this constant — those DO
15178
15181
  * advance `lastIndex`, which is exactly why the shared instance is safe only
15179
- * for `.match`.
15182
+ * for `.match`. (ONE site does, `resolvableReferenceSpans`, and it resets
15183
+ * `lastIndex` to 0 in the statement after the `exec`.)
15180
15184
  *
15181
15185
  * Widening it changes one answer, in the SAFE direction for BOTH readers.
15182
15186
  *
@@ -15665,6 +15669,57 @@ const SECRET_BEARING_REFERENCE_PREFIXES = [
15665
15669
  "{{resolve:ssm:"
15666
15670
  ];
15667
15671
  /**
15672
+ * Does this complete `{{resolve:...}}` token name a service cdkd RESOLVES?
15673
+ *
15674
+ * The value scan spares a needle match lying inside a token, so that a
15675
+ * plaintext coinciding with a real reference's own text is not spliced into
15676
+ * it (issue #1935). That protection is owed to a REFERENCE only. A token of
15677
+ * any other service is left in place by the resolver, so text inside it is
15678
+ * ordinary persisted text, and a recorded plaintext there must be redacted
15679
+ * (issue [#2743](https://github.com/go-to-k/cdkd/issues/2743)).
15680
+ */
15681
+ function spanNamesResolvableService(token) {
15682
+ return SECRET_BEARING_REFERENCE_PREFIXES.some((prefix) => token.startsWith(prefix));
15683
+ }
15684
+ /**
15685
+ * The spans of `value` the value scan must not splice a needle into: every
15686
+ * complete token of a resolvable service.
15687
+ *
15688
+ * Two scans, unioned. The ordinary one ({@link dynamicReferenceSpans}) is
15689
+ * LEFTMOST, so behind an opener of an unresolvable service it reports one
15690
+ * outer span and never sees a REAL reference nested in it — which is exactly
15691
+ * the text this module writes when it redacts `{{resolve:<plaintext>}}` to
15692
+ * `{{resolve:{{resolve:secretsmanager:...}}}}`. Dropping that outer span
15693
+ * alone would leave the nested reference unprotected, and a later pass whose
15694
+ * map holds a needle occurring in the reference's own text (`password` is an
15695
+ * ordinary JSON key AND an ordinary secret value) would splice into it, again
15696
+ * on every pass. The second scan starts only at a resolvable-service opener,
15697
+ * so it finds the nested reference — and keeps it only when it is an
15698
+ * expression of the pass's own map (see the loop).
15699
+ *
15700
+ * On a leaf with no unresolvable-service opener the two scans report the same
15701
+ * spans, so every leaf issue #1935 protects is answered exactly as before.
15702
+ */
15703
+ function resolvableReferenceSpans(value, vouchedExpressions) {
15704
+ const spans = dynamicReferenceSpans(value).filter((span) => spanNamesResolvableService(value.slice(span.start, span.end)));
15705
+ const starts = new Set(spans.map((span) => span.start));
15706
+ for (const prefix of SECRET_BEARING_REFERENCE_PREFIXES) for (let at = value.indexOf(prefix); at >= 0; at = value.indexOf(prefix, at + 1)) {
15707
+ if (starts.has(at)) continue;
15708
+ DYNAMIC_REFERENCE_TOKEN_SCAN.lastIndex = at;
15709
+ const match = DYNAMIC_REFERENCE_TOKEN_SCAN.exec(value);
15710
+ DYNAMIC_REFERENCE_TOKEN_SCAN.lastIndex = 0;
15711
+ if (match?.index !== at) continue;
15712
+ const end = at + match[0].length;
15713
+ if (!vouchedExpressions.has(value.slice(at, end))) continue;
15714
+ spans.push({
15715
+ start: at,
15716
+ end
15717
+ });
15718
+ starts.add(at);
15719
+ }
15720
+ return spans;
15721
+ }
15722
+ /**
15668
15723
  * The prefixes whose SPELLING settles secret-ness, with no lookup and no
15669
15724
  * inference — the subset of {@link SECRET_BEARING_REFERENCE_PREFIXES} that
15670
15725
  * {@link expressionSecretIsInferred} treats as certain.
@@ -16069,7 +16124,7 @@ function deriveReadbackNeedles(bag, source, secrets, rules) {
16069
16124
  */
16070
16125
  function refuseUncertifiedSubtree(value, sourceLiterals, mark, seen = /* @__PURE__ */ new Map()) {
16071
16126
  if (typeof value === "string") {
16072
- if (isSingleDynamicReferenceToken(value) || sourceLiterals.has(value)) return value;
16127
+ if (isSingleDynamicReferenceToken(value) && spanNamesResolvableService(value) || sourceLiterals.has(value)) return value;
16073
16128
  if (value === "") return value;
16074
16129
  return mark ? POSITION_UNCERTIFIED : "***";
16075
16130
  }
@@ -16371,6 +16426,16 @@ function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RU
16371
16426
  * security review, and the reason the rule is one predicate over the whole
16372
16427
  * leaf rather than a split.
16373
16428
  * - **disjoint from every span** -> REPLACED. The ordinary embedded secret.
16429
+ * - **inside a span whose service cdkd does not resolve** -> REPLACED (issue
16430
+ * [#2743](https://github.com/go-to-k/cdkd/issues/2743)). Such a span is not
16431
+ * a reference: `{{resolve:<plaintext>}}` is what an `Fn::Sub` putting a
16432
+ * resolved secret in the SERVICE position assembled, and sparing it
16433
+ * persisted the plaintext. The result, `{{resolve:{{resolve:...}}}}`, is
16434
+ * garbage but not plaintext, the same trade as the stray-opener residual
16435
+ * below; the REAL reference nested in it is protected again
16436
+ * ({@link resolvableReferenceSpans}). The cost: an untainted look-alike
16437
+ * token whose text coincides with a recorded secret is rewritten like any
16438
+ * other text, and a replay then sends the rewritten literal.
16374
16439
  *
16375
16440
  * Scanning the WHOLE leaf in ONE pass is also what preserves what needle
16376
16441
  * PRECEDENCE there is. {@link buildNeedleRegex} sorts alternatives
@@ -16399,8 +16464,9 @@ function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RU
16399
16464
  * PLAINTEXT behind two characters any string can contain.
16400
16465
  * - **a later `}}` anywhere in the leaf** -> the opener and that `}}` form
16401
16466
  * ONE span swallowing everything between them, so a needle in that region
16402
- * is KEPT — the only shape where this rule redacts LESS than the code it
16403
- * replaced. Narrow but real, and the reachable carrier is named rather than
16467
+ * is KEPT when the opener spells a resolvable service (`{{resolve:ssm:`
16468
+ * ...; any other opener is the unresolvable-service row above) — the only
16469
+ * shape where this rule redacts LESS than the code it replaced. Narrow but real, and the reachable carrier is named rather than
16404
16470
  * waved at: the resolver shares this grammar, so such a leaf could not have
16405
16471
  * resolved on the deploy path, which leaves an `observedProperties`
16406
16472
  * READBACK (arbitrary text from AWS) as the way one arrives.
@@ -16411,8 +16477,10 @@ function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RU
16411
16477
  * contradicting this change's own "not repaired, not made worse" property.
16412
16478
  * So the residual is documented, not fixed.
16413
16479
  */
16480
+ let vouched;
16481
+ const vouchedExpressions = () => vouched ??= new Set(secrets.values());
16414
16482
  const scanLeaf = (value, needles) => {
16415
- const spans = isDynamicReferenceString(value) ? dynamicReferenceSpans(value) : [];
16483
+ const spans = isDynamicReferenceString(value) ? resolvableReferenceSpans(value, vouchedExpressions()) : [];
16416
16484
  return value.replace(needles, (match, offset) => {
16417
16485
  const end = offset + match.length;
16418
16486
  if (spans.some((span) => span.start <= offset && end <= span.end && (span.start !== offset || span.end !== end))) return match;
@@ -16423,7 +16491,7 @@ function redactSecretsForState(bag, secrets, source, rules = TEMPLATE_DERIVED_RU
16423
16491
  if (typeof value === "string") {
16424
16492
  const whole = wholeValueExpr(value);
16425
16493
  if (whole !== void 0) return whole;
16426
- if (isSingleDynamicReferenceToken(value)) return value;
16494
+ if (isSingleDynamicReferenceToken(value) && spanNamesResolvableService(value)) return value;
16427
16495
  if (!regex) return value;
16428
16496
  regex.lastIndex = 0;
16429
16497
  if (!regex.test(value)) return value;
@@ -27774,7 +27842,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
27774
27842
  /** Recursively resolve a value. */
27775
27843
  async resolveValue(value, context) {
27776
27844
  if (typeof value !== "object" || value === null) {
27777
- if (typeof value === "string" && value.includes("{{resolve:")) return await this.resolveDynamicReferences(value, context);
27845
+ if (typeof value === "string" && value.includes("{{resolve:")) return await this.resolveTemplateLeafReferences(value, context);
27778
27846
  return value;
27779
27847
  }
27780
27848
  if (Array.isArray(value)) return (await allSettledKeepingFirstRejection(value.map((v) => this.resolveValue(v, context)), (pending) => this.warnAbandonedParts(pending))).filter((v) => v !== AWS_NO_VALUE);
@@ -31082,7 +31150,30 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
31082
31150
  displayLeaf(value, context) {
31083
31151
  return this.displayMasked(this.logTextOfLeaf(value, context), context);
31084
31152
  }
31153
+ /**
31154
+ * Resolve the dynamic references of a PERSISTED string leaf: text read back
31155
+ * out of a state record, a rollback journal or a producer stack's outputs.
31156
+ * That is what every caller of this method hands it (`cdkd drift`, the
31157
+ * rollback replay, `cdkd scrub`'s per-token delegation, the cross-stack
31158
+ * re-resolution); a TEMPLATE leaf goes through {@link resolve}, which takes
31159
+ * {@link resolveTemplateLeafReferences}.
31160
+ *
31161
+ * The distinction is load-bearing for ONE arm (issue #2743). A token of a
31162
+ * service cdkd does not resolve is REFUSED on the template route when it
31163
+ * holds a secret, because leaving it would send that secret to AWS for the
31164
+ * first time. Persisted text is different on both counts: AWS already holds
31165
+ * it, so refusing buys no confidentiality, and the refusal is DETERMINISTIC
31166
+ * there -- a journal `previousState` holding `{{resolve:<plaintext>}}` beside
31167
+ * the reference that resolves to it would fail its rollback op on every
31168
+ * retry, where replaying the literal is a correct no-op. So this entry point
31169
+ * keeps the warn-and-leave for every such token, and the value scan redacts
31170
+ * whatever is persisted afterwards.
31171
+ */
31085
31172
  async resolveDynamicReferences(value, context) {
31173
+ return (await this.resolveDynamicReferencesWithLogTwin(value, value, context, void 0, true)).result;
31174
+ }
31175
+ /** A TEMPLATE string leaf: the refusing route (see {@link resolveDynamicReferences}). */
31176
+ async resolveTemplateLeafReferences(value, context) {
31086
31177
  return (await this.resolveDynamicReferencesWithLogTwin(value, value, context)).result;
31087
31178
  }
31088
31179
  /**
@@ -31105,7 +31196,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
31105
31196
  * NEEDLE match that straddles a masked span, which is why the log lines go
31106
31197
  * through `logTwinText` rather than masking the twin alone.
31107
31198
  */
31108
- async resolveDynamicReferencesWithLogTwin(value, logTwin, context, inherited) {
31199
+ async resolveDynamicReferencesWithLogTwin(value, logTwin, context, inherited, persistedText = false) {
31109
31200
  const pattern = /\{\{resolve:([^}]+)\}\}/g;
31110
31201
  let result = value;
31111
31202
  let twin = logTwin;
@@ -31136,7 +31227,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
31136
31227
  const foreign = await this.resolverForProducerRegion(regionVerdict.region, context, nameLogText(regionVerdict.region)).resolveDynamicReferencesWithLogTwin(fullMatch, fullMatch, withoutProducerRegions(context), {
31137
31228
  tokenLogText,
31138
31229
  nameLogText
31139
- });
31230
+ }, persistedText);
31140
31231
  result = result.replace(fullMatch, () => foreign.result);
31141
31232
  twin = twin.replace(fullMatch, () => foreign.twin);
31142
31233
  const [delegated] = foreign.substitutions;
@@ -31200,6 +31291,7 @@ var IntrinsicFunctionResolver = class IntrinsicFunctionResolver {
31200
31291
  isSecret = true;
31201
31292
  resolved = param.value;
31202
31293
  } else {
31294
+ if (!persistedText && (tokenLogText !== fullMatch || this.maskNeedlesForLog(fullMatch, context) !== fullMatch)) throw markNonRetryable(new IntrinsicResolutionRefusalError(`Refusing to resolve ${this.displayMasked(tokenLogText, context)}: its service is not one cdkd resolves (secretsmanager, ssm, ssm-secure), and the reference was assembled from a secret value, so leaving it as written would send that value to AWS and record it in state in the clear.`));
31203
31295
  this.logger.warn(this.displayMasked(`Unsupported dynamic reference service: ${this.displayMasked(nameLogText(String(service)), context)}`, context));
31204
31296
  complete = false;
31205
31297
  continue;
@@ -33152,7 +33244,7 @@ var CloudControlProvider = class {
33152
33244
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
33153
33245
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
33154
33246
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
33155
- const { ASGProvider } = await import("./asg-provider-CXLgFrPg.js").then((n) => n.n);
33247
+ const { ASGProvider } = await import("./asg-provider-B70ujDSS.js").then((n) => n.n);
33156
33248
  const asgProvider = new ASGProvider();
33157
33249
  return withIndeterminateGuard(await asgProvider.delete(logicalId, physicalId, resourceType, _properties, context), indeterminateGuard);
33158
33250
  }
@@ -46861,4 +46953,4 @@ var DeployEngine = class DeployEngine {
46861
46953
 
46862
46954
  //#endregion
46863
46955
  export { yellow as $, NestedStackChildDirectDestroyError as $i, identityKeyFor as $n, getDockerCmd as $r, requireConfigObject as $t, createPreDeleteFinalSnapshot as A, PARTITION_TABLE as Ai, refuseMalformedNestedChildOutputs as An, stringifyValue as Ar, carriesDynamicReference as At, isStatefulRecreateTargetSync as B, setAwsClients as Bi, findSilentDropProperties as Bn, getBootstrapMarkerKey as Br, isSettledInstanceState as Bt, namesAnyDeclaredParameter as C, CFN_TEMPLATE_URL_LIMIT as Ci, malformedOutputsWarning as Cn, importableOutputKeys as Cr, slowCcOperationTimeoutMs as Ct, PRE_DELETE_SNAPSHOT_TYPES as D, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Di, malformedStateRefusalMessage as Dn, orphansCarriedFrom as Dr, disableInstanceApiTermination as Dt, ATOMIC_FINAL_SNAPSHOT_TYPES as E, uploadCfnTemplate as Ei, malformedResourcesWarning as En, orphansAfterRollback as Er, deleteSkipReason as Et, extractDeploymentEventError as F, clearBucketRegionCache as Fi, refuseMalformedState as Fn, rewriteTemplateAssetReferences as Fr, isImpossibleEmptyStoredAttribute as Ft, toCfnInteger as G, DependencyError as Gi, STATE_SOURCED_BASELINE_RULES as Gn, validateContainerRepoName as Gr, coerceCfnBoolean as Gt, WARM_THROUGHPUT_MEMBERS as H, CdkdError as Hi, withRetry as Hn, parseBootstrapMarker as Hr, normalizeAwsTagsToCfn as Ht, makeSiblingClaimReader as I, resolveBucketRegion as Ii, repairMalformedOutputsForReadOnly as In, AssetModeResolver as Ir, isNamelessDynamicReferenceError as It, bold as J, IntrinsicResolutionRefusalError as Ji, TEMPLATE_SOURCED_RULES as Jn, describeDockerCapturedOutput as Jr, configIntegerRefusal as Jt, toFiniteNumber as K, DeployCancelledError as Ki, STATE_SOURCED_CROSS_GENERATION_RULES as Kn, buildDenyExternalAccessPolicy as Kr, coerceCfnInteger as Kt, planOrphanAdoption as L, AwsClients as Li, repairMalformedResourcePropertiesForReadOnly as Ln, BOOTSTRAP_MARKER_PREFIX as Lr, isUnboundTemplateParameter as Lt, refusesFinalSnapshot as M, derivePartitionAndUrlSuffix as Mi, refuseMalformedOutputsForDestroy as Mn, buildAssetRedirectMap as Mr, cfnRefValueFromPhysicalId as Mt, unsupportedFinalSnapshotError as N, AssemblyReader as Ni, refuseMalformedResourcePropertiesForOrphan as Nn, createAssetRedirectResolver as Nr, coerceParameterTypedValue as Nt, buildFinalSnapshotIdentifier as O, decodeListingKey as Oi, producerRecordKey as On, shouldRetainResource as Or, isTerminationProtectionPropagationError as Ot, makeCanonicalizePropertiesFn as P, processStackMessages as Pi, refuseMalformedResourcesForDestroy as Pn, loadPublishableAssetManifest as Pr, getAccountInfo as Pt, red as Q, MalformedProducerRecordRefusalError as Qi, errorCauseChain as Qn, formatDockerLoginError as Qr, requireConfigArray as Qt, MULTI_REGION_RECREATE_BLOCKED_TYPES as R, getAwsClients as Ri, repairMalformedResourcesForReadOnly as Rn, assertAssetBucketRegion as Rr, parameterTypeMayLoseSecretIdentity as Rt, computeParameterTaint as S, CFN_TEMPLATE_BODY_LIMIT as Si, malformedOutputsRefusalMessage as Sn, hasUnverifiableParameterRefusal as Sr, isWaitAbandonedError as St, resourcesNamingDeclaredParameter as T, findLargeInlineResources as Ti, malformedResourcePropertiesWarning as Tn, isReadableBag as Tr, deleteIndeterminateGuards as Tt, coerceWarmThroughput as U, ConfigError as Ui, DagBuilder as Un, readBootstrapMarkerBody as Ur, resolveExplicitPhysicalId as Ut, renderStatefulReason as V, AssetError as Vi, describeTypeWithThrottleRetry as Vn, isCrossRegionRedirect as Vr, WAFv2WebACLProvider as Vt, isWarmThroughputDecrease as W, CrossAccountSecretRefusalError as Wi, TemplateParser as Wn, validateAssetBucketName as Wr, assertRegionMatch as Wt, gray as X, LocalStartServiceError as Xi, createSecretMasker as Xn, describeDockerFailure as Xr, readConfigString as Xt, cyan as Y, LocalInvokeBuildError as Yi, carriesSecretMask as Yn, describeDockerExecFailure as Yr, configStringRefusal as Yt, green as Z, LockError as Zi, dynamicReferenceTokens as Zn, dockerSpawnEnvWithSensitive as Zr, replayWarn as Zt, bagHoldsSecretExpression as _, markRedactedCause as _a, resolveStateBucketWithDefaultAndSource as _i, hasReadableOutputs as _n, CUSTOM_RESOURCE_RESPONSE_PREFIX as _r, endCommandInterruptScope as _t, DeploymentEventsStore as a, StackTerminationProtectionError as aa, stripControlChars as ai, s3BucketDomainName as an, recoverMaskedOutput as ar, secretBearingStateKeyWarning as at, mergeNoChangeOutputs as b, safeStringify$1 as ba, warnDeprecatedNoPrefixCliFlag as bi, malformedExportSourceWarning as bn, hasReadableExportSet as br, startInterruptWatch as bt, replayFailedOperations as c, formatError as ca, Synthesizer as ci, s3BucketWebsiteUrl as cn, LockManager as cr, IAMRoleProvider as ct, updatePartialMessage as d, withErrorHandling as da, getLegacyStateBucketName as di, applyCallerIdentityCredentials as dn, UNREPRODUCIBLE_LOCK_CLAUSE as dr, ProviderRegistry as dt, PartialFailureError as ea, partitionSensitiveEnv as ei, requireConfigString as en, isSingleDynamicReferenceToken as er, collectDeclaredOutputNames as et, updatePartialReason as f, isMarkedNonRetryable as fa, resolveApp as fi, callerEnvCredentials as fn, buildForceUnlockCommand as fr, wouldReturnToSdkProvider as ft, computeImplicitDeleteEdges as g, markNonRetryable as ga, resolveStateBucketWithDefault as gi, STATE_RESOURCES_MALFORMED as gn, shellQuote as gr, beginCommandInterruptScope as gt, IMPLICIT_DELETE_DEPENDENCIES as h, isTransientServerError as ha, resolveSkipPrefix as hi, INTRINSIC_KEYS as hn, formatLockExpiry as hr, maskerOrIdentity as ht, DeploymentEventsReader as i, StackHasActiveImportsError as ia, escapeRegExp$1 as ii, s3BucketArn as in, recordMaskOnlyValue as ir, secretBearing as it, isFinalSnapshotError as j, canonicalizeRegion as ji, refuseMalformedOutputs as jn, WorkGraph as jr, carriesFetchableDynamicReference as jt, ccRoutedFinalSnapshotError as k, expectedOwnerParam as ki, refuseDivergentRecordRegionForDestroy as kn, AssetPublisher as kr, IntrinsicFunctionResolver as kt, replayRollback as l, isCdkdError as la, synthesisStatusMessage as li, applyRoleArnIfSet as ln, S3StateBackend as lr, collectInlinePolicyNamesManagedBySiblings as lt, maskingRetryLogger as m, isThrottlingError as ma, resolveCaptureObservedState as mi, DiffCalculator as mn, forceQuitRecoveryClause as mr, maskDeep as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, ResourceTimeoutError as na, runDockerForeground as ni, producerRegionsFromState as nn, maskSecretsInError as nr, exportAliasCollisionScrubWarning as nt, planFailedOps as o, StateError as oa, AssetManifestLoader as oi, s3BucketDualStackDomainName as on, redactSecretsForState as or, secretSafeKeyDisplay as ot, withResourceDeadline as p, isRetryableTransientError as pa, resolveAutoAssetStorage as pi, envCredentialsAreAssumedRole as pn, buildLockContentionMessage as pr, createMaskedRetryLogger as pt, formatResourceLine as q, DynamicReferenceRegionAmbiguousError as qi, STATE_SOURCED_READBACK_RULES as qn, buildDockerImage as qr, configBooleanRefusal as qt, DeployEngine as r, ResourceUpdateNotSupportedError as ra, runDockerStreaming as ri, withSharedDrainBudget as rn, maskSecretsInText as rr, isExportAliasCollision as rt, planRollback as s, SynthesisError as sa, getDockerImageBySourceHash as si, s3BucketRegionalDomainName as sn, scrubResourceRecord as sr, getCurrentResourceSecrets as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, ProvisioningError as ta, redactDockerArgvValues as ti, classifyReplaySecretRegion as tn, markSameGenerationBag as tr, collectPublishedOutputNames as tt, resolveReplacementOldType as u, normalizeAwsError as ua, getDefaultStateBucketName as ui, AWS_CREDENTIAL_ENV_KEYS as un, rebuildClientForBucketRegion as ur, clearOnUpdateRemoval as ut, isSecretBearingReferenceString as v, retryClassificationText as va, resolveUseCdkBootstrapAssets as vi, hasReadableResources as vn, DEFAULT_STATE_PREFIX as vr, interruptWatchListenerCount as vt, reachableDivergentParameters as w, MIGRATE_TMP_PREFIX as wi, malformedRenderedContainersWarning as wn, importableOutputs as wr, UNSPECIFIED_SKIP_REASON as wt, bindingSkippedOutputs as x, __exportAll as xa, ssmResolvedValueType as xi, malformedLocalOutputsWarning as xn, hasReasonlessBaselineRefusal as xr, CloudControlProvider as xt, keptWholeReasonText as y, describeAwsFailure as ya, stateBucketExistenceConfirmed as yi, malformedExportNamesWarning as yn, exportNamesCarriedFrom as yr, isInterruptedWaitError as yt, isStatefulRecreateTargetForReplace as z, resetAwsClients as zi, findActionableSilentDrops as zn, ensureAssetStorage as zr, refStateLookupFromResource as zt };
46864
- //# sourceMappingURL=deploy-engine-pVC4fG22.js.map
46956
+ //# sourceMappingURL=deploy-engine-BdYBI1uT.js.map