@go-to-k/cdkd 0.284.63 → 0.284.65

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.
@@ -1,5 +1,5 @@
1
1
  import { a as getLiveRenderer, d as generateResourceNameWithFallback, f as getCurrentStackName, h as withStackName, l as applyDefaultNameForFallback, n as getLogger, p as looksLikeCdkdGeneratedName, u as generateResourceName } from "./logger-zRrlbaQt.js";
2
- import { t as getCdkdVersion } from "./version-Cmw63bLc.js";
2
+ import { t as getCdkdVersion } from "./version-BtkYYOb6.js";
3
3
  import { AsyncLocalStorage } from "node:async_hooks";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -18844,7 +18844,7 @@ var CloudControlProvider = class {
18844
18844
  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);
18845
18845
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
18846
18846
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
18847
- const { ASGProvider } = await import("./asg-provider-B9V61Fbq.js").then((n) => n.n);
18847
+ const { ASGProvider } = await import("./asg-provider-CNwOmQGg.js").then((n) => n.n);
18848
18848
  return await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
18849
18849
  }
18850
18850
  const isProtectedEc2Instance = context?.removeProtection === true && resourceType === "AWS::EC2::Instance";
@@ -19878,9 +19878,147 @@ const DEFAULT_STATE_PREFIX = "cdkd";
19878
19878
  */
19879
19879
  const CUSTOM_RESOURCE_RESPONSE_PREFIX = "custom-resource-responses";
19880
19880
 
19881
+ //#endregion
19882
+ //#region src/provisioning/masked-retry-logger.ts
19883
+ /**
19884
+ * The masker a caller supplied, or the identity function when it supplied
19885
+ * none.
19886
+ *
19887
+ * ABSENT MEANS UNMASKED, and that is the back-compatible default the contract
19888
+ * mandates — `create()` / `update()` are also reached from the import path,
19889
+ * from `cdkd drift --revert`, and from tests, and a provider must not care
19890
+ * which caller it got. Centralised here so no call site re-spells the `??`
19891
+ * and accidentally makes the capability required.
19892
+ */
19893
+ function maskerOrIdentity(maskSecrets) {
19894
+ return maskSecrets ?? ((text) => text);
19895
+ }
19896
+ /**
19897
+ * A {@link RetryLogger} whose every line is routed through `maskSecrets`.
19898
+ *
19899
+ * `warn` is ALWAYS provided, never omitted. It is optional on `RetryLogger`,
19900
+ * and dropping it would silence the give-up summary on the calling path only —
19901
+ * trading a disclosure for the reporting hole issue #2018 closed. It goes
19902
+ * through the SAME mask as `debug` precisely because it is the line that
19903
+ * survives a run without `--verbose`; forwarding it unmasked would defeat the
19904
+ * fence at a HIGHER log level than the one the fence was written for.
19905
+ *
19906
+ * `logger` is typed structurally rather than as the concrete `Logger` so this
19907
+ * module stays a leaf and a test can pass two spies. That matches the
19908
+ * precedent already in the tree (`buildMfaConfigRequest` in
19909
+ * `cognito-provider.ts` takes an injected `logger?: { warn }`).
19910
+ */
19911
+ function createMaskedRetryLogger(logger, maskSecrets) {
19912
+ const mask = maskerOrIdentity(maskSecrets);
19913
+ return {
19914
+ debug: (message) => logger.debug(mask(message)),
19915
+ warn: (message) => logger.warn(mask(message))
19916
+ };
19917
+ }
19918
+ /**
19919
+ * Depth cap for {@link maskDeep}.
19920
+ *
19921
+ * What it actually bounds is unbounded WORK on a pathologically deep bag — see
19922
+ * the rationale at the cap itself, which is the authority. It is NOT primarily
19923
+ * a cycle guard: a template-derived bag cannot be cyclic, so that justification
19924
+ * over-claims (issue #2176 security review). It does still terminate one, which
19925
+ * is why the walk is safe to share with a caller that might hand it something
19926
+ * other than a template bag.
19927
+ *
19928
+ * Deliberately generous. Every shape these warnings exist to describe is a
19929
+ * scalar, a list of scalars, or a small record, so the walk does not reach
19930
+ * depth 2 in practice.
19931
+ */
19932
+ const MASK_WALK_MAX_DEPTH = 8;
19933
+ /**
19934
+ * What {@link maskDeep} substitutes for a subtree it declines to descend into.
19935
+ *
19936
+ * MUST equal `SECRET_MASK` in `src/deployment/secret-redaction.ts`. It is
19937
+ * spelled here rather than imported so this module keeps its single-import leaf
19938
+ * property (see the module note above); the two are fenced against drift by a
19939
+ * test that imports both.
19940
+ */
19941
+ const MASK_WALK_DEPTH_CAP_MARKER = "***";
19942
+ /**
19943
+ * Mask every string LEAF and KEY of an arbitrary value, returning a structure
19944
+ * safe to `JSON.stringify` into a log line or an error message (issue
19945
+ * [#2176](https://github.com/go-to-k/cdkd/issues/2176)).
19946
+ *
19947
+ * THE ORDERING IS THE WHOLE POINT, and it is why masking the finished message
19948
+ * is not a substitute. `maskSecretsInText` matches by literal occurrence, so:
19949
+ *
19950
+ * 1. ESCAPING. `JSON.stringify` escapes `"`, `\` and newlines, so a secret
19951
+ * containing any of them no longer OCCURS in the stringified text and a
19952
+ * mask applied afterwards cannot find it. That is not an exotic case — it
19953
+ * is every Secrets Manager JSON document, the commonest real secret shape.
19954
+ * Measured on the pre-fix tree for #2176: a plaintext of
19955
+ * `{"user":"admin","pw":"hunter2"}` interpolated as
19956
+ * `${JSON.stringify(value)}` came through a message-level mask COMPLETELY
19957
+ * unchanged, while masking the leaves first rendered it `"***"`.
19958
+ * 2. LENGTH. A finished message is always longer than the value inside it, so
19959
+ * it can only ever reach `maskSecretsInText`'s SUBSTRING arm, which ignores
19960
+ * needles below `MIN_NEEDLE_LENGTH` (4). Handing the masker each RAW leaf
19961
+ * reaches the WHOLE-VALUE arm, which has no floor. Measured the same way: a
19962
+ * 3-character secret survived `Value 'abc' at 'pin' failed ...` intact.
19963
+ *
19964
+ * Neither pass subsumes the other, so providers do BOTH — this walk on the
19965
+ * value, and the assembled message through the masker as well. The masker is
19966
+ * idempotent, so the overlap is free.
19967
+ *
19968
+ * Keys are masked as well as values: `JSON.stringify` renders them into the
19969
+ * same line, so a resolved secret used as a map key would otherwise escape.
19970
+ *
19971
+ * WHY THIS LIVES HERE rather than as a private walk per provider. SIX
19972
+ * hand-rolled copies had already accumulated — `elbv2-provider.ts`,
19973
+ * `cognito-provider.ts`, `sns-topic-provider.ts`, `dynamodb-table-provider.ts`,
19974
+ * `dynamodb-globaltable-provider.ts` and `apigatewayv2-provider.ts` — and
19975
+ * `elbv2-provider.ts` carried the standing instruction that "a THIRD site is
19976
+ * the point at which this should move into `../masked-retry-logger.ts` ... and
19977
+ * all three converge on it". That trigger had fired and been missed twice over,
19978
+ * and the copies had already diverged exactly as predicted: FOUR of the six
19979
+ * carried NO depth cap at all.
19980
+ *
19981
+ * Worth recording how the last two were nearly missed AGAIN, because it is the
19982
+ * same failure one level up: the first sweep for this issue grepped for
19983
+ * `maskDeep` / `MASK_WALK_MAX_DEPTH` — the SPELLINGS the known copies used —
19984
+ * and the two survivors spell it `maskLeaf` / `maskLeafValue` with no named
19985
+ * constant. Grep for the SHAPE, not the name. These copies encode a security
19986
+ * contract, and a hardening applied to one silently leaves the others behind.
19987
+ */
19988
+ function maskDeep(value, mask, depth = 0) {
19989
+ if (typeof value === "string") return mask(value);
19990
+ if (depth >= 8) return "***";
19991
+ if (Array.isArray(value)) return value.map((entry) => maskDeep(entry, mask, depth + 1));
19992
+ if (value !== null && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([k, v]) => [mask(k), maskDeep(v, mask, depth + 1)]));
19993
+ return value;
19994
+ }
19995
+
19881
19996
  //#endregion
19882
19997
  //#region src/provisioning/providers/custom-resource-provider.ts
19883
19998
  /**
19999
+ * The DELETE path threads NO masker (issue #2178).
20000
+ *
20001
+ * `DeleteContext` carries no masker by the `SecretMaskingContext` contract — a
20002
+ * delete's payload is a physical id rather than a resolved property bag — so
20003
+ * there is no capability to thread here.
20004
+ *
20005
+ * This is deliberately `undefined` and NOT `maskerOrIdentity(undefined)`, which
20006
+ * is what it was until the review of this change. An identity function typed
20007
+ * `MaskerFn` is a masker that fences nothing, and issue
20008
+ * [#2007](https://github.com/go-to-k/cdkd/issues/2007) records why that is
20009
+ * WORSE than no masker at all: its presence stops the next author looking. The
20010
+ * critic now REFUSES an identity-bound masker (see
20011
+ * `scripts/check-provider-secret-mask.ts`), so this spelling is the only one
20012
+ * that both compiles and states the truth — and the message site it feeds is
20013
+ * recorded in that critic's `EXEMPT` list, where it is counted and re-audited
20014
+ * on every run rather than hidden inside the masked count.
20015
+ *
20016
+ * `src/types/resource.ts` requires the capability to be THREADED before a
20017
+ * delete-path message may claim to mask; retiring this constant is that work,
20018
+ * not a rename.
20019
+ */
20020
+ const DELETE_PATH_UNMASKED = void 0;
20021
+ /**
19884
20022
  * The short `ResourceDeleteResult.reason` the no-properties DELETE arm reports
19885
20023
  * (issue [#1770](https://github.com/go-to-k/cdkd/issues/1770)).
19886
20024
  *
@@ -20012,12 +20150,15 @@ function isCustomResourceResponsePayload(value) {
20012
20150
  /**
20013
20151
  * Parse Lambda response payload with type safety
20014
20152
  */
20015
- function parseLambdaPayload(payloadBytes) {
20153
+ function parseLambdaPayload(payloadBytes, mask) {
20016
20154
  if (!payloadBytes) return {};
20017
20155
  const payloadString = Buffer.from(payloadBytes).toString();
20018
20156
  if (!payloadString || payloadString === "null" || payloadString === "\"\"") return {};
20019
20157
  const parsed = JSON.parse(payloadString);
20020
- if (!isCustomResourceResponsePayload(parsed)) throw new Error(`Invalid Lambda response payload format: ${JSON.stringify(parsed)}`);
20158
+ if (!isCustomResourceResponsePayload(parsed)) {
20159
+ if (mask === void 0) throw new Error(`Invalid Lambda response payload format: ${JSON.stringify(parsed)}`);
20160
+ throw new Error(`Invalid Lambda response payload format: ${JSON.stringify(maskDeep(parsed, mask))}`);
20161
+ }
20021
20162
  return parsed;
20022
20163
  }
20023
20164
  /**
@@ -20683,7 +20824,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20683
20824
  /**
20684
20825
  * Create a custom resource by invoking its Lambda handler
20685
20826
  */
20686
- async create(logicalId, resourceType, properties) {
20827
+ async create(logicalId, resourceType, properties, context) {
20687
20828
  this.logger.debug(`Creating custom resource ${logicalId} (${resourceType})`);
20688
20829
  const serviceToken = properties["ServiceToken"];
20689
20830
  if (!serviceToken) throw new ProvisioningError(`ServiceToken is required for custom resource ${logicalId}`, resourceType, logicalId);
@@ -20697,7 +20838,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20697
20838
  LogicalResourceId: logicalId,
20698
20839
  StackId: invocation.stackId,
20699
20840
  ResourceProperties: this.stringifyProperties(properties)
20700
- }));
20841
+ }), maskerOrIdentity(context?.maskSecrets));
20701
20842
  if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
20702
20843
  const physicalId = cfnResponse.PhysicalResourceId || logicalId;
20703
20844
  const attributes = cfnResponse.Data || {};
@@ -20714,7 +20855,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20714
20855
  /**
20715
20856
  * Update a custom resource by invoking its Lambda handler
20716
20857
  */
20717
- async update(logicalId, physicalId, resourceType, properties, previousProperties) {
20858
+ async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
20718
20859
  this.logger.debug(`Updating custom resource ${logicalId}: ${physicalId} (${resourceType})`);
20719
20860
  const serviceToken = properties["ServiceToken"];
20720
20861
  if (!serviceToken) throw new ProvisioningError(`ServiceToken is required for custom resource ${logicalId}`, resourceType, logicalId, physicalId);
@@ -20730,7 +20871,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20730
20871
  StackId: invocation.stackId,
20731
20872
  ResourceProperties: this.stringifyProperties(properties),
20732
20873
  OldResourceProperties: this.stringifyProperties(previousProperties)
20733
- }));
20874
+ }), maskerOrIdentity(context?.maskSecrets));
20734
20875
  if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
20735
20876
  const newPhysicalId = cfnResponse.PhysicalResourceId || physicalId;
20736
20877
  const wasReplaced = newPhysicalId !== physicalId;
@@ -20781,7 +20922,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20781
20922
  PhysicalResourceId: physicalId,
20782
20923
  StackId: invocation.stackId,
20783
20924
  ResourceProperties: this.stringifyProperties(properties)
20784
- }));
20925
+ }), DELETE_PATH_UNMASKED);
20785
20926
  if (cfnResponse.Status === "FAILED") {
20786
20927
  this.logger.warn(`Custom resource delete handler returned FAILED for ${logicalId}: ${cfnResponse.Reason || "Unknown reason"}. The handler reported that it did NOT delete, so anything this custom resource manages is LEFT IN PLACE — cdkd is KEEPING the state record and the run exits non-zero. ${CR_SKIP_NOT_A_RETRY_CAVEAT} ('cdkd deploy' also accepts --allow-unaddressed, which forces exit 0; 'cdkd destroy' has no such flag.) ${DEPLOY_SKIP_CAVEAT}`);
20787
20928
  return {
@@ -20879,7 +21020,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20879
21020
  * (create / update throw; delete warns and returns `'skipped'` — issue
20880
21021
  * #2054, which replaced its warn-and-continue).
20881
21022
  */
20882
- async invokeCustomResourceWithRetry(serviceToken, logicalId, operation, buildRequest) {
21023
+ async invokeCustomResourceWithRetry(serviceToken, logicalId, operation, buildRequest, mask) {
20883
21024
  const watch = startInterruptWatch(`Custom resource ${logicalId}`);
20884
21025
  try {
20885
21026
  const stackId = await this.resolveSyntheticStackId(logicalId);
@@ -20899,7 +21040,7 @@ var CustomResourceProvider = class CustomResourceProvider {
20899
21040
  this.logger.debug(`Sending custom resource ${operation.toLowerCase()} request: ${serviceToken}`);
20900
21041
  const sent = await this.sendRequest(serviceToken, request, invocation.responseKey, logicalId, operation, () => {
20901
21042
  delivered = true;
20902
- });
21043
+ }, mask);
20903
21044
  cfnResponse = sent.response;
20904
21045
  logResult = sent.logResult;
20905
21046
  } catch (error) {
@@ -21101,7 +21242,7 @@ var CustomResourceProvider = class CustomResourceProvider {
21101
21242
  * (the IAM-propagation class this arm exists for) means the handler never ran,
21102
21243
  * and treating that as delivered would leave the reported failure single-shot.
21103
21244
  */
21104
- async sendRequest(serviceToken, request, responseKey, logicalId, operation, onDelivered) {
21245
+ async sendRequest(serviceToken, request, responseKey, logicalId, operation, onDelivered, mask) {
21105
21246
  if (this.isSnsServiceToken(serviceToken)) {
21106
21247
  this.logger.debug(`ServiceToken is SNS topic, publishing to: ${serviceToken}`);
21107
21248
  await this.publishToSns(serviceToken, request);
@@ -21112,7 +21253,7 @@ var CustomResourceProvider = class CustomResourceProvider {
21112
21253
  const invokeResponse = await this.invokeLambda(serviceToken, request);
21113
21254
  onDelivered();
21114
21255
  return {
21115
- response: await this.getCustomResourceResponse(invokeResponse, responseKey, logicalId, operation),
21256
+ response: await this.getCustomResourceResponse(invokeResponse, responseKey, logicalId, operation, mask),
21116
21257
  ...invokeResponse.LogResult === void 0 ? {} : { logResult: invokeResponse.LogResult }
21117
21258
  };
21118
21259
  }
@@ -21230,7 +21371,7 @@ var CustomResourceProvider = class CustomResourceProvider {
21230
21371
  * 2. If Lambda returned a payload with PhysicalResourceId → use it (simple handler)
21231
21372
  * 3. Otherwise, poll S3 for the response (cfn-response via ResponseURL)
21232
21373
  */
21233
- async getCustomResourceResponse(lambdaResponse, responseKey, logicalId, operation) {
21374
+ async getCustomResourceResponse(lambdaResponse, responseKey, logicalId, operation, mask) {
21234
21375
  if (lambdaResponse.FunctionError) {
21235
21376
  const errorPayload = lambdaResponse.Payload ? Buffer.from(lambdaResponse.Payload).toString() : "Unknown";
21236
21377
  const logTail = decodeInvokeLogTail(lambdaResponse.LogResult);
@@ -21239,7 +21380,7 @@ var CustomResourceProvider = class CustomResourceProvider {
21239
21380
  }
21240
21381
  let hasDirectPayload = false;
21241
21382
  try {
21242
- const payload = parseLambdaPayload(lambdaResponse.Payload);
21383
+ const payload = parseLambdaPayload(lambdaResponse.Payload, mask);
21243
21384
  if ("Status" in payload && (payload["Status"] === "SUCCESS" || payload["Status"] === "FAILED")) {
21244
21385
  this.logger.debug(`Got direct cfn-response from Lambda for ${logicalId}`);
21245
21386
  await this.cleanupResponseObject(responseKey);
@@ -25148,9 +25289,12 @@ function exportAliasCollisionWarning(outputKey, exportName) {
25148
25289
  * {@link collectDeclaredOutputNames}.
25149
25290
  */
25150
25291
  function exportAliasCollisionScrubWarning(outputKey, exportName, secrets) {
25151
- const exposure = secretsPresentIn(exportName, secrets);
25152
- const shown = stripControlChars(exposure ? maskEveryOccurrence(exportName, exposure) : exportName);
25153
- return `Output ${stripControlChars(outputKey)} exports as "${shown}", which is also the name of another output in this stack — state cannot say which of the two the stored value under "${shown}" came from, so that key is redacted by value match instead of by template position, and two references resolving to the same value could still collapse there. Rename the export, or the colliding output, and redeploy.`;
25292
+ const mask = (name) => {
25293
+ const exposure = secretsPresentIn(name, secrets);
25294
+ return stripControlChars(exposure ? maskEveryOccurrence(name, exposure) : name);
25295
+ };
25296
+ const shown = mask(exportName);
25297
+ return `Output ${mask(outputKey)} exports as "${shown}", which is also the name of another output in this stack — state cannot say which of the two the stored value under "${shown}" came from, so that key is redacted by value match instead of by template position, and two references resolving to the same value could still collapse there. Rename the export, or the colliding output, and redeploy.`;
25154
25298
  }
25155
25299
 
25156
25300
  //#endregion
@@ -30399,5 +30543,5 @@ var DeployEngine = class {
30399
30543
  };
30400
30544
 
30401
30545
  //#endregion
30402
- export { beginCommandInterruptScope as $, PARTITION_TABLE as $n, S3StateBackend as $t, renderStatefulReason as A, runDockerForeground as An, SynthesisError as Ar, dynamicReferenceTokens as At, exportAliasCollisionScrubWarning as B, resolveCaptureObservedState as Bn, s3BucketDomainName as Bt, isFinalSnapshotError as C, validateContainerRepoName as Cn, PartialFailureError as Cr, requireConfigArray as Ct, extractDeploymentEventError as D, formatDockerLoginError as Dn, StackHasActiveImportsError as Dr, STATE_SOURCED_READBACK_RULES as Dt, makeCanonicalizePropertiesFn as E, dockerSpawnEnvWithSensitive as En, ResourceUpdateNotSupportedError as Er, STATE_SOURCED_CROSS_GENERATION_RULES as Et, green as F, synthesisStatusMessage as Fn, isMarkedNonRetryable as Fr, redactSecretsForState as Ft, IAMRoleProvider as G, stateBucketExistenceConfirmed as Gn, DiffCalculator as Gt, secretBearingStateKeyWarning as H, resolveStateBucketWithDefault as Hn, s3BucketRegionalDomainName as Ht, red as I, getDefaultStateBucketName as In, isRetryableTransientError as Ir, scrubResourceRecord as It, ProviderRegistry as J, CFN_TEMPLATE_URL_LIMIT as Jn, withRetry as Jt, collectInlinePolicyNamesManagedBySiblings as K, warnDeprecatedNoPrefixCliFlag as Kn, INTRINSIC_KEYS as Kt, yellow as L, getLegacyStateBucketName as Ln, isThrottlingError as Lr, classifyReplaySecretRegion as Lt, bold as M, AssetManifestLoader as Mn, isCdkdError as Mr, isSingleDynamicReferenceToken as Mt, cyan as N, getDockerImageBySourceHash as Nn, normalizeAwsError as Nr, maskSecretsInError as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, getDockerCmd as On, StackTerminationProtectionError as Or, TEMPLATE_SOURCED_RULES as Ot, gray as P, Synthesizer as Pn, withErrorHandling as Pr, maskSecretsInText as Pt, DEFAULT_STATE_PREFIX as Q, expectedOwnerParam as Qn, displaySafe as Qt, collectDeclaredOutputNames as R, resolveApp as Rn, markNonRetryable as Rr, producerRegionsFromState as Rt, createPreDeleteFinalSnapshot as S, validateAssetBucketName as Sn, NestedStackChildDirectDestroyError as Sr, replayWarn as St, unsupportedFinalSnapshotError as T, buildDockerImage as Tn, ResourceTimeoutError as Tr, requireConfigString as Tt, stateKeySecretExposure as U, resolveStateBucketWithDefaultAndSource as Un, s3BucketWebsiteUrl as Ut, isExportAliasCollision as V, resolveSkipPrefix as Vn, s3BucketDualStackDomainName as Vt, getCurrentResourceSecrets as W, resolveUseCdkBootstrapAssets as Wn, applyRoleArnIfSet as Wt, findSilentDropProperties as X, findLargeInlineResources as Xn, TemplateParser as Xt, findActionableSilentDrops as Y, MIGRATE_TMP_PREFIX as Yn, DagBuilder as Yt, CUSTOM_RESOURCE_RESPONSE_PREFIX as Z, uploadCfnTemplate as Zn, LockManager as Zt, computeImplicitDeleteEdges as _, ensureAssetStorage as _n, LocalInvokeBuildError as _r, assertRegionMatch as _t, DeploymentEventsStore as a, AssetPublisher as an, resolveBucketRegion as ar, slowCcOperationTimeoutMs as at, buildFinalSnapshotIdentifier as b, parseBootstrapMarker as bn, LockError as br, configStringRefusal as bt, replayFailedOperations as c, buildAssetRedirectMap as cn, resetAwsClients as cr, IntrinsicFunctionResolver as ct, updatePartialReason as d, rewriteTemplateAssetReferences as dn, CdkdError as dr, getAccountInfo as dt, rebuildClientForBucketRegion as en, canonicalizeRegion as er, endCommandInterruptScope as et, UNSPECIFIED_SKIP_REASON as f, escapeRegExp$1 as fn, ConfigError as fr, parameterTypeMayLoseSecretIdentity as ft, IMPLICIT_DELETE_DEPENDENCIES as g, assertAssetBucketRegion as gn, DynamicReferenceRegionAmbiguousError as gr, resolveExplicitPhysicalId as gt, maskingRetryLogger as h, BOOTSTRAP_MARKER_PREFIX as hn, DeployCancelledError as hr, normalizeAwsTagsToCfn as ht, DeploymentEventsReader as i, shouldRetainResource as in, clearBucketRegionCache as ir, CloudControlProvider as it, formatResourceLine as j, runDockerStreaming as jn, formatError as jr, errorCauseChain as jt, isStatefulRecreateTargetSync as k, partitionSensitiveEnv as kn, StateError as kr, createSecretMasker as kt, replayRollback as l, createAssetRedirectResolver as ln, setAwsClients as lr, carriesDynamicReference as lt, withResourceDeadline as m, AssetModeResolver as mn, DependencyError as mr, WAFv2WebACLProvider as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, importableOutputKeys as nn, AssemblyReader as nr, isInterruptedWaitError as nt, planFailedOps as o, stringifyValue as on, AwsClients as or, disableInstanceApiTermination as ot, deleteSkipReason as p, stripControlChars as pn, CrossAccountSecretRefusalError as pr, refStateLookupFromResource as pt, clearOnUpdateRemoval as q, CFN_TEMPLATE_BODY_LIMIT as qn, describeTypeWithThrottleRetry as qt, DeployEngine as r, importableOutputs as rn, processStackMessages as rr, startInterruptWatch as rt, planRollback as s, WorkGraph as sn, getAwsClients as sr, isTerminationProtectionPropagationError as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, exportNamesCarriedFrom as tn, derivePartitionAndUrlSuffix as tr, interruptWatchListenerCount as tt, updatePartialMessage as u, loadPublishableAssetManifest as un, AssetError as ur, cfnRefValueFromPhysicalId as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, getBootstrapMarkerKey as vn, LocalMigrateError as vr, coerceCfnBoolean as vt, refusesFinalSnapshot as w, buildDenyExternalAccessPolicy as wn, ProvisioningError as wr, requireConfigObject as wt, ccRoutedFinalSnapshotError as x, readBootstrapMarkerBody as xn, MissingCdkCliError as xr, readConfigString as xt, PRE_DELETE_SNAPSHOT_TYPES as y, isCrossRegionRedirect as yn, LocalStartServiceError as yr, configBooleanRefusal as yt, collectPublishedOutputNames as z, resolveAutoAssetStorage as zn, __exportAll as zr, s3BucketArn as zt };
30403
- //# sourceMappingURL=deploy-engine-B-RuozdO.js.map
30546
+ export { maskerOrIdentity as $, findLargeInlineResources as $n, TemplateParser as $t, renderStatefulReason as A, formatDockerLoginError as An, StackHasActiveImportsError as Ar, STATE_SOURCED_READBACK_RULES as At, exportAliasCollisionScrubWarning as B, getLegacyStateBucketName as Bn, isThrottlingError as Br, classifyReplaySecretRegion as Bt, isFinalSnapshotError as C, parseBootstrapMarker as Cn, LockError as Cr, configStringRefusal as Ct, extractDeploymentEventError as D, buildDenyExternalAccessPolicy as Dn, ProvisioningError as Dr, requireConfigObject as Dt, makeCanonicalizePropertiesFn as E, validateContainerRepoName as En, PartialFailureError as Er, requireConfigArray as Et, green as F, AssetManifestLoader as Fn, isCdkdError as Fr, isSingleDynamicReferenceToken as Ft, IAMRoleProvider as G, resolveStateBucketWithDefault as Gn, s3BucketRegionalDomainName as Gt, secretBearingStateKeyWarning as H, resolveAutoAssetStorage as Hn, __exportAll as Hr, s3BucketArn as Ht, red as I, getDockerImageBySourceHash as In, normalizeAwsError as Ir, maskSecretsInError as It, ProviderRegistry as J, stateBucketExistenceConfirmed as Jn, DiffCalculator as Jt, collectInlinePolicyNamesManagedBySiblings as K, resolveStateBucketWithDefaultAndSource as Kn, s3BucketWebsiteUrl as Kt, yellow as L, Synthesizer as Ln, withErrorHandling as Lr, maskSecretsInText as Lt, bold as M, partitionSensitiveEnv as Mn, StateError as Mr, createSecretMasker as Mt, cyan as N, runDockerForeground as Nn, SynthesisError as Nr, dynamicReferenceTokens as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, buildDockerImage as On, ResourceTimeoutError as Or, requireConfigString as Ot, gray as P, runDockerStreaming as Pn, formatError as Pr, errorCauseChain as Pt, maskDeep as Q, MIGRATE_TMP_PREFIX as Qn, DagBuilder as Qt, collectDeclaredOutputNames as R, synthesisStatusMessage as Rn, isMarkedNonRetryable as Rr, redactSecretsForState as Rt, createPreDeleteFinalSnapshot as S, isCrossRegionRedirect as Sn, LocalStartServiceError as Sr, configBooleanRefusal as St, unsupportedFinalSnapshotError as T, validateAssetBucketName as Tn, NestedStackChildDirectDestroyError as Tr, replayWarn as Tt, stateKeySecretExposure as U, resolveCaptureObservedState as Un, s3BucketDomainName as Ut, isExportAliasCollision as V, resolveApp as Vn, markNonRetryable as Vr, producerRegionsFromState as Vt, getCurrentResourceSecrets as W, resolveSkipPrefix as Wn, s3BucketDualStackDomainName as Wt, findSilentDropProperties as X, CFN_TEMPLATE_BODY_LIMIT as Xn, describeTypeWithThrottleRetry as Xt, findActionableSilentDrops as Y, warnDeprecatedNoPrefixCliFlag as Yn, INTRINSIC_KEYS as Yt, createMaskedRetryLogger as Z, CFN_TEMPLATE_URL_LIMIT as Zn, withRetry as Zt, computeImplicitDeleteEdges as _, AssetModeResolver as _n, DependencyError as _r, WAFv2WebACLProvider as _t, DeploymentEventsStore as a, importableOutputKeys as an, AssemblyReader as ar, isInterruptedWaitError as at, buildFinalSnapshotIdentifier as b, ensureAssetStorage as bn, LocalInvokeBuildError as br, assertRegionMatch as bt, replayFailedOperations as c, AssetPublisher as cn, resolveBucketRegion as cr, slowCcOperationTimeoutMs as ct, updatePartialReason as d, buildAssetRedirectMap as dn, resetAwsClients as dr, IntrinsicFunctionResolver as dt, LockManager as en, uploadCfnTemplate as er, CUSTOM_RESOURCE_RESPONSE_PREFIX as et, UNSPECIFIED_SKIP_REASON as f, createAssetRedirectResolver as fn, setAwsClients as fr, carriesDynamicReference as ft, IMPLICIT_DELETE_DEPENDENCIES as g, stripControlChars as gn, CrossAccountSecretRefusalError as gr, refStateLookupFromResource as gt, maskingRetryLogger as h, escapeRegExp$1 as hn, ConfigError as hr, parameterTypeMayLoseSecretIdentity as ht, DeploymentEventsReader as i, exportNamesCarriedFrom as in, derivePartitionAndUrlSuffix as ir, interruptWatchListenerCount as it, formatResourceLine as j, getDockerCmd as jn, StackTerminationProtectionError as jr, TEMPLATE_SOURCED_RULES as jt, isStatefulRecreateTargetSync as k, dockerSpawnEnvWithSensitive as kn, ResourceUpdateNotSupportedError as kr, STATE_SOURCED_CROSS_GENERATION_RULES as kt, replayRollback as l, stringifyValue as ln, AwsClients as lr, disableInstanceApiTermination as lt, withResourceDeadline as m, rewriteTemplateAssetReferences as mn, CdkdError as mr, getAccountInfo as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, S3StateBackend as nn, PARTITION_TABLE as nr, beginCommandInterruptScope as nt, planFailedOps as o, importableOutputs as on, processStackMessages as or, startInterruptWatch as ot, deleteSkipReason as p, loadPublishableAssetManifest as pn, AssetError as pr, cfnRefValueFromPhysicalId as pt, clearOnUpdateRemoval as q, resolveUseCdkBootstrapAssets as qn, applyRoleArnIfSet as qt, DeployEngine as r, rebuildClientForBucketRegion as rn, canonicalizeRegion as rr, endCommandInterruptScope as rt, planRollback as s, shouldRetainResource as sn, clearBucketRegionCache as sr, CloudControlProvider as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, displaySafe as tn, expectedOwnerParam as tr, DEFAULT_STATE_PREFIX as tt, updatePartialMessage as u, WorkGraph as un, getAwsClients as ur, isTerminationProtectionPropagationError as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, BOOTSTRAP_MARKER_PREFIX as vn, DeployCancelledError as vr, normalizeAwsTagsToCfn as vt, refusesFinalSnapshot as w, readBootstrapMarkerBody as wn, MissingCdkCliError as wr, readConfigString as wt, ccRoutedFinalSnapshotError as x, getBootstrapMarkerKey as xn, LocalMigrateError as xr, coerceCfnBoolean as xt, PRE_DELETE_SNAPSHOT_TYPES as y, assertAssetBucketRegion as yn, DynamicReferenceRegionAmbiguousError as yr, resolveExplicitPhysicalId as yt, collectPublishedOutputNames as z, getDefaultStateBucketName as zn, isRetryableTransientError as zr, scrubResourceRecord as zt };
30547
+ //# sourceMappingURL=deploy-engine-52VBVCWI.js.map