@go-to-k/cdkd 0.275.0 → 0.275.2

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.
@@ -9827,6 +9827,18 @@ function collectReferencedParameterNames(template) {
9827
9827
  }
9828
9828
  return referenced;
9829
9829
  }
9830
+ /**
9831
+ * Render a parameter VALUE for a debug log line, honoring the definition's
9832
+ * `NoEcho` flag (issue #1329). `NoEcho: true` is the template author's
9833
+ * explicit "this value is sensitive" declaration — CloudFormation masks such
9834
+ * values everywhere it echoes them, so cdkd's `--verbose` output must not
9835
+ * print them either. Sibling of `stringifyAttributeForLog` (which redacts
9836
+ * `Fn::GetAtt` ATTRIBUTE values by name heuristic; here the author told us).
9837
+ */
9838
+ function stringifyParameterForLog(paramDef, value) {
9839
+ if (paramDef?.NoEcho === true) return "<redacted>";
9840
+ return stringifyValue(value);
9841
+ }
9830
9842
  var IntrinsicFunctionResolver = class {
9831
9843
  logger = getLogger().child("IntrinsicFunctionResolver");
9832
9844
  resolverRegion;
@@ -9883,7 +9895,7 @@ var IntrinsicFunctionResolver = class {
9883
9895
  const userValue = userParameters[name];
9884
9896
  if (userValue !== void 0) {
9885
9897
  parameters[name] = this.coerceParameterValue(userValue, paramDef.Type);
9886
- this.logger.debug(`Parameter ${name}: using user-provided value ${userValue}`);
9898
+ this.logger.debug(`Parameter ${name}: using user-provided value ${stringifyParameterForLog(paramDef, userValue)}`);
9887
9899
  continue;
9888
9900
  }
9889
9901
  }
@@ -9898,11 +9910,11 @@ var IntrinsicFunctionResolver = class {
9898
9910
  this.logger.debug(`Parameter ${name}: resolving SSM parameter path ${ssmPath}`);
9899
9911
  const resolved = await this.resolveSSMParameter(ssmPath);
9900
9912
  parameters[name] = resolved;
9901
- this.logger.debug(`Parameter ${name}: resolved SSM value ${resolved}`);
9913
+ this.logger.debug(`Parameter ${name}: resolved SSM value ${stringifyParameterForLog(paramDef, resolved)}`);
9902
9914
  continue;
9903
9915
  }
9904
9916
  parameters[name] = paramDef.Default;
9905
- this.logger.debug(`Parameter ${name}: using default value ${stringifyValue(paramDef.Default)}`);
9917
+ this.logger.debug(`Parameter ${name}: using default value ${stringifyParameterForLog(paramDef, paramDef.Default)}`);
9906
9918
  continue;
9907
9919
  }
9908
9920
  throw new Error(`Parameter ${name} is required but no value was provided and no default exists`);
@@ -10031,7 +10043,8 @@ var IntrinsicFunctionResolver = class {
10031
10043
  }
10032
10044
  if (context.parameters && logicalId in context.parameters) {
10033
10045
  const value = context.parameters[logicalId];
10034
- this.logger.debug(`Resolved Ref to parameter: ${logicalId} -> ${stringifyValue(value)}`);
10046
+ const paramDef = context.template.Parameters?.[logicalId];
10047
+ this.logger.debug(`Resolved Ref to parameter: ${logicalId} -> ${stringifyParameterForLog(paramDef, value)}`);
10035
10048
  return value;
10036
10049
  }
10037
10050
  const pseudoValue = await this.resolvePseudoParameter(logicalId, context);
@@ -12027,7 +12040,7 @@ var CloudControlProvider = class {
12027
12040
  this.logger.debug(`Deleting resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
12028
12041
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
12029
12042
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
12030
- const { ASGProvider } = await import("./asg-provider-BfdF-bjF.js").then((n) => n.n);
12043
+ const { ASGProvider } = await import("./asg-provider-2hct1hkv.js").then((n) => n.n);
12031
12044
  await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
12032
12045
  return;
12033
12046
  }
@@ -17654,7 +17667,7 @@ async function replayFailedOperations(failedOps, stateResources, stackName, ctx,
17654
17667
  resourceType: op.resourceType,
17655
17668
  provisionedBy: op.provisionedBy
17656
17669
  });
17657
- await provider.delete(op.logicalId, op.physicalId, op.resourceType, void 0, { expectedRegion: ctx.region });
17670
+ await provider.delete(op.logicalId, op.physicalId, op.resourceType, op.attemptedProperties, { expectedRegion: ctx.region });
17658
17671
  delete stateResources[op.logicalId];
17659
17672
  await options.afterOp?.(op.logicalId);
17660
17673
  ctx.recordEvent?.({
@@ -17804,7 +17817,7 @@ const FLUSH_INTERVAL_MS = 2e3;
17804
17817
  const FLUSH_EVENT_THRESHOLD = 50;
17805
17818
  /** Build-time cdkd version, with a dev fallback for non-built contexts. */
17806
17819
  function getCdkdVersion() {
17807
- return "0.275.0";
17820
+ return "0.275.2";
17808
17821
  }
17809
17822
  /**
17810
17823
  * Generate a time-sortable unique run id, e.g.
@@ -19331,7 +19344,10 @@ var DeployEngine = class {
19331
19344
  */
19332
19345
  async replaceDeleteFirstAndRecreate(logicalId, resourceType, currentResource, oldDeleteProvider, replaceProvider, replaceProps) {
19333
19346
  try {
19334
- await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, { expectedRegion: this.stackRegion });
19347
+ await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, {
19348
+ expectedRegion: this.stackRegion,
19349
+ forceDataDelete: this.options.forceStatefulRecreation === true
19350
+ });
19335
19351
  } catch (deleteError) {
19336
19352
  throw new Error(`Failed to delete old resource ${logicalId} (${currentResource.physicalId}) during the --replace delete-first fallback: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`);
19337
19353
  }
@@ -19472,7 +19488,10 @@ var DeployEngine = class {
19472
19488
  else {
19473
19489
  this.logger.info(` Destroying old ${logicalId} (${currentResource.physicalId}) before recreate...`);
19474
19490
  try {
19475
- await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, { expectedRegion: this.stackRegion });
19491
+ await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, {
19492
+ expectedRegion: this.stackRegion,
19493
+ forceDataDelete: this.options.forceStatefulRecreation === true
19494
+ });
19476
19495
  this.logger.info(` ${green("✓")} Old resource deleted`);
19477
19496
  } catch (deleteError) {
19478
19497
  throw new Error(`Failed to destroy old resource ${logicalId} (${currentResource.physicalId}) during ${recreateFlagName}: ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`);
@@ -19514,7 +19533,10 @@ var DeployEngine = class {
19514
19533
  else {
19515
19534
  this.logger.info(` Deleting old ${logicalId} (${currentResource.physicalId})...`);
19516
19535
  try {
19517
- await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, { expectedRegion: this.stackRegion });
19536
+ await oldDeleteProvider.delete(logicalId, currentResource.physicalId, resourceType, currentResource.properties, {
19537
+ expectedRegion: this.stackRegion,
19538
+ forceDataDelete: this.options.forceStatefulRecreation === true
19539
+ });
19518
19540
  this.logger.info(` ${green("✓")} Old resource deleted`);
19519
19541
  } catch (deleteError) {
19520
19542
  this.logger.warn(` ⚠ Failed to delete old resource ${logicalId} (${currentResource.physicalId}): ${deleteError instanceof Error ? deleteError.message : String(deleteError)}`);
@@ -19560,7 +19582,10 @@ var DeployEngine = class {
19560
19582
  }
19561
19583
  this.logger.info(`UPDATE not supported for ${logicalId} (${resourceType}), replacing (DELETE → CREATE)`);
19562
19584
  try {
19563
- await updateProvider.delete(logicalId, currentResource.physicalId, resourceType, currentProps, { expectedRegion: this.stackRegion });
19585
+ await updateProvider.delete(logicalId, currentResource.physicalId, resourceType, currentProps, {
19586
+ expectedRegion: this.stackRegion,
19587
+ forceDataDelete: this.options.forceStatefulRecreation === true
19588
+ });
19564
19589
  } catch (deleteError) {
19565
19590
  const deleteMsg = deleteError instanceof Error ? deleteError.message : String(deleteError);
19566
19591
  if (deleteMsg.includes("does not exist") || deleteMsg.includes("not found") || deleteMsg.includes("NotFound")) this.logger.debug(`Old resource ${logicalId} already gone, proceeding with CREATE`);
@@ -19850,4 +19875,4 @@ var DeployEngine = class {
19850
19875
 
19851
19876
  //#endregion
19852
19877
  export { WorkGraph as $, LockError as $t, slowCcOperationTimeoutMs as A, warnDeprecatedNoPrefixCliFlag as At, applyRoleArnIfSet as B, resolveBucketRegion as Bt, yellow as C, resolveAutoAssetStorage as Ct, ProviderRegistry as D, resolveStateBucketWithDefaultAndSource as Dt, clearOnUpdateRemoval as E, resolveStateBucketWithDefault as Et, refStateLookupFromResource as F, uploadCfnTemplate as Ft, DagBuilder as G, AssetError as Gt, describeTypeWithThrottleRetry as H, getAwsClients as Ht, WAFv2WebACLProvider as I, expectedOwnerParam as It, S3StateBackend as J, DependencyError as Jt, TemplateParser as K, CdkdError as Kt, normalizeAwsTagsToCfn as L, AssemblyReader as Lt, isTerminationProtectionPropagationError as M, CFN_TEMPLATE_URL_LIMIT as Mt, IntrinsicFunctionResolver as N, MIGRATE_TMP_PREFIX as Nt, findActionableSilentDrops as O, resolveUseCdkBootstrapAssets as Ot, cfnRefValueFromPhysicalId as P, findLargeInlineResources as Pt, stringifyValue as Q, LocalStartServiceError as Qt, resolveExplicitPhysicalId as R, processStackMessages as Rt, red as S, resolveApp as St, collectInlinePolicyNamesManagedBySiblings as T, resolveSkipPrefix as Tt, withRetry as U, resetAwsClients as Ut, DiffCalculator as V, AwsClients as Vt, isRetryableTransientError as W, setAwsClients as Wt, shouldRetainResource as X, LocalInvokeBuildError as Xt, rebuildClientForBucketRegion as Y, DeployCancelledError as Yt, AssetPublisher as Z, LocalMigrateError as Zt, formatResourceLine as _, getDockerImageBySourceHash as _t, DeploymentEventsStore as a, ResourceUpdateNotSupportedError as an, BOOTSTRAP_MARKER_PREFIX as at, gray as b, getDefaultStateBucketName as bt, replayFailedOperations as c, StateError as cn, parseBootstrapMarker as ct, IMPLICIT_DELETE_DEPENDENCIES as d, isCdkdError as dn, buildDockerImage as dt, MissingCdkCliError as en, buildAssetRedirectMap as et, computeImplicitDeleteEdges as f, normalizeAwsError as fn, formatDockerLoginError as ft, renderStatefulReason as g, AssetManifestLoader as gt, isStatefulRecreateTargetSync as h, runDockerStreaming as ht, DeploymentEventsReader as i, ResourceTimeoutError as in, AssetModeResolver as it, disableInstanceApiTermination as j, CFN_TEMPLATE_BODY_LIMIT as jt, CloudControlProvider as k, stateBucketExistenceConfirmed as kt, replayRollback as l, SynthesisError as ln, validateAssetBucketName as lt, MULTI_REGION_RECREATE_BLOCKED_TYPES as m, __exportAll as mn, runDockerForeground as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, PartialFailureError as nn, loadPublishableAssetManifest as nt, planFailedOps as o, StackHasActiveImportsError as on, ensureAssetStorage as ot, extractDeploymentEventError as p, withErrorHandling as pn, getDockerCmd as pt, LockManager as q, ConfigError as qt, DeployEngine as r, ProvisioningError as rn, rewriteTemplateAssetReferences as rt, planRollback as s, StackTerminationProtectionError as sn, getBootstrapMarkerKey as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, NestedStackChildDirectDestroyError as tn, createAssetRedirectResolver as tt, withResourceDeadline as u, formatError as un, validateContainerRepoName as ut, bold as v, Synthesizer as vt, IAMRoleProvider as w, resolveCaptureObservedState as wt, green as x, getLegacyStateBucketName as xt, cyan as y, synthesisStatusMessage as yt, assertRegionMatch as z, clearBucketRegionCache as zt };
19853
- //# sourceMappingURL=deploy-engine-DkdxZIwS.js.map
19878
+ //# sourceMappingURL=deploy-engine-D30XI_UX.js.map