@go-to-k/cdkd 0.291.12 → 0.291.14

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-CdZXcCGn.js";
2
+ import { n as isVersionOnlyInvocation, t as getCdkdVersion } from "./version-DHj4zq1f.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-BwCSQ51f.js");
77
+ const { buildProgram } = await import("./program-D7aismcf.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-GASr9bAF.js";
2
2
  import { a as setAssumedRoleCredentials, c as currentStackAwsScope, i as getPreAssumeEnvCredentials, l as runInStackAwsScope, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as ambientRegion, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-jISU4PHo.js";
3
- import { t as getCdkdVersion } from "./version-CdZXcCGn.js";
3
+ import { t as getCdkdVersion } from "./version-DHj4zq1f.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";
@@ -3583,7 +3583,7 @@ function collectStackMessages(assemblyDir, artifact) {
3583
3583
  const merged = { ...artifact.metadata ?? {} };
3584
3584
  if (artifact.additionalMetadataFile) {
3585
3585
  const resolved = resolveAssemblyPath(assemblyDir, artifact.additionalMetadataFile);
3586
- if (!resolved.contained) throw new SynthesisError(`Stack metadata file '${displaySafe(artifact.additionalMetadataFile)}' ${renderAssemblyPathEscape(resolved, assemblyDir)}`);
3586
+ if (!resolved.contained) throw new SynthesisError(`Stack metadata file ${displayAssemblyPath(artifact.additionalMetadataFile)} ${renderAssemblyPathEscape(resolved, assemblyDir)}`);
3587
3587
  const metadataPath = resolved.path;
3588
3588
  let sideFile;
3589
3589
  try {
@@ -3594,7 +3594,7 @@ function collectStackMessages(assemblyDir, artifact) {
3594
3594
  merged[path] = [...merged[path] ?? [], ...entries];
3595
3595
  }
3596
3596
  } catch (error) {
3597
- throw new SynthesisError(`Failed to read stack metadata file ${displaySafe(metadataPath)}: ${displaySafe(error instanceof Error ? error.message : String(error))}`, error instanceof Error ? error : void 0);
3597
+ throw new SynthesisError(`Failed to read stack metadata file ${displayAssemblyPath(metadataPath)}: ${displaySafe(error instanceof Error ? error.message : String(error))}`, error instanceof Error ? error : void 0);
3598
3598
  }
3599
3599
  }
3600
3600
  const messages = [];
@@ -3964,7 +3964,7 @@ var AssemblyReader = class {
3964
3964
  const props = artifact.properties;
3965
3965
  if (props?.file) {
3966
3966
  const resolved = resolveAssemblyPath(assemblyDir, props.file);
3967
- if (!resolved.contained) throw new SynthesisError(`Asset manifest artifact '${displaySafe(artifactId)}' has file='${displaySafe(props.file)}' which ${renderAssemblyPathEscape(resolved, assemblyDir)}`);
3967
+ if (!resolved.contained) throw new SynthesisError(`Asset manifest artifact '${displaySafe(artifactId)}' has file=${displayAssemblyPath(props.file)} which ${renderAssemblyPathEscape(resolved, assemblyDir)}`);
3968
3968
  map.set(artifactId, resolved.path);
3969
3969
  }
3970
3970
  }
@@ -3979,7 +3979,7 @@ var AssemblyReader = class {
3979
3979
  const templateFile = props?.templateFile;
3980
3980
  if (!templateFile) throw new SynthesisError(`Stack '${displaySafe(stackName)}' has no templateFile property`);
3981
3981
  const resolvedTemplate = resolveAssemblyPath(assemblyDir, templateFile);
3982
- if (!resolvedTemplate.contained) throw new SynthesisError(`Stack '${displaySafe(stackName)}' has templateFile='${displaySafe(templateFile)}' which ${renderAssemblyPathEscape(resolvedTemplate, assemblyDir)}`);
3982
+ if (!resolvedTemplate.contained) throw new SynthesisError(`Stack '${displaySafe(stackName)}' has templateFile=${displayAssemblyPath(templateFile)} which ${renderAssemblyPathEscape(resolvedTemplate, assemblyDir)}`);
3983
3983
  const templatePath = resolvedTemplate.path;
3984
3984
  let template;
3985
3985
  try {
@@ -4013,9 +4013,9 @@ var AssemblyReader = class {
4013
4013
  if (resource?.Type !== "AWS::CloudFormation::Stack") continue;
4014
4014
  const assetPath = resource.Metadata?.["aws:asset:path"];
4015
4015
  if (typeof assetPath !== "string" || assetPath.length === 0) continue;
4016
- if (isAbsolute(assetPath) || /^[a-zA-Z]:[\\/]/.test(assetPath) || assetPath.startsWith("\\\\")) throw new SynthesisError(`Stack '${displaySafe(stackName)}' nested-stack '${displaySafe(logicalId)}' has Metadata['aws:asset:path']='${displaySafe(assetPath)}' which is absolute. CDK emits relative asset paths for nested templates; an absolute path indicates the synth output was hand-modified or generated by a non-CDK toolchain. Refusing to load.`);
4016
+ if (isAbsolute(assetPath) || /^[a-zA-Z]:[\\/]/.test(assetPath) || assetPath.startsWith("\\\\")) throw new SynthesisError(`Stack '${displaySafe(stackName)}' nested-stack '${displaySafe(logicalId)}' has Metadata['aws:asset:path']=${displayAssemblyPath(assetPath)} which is absolute. CDK emits relative asset paths for nested templates; an absolute path indicates the synth output was hand-modified or generated by a non-CDK toolchain. Refusing to load.`);
4017
4017
  const resolvedNested = resolveAssemblyPath(assemblyDir, assetPath);
4018
- if (!resolvedNested.contained) throw new SynthesisError(`Stack '${displaySafe(stackName)}' nested-stack '${displaySafe(logicalId)}' has Metadata['aws:asset:path']='${displaySafe(assetPath)}' which ${renderAssemblyPathEscape(resolvedNested, assemblyDir)}`);
4018
+ if (!resolvedNested.contained) throw new SynthesisError(`Stack '${displaySafe(stackName)}' nested-stack '${displaySafe(logicalId)}' has Metadata['aws:asset:path']=${displayAssemblyPath(assetPath)} which ${renderAssemblyPathEscape(resolvedNested, assemblyDir)}`);
4019
4019
  nestedTemplates[logicalId] = resolvedNested.path;
4020
4020
  }
4021
4021
  return {
@@ -7452,7 +7452,7 @@ function setsEqual(a, b) {
7452
7452
  * synth` emits `source.path: "."`, so this costs a legitimate run nothing.
7453
7453
  */
7454
7454
  function warnWholeAssemblyAsSource(w) {
7455
- getLogger().child("assets").warn(`${w.subject} has ${w.field} naming the output directory ITSELF: '${displaySafe(w.outdir)}'. cdkd will ${w.sink} — that is the WHOLE assembly, every template and every staged asset, not one asset directory. No CDK synth emits this, so treat this assembly as untrusted unless you wrote that path yourself.`);
7455
+ getLogger().child("assets").warn(`${w.subject} has ${w.field} naming the output directory ITSELF: ${displayAssemblyPath(w.outdir)}. cdkd will ${w.sink} — that is the WHOLE assembly, every template and every staged asset, not one asset directory. No CDK synth emits this, so treat this assembly as untrusted unless you wrote that path yourself.`);
7456
7456
  }
7457
7457
  /**
7458
7458
  * Emit it. Deliberately `warn`, never `throw`: the one producer of this shape
@@ -7460,7 +7460,7 @@ function warnWholeAssemblyAsSource(w) {
7460
7460
  * documented CDK CLI flag.
7461
7461
  */
7462
7462
  function warnAbsoluteAssetPath(w) {
7463
- getLogger().child("assets").warn(`${w.subject} has an absolute ${w.field} pointing outside the assembly: '${displaySafe(w.absolute)}'` + (w.escape.escape === "symlink" ? ` (through a symbolic link to '${displaySafe(w.escape.realPath)}')` : "") + `. cdkd will ${w.sink}. This is what cdk synth --no-staging emits, and is expected for it; if you did not synthesize with that flag, treat this assembly as untrusted: an absolute source path is honoured as written, so nothing but this line stands between it and that step.`);
7463
+ getLogger().child("assets").warn(`${w.subject} has an absolute ${w.field} pointing outside the assembly: ${displayAssemblyPath(w.absolute)}` + (w.escape.escape === "symlink" ? ` (through a symbolic link to ${displayAssemblyPath(w.escape.realPath)})` : "") + `. cdkd will ${w.sink}. This is what cdk synth --no-staging emits, and is expected for it; if you did not synthesize with that flag, treat this assembly as untrusted: an absolute source path is honoured as written, so nothing but this line stands between it and that step.`);
7464
7464
  }
7465
7465
 
7466
7466
  //#endregion
@@ -7560,7 +7560,7 @@ function resolveFileAssetSourcePath(manifestDir, asset, opts) {
7560
7560
  });
7561
7561
  return resolved.path;
7562
7562
  }
7563
- if (!resolved.contained) throw new Error(`File asset '${displaySafe(asset.displayName)}' has source.path='${displaySafe(asset.source.path)}' which ${renderAssemblyPathEscape(resolved, assetOutdir, "publish it")}`);
7563
+ if (!resolved.contained) throw new Error(`File asset '${displaySafe(asset.displayName)}' has source.path=${displayAssemblyPath(asset.source.path)} which ${renderAssemblyPathEscape(resolved, assetOutdir, "publish it")}`);
7564
7564
  return resolved.path;
7565
7565
  }
7566
7566
  /**
@@ -8421,9 +8421,13 @@ function secretsOnArgvAllowed() {
8421
8421
  * or `undefined` when they may be forwarded: another client, no such secret,
8422
8422
  * or {@link ALLOW_SECRETS_ON_ARGV_ENV} set. The caller throws it in its own
8423
8423
  * error class BEFORE any `docker run`. The AWS credential set is not refused
8424
- * here (it is warned about by {@link warnFinchArgvExposure}): finch already
8425
- * puts the operator's own credentials on that argv by design, so refusing them
8426
- * would only disable finch without changing the operator's exposure.
8424
+ * here (it is warned about by {@link warnFinchArgvExposure}) so finch stays
8425
+ * usable for containers that need AWS access. Forwarding them IS what puts
8426
+ * them on that argv — notably `--assume-task-role` / `--assume-role` session
8427
+ * credentials and `--profile` / SSO-resolved ones, which are not in cdkd's
8428
+ * own environment
8429
+ * (finch itself forwards that environment's credentials, plus on Windows with
8430
+ * `ecr-login` what `aws configure export-credentials` resolves from it).
8427
8431
  * `subject` is caller-rendered context (e.g. the container name) and is not
8428
8432
  * sanitized here.
8429
8433
  */
@@ -9550,7 +9554,7 @@ function resolveDockerContextDirectory(opts) {
9550
9554
  });
9551
9555
  return resolved.path;
9552
9556
  }
9553
- if (!resolved.contained) throw wrapError(`asset source.directory='${displaySafe(directory)}' which ${renderAssemblyPathEscape(resolved, assetOutdir, "build it")}`);
9557
+ if (!resolved.contained) throw wrapError(`asset source.directory=${displayAssemblyPath(directory)} which ${renderAssemblyPathEscape(resolved, assetOutdir, "build it")}`);
9554
9558
  return resolved.path;
9555
9559
  }
9556
9560
  /** One spelling of the warning subject, so the two arms cannot drift. */
@@ -9594,7 +9598,7 @@ function assertCdkLocalDockerContextContained(opts) {
9594
9598
  const bound = tryRealpathNative(assetOutdir) ?? resolve$1(assetOutdir);
9595
9599
  const rel = relative(bound, physical);
9596
9600
  if (rel === "" || rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute$1(rel)) return;
9597
- throw wrapError(`asset source.directory='${displaySafe(directory)}' which ` + renderAssemblyPathEscape({
9601
+ throw wrapError(`asset source.directory=${displayAssemblyPath(directory)} which ` + renderAssemblyPathEscape({
9598
9602
  contained: false,
9599
9603
  escape: "symlink",
9600
9604
  path: engineSpelled,
@@ -9676,7 +9680,7 @@ async function buildDockerImage(asset, cdkOutDir, options) {
9676
9680
  });
9677
9681
  buildArgs.push(".");
9678
9682
  warnEscapingBuildKitPaths(source, contextDir, options.assetOutdir ?? cdkOutDir);
9679
- logger.debug(`${getDockerCmd()} ${redactDockerArgvValues(buildArgs).join(" ")} (cwd=${displaySafe(contextDir)})`);
9683
+ logger.debug(`${getDockerCmd()} ${redactDockerArgvValues(buildArgs).join(" ")} (cwd=${displayAssemblyPath(contextDir)})`);
9680
9684
  try {
9681
9685
  await runDockerStreaming(buildArgs, {
9682
9686
  cwd: contextDir,
@@ -17098,6 +17102,67 @@ function subtreeHasDynamicReference(value) {
17098
17102
  return false;
17099
17103
  }
17100
17104
  /**
17105
+ * Could the comparator's dotted `path` also be spelled, in `bag`, through an
17106
+ * own key that itself contains a dot? Walks own keys as far as `bag` goes; at
17107
+ * each level a dotted key equal to, or a dotted prefix of, the rest of the
17108
+ * path makes the coordinate ambiguous. Exported so the drift report can ask it
17109
+ * of the OBSERVED baseline too, where a readback-only dotted key can sit.
17110
+ */
17111
+ function pathCrossesDottedKey(bag, path) {
17112
+ const segments = path.split(".");
17113
+ let cursor = bag;
17114
+ for (let i = 0; i < segments.length; i++) {
17115
+ if (cursor === null || typeof cursor !== "object" || Array.isArray(cursor)) return false;
17116
+ const rest = segments.slice(i).join(".");
17117
+ for (const key of Object.keys(cursor)) if (key.includes(".") && (rest === key || rest.startsWith(`${key}.`))) return true;
17118
+ if (!Object.hasOwn(cursor, segments[i])) return false;
17119
+ cursor = cursor[segments[i]];
17120
+ }
17121
+ return false;
17122
+ }
17123
+ /**
17124
+ * Could a {@link SECRET_MASK} in an `observedProperties` baseline at the dotted
17125
+ * `path` be an UNCERTIFIED-POSITION mask (issue
17126
+ * [#2852](https://github.com/go-to-k/cdkd/issues/2852)'s fail-closed refusal)
17127
+ * rather than a `NoEcho` custom-resource mask (issue
17128
+ * [#2274](https://github.com/go-to-k/cdkd/issues/2274))? Issue
17129
+ * [#3595](https://github.com/go-to-k/cdkd/issues/3595).
17130
+ *
17131
+ * Answered from the record's own `properties` — the SOURCE the refusal was
17132
+ * positioned against — because nothing in the record names the mask's class.
17133
+ * The two classes differ in where they land: a fail-closed mask is written
17134
+ * into `observedProperties` only, at a position whose source spells a dynamic
17135
+ * reference; a `NoEcho` mask is persisted into `properties` too, since there is
17136
+ * no expression to store in its place. So:
17137
+ *
17138
+ * - the node `properties` holds at `path` must carry a `{{resolve:` string (a
17139
+ * raw `Fn::Join` object embedding one counts) and NO mask leaf; or
17140
+ * - where `properties` has no node at `path` — the readback reshaped a scalar
17141
+ * the template spells as a reference into a container, and the comparator
17142
+ * reported a key below it — the deepest node it DOES have on the path must be
17143
+ * a STRING carrying a `{{resolve:`.
17144
+ *
17145
+ * An ancestor OBJECT whose sibling carries a reference is deliberately NOT
17146
+ * enough: a `NoEcho` plaintext echoed into a readback-only key beside a
17147
+ * templated reference would then read as the fail-closed class.
17148
+ *
17149
+ * `path` is the drift comparator's coordinate: object keys joined by `.`, never
17150
+ * an array index (it compares arrays whole). Own keys only, for the reason
17151
+ * `drift.ts`'s `getAtPath` gives. Homed here, beside the redaction that
17152
+ * writes the mask, so any later writer-side check asks the SAME question.
17153
+ */
17154
+ function isUncertifiedBaselineMaskPosition(properties, path) {
17155
+ if (pathCrossesDottedKey(properties, path)) return false;
17156
+ let cursor = properties;
17157
+ for (const segment of path.split(".")) {
17158
+ if (typeof cursor === "string") break;
17159
+ if (cursor === null || typeof cursor !== "object" || Array.isArray(cursor) || !Object.hasOwn(cursor, segment)) return false;
17160
+ cursor = cursor[segment];
17161
+ }
17162
+ if (typeof cursor === "string") return isDynamicReferenceString(cursor) && cursor !== "***";
17163
+ return subtreeHasDynamicReference(cursor) && !carriesSecretMask(cursor);
17164
+ }
17165
+ /**
17101
17166
  * Every complete `{{resolve:...}}` token inside a string.
17102
17167
  *
17103
17168
  * This was a FOURTH spelling of the token pattern (`[^{}]*`, global) and is
@@ -36261,7 +36326,7 @@ var CloudControlProvider = class {
36261
36326
  const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
36262
36327
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
36263
36328
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
36264
- const { ASGProvider } = await import("./asg-provider-BTiCRWQZ.js").then((n) => n.n);
36329
+ const { ASGProvider } = await import("./asg-provider-EkJQ0mD9.js").then((n) => n.n);
36265
36330
  const asgProvider = new ASGProvider();
36266
36331
  return withIndeterminateGuard(await asgProvider.delete(logicalId, physicalId, resourceType, _properties, context), indeterminateGuard);
36267
36332
  }
@@ -42745,7 +42810,8 @@ const MIN_SECRET_NEEDLE = 4;
42745
42810
  * secret verbatim, and the remaining two printed it minus one character.
42746
42811
  *
42747
42812
  * So the fix is not another arm on the check — it is removing the second and
42748
- * third string. Everything below happens in `canonicalForSecretScan` space.
42813
+ * third string. Everything below happens in {@link secretScanHaystacks} space:
42814
+ * one stripped string, and its trim for printing.
42749
42815
  *
42750
42816
  * THE CLASS IS DERIVED FROM UNICODE CATEGORIES, NOT ENUMERATED. A hand list
42751
42817
  * was written first -- both sanitisers' classes plus the four residuals
@@ -42807,15 +42873,49 @@ const MIN_SECRET_NEEDLE = 4;
42807
42873
  */
42808
42874
  const SECRET_SCAN_INVISIBLES = /[\p{Cc}\p{Cf}\p{Me}\p{Zl}\p{Zp}\p{Default_Ignorable_Code_Point}]/gu;
42809
42875
  /**
42810
- * The one string space in which this module tests for, masks, and prints a
42811
- * possibly-secret-bearing name.
42876
+ * A possibly-secret-bearing name as PRINTED: {@link secretScanHaystacks}'
42877
+ * untrimmed string, trimmed.
42812
42878
  *
42813
42879
  * `.trim()` mirrors `displaySafe`, whose trim this replaces on these paths. It
42814
- * is applied to the TEXT only -- see {@link canonicalNeedle}, where trimming
42815
- * would silently shorten a recorded secret.
42880
+ * shapes the printed text only; a containment test reads both haystacks, since
42881
+ * the trim can remove whitespace that belongs to a recorded secret.
42816
42882
  */
42817
42883
  function canonicalForSecretScan(text) {
42818
- return text.replace(SECRET_SCAN_INVISIBLES, "").trim();
42884
+ return secretScanHaystacks(text)[0];
42885
+ }
42886
+ /**
42887
+ * The two haystacks every containment test on this path reads: `[trimmed,
42888
+ * untrimmed]`, both with the invisible class deleted (issue
42889
+ * [#2890](https://github.com/go-to-k/cdkd/issues/2890)).
42890
+ *
42891
+ * UNTRIMMED, because a recorded secret's own EDGE whitespace (`\p{Zs}`, which
42892
+ * the invisible class keeps) is part of the secret and can sit at the edge of
42893
+ * the key, where the trim removes it: a recorded `' a<ZWSP>bcd'` in the key
42894
+ * `' abcd-x'` matched no arm and printed `abcd-x`. TRIMMED, because the
42895
+ * whole-value arm has to see a key whose edge whitespace is NOT part of the
42896
+ * secret: `' ab '` is the sub-floor secret `ab`, and the untrimmed string does
42897
+ * not equal it. For the embedded arm the trimmed string adds nothing (it is a
42898
+ * substring of the untrimmed one); it is read anyway so the two arms walk one
42899
+ * list.
42900
+ *
42901
+ * WHY THIS PAIR CANNOT SPLIT THE VERDICT FROM THE PRINTED TEXT, the class
42902
+ * issue [#2874](https://github.com/go-to-k/cdkd/issues/2874) found. That bug
42903
+ * was three strings that could each hold a secret the others did not. These
42904
+ * two are one string and a trim of it: the trimmed one is a SUBSTRING of the
42905
+ * untrimmed one, and {@link secretSafeKeyDisplay} masks the UNTRIMMED string
42906
+ * and prints the trim of the result. Every verdict arm implies the canonical
42907
+ * needle occurs in that untrimmed string -- the raw arm too, since deleting
42908
+ * characters from a text containing the plaintext leaves the plaintext's own
42909
+ * deletion contiguous in it. So every occurrence a verdict can see is masked
42910
+ * before the trim, and the trim can only drop mask-free
42911
+ * whitespace from the ends -- it cannot join two characters, so it cannot
42912
+ * create an occurrence either. The post-mask re-test then reads the masked
42913
+ * untrimmed string, whose trimmed haystack IS the printed text, character for
42914
+ * character.
42915
+ */
42916
+ function secretScanHaystacks(text) {
42917
+ const untrimmed = text.replace(SECRET_SCAN_INVISIBLES, "");
42918
+ return [untrimmed.trim(), untrimmed];
42819
42919
  }
42820
42920
  /**
42821
42921
  * A recorded secret as a NEEDLE in canonical space.
@@ -42879,12 +42979,12 @@ function canonicalNeedles(secrets) {
42879
42979
  */
42880
42980
  function secretsPresentIn(text, secrets) {
42881
42981
  if (!secrets || secrets.size === 0) return void 0;
42882
- const haystack = canonicalForSecretScan(text);
42982
+ const haystacks = secretScanHaystacks(text);
42883
42983
  const exposure = /* @__PURE__ */ new Map();
42884
42984
  for (const [plaintext, expression] of secrets) {
42885
42985
  const needle = canonicalNeedle(plaintext);
42886
- const canonicalHit = haystack === needle || needle.length >= MIN_SECRET_NEEDLE && haystack.includes(needle);
42887
- const rawHit = text === plaintext || plaintext.length >= MIN_SECRET_NEEDLE && text.includes(plaintext);
42986
+ const canonicalHit = haystacks.some((haystack) => haystack === needle || needle.length >= MIN_SECRET_NEEDLE && haystack.includes(needle));
42987
+ const rawHit = plaintext.length >= MIN_SECRET_NEEDLE && text.includes(plaintext);
42888
42988
  if (canonicalHit || rawHit) exposure.set(plaintext, expression);
42889
42989
  }
42890
42990
  return exposure.size > 0 ? exposure : void 0;
@@ -42981,7 +43081,11 @@ function secretBearingExportNameWarning(outputKey, exportName, exposure, secrets
42981
43081
  const name = secretSafeKeyDisplay(exportName, corpus, exposure);
42982
43082
  const shown = name.kind === "masked" ? `(masked: "${name.text}") ` : "";
42983
43083
  const ownerForceMask = /* @__PURE__ */ new Map();
42984
- for (const [plaintext, expression] of exposure) if (plaintext === outputKey || canonicalNeedle(plaintext) === canonicalForSecretScan(outputKey) || plaintext.length >= MIN_SECRET_NEEDLE) ownerForceMask.set(plaintext, expression);
43084
+ const ownerHaystacks = secretScanHaystacks(outputKey);
43085
+ for (const [plaintext, expression] of exposure) {
43086
+ const needle = canonicalNeedle(plaintext);
43087
+ if (ownerHaystacks.some((haystack) => haystack === needle) || plaintext.length >= MIN_SECRET_NEEDLE) ownerForceMask.set(plaintext, expression);
43088
+ }
42985
43089
  return `Output ${displayTextOrWithheld(secretSafeKeyDisplay(outputKey, corpus, ownerForceMask))} has an Export.Name that resolves to a value containing a secret ${shown}— skipping the export alias. An export name becomes a key in state.json and in the exports index, and redaction rewrites VALUES only, so publishing it would persist the secret in plaintext. Use a non-secret Export.Name.`;
42986
43090
  }
42987
43091
  /**
@@ -43004,7 +43108,7 @@ function secretBearingExportNameWarning(outputKey, exportName, exposure, secrets
43004
43108
  * the class that replaced it and why it is derived rather than enumerated.
43005
43109
  */
43006
43110
  function secretSafeKeyDisplay(key, secrets, forceMask) {
43007
- const shown = canonicalForSecretScan(key);
43111
+ const [shown, untrimmed] = secretScanHaystacks(key);
43008
43112
  const exposure = stateKeySecretExposure(key, secrets);
43009
43113
  const mask = canonicalNeedles(forceMask);
43010
43114
  for (const [plaintext, expression] of exposure ?? []) {
@@ -43015,15 +43119,15 @@ function secretSafeKeyDisplay(key, secrets, forceMask) {
43015
43119
  kind: "safe",
43016
43120
  text: shown
43017
43121
  };
43018
- const masked = maskEveryOccurrence(shown, mask);
43019
- if (masked === shown) return exposure ? { kind: "withheld" } : {
43122
+ const masked = maskEveryOccurrence(untrimmed, mask);
43123
+ if (masked === untrimmed) return exposure ? { kind: "withheld" } : {
43020
43124
  kind: "safe",
43021
43125
  text: shown
43022
43126
  };
43023
43127
  if (stateKeySecretExposure(masked, secrets)) return { kind: "withheld" };
43024
43128
  return {
43025
43129
  kind: "masked",
43026
- text: masked
43130
+ text: canonicalForSecretScan(masked)
43027
43131
  };
43028
43132
  }
43029
43133
  /**
@@ -51618,5 +51722,5 @@ var DeployEngine = class DeployEngine {
51618
51722
  };
51619
51723
 
51620
51724
  //#endregion
51621
- export { yellow as $, isMarkedNonRetryable as $a, injectiveKeyPrefix as $i, repairMalformedResourcePropertiesForReadOnly as $n, AssetModeResolver as $r, requireConfigObject as $t, createPreDeleteFinalSnapshot as A, DependencyError as Aa, AssetManifestLoader as Ai, malformedOutputsRefusalMessage as An, buildForceUnlockCommand as Ar, carriesDynamicReference as At, isStatefulRecreateTargetSync as B, ProvisioningError as Ba, resolveStateBucketWithDefault as Bi, refuseMalformedOrphansForDestroy as Bn, importableOutputKeys as Br, isSettledInstanceState as Bt, namesAnyDeclaredParameter as C, resetAwsClients as Ca, partitionSensitiveEnv as Ci, isReadableResourceEntry as Cn, recoverMaskedOutput as Cr, UNSPECIFIED_SKIP_REASON as Ct, PRE_DELETE_SNAPSHOT_TYPES as D, CdkdError as Da, warnFinchArgvExposure as Di, malformedOrphanRecordsWarning as Dn, S3StateBackend as Dr, disableInstanceApiTermination as Dt, ATOMIC_FINAL_SNAPSHOT_TYPES as E, AssetError as Ea, runDockerStreaming as Ei, malformedLocalOutputsWarning as En, LockManager as Er, isWaitAbandonedError as Et, extractDeploymentEventError as F, LocalStartServiceError as Fa, getLegacyStateBucketName as Fi, malformedResourcesWarning as Fn, DEFAULT_STATE_PREFIX as Fr, isImpossibleEmptyStoredAttribute as Ft, toCfnInteger as G, StateError as Ga, ssmResolvedValueType as Gi, refuseMalformedResourceEntries as Gn, shouldRetainResource as Gr, coerceCfnBoolean as Gt, WARM_THROUGHPUT_MEMBERS as H, ResourceUpdateNotSupportedError as Ha, resolveUseCdkBootstrapAssets as Hi, refuseMalformedOutputs as Hn, isReadableBag as Hr, normalizeAwsTagsToCfn as Ht, makeSiblingClaimReader as I, LockError as Ia, resolveApp as Ii, malformedStateRefusalMessage as In, exportNamesCarriedFrom as Ir, isNamelessDynamicReferenceError as It, bold as J, isCdkdError as Ja, MIGRATE_TMP_PREFIX as Ji, refuseMalformedResourcesForDestroy as Jn, WorkGraph as Jr, configIntegerRefusal as Jt, toFiniteNumber as K, SynthesisError as Ka, CFN_TEMPLATE_BODY_LIMIT as Ki, refuseMalformedResourceEntriesForOrphan as Kn, AssetPublisher as Kr, coerceCfnInteger as Kt, planOrphanAdoption as L, MalformedProducerRecordRefusalError as La, resolveAutoAssetStorage as Li, refuseDivergentRecordRegionForDestroy as Ln, hasReadableExportSet as Lr, isUnboundTemplateParameter as Lt, refusesFinalSnapshot as M, DynamicReferenceRegionAmbiguousError as Ma, Synthesizer as Mi, malformedRenderedContainersWarning as Mn, forceQuitRecoveryClause as Mr, cfnRefValueFromPhysicalId as Mt, unsupportedFinalSnapshotError as N, IntrinsicResolutionRefusalError as Na, synthesisStatusMessage as Ni, malformedResourceEntriesWarning as Nn, formatLockExpiry as Nr, coerceParameterTypedValue as Nt, buildFinalSnapshotIdentifier as O, ConfigError as Oa, escapeRegExp$1 as Oi, malformedOrphansRefusalMessage as On, rebuildClientForBucketRegion as Or, isTerminationProtectionPropagationError as Ot, makeCanonicalizePropertiesFn as P, LocalInvokeBuildError as Pa, getDefaultStateBucketName as Pi, malformedResourcePropertiesWarning as Pn, CUSTOM_RESOURCE_RESPONSE_PREFIX as Pr, getAccountInfo as Pt, red as Q, shellQuote as Qa, injectiveKey as Qi, repairMalformedResourceEntriesForReadOnly as Qn, rewriteTemplateAssetReferences as Qr, requireConfigArray as Qt, MULTI_REGION_RECREATE_BLOCKED_TYPES as R, NestedStackChildDirectDestroyError as Ra, resolveCaptureObservedState as Ri, refuseMalformedNestedChildOutputs as Rn, hasReasonlessBaselineRefusal as Rr, parameterTypeMayLoseSecretIdentity as Rt, computeParameterTaint as S, getAwsClients as Sa, isMalformedEnvKey as Si, hasReadableResources as Sn, recordMaskOnlyValue as Sr, slowCcOperationTimeoutMs as St, resourcesNamingDeclaredParameter as T, setAwsClients as Ta, runDockerForeground as Ti, malformedExportSourceWarning as Tn, scrubResourceRecord as Tr, deleteSkipReason as Tt, coerceWarmThroughput as U, StackHasActiveImportsError as Ua, stateBucketExistenceConfirmed as Ui, refuseMalformedOutputsForDestroy as Un, orphansAfterRollback as Ur, resolveExplicitPhysicalId as Ut, renderStatefulReason as V, ResourceTimeoutError as Va, resolveStateBucketWithDefaultAndSource as Vi, refuseMalformedOrphansForOrphan as Vn, importableOutputs as Vr, WAFv2WebACLProvider as Vt, isWarmThroughputDecrease as W, StackTerminationProtectionError as Wa, warnDeprecatedNoPrefixCliFlag as Wi, refuseMalformedResourceAttributesForOrphan as Wn, orphansCarriedFrom as Wr, assertRegionMatch as Wt, gray as X, withErrorHandling as Xa, uploadCfnTemplate as Xi, repairMalformedOrphansForReadOnly as Xn, createAssetRedirectResolver as Xr, readConfigString as Xt, cyan as Y, normalizeAwsError as Ya, findLargeInlineResources as Yi, refuseMalformedState as Yn, buildAssetRedirectMap as Yr, configStringRefusal as Yt, green as Z, pasteableCommand as Za, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as Zi, repairMalformedOutputsForReadOnly as Zn, loadPublishableAssetManifest as Zr, replayWarn as Zt, bagHoldsSecretExpression as _, renderAssemblyPathEscape as _a, dockerSpawnEnvWithSensitive as _i, UNREADABLE_ORPHANS_CONTAINER_ROW as _n, identityKeyFor as _r, endCommandInterruptScope as _t, DeploymentEventsStore as a, canonicalizeRegion as aa, parseBootstrapMarker as ai, s3BucketDomainName as an, retryClassificationText as ao, describeTypeWithThrottleRetry as ar, secretBearingStateKeyWarning as at, mergeNoChangeOutputs as b, resolveBucketRegion as ba, getDockerCmd as bi, hasReadableOrphans as bn, maskSecretsInError as br, startInterruptWatch as bt, replayFailedOperations as c, failedStageNote as ca, validateContainerRepoName as ci, s3BucketWebsiteUrl as cn, __exportAll as co, TemplateParser as cr, IAMRoleProvider as ct, updatePartialMessage as d, defineOwnKey as da, buildDockerImage as di, applyCallerIdentityCredentials as dn, STATE_SOURCED_READBACK_RULES as dr, ProviderRegistry as dt, producerCoordinateKey as ea, BOOTSTRAP_MARKER_PREFIX as ei, requireConfigString as en, isRetryableTransientError as eo, repairMalformedResourcesForReadOnly as er, collectDeclaredOutputNames as et, updatePartialReason as f, hasOwnKey as fa, resolveDockerContextDirectory as fi, callerEnvCredentials as fn, TEMPLATE_SOURCED_RULES as fr, wouldReturnToSdkProvider as ft, computeImplicitDeleteEdges as g, absoluteAssemblyPathEscape as ga, describeDockerFailure as gi, STATE_RESOURCES_MALFORMED as gn, errorCauseChain as gr, beginCommandInterruptScope as gt, IMPLICIT_DELETE_DEPENDENCIES as h, ownValue as ha, describeDockerExecFailure as hi, INTRINSIC_KEYS as hn, dynamicReferenceTokens as hr, maskerOrIdentity as ht, DeploymentEventsReader as i, PARTITION_TABLE as ia, isCrossRegionRedirect as ii, s3BucketArn as in, markRedactedCause as io, findSilentDropProperties as ir, secretBearing as it, isFinalSnapshotError as j, DeployCancelledError as ja, getDockerImageBySourceHash as ji, malformedOutputsWarning as jn, buildLockContentionMessage as jr, carriesFetchableDynamicReference as jt, ccRoutedFinalSnapshotError as k, CrossAccountSecretRefusalError as ka, stripControlChars as ki, malformedOrphansWarning as kn, UNREPRODUCIBLE_LOCK_CLAUSE as kr, IntrinsicFunctionResolver as kt, replayRollback as l, globMatches as la, buildDenyExternalAccessPolicy as li, applyRoleArnIfSet as ln, STATE_SOURCED_BASELINE_RULES as lr, collectInlinePolicyNamesManagedBySiblings as lt, maskingRetryLogger as m, nullPrototypeRecord as ma, describeDockerCapturedOutput as mi, DiffCalculator as mn, createSecretMasker as mr, maskDeep as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, decodeListingKey as na, ensureAssetStorage as ni, producerRegionsFromState as nn, isTransientServerError as no, safeStackName as nr, exportAliasCollisionScrubWarning as nt, planFailedOps as o, derivePartitionAndUrlSuffix as oa, readBootstrapMarkerBody as oi, s3BucketDualStackDomainName as on, describeAwsFailure as oo, withRetry as or, secretSafeKeyDisplay as ot, withResourceDeadline as p, hasPlainPrototype$1 as pa, warnManifestExecutable as pi, envCredentialsAreAssumedRole as pn, carriesSecretMask as pr, createMaskedRetryLogger as pt, formatResourceLine as q, formatError as qa, CFN_TEMPLATE_URL_LIMIT as qi, refuseMalformedResourcePropertiesForOrphan as qn, stringifyValue as qr, configBooleanRefusal as qt, DeployEngine as r, expectedOwnerParam as ra, getBootstrapMarkerKey as ri, withSharedDrainBudget as rn, markNonRetryable as ro, findActionableSilentDrops as rr, isExportAliasCollision as rt, planRollback as s, AssemblyReader as sa, validateAssetBucketName as si, s3BucketRegionalDomainName as sn, safeStringify$1 as so, DagBuilder as sr, getCurrentResourceSecrets as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, producerRecordKey as ta, assertAssetBucketRegion as ti, classifyReplaySecretRegion as tn, isThrottlingError as to, safeRegion as tr, collectPublishedOutputNames as tt, resolveReplacementOldType as u, processStackMessages as ua, assertCdkLocalDockerContextContained as ui, AWS_CREDENTIAL_ENV_KEYS as un, STATE_SOURCED_CROSS_GENERATION_RULES as ur, clearOnUpdateRemoval as ut, isSecretBearingReferenceString as v, resolveAssemblyPath as va, finchSecretArgvRefusal as vi, UNREADABLE_RESOURCES_MAP_ROW as vn, isSingleDynamicReferenceToken as vr, interruptWatchListenerCount as vt, reachableDivergentParameters as w, runWithStackAwsClients as wa, redactDockerArgvValues as wi, malformedExportNamesWarning as wn, redactSecretsForState as wr, deleteIndeterminateGuards as wt, bindingSkippedOutputs as x, AwsClients as xa, isDockerClientEnvKey as xi, hasReadableOutputs as xn, maskSecretsInText as xr, CloudControlProvider as xt, keptWholeReasonText as y, clearBucketRegionCache as ya, formatDockerLoginError as yi, displayLogicalId as yn, markSameGenerationBag as yr, isInterruptedWaitError as yt, isStatefulRecreateTargetForReplace as z, PartialFailureError as za, resolveSkipPrefix as zi, refuseMalformedOrphans as zn, hasUnverifiableParameterRefusal as zr, refStateLookupFromResource as zt };
51622
- //# sourceMappingURL=deploy-engine-CqKbD4yk.js.map
51725
+ export { yellow as $, normalizeAwsError as $a, uploadCfnTemplate as $i, repairMalformedResourcePropertiesForReadOnly as $n, createAssetRedirectResolver as $r, requireConfigObject as $t, createPreDeleteFinalSnapshot as A, AssetError as Aa, warnFinchArgvExposure as Ai, malformedOutputsRefusalMessage as An, S3StateBackend as Ar, carriesDynamicReference as At, isStatefulRecreateTargetSync as B, LockError as Ba, resolveAutoAssetStorage as Bi, refuseMalformedOrphansForDestroy as Bn, hasReadableExportSet as Br, isSettledInstanceState as Bt, namesAnyDeclaredParameter as C, clearBucketRegionCache as Ca, getDockerCmd as Ci, isReadableResourceEntry as Cn, pathCrossesDottedKey as Cr, UNSPECIFIED_SKIP_REASON as Ct, PRE_DELETE_SNAPSHOT_TYPES as D, resetAwsClients as Da, redactDockerArgvValues as Di, malformedOrphanRecordsWarning as Dn, redactSecretsForState as Dr, disableInstanceApiTermination as Dt, ATOMIC_FINAL_SNAPSHOT_TYPES as E, getAwsClients as Ea, partitionSensitiveEnv as Ei, malformedLocalOutputsWarning as En, recoverMaskedOutput as Er, isWaitAbandonedError as Et, extractDeploymentEventError as F, DeployCancelledError as Fa, Synthesizer as Fi, malformedResourcesWarning as Fn, forceQuitRecoveryClause as Fr, isImpossibleEmptyStoredAttribute as Ft, toCfnInteger as G, ResourceTimeoutError as Ga, resolveUseCdkBootstrapAssets as Gi, refuseMalformedResourceEntries as Gn, isReadableBag as Gr, coerceCfnBoolean as Gt, WARM_THROUGHPUT_MEMBERS as H, NestedStackChildDirectDestroyError as Ha, resolveSkipPrefix as Hi, refuseMalformedOutputs as Hn, hasUnverifiableParameterRefusal as Hr, normalizeAwsTagsToCfn as Ht, makeSiblingClaimReader as I, DynamicReferenceRegionAmbiguousError as Ia, synthesisStatusMessage as Ii, malformedStateRefusalMessage as In, formatLockExpiry as Ir, isNamelessDynamicReferenceError as It, bold as J, StackTerminationProtectionError as Ja, ssmResolvedValueType as Ji, refuseMalformedResourcesForDestroy as Jn, shouldRetainResource as Jr, configIntegerRefusal as Jt, toFiniteNumber as K, ResourceUpdateNotSupportedError as Ka, stateBucketExistenceConfirmed as Ki, refuseMalformedResourceEntriesForOrphan as Kn, orphansAfterRollback as Kr, coerceCfnInteger as Kt, planOrphanAdoption as L, IntrinsicResolutionRefusalError as La, getDefaultStateBucketName as Li, refuseDivergentRecordRegionForDestroy as Ln, CUSTOM_RESOURCE_RESPONSE_PREFIX as Lr, isUnboundTemplateParameter as Lt, refusesFinalSnapshot as M, ConfigError as Ma, stripControlChars as Mi, malformedRenderedContainersWarning as Mn, UNREPRODUCIBLE_LOCK_CLAUSE as Mr, cfnRefValueFromPhysicalId as Mt, unsupportedFinalSnapshotError as N, CrossAccountSecretRefusalError as Na, AssetManifestLoader as Ni, malformedResourceEntriesWarning as Nn, buildForceUnlockCommand as Nr, coerceParameterTypedValue as Nt, buildFinalSnapshotIdentifier as O, runWithStackAwsClients as Oa, runDockerForeground as Oi, malformedOrphansRefusalMessage as On, scrubResourceRecord as Or, isTerminationProtectionPropagationError as Ot, makeCanonicalizePropertiesFn as P, DependencyError as Pa, getDockerImageBySourceHash as Pi, malformedResourcePropertiesWarning as Pn, buildLockContentionMessage as Pr, getAccountInfo as Pt, red as Q, isCdkdError as Qa, findLargeInlineResources as Qi, repairMalformedResourceEntriesForReadOnly as Qn, buildAssetRedirectMap as Qr, requireConfigArray as Qt, MULTI_REGION_RECREATE_BLOCKED_TYPES as R, LocalInvokeBuildError as Ra, getLegacyStateBucketName as Ri, refuseMalformedNestedChildOutputs as Rn, DEFAULT_STATE_PREFIX as Rr, parameterTypeMayLoseSecretIdentity as Rt, computeParameterTaint as S, resolveAssemblyPath as Sa, formatDockerLoginError as Si, hasReadableResources as Sn, maskSecretsInText as Sr, slowCcOperationTimeoutMs as St, resourcesNamingDeclaredParameter as T, AwsClients as Ta, isMalformedEnvKey as Ti, malformedExportSourceWarning as Tn, recordMaskOnlyValuesIn as Tr, deleteSkipReason as Tt, coerceWarmThroughput as U, PartialFailureError as Ua, resolveStateBucketWithDefault as Ui, refuseMalformedOutputsForDestroy as Un, importableOutputKeys as Ur, resolveExplicitPhysicalId as Ut, renderStatefulReason as V, MalformedProducerRecordRefusalError as Va, resolveCaptureObservedState as Vi, refuseMalformedOrphansForOrphan as Vn, hasReasonlessBaselineRefusal as Vr, WAFv2WebACLProvider as Vt, isWarmThroughputDecrease as W, ProvisioningError as Wa, resolveStateBucketWithDefaultAndSource as Wi, refuseMalformedResourceAttributesForOrphan as Wn, importableOutputs as Wr, assertRegionMatch as Wt, gray as X, SynthesisError as Xa, CFN_TEMPLATE_URL_LIMIT as Xi, repairMalformedOrphansForReadOnly as Xn, stringifyValue as Xr, readConfigString as Xt, cyan as Y, StateError as Ya, CFN_TEMPLATE_BODY_LIMIT as Yi, refuseMalformedState as Yn, AssetPublisher as Yr, configStringRefusal as Yt, green as Z, formatError as Za, MIGRATE_TMP_PREFIX as Zi, repairMalformedOutputsForReadOnly as Zn, WorkGraph as Zr, replayWarn as Zt, bagHoldsSecretExpression as _, nullPrototypeRecord as _a, describeDockerCapturedOutput as _i, UNREADABLE_ORPHANS_CONTAINER_ROW as _n, identityKeyFor as _r, endCommandInterruptScope as _t, DeploymentEventsStore as a, decodeListingKey as aa, ensureAssetStorage as ai, s3BucketDomainName as an, isThrottlingError as ao, describeTypeWithThrottleRetry as ar, secretBearingStateKeyWarning as at, mergeNoChangeOutputs as b, displayAssemblyPath as ba, dockerSpawnEnvWithSensitive as bi, hasReadableOrphans as bn, markSameGenerationBag as br, startInterruptWatch as bt, replayFailedOperations as c, canonicalizeRegion as ca, parseBootstrapMarker as ci, s3BucketWebsiteUrl as cn, markRedactedCause as co, TemplateParser as cr, IAMRoleProvider as ct, updatePartialMessage as d, failedStageNote as da, validateContainerRepoName as di, applyCallerIdentityCredentials as dn, safeStringify$1 as do, STATE_SOURCED_READBACK_RULES as dr, ProviderRegistry as dt, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ea, loadPublishableAssetManifest as ei, requireConfigString as en, withErrorHandling as eo, repairMalformedResourcesForReadOnly as er, collectDeclaredOutputNames as et, updatePartialReason as f, globMatches as fa, buildDenyExternalAccessPolicy as fi, callerEnvCredentials as fn, __exportAll as fo, TEMPLATE_SOURCED_RULES as fr, wouldReturnToSdkProvider as ft, computeImplicitDeleteEdges as g, hasPlainPrototype$1 as ga, warnManifestExecutable as gi, STATE_RESOURCES_MALFORMED as gn, errorCauseChain as gr, beginCommandInterruptScope as gt, IMPLICIT_DELETE_DEPENDENCIES as h, hasOwnKey as ha, resolveDockerContextDirectory as hi, INTRINSIC_KEYS as hn, dynamicReferenceTokens as hr, maskerOrIdentity as ht, DeploymentEventsReader as i, producerRecordKey as ia, assertAssetBucketRegion as ii, s3BucketArn as in, isRetryableTransientError as io, findSilentDropProperties as ir, secretBearing as it, isFinalSnapshotError as j, CdkdError as ja, escapeRegExp$1 as ji, malformedOutputsWarning as jn, rebuildClientForBucketRegion as jr, carriesFetchableDynamicReference as jt, ccRoutedFinalSnapshotError as k, setAwsClients as ka, runDockerStreaming as ki, malformedOrphansWarning as kn, LockManager as kr, IntrinsicFunctionResolver as kt, replayRollback as l, derivePartitionAndUrlSuffix as la, readBootstrapMarkerBody as li, applyRoleArnIfSet as ln, retryClassificationText as lo, STATE_SOURCED_BASELINE_RULES as lr, collectInlinePolicyNamesManagedBySiblings as lt, maskingRetryLogger as m, defineOwnKey as ma, buildDockerImage as mi, DiffCalculator as mn, createSecretMasker as mr, maskDeep as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, injectiveKeyPrefix as na, AssetModeResolver as ni, producerRegionsFromState as nn, shellQuote as no, safeStackName as nr, exportAliasCollisionScrubWarning as nt, planFailedOps as o, expectedOwnerParam as oa, getBootstrapMarkerKey as oi, s3BucketDualStackDomainName as on, isTransientServerError as oo, withRetry as or, secretSafeKeyDisplay as ot, withResourceDeadline as p, processStackMessages as pa, assertCdkLocalDockerContextContained as pi, envCredentialsAreAssumedRole as pn, carriesSecretMask as pr, createMaskedRetryLogger as pt, formatResourceLine as q, StackHasActiveImportsError as qa, warnDeprecatedNoPrefixCliFlag as qi, refuseMalformedResourcePropertiesForOrphan as qn, orphansCarriedFrom as qr, configBooleanRefusal as qt, DeployEngine as r, producerCoordinateKey as ra, BOOTSTRAP_MARKER_PREFIX as ri, withSharedDrainBudget as rn, isMarkedNonRetryable as ro, findActionableSilentDrops as rr, isExportAliasCollision as rt, planRollback as s, PARTITION_TABLE as sa, isCrossRegionRedirect as si, s3BucketRegionalDomainName as sn, markNonRetryable as so, DagBuilder as sr, getCurrentResourceSecrets as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, injectiveKey as ta, rewriteTemplateAssetReferences as ti, classifyReplaySecretRegion as tn, pasteableCommand as to, safeRegion as tr, collectPublishedOutputNames as tt, resolveReplacementOldType as u, AssemblyReader as ua, validateAssetBucketName as ui, AWS_CREDENTIAL_ENV_KEYS as un, describeAwsFailure as uo, STATE_SOURCED_CROSS_GENERATION_RULES as ur, clearOnUpdateRemoval as ut, isSecretBearingReferenceString as v, ownValue as va, describeDockerExecFailure as vi, UNREADABLE_RESOURCES_MAP_ROW as vn, isSingleDynamicReferenceToken as vr, interruptWatchListenerCount as vt, reachableDivergentParameters as w, resolveBucketRegion as wa, isDockerClientEnvKey as wi, malformedExportNamesWarning as wn, recordMaskOnlyValue as wr, deleteIndeterminateGuards as wt, bindingSkippedOutputs as x, renderAssemblyPathEscape as xa, finchSecretArgvRefusal as xi, hasReadableOutputs as xn, maskSecretsInError as xr, CloudControlProvider as xt, keptWholeReasonText as y, absoluteAssemblyPathEscape as ya, describeDockerFailure as yi, displayLogicalId as yn, isUncertifiedBaselineMaskPosition as yr, isInterruptedWaitError as yt, isStatefulRecreateTargetForReplace as z, LocalStartServiceError as za, resolveApp as zi, refuseMalformedOrphans as zn, exportNamesCarriedFrom as zr, refStateLookupFromResource as zt };
51726
+ //# sourceMappingURL=deploy-engine-WVUZ-Jm8.js.map