@go-to-k/cdkd 0.284.76 → 0.284.77

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 { d as generateResourceName, f as generateResourceNameWithFallback, g as withStackName, m as looksLikeCdkdGeneratedName, n as getLogger, o as getLiveRenderer, p as getCurrentStackName, u as applyDefaultNameForFallback } from "./logger-C9-E73FI.js";
2
- import { t as getCdkdVersion } from "./version-BMCefk9p.js";
2
+ import { t as getCdkdVersion } from "./version-rsHq2qI3.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";
@@ -288,6 +288,83 @@ const THROTTLING_ERROR_NAMES = /* @__PURE__ */ new Set([
288
288
  */
289
289
  const NON_RETRYABLE_MARKER = Symbol.for("cdkd.nonRetryable");
290
290
  /**
291
+ * How far every `.cause` walk in this module reads.
292
+ *
293
+ * ONE constant rather than five literals, because the walks are only sound
294
+ * together: {@link isMarkedNonRetryable} is what stops a deliberate refusal
295
+ * being read as transient, so any walk that reads text FURTHER than the marker
296
+ * walk creates a band where a refusal is legible but its marker is not.
297
+ * {@link retryClassificationText} shipped at 10 against the marker's 5 for
298
+ * exactly that reason, and the chain shape that makes the band reachable is
299
+ * the one the code already cites -- a nested-stack failure grows one
300
+ * `ProvisioningError` per level.
301
+ */
302
+ const MAX_CAUSE_CHAIN_DEPTH = 5;
303
+ /**
304
+ * Stamped on an error whose own message deliberately WITHHOLDS text its
305
+ * `cause` carries (issue [#2302](https://github.com/go-to-k/cdkd/issues/2302)).
306
+ *
307
+ * Distinct from {@link NON_RETRYABLE_MARKER} and orthogonal to it: this one
308
+ * says nothing about whether the error should be retried, only that the
309
+ * message a classifier would normally read is INCOMPLETE.
310
+ */
311
+ const REDACTED_CAUSE_MARKER = Symbol.for("cdkd.redactedCause");
312
+ /**
313
+ * Declare that this error's message withholds text its `cause` carries, so the
314
+ * message-based retry classifiers must read the CHAIN instead
315
+ * (issue [#2302](https://github.com/go-to-k/cdkd/issues/2302)).
316
+ *
317
+ * cdkd's retry classifiers match by SUBSTRING over a message. That is sound
318
+ * only while a wrapper copies its cause's text, which every wrapper did until
319
+ * #2302 started reducing an AWS failure to its error CLASS -- S3 words its
320
+ * `AccessDenied` as `User: arn:aws:sts::<account>:assumed-role/<role>/<session>
321
+ * is not authorized to perform: ...`, and a THROWN message is captured into the
322
+ * persisted `deployments/{runId}.jsonl` store. Redacting it also removed the
323
+ * substrings the pattern table matches on: measured on `S3BucketProvider`,
324
+ * `not authorized to perform` (retryable, on the DENSE IAM-propagation cadence)
325
+ * and S3's `conflicting conditional operation` both went NON-retryable.
326
+ *
327
+ * Call it at every site that redacts, and only there. It is deliberately an
328
+ * opt-in stamp rather than an unconditional chain read -- see
329
+ * {@link retryClassificationText} for the measurement that forced that choice.
330
+ *
331
+ * Same non-extensible tolerance as {@link markNonRetryable}, for the same
332
+ * reason: callers use it inline around the error they are about to throw, so a
333
+ * `TypeError` here would replace the refusal with an unrelated crash. Losing
334
+ * the stamp degrades to reading the top-level message, i.e. the pre-#2302
335
+ * classification of a message that is now shorter -- worse, but not a crash.
336
+ */
337
+ function markRedactedCause(error) {
338
+ if (!Object.isExtensible(error)) return error;
339
+ Object.defineProperty(error, REDACTED_CAUSE_MARKER, {
340
+ value: true,
341
+ enumerable: false,
342
+ configurable: true,
343
+ writable: false
344
+ });
345
+ return error;
346
+ }
347
+ /**
348
+ * True when the error, or anything in its bounded `.cause` chain, was stamped
349
+ * by {@link markRedactedCause}.
350
+ *
351
+ * Walked rather than read off the top link, because the redacting error is
352
+ * itself wrapped further out: `deploy-engine.ts` re-wraps every provider
353
+ * failure, so by the time a classifier sees it the stamp is one or more links
354
+ * deep. Same {@link MAX_CAUSE_CHAIN_DEPTH} as the marker walk, which is what
355
+ * lets {@link retryClassificationText} claim the two agree.
356
+ */
357
+ function hasRedactedCause(error) {
358
+ let current = error;
359
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null; depth++) {
360
+ if (typeof current === "object" || typeof current === "function") {
361
+ if (current[REDACTED_CAUSE_MARKER] === true) return true;
362
+ }
363
+ current = current.cause;
364
+ }
365
+ return false;
366
+ }
367
+ /**
291
368
  * Mark a cdkd-authored refusal as terminal and return it, for
292
369
  * `throw markNonRetryable(new ProvisioningError(...))`.
293
370
  *
@@ -354,7 +431,7 @@ function markNonRetryable(error) {
354
431
  */
355
432
  function isMarkedNonRetryable(error) {
356
433
  let current = error;
357
- for (let depth = 0; depth < 5 && current != null; depth++) {
434
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null; depth++) {
358
435
  if (typeof current === "object" || typeof current === "function") {
359
436
  if (current[NON_RETRYABLE_MARKER] === true) return true;
360
437
  }
@@ -378,7 +455,7 @@ function isMarkedNonRetryable(error) {
378
455
  */
379
456
  function isThrottlingError(error) {
380
457
  let current = error;
381
- for (let depth = 0; depth < 5 && current != null; depth++) {
458
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null; depth++) {
382
459
  const name = current.name;
383
460
  if (typeof name === "string" && THROTTLING_ERROR_NAMES.has(name)) return true;
384
461
  const status = current.$metadata?.httpStatusCode;
@@ -480,7 +557,7 @@ const TRANSIENT_SERVER_ERROR_STATUS_CODES = /* @__PURE__ */ new Set([
480
557
  */
481
558
  function isTransientServerError(error) {
482
559
  let current = error;
483
- for (let depth = 0; depth < 5 && current != null; depth++) {
560
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null; depth++) {
484
561
  const status = current.$metadata?.httpStatusCode;
485
562
  if (status !== void 0 && TRANSIENT_SERVER_ERROR_STATUS_CODES.has(status)) return true;
486
563
  current = current.cause;
@@ -531,7 +608,7 @@ function describeRetryClassificationSignals(error) {
531
608
  let sawMetadata = false;
532
609
  let metadataName;
533
610
  let metadataRequestId;
534
- for (let depth = 0; depth < 5 && current != null; depth++) {
611
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null; depth++) {
535
612
  const name = current.name;
536
613
  if (depth > 0 && typeof name === "string" && name !== "") deepestName = name;
537
614
  const metadata = current.$metadata;
@@ -599,6 +676,62 @@ function isRetryableTransientError(error, message) {
599
676
  return RETRYABLE_ERROR_MESSAGE_PATTERNS.some((p) => message.includes(p));
600
677
  }
601
678
  /**
679
+ * The text every MESSAGE-based retry classifier should read: this error's own
680
+ * message plus every message down its `cause` chain.
681
+ *
682
+ * Every classifier in this module that reads a message reads the TOP-LEVEL one,
683
+ * and that was sound only while cdkd's wrappers copied their cause's text
684
+ * verbatim -- which they did, everywhere, until issue
685
+ * [#2302](https://github.com/go-to-k/cdkd/issues/2302). A wrapper on a THROWN
686
+ * path may now deliberately WITHHOLD AWS's wording, because a thrown message is
687
+ * captured into the persisted `deployments/{runId}.jsonl` store and S3's
688
+ * `AccessDenied` names the caller's account, role and session. Measured on
689
+ * `S3BucketProvider.create` before this function existed: the wrap turned
690
+ * `not authorized to perform` (retryable, and on the DENSE IAM-propagation
691
+ * cadence) and `conflicting conditional operation` (retryable) into
692
+ * NON-retryable, i.e. the redaction silently removed a retry the deploy
693
+ * depended on.
694
+ *
695
+ * This is the missing THIRD walk rather than a new idea: {@link
696
+ * isMarkedNonRetryable} and {@link isThrottlingError} already walk the same
697
+ * chain, for the same stated reason (cdkd wraps SDK errors routinely).
698
+ *
699
+ * It cannot resurrect a cdkd refusal: every consumer checks
700
+ * {@link isMarkedNonRetryable} FIRST, that marker is itself chain-walked, and
701
+ * both walks are bounded by the SAME {@link MAX_CAUSE_CHAIN_DEPTH}.
702
+ *
703
+ * It is a NO-OP for every error that has not opted in via
704
+ * {@link markRedactedCause} -- which is every wrapper on `main` outside
705
+ * #2302's redacting sites. An earlier revision justified itself with a wider
706
+ * claim, that every wrapper on `main` COPIES its cause's message; that claim is
707
+ * false (`custom-resource-provider.ts`'s `describeWaiterFailure` already
708
+ * withholds the raw waiter payload, and it is not the only wrapper that does),
709
+ * and it does not need to be true. The opt-in stamp makes the no-op a property
710
+ * of the mechanism rather than of a survey.
711
+ *
712
+ * NEVER use the result as a LOG line or a thrown message: it is the union of
713
+ * exactly the text the redaction exists to withhold. `retry.ts` keeps the
714
+ * top-level message for its `warn` / `debug` output and uses this only to
715
+ * classify.
716
+ */
717
+ function retryClassificationText(error) {
718
+ const top = error instanceof Error ? error.message : String(error);
719
+ if (!hasRedactedCause(error)) return top;
720
+ const parts = [];
721
+ const seen = /* @__PURE__ */ new Set();
722
+ let current = error;
723
+ for (let depth = 0; depth < MAX_CAUSE_CHAIN_DEPTH && current != null && !seen.has(current); depth++) {
724
+ seen.add(current);
725
+ if (current instanceof Error) {
726
+ if (current.message) parts.push(current.message);
727
+ } else try {
728
+ parts.push(String(current));
729
+ } catch {}
730
+ current = current?.cause;
731
+ }
732
+ return parts.join("\n");
733
+ }
734
+ /**
602
735
  * True when the message is a just-created-IAM-entity propagation rejection
603
736
  * ({@link IAM_PROPAGATION_ERROR_MESSAGE_PATTERNS}).
604
737
  *
@@ -5756,6 +5889,50 @@ var DockerAssetPublisher = class {
5756
5889
  }
5757
5890
  };
5758
5891
 
5892
+ //#endregion
5893
+ //#region src/utils/aws-failure-text.ts
5894
+ /** Appended to a redacted summary so the withheld half is still reachable. */
5895
+ const VERBOSE_POINTER = "Re-run with --verbose for AWS's own message.";
5896
+ /**
5897
+ * Whether AWS wrote this failure's message.
5898
+ *
5899
+ * Keyed on the marker fields `@aws-sdk/*` errors carry through
5900
+ * `@smithy/smithy-client`'s `ServiceException` — `$metadata` on every
5901
+ * deserialized error, `$fault` on every modeled one, `$response` where a
5902
+ * middleware attached the raw response. Nothing under `src/` sets any of them,
5903
+ * so a match cannot be a cdkd-authored error.
5904
+ *
5905
+ * A transport-level failure (a socket timeout, a DNS error) can reach a caller
5906
+ * without `$metadata`, and that is the correct answer rather than a gap: those
5907
+ * messages are written by the HTTP layer and name a host, never a caller.
5908
+ */
5909
+ function isAwsAuthoredFailure(error) {
5910
+ const candidate = error;
5911
+ return candidate.$metadata !== void 0 || candidate.$fault !== void 0 || candidate.$response !== void 0;
5912
+ }
5913
+ /**
5914
+ * Describe a caught failure for a thrown message. See {@link AwsFailureText}.
5915
+ */
5916
+ function describeAwsFailure(error) {
5917
+ if (error instanceof Error) {
5918
+ if (!isAwsAuthoredFailure(error)) return {
5919
+ summary: error.message,
5920
+ detail: error.message,
5921
+ redacted: false
5922
+ };
5923
+ return {
5924
+ summary: `${error.name || "Error"}. ${VERBOSE_POINTER}`,
5925
+ detail: error.message,
5926
+ redacted: true
5927
+ };
5928
+ }
5929
+ return {
5930
+ summary: `a non-Error value of type ${typeof error}. ${VERBOSE_POINTER}`,
5931
+ detail: String(error),
5932
+ redacted: true
5933
+ };
5934
+ }
5935
+
5759
5936
  //#endregion
5760
5937
  //#region src/utils/deny-external-access-policy.ts
5761
5938
  /**
@@ -5945,7 +6122,11 @@ async function assertAssetBucketRegion(s3Client, bucketName, expectedRegion, acc
5945
6122
  } catch (probeError) {
5946
6123
  const fromProbe = readBucketRegionHeader(probeError);
5947
6124
  if (fromProbe) actual = canonicalizeRegion(fromProbe);
5948
- else throw new CdkdError(`Asset bucket '${bucketName}' is claimed by an existing bucket, but cdkd could not determine which region that bucket is in, so it cannot confirm it belongs to ${want}. Refusing to adopt it. (region probe failed: ${probeError instanceof Error ? probeError.message : String(probeError)}) ${remedy}`, "ASSET_STORAGE_FOREIGN_REGION_BUCKET", cause);
6125
+ else {
6126
+ const failure = describeAwsFailure(probeError);
6127
+ if (failure.redacted) getLogger().debug(`GetBucketLocation failed for asset bucket '${bucketName}' while confirming it belongs to ${want}: ${failure.detail}`);
6128
+ throw new CdkdError(`Asset bucket '${bucketName}' is claimed by an existing bucket, but cdkd could not determine which region that bucket is in, so it cannot confirm it belongs to ${want}. Refusing to adopt it. (region probe failed: ${failure.summary}) ${remedy}`, "ASSET_STORAGE_FOREIGN_REGION_BUCKET", cause);
6129
+ }
5949
6130
  }
5950
6131
  if (actual === want) return;
5951
6132
  throw new CdkdError(`Asset bucket name '${bucketName}' resolves to a bucket in ${actual}, while this operation targets ${want}. S3 bucket names are globally unique, and both 'BucketAlreadyOwnedByYou' and a cross-region redirect report ACCOUNT ownership rather than the bucket's region, so cdkd cannot treat it as ${want}'s asset bucket. cdkd asset storage is per-region by design: adopting it would publish ${want}'s assets into ${actual} and apply ${want}'s bucket configuration there. ${remedy}`, "ASSET_STORAGE_FOREIGN_REGION_BUCKET", cause);
@@ -12235,11 +12416,12 @@ async function withRetry(operation, logicalId, opts = {}) {
12235
12416
  } catch (error) {
12236
12417
  lastError = error;
12237
12418
  const message = error instanceof Error ? error.message : String(error);
12419
+ const classifyText = retryClassificationText(error);
12238
12420
  if (isMarkedNonRetryable(error)) throw error;
12239
- const retryable = opts.isRetryable ? opts.isRetryable(message, error) : isRetryableTransientError(error, message);
12240
- const propagation = defaultSchedule && isIamPropagationError(message);
12421
+ const retryable = opts.isRetryable ? opts.isRetryable(classifyText, error) : isRetryableTransientError(error, classifyText);
12422
+ const propagation = defaultSchedule && isIamPropagationError(classifyText);
12241
12423
  if (propagation) sawPropagation = true;
12242
- const nameCooldown = defaultSchedule && !propagation && isNameCooldownError(message);
12424
+ const nameCooldown = defaultSchedule && !propagation && isNameCooldownError(classifyText);
12243
12425
  const attemptLimit = sawPropagation ? 26 : maxRetries;
12244
12426
  if (!retryable || attempt >= attemptLimit) {
12245
12427
  if (propagationRetries > 0 || serverErrorRetries > 0 || nameCooldownRetries > 0) {
@@ -19514,7 +19696,7 @@ var CloudControlProvider = class {
19514
19696
  await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
19515
19697
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
19516
19698
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
19517
- const { ASGProvider } = await import("./asg-provider-BjebXXKD.js").then((n) => n.n);
19699
+ const { ASGProvider } = await import("./asg-provider-CDfupCgW.js").then((n) => n.n);
19518
19700
  return await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
19519
19701
  }
19520
19702
  const isProtectedEc2Instance = context?.removeProtection === true && resourceType === "AWS::EC2::Instance";
@@ -31398,5 +31580,5 @@ var DeployEngine = class {
31398
31580
  };
31399
31581
 
31400
31582
  //#endregion
31401
- export { maskerOrIdentity as $, MIGRATE_TMP_PREFIX as $n, redactSecretsForState as $t, renderStatefulReason as A, dockerSpawnEnvWithSensitive as An, ResourceUpdateNotSupportedError as Ar, classifyReplaySecretRegion as At, exportAliasCollisionScrubWarning as B, getDefaultStateBucketName as Bn, isRetryableTransientError as Br, describeTypeWithThrottleRetry as Bt, isFinalSnapshotError as C, isCrossRegionRedirect as Cn, LocalStartServiceError as Cr, configBooleanRefusal as Ct, extractDeploymentEventError as D, validateContainerRepoName as Dn, PartialFailureError as Dr, requireConfigArray as Dt, makeCanonicalizePropertiesFn as E, validateAssetBucketName as En, NestedStackChildDirectDestroyError as Er, replayWarn as Et, green as F, runDockerStreaming as Fn, formatError as Fr, s3BucketRegionalDomainName as Ft, IAMRoleProvider as G, resolveSkipPrefix as Gn, STATE_SOURCED_READBACK_RULES as Gt, secretBearingStateKeyWarning as H, resolveApp as Hn, markNonRetryable as Hr, DagBuilder as Ht, red as I, AssetManifestLoader as In, isCdkdError as Ir, s3BucketWebsiteUrl as It, ProviderRegistry as J, resolveUseCdkBootstrapAssets as Jn, dynamicReferenceTokens as Jt, collectInlinePolicyNamesManagedBySiblings as K, resolveStateBucketWithDefault as Kn, TEMPLATE_SOURCED_RULES as Kt, yellow as L, getDockerImageBySourceHash as Ln, normalizeAwsError as Lr, applyRoleArnIfSet as Lt, bold as M, getDockerCmd as Mn, StackTerminationProtectionError as Mr, s3BucketArn as Mt, cyan as N, partitionSensitiveEnv as Nn, StateError as Nr, s3BucketDomainName as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, buildDenyExternalAccessPolicy as On, ProvisioningError as Or, requireConfigObject as Ot, gray as P, runDockerForeground as Pn, SynthesisError as Pr, s3BucketDualStackDomainName as Pt, maskDeep as Q, CFN_TEMPLATE_URL_LIMIT as Qn, maskSecretsInText as Qt, collectDeclaredOutputNames as R, Synthesizer as Rn, withErrorHandling as Rr, DiffCalculator as Rt, createPreDeleteFinalSnapshot as S, getBootstrapMarkerKey as Sn, LocalMigrateError as Sr, coerceCfnBoolean as St, unsupportedFinalSnapshotError as T, readBootstrapMarkerBody as Tn, MissingCdkCliError as Tr, readConfigString as Tt, stateKeySecretExposure as U, resolveAutoAssetStorage as Un, __exportAll as Ur, TemplateParser as Ut, isExportAliasCollision as V, getLegacyStateBucketName as Vn, isThrottlingError as Vr, withRetry as Vt, getCurrentResourceSecrets as W, resolveCaptureObservedState as Wn, STATE_SOURCED_CROSS_GENERATION_RULES as Wt, findSilentDropProperties as X, warnDeprecatedNoPrefixCliFlag as Xn, isSingleDynamicReferenceToken as Xt, findActionableSilentDrops as Y, stateBucketExistenceConfirmed as Yn, errorCauseChain as Yt, createMaskedRetryLogger as Z, CFN_TEMPLATE_BODY_LIMIT as Zn, maskSecretsInError as Zt, computeImplicitDeleteEdges as _, stripControlChars as _n, CrossAccountSecretRefusalError as _r, refStateLookupFromResource as _t, DeploymentEventsStore as a, exportNamesCarriedFrom as an, derivePartitionAndUrlSuffix as ar, isInterruptedWaitError as at, buildFinalSnapshotIdentifier as b, assertAssetBucketRegion as bn, DynamicReferenceRegionAmbiguousError as br, resolveExplicitPhysicalId as bt, replayFailedOperations as c, shouldRetainResource as cn, clearBucketRegionCache as cr, slowCcOperationTimeoutMs as ct, updatePartialReason as d, WorkGraph as dn, getAwsClients as dr, IntrinsicFunctionResolver as dt, scrubResourceRecord as en, findLargeInlineResources as er, CUSTOM_RESOURCE_RESPONSE_PREFIX as et, UNSPECIFIED_SKIP_REASON as f, buildAssetRedirectMap as fn, resetAwsClients as fr, carriesDynamicReference as ft, IMPLICIT_DELETE_DEPENDENCIES as g, escapeRegExp$1 as gn, ConfigError as gr, parameterTypeMayLoseSecretIdentity as gt, maskingRetryLogger as h, rewriteTemplateAssetReferences as hn, CdkdError as hr, isUnboundTemplateParameter as ht, DeploymentEventsReader as i, rebuildClientForBucketRegion as in, canonicalizeRegion as ir, interruptWatchListenerCount as it, formatResourceLine as j, formatDockerLoginError as jn, StackHasActiveImportsError as jr, producerRegionsFromState as jt, isStatefulRecreateTargetSync as k, buildDockerImage as kn, ResourceTimeoutError as kr, requireConfigString as kt, replayRollback as l, AssetPublisher as ln, resolveBucketRegion as lr, disableInstanceApiTermination as lt, withResourceDeadline as m, loadPublishableAssetManifest as mn, AssetError as mr, getAccountInfo as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, displaySafe as nn, expectedOwnerParam as nr, beginCommandInterruptScope as nt, planFailedOps as o, importableOutputKeys as on, AssemblyReader as or, startInterruptWatch as ot, deleteSkipReason as p, createAssetRedirectResolver as pn, setAwsClients as pr, cfnRefValueFromPhysicalId as pt, clearOnUpdateRemoval as q, resolveStateBucketWithDefaultAndSource as qn, createSecretMasker as qt, DeployEngine as r, S3StateBackend as rn, PARTITION_TABLE as rr, endCommandInterruptScope as rt, planRollback as s, importableOutputs as sn, processStackMessages as sr, CloudControlProvider as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, LockManager as tn, uploadCfnTemplate as tr, DEFAULT_STATE_PREFIX as tt, updatePartialMessage as u, stringifyValue as un, AwsClients as ur, isTerminationProtectionPropagationError as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, AssetModeResolver as vn, DependencyError as vr, WAFv2WebACLProvider as vt, refusesFinalSnapshot as w, parseBootstrapMarker as wn, LockError as wr, configStringRefusal as wt, ccRoutedFinalSnapshotError as x, ensureAssetStorage as xn, LocalInvokeBuildError as xr, assertRegionMatch as xt, PRE_DELETE_SNAPSHOT_TYPES as y, BOOTSTRAP_MARKER_PREFIX as yn, DeployCancelledError as yr, normalizeAwsTagsToCfn as yt, collectPublishedOutputNames as z, synthesisStatusMessage as zn, isMarkedNonRetryable as zr, INTRINSIC_KEYS as zt };
31402
- //# sourceMappingURL=deploy-engine-Dm-MdFR-.js.map
31583
+ export { maskerOrIdentity as $, CFN_TEMPLATE_URL_LIMIT as $n, redactSecretsForState as $t, renderStatefulReason as A, buildDockerImage as An, ResourceTimeoutError as Ar, classifyReplaySecretRegion as At, exportAliasCollisionScrubWarning as B, synthesisStatusMessage as Bn, isMarkedNonRetryable as Br, describeTypeWithThrottleRetry as Bt, isFinalSnapshotError as C, isCrossRegionRedirect as Cn, LocalMigrateError as Cr, configBooleanRefusal as Ct, extractDeploymentEventError as D, validateContainerRepoName as Dn, NestedStackChildDirectDestroyError as Dr, requireConfigArray as Dt, makeCanonicalizePropertiesFn as E, validateAssetBucketName as En, MissingCdkCliError as Er, replayWarn as Et, green as F, runDockerForeground as Fn, SynthesisError as Fr, s3BucketRegionalDomainName as Ft, IAMRoleProvider as G, resolveCaptureObservedState as Gn, retryClassificationText as Gr, STATE_SOURCED_READBACK_RULES as Gt, secretBearingStateKeyWarning as H, getLegacyStateBucketName as Hn, isThrottlingError as Hr, DagBuilder as Ht, red as I, runDockerStreaming as In, formatError as Ir, s3BucketWebsiteUrl as It, ProviderRegistry as J, resolveStateBucketWithDefaultAndSource as Jn, dynamicReferenceTokens as Jt, collectInlinePolicyNamesManagedBySiblings as K, resolveSkipPrefix as Kn, __exportAll as Kr, TEMPLATE_SOURCED_RULES as Kt, yellow as L, AssetManifestLoader as Ln, isCdkdError as Lr, applyRoleArnIfSet as Lt, bold as M, formatDockerLoginError as Mn, StackHasActiveImportsError as Mr, s3BucketArn as Mt, cyan as N, getDockerCmd as Nn, StackTerminationProtectionError as Nr, s3BucketDomainName as Nt, MULTI_REGION_RECREATE_BLOCKED_TYPES as O, buildDenyExternalAccessPolicy as On, PartialFailureError as Or, requireConfigObject as Ot, gray as P, partitionSensitiveEnv as Pn, StateError as Pr, s3BucketDualStackDomainName as Pt, maskDeep as Q, CFN_TEMPLATE_BODY_LIMIT as Qn, maskSecretsInText as Qt, collectDeclaredOutputNames as R, getDockerImageBySourceHash as Rn, normalizeAwsError as Rr, DiffCalculator as Rt, createPreDeleteFinalSnapshot as S, getBootstrapMarkerKey as Sn, LocalInvokeBuildError as Sr, coerceCfnBoolean as St, unsupportedFinalSnapshotError as T, readBootstrapMarkerBody as Tn, LockError as Tr, readConfigString as Tt, stateKeySecretExposure as U, resolveApp as Un, markNonRetryable as Ur, TemplateParser as Ut, isExportAliasCollision as V, getDefaultStateBucketName as Vn, isRetryableTransientError as Vr, withRetry as Vt, getCurrentResourceSecrets as W, resolveAutoAssetStorage as Wn, markRedactedCause as Wr, STATE_SOURCED_CROSS_GENERATION_RULES as Wt, findSilentDropProperties as X, stateBucketExistenceConfirmed as Xn, isSingleDynamicReferenceToken as Xt, findActionableSilentDrops as Y, resolveUseCdkBootstrapAssets as Yn, errorCauseChain as Yt, createMaskedRetryLogger as Z, warnDeprecatedNoPrefixCliFlag as Zn, maskSecretsInError as Zt, computeImplicitDeleteEdges as _, stripControlChars as _n, ConfigError as _r, refStateLookupFromResource as _t, DeploymentEventsStore as a, exportNamesCarriedFrom as an, canonicalizeRegion as ar, isInterruptedWaitError as at, buildFinalSnapshotIdentifier as b, assertAssetBucketRegion as bn, DeployCancelledError as br, resolveExplicitPhysicalId as bt, replayFailedOperations as c, shouldRetainResource as cn, processStackMessages as cr, slowCcOperationTimeoutMs as ct, updatePartialReason as d, WorkGraph as dn, AwsClients as dr, IntrinsicFunctionResolver as dt, scrubResourceRecord as en, MIGRATE_TMP_PREFIX as er, CUSTOM_RESOURCE_RESPONSE_PREFIX as et, UNSPECIFIED_SKIP_REASON as f, buildAssetRedirectMap as fn, getAwsClients as fr, carriesDynamicReference as ft, IMPLICIT_DELETE_DEPENDENCIES as g, escapeRegExp$1 as gn, CdkdError as gr, parameterTypeMayLoseSecretIdentity as gt, maskingRetryLogger as h, rewriteTemplateAssetReferences as hn, AssetError as hr, isUnboundTemplateParameter as ht, DeploymentEventsReader as i, rebuildClientForBucketRegion as in, PARTITION_TABLE as ir, interruptWatchListenerCount as it, formatResourceLine as j, dockerSpawnEnvWithSensitive as jn, ResourceUpdateNotSupportedError as jr, producerRegionsFromState as jt, isStatefulRecreateTargetSync as k, describeAwsFailure as kn, ProvisioningError as kr, requireConfigString as kt, replayRollback as l, AssetPublisher as ln, clearBucketRegionCache as lr, disableInstanceApiTermination as lt, withResourceDeadline as m, loadPublishableAssetManifest as mn, setAwsClients as mr, getAccountInfo as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, displaySafe as nn, uploadCfnTemplate as nr, beginCommandInterruptScope as nt, planFailedOps as o, importableOutputKeys as on, derivePartitionAndUrlSuffix as or, startInterruptWatch as ot, deleteSkipReason as p, createAssetRedirectResolver as pn, resetAwsClients as pr, cfnRefValueFromPhysicalId as pt, clearOnUpdateRemoval as q, resolveStateBucketWithDefault as qn, createSecretMasker as qt, DeployEngine as r, S3StateBackend as rn, expectedOwnerParam as rr, endCommandInterruptScope as rt, planRollback as s, importableOutputs as sn, AssemblyReader as sr, CloudControlProvider as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, LockManager as tn, findLargeInlineResources as tr, DEFAULT_STATE_PREFIX as tt, updatePartialMessage as u, stringifyValue as un, resolveBucketRegion as ur, isTerminationProtectionPropagationError as ut, ATOMIC_FINAL_SNAPSHOT_TYPES as v, AssetModeResolver as vn, CrossAccountSecretRefusalError as vr, WAFv2WebACLProvider as vt, refusesFinalSnapshot as w, parseBootstrapMarker as wn, LocalStartServiceError as wr, configStringRefusal as wt, ccRoutedFinalSnapshotError as x, ensureAssetStorage as xn, DynamicReferenceRegionAmbiguousError as xr, assertRegionMatch as xt, PRE_DELETE_SNAPSHOT_TYPES as y, BOOTSTRAP_MARKER_PREFIX as yn, DependencyError as yr, normalizeAwsTagsToCfn as yt, collectPublishedOutputNames as z, Synthesizer as zn, withErrorHandling as zr, INTRINSIC_KEYS as zt };
31584
+ //# sourceMappingURL=deploy-engine-Ce3payPI.js.map