@go-to-k/cdkd 0.266.0 → 0.267.1

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.
@@ -1253,29 +1253,37 @@ function collectStackMessages(assemblyDir, artifact) {
1253
1253
  return messages;
1254
1254
  }
1255
1255
  /**
1256
- * Print annotation messages for the given stacks and fail on errors
1257
- * (CDK CLI parity, issue #1228): warnings and infos are displayed,
1258
- * error annotations abort with the CLI-format `[Error at /path] message`
1259
- * lines + `Found errors`.
1256
+ * Print annotation messages for the given stacks and fail per the CDK
1257
+ * CLI's rules (issues #1228 / #1230): every message is displayed at its
1258
+ * level (`[Error|Warning|Info at /path] message`); by default any error
1259
+ * annotation aborts with `Found errors`, `--strict` additionally aborts
1260
+ * on warnings with `Found warnings (--strict mode)`, and
1261
+ * `--ignore-errors` never aborts. Errors win over strict warnings when
1262
+ * both exist (CDK CLI parity).
1260
1263
  *
1261
1264
  * Call AFTER stack selection so an error in a non-selected stack does not
1262
1265
  * block the selected ones (same selection-awareness as the #1150 deferred
1263
1266
  * macro expansion).
1264
1267
  */
1265
- function processStackMessages(stacks, logger) {
1266
- const errorLines = [];
1268
+ function processStackMessages(stacks, logger, options = {}) {
1269
+ let hasErrors = false;
1270
+ let hasWarnings = false;
1267
1271
  for (const stack of stacks) for (const msg of stack.messages ?? []) switch (msg.level) {
1268
1272
  case "warning":
1273
+ hasWarnings = true;
1269
1274
  logger.warn(`[Warning at ${msg.path}] ${msg.message}`);
1270
1275
  break;
1271
1276
  case "info":
1272
1277
  logger.info(`[Info at ${msg.path}] ${msg.message}`);
1273
1278
  break;
1274
1279
  case "error":
1275
- errorLines.push(`[Error at ${msg.path}] ${msg.message}`);
1280
+ hasErrors = true;
1281
+ logger.error(`[Error at ${msg.path}] ${msg.message}`);
1276
1282
  break;
1277
1283
  }
1278
- if (errorLines.length > 0) throw new SynthesisError(`${errorLines.join("\n")}\nFound errors`);
1284
+ const failAt = options.strict ? "warn" : options.ignoreErrors ? "none" : "error";
1285
+ if (hasErrors && failAt !== "none") throw new SynthesisError("Found errors");
1286
+ if (hasWarnings && failAt === "warn") throw new SynthesisError("Found warnings (--strict mode)");
1279
1287
  }
1280
1288
 
1281
1289
  //#endregion
@@ -11346,7 +11354,7 @@ var CloudControlProvider = class {
11346
11354
  this.logger.debug(`Deleting resource ${logicalId} (${resourceType}), physical ID: ${physicalId}`);
11347
11355
  if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
11348
11356
  this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
11349
- const { ASGProvider } = await import("./asg-provider-BXCs43-R.js").then((n) => n.n);
11357
+ const { ASGProvider } = await import("./asg-provider-Cw0VRwMO.js").then((n) => n.n);
11350
11358
  await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
11351
11359
  return;
11352
11360
  }
@@ -15267,6 +15275,32 @@ function isCustomResource(resourceType) {
15267
15275
  return resourceType.startsWith("Custom::") || resourceType === "AWS::CloudFormation::CustomResource";
15268
15276
  }
15269
15277
 
15278
+ //#endregion
15279
+ //#region src/provisioning/update-removal.ts
15280
+ /**
15281
+ * Shared clear-on-removal resolver for merge-semantics update APIs
15282
+ * (issue #1160 — the absent-field removal silent-drop bug class; reference
15283
+ * fix `LambdaFunctionProvider`, #1157; extracted from the per-provider
15284
+ * copies in #1223).
15285
+ *
15286
+ * CloudFormation resets a property REMOVED from the template to its default,
15287
+ * while most AWS `Update*` / `Modify*` APIs treat an absent input field as
15288
+ * "no change" (merge semantics). A provider `update()` that passes template
15289
+ * properties straight into the SDK input therefore silently keeps the old
15290
+ * live value on removal. Route every optional mutable field of a
15291
+ * merge-semantics API through this helper, with `clearValue` set to the
15292
+ * property's CFn default or the SDK-documented clear sentinel — see
15293
+ * docs/provider-development.md §2a for the per-field checklist.
15294
+ *
15295
+ * Returns `newValue` when present, the `clearValue` when the field was
15296
+ * present before and is now absent (removal), and `undefined` when it was
15297
+ * never present (so a genuinely-absent field stays absent = no change).
15298
+ */
15299
+ function clearOnUpdateRemoval(newValue, previousValue, clearValue) {
15300
+ if (newValue !== void 0) return newValue;
15301
+ if (previousValue !== void 0) return clearValue;
15302
+ }
15303
+
15270
15304
  //#endregion
15271
15305
  //#region src/provisioning/providers/iam-role-provider.ts
15272
15306
  /**
@@ -15389,8 +15423,10 @@ var IAMRoleProvider = class {
15389
15423
  }
15390
15424
  try {
15391
15425
  const updateParams = { RoleName: physicalId };
15392
- if (properties["Description"] !== void 0) updateParams.Description = properties["Description"];
15393
- if (properties["MaxSessionDuration"] !== void 0) updateParams.MaxSessionDuration = properties["MaxSessionDuration"];
15426
+ const descriptionInput = clearOnUpdateRemoval(properties["Description"], previousProperties["Description"], "");
15427
+ if (descriptionInput !== void 0) updateParams.Description = descriptionInput;
15428
+ const maxSessionDurationInput = clearOnUpdateRemoval(properties["MaxSessionDuration"], previousProperties["MaxSessionDuration"], 3600);
15429
+ if (maxSessionDurationInput !== void 0) updateParams.MaxSessionDuration = maxSessionDurationInput;
15394
15430
  await this.iamClient.send(new UpdateRoleCommand(updateParams));
15395
15431
  const newAssumePolicy = properties["AssumeRolePolicyDocument"];
15396
15432
  const oldAssumePolicy = previousProperties["AssumeRolePolicyDocument"];
@@ -17229,7 +17265,7 @@ const FLUSH_INTERVAL_MS = 2e3;
17229
17265
  const FLUSH_EVENT_THRESHOLD = 50;
17230
17266
  /** Build-time cdkd version, with a dev fallback for non-built contexts. */
17231
17267
  function getCdkdVersion() {
17232
- return "0.266.0";
17268
+ return "0.267.1";
17233
17269
  }
17234
17270
  /**
17235
17271
  * Generate a time-sortable unique run id, e.g.
@@ -19216,5 +19252,5 @@ var DeployEngine = class {
19216
19252
  };
19217
19253
 
19218
19254
  //#endregion
19219
- export { createAssetRedirectResolver as $, ProvisioningError as $t, CloudControlProvider as A, MIGRATE_TMP_PREFIX as At, assertRegionMatch as B, resetAwsClients as Bt, green as C, resolveSkipPrefix as Ct, collectInlinePolicyNamesManagedBySiblings as D, warnDeprecatedNoPrefixCliFlag as Dt, IAMRoleProvider as E, resolveUseCdkBootstrapAssets as Et, cfnRefValueFromPhysicalId as F, processStackMessages as Ft, LockManager as G, DependencyError as Gt, DiffCalculator as H, AssetError as Ht, refStateLookupFromResource as I, clearBucketRegionCache as It, shouldRetainResource as J, LocalStartServiceError as Jt, S3StateBackend as K, LocalInvokeBuildError as Kt, WAFv2WebACLProvider as L, resolveBucketRegion as Lt, disableInstanceApiTermination as M, uploadCfnTemplate as Mt, isTerminationProtectionPropagationError as N, expectedOwnerParam as Nt, ProviderRegistry as O, CFN_TEMPLATE_BODY_LIMIT as Ot, IntrinsicFunctionResolver as P, AssemblyReader as Pt, buildAssetRedirectMap as Q, PartialFailureError as Qt, normalizeAwsTagsToCfn as R, AwsClients as Rt, gray as S, resolveCaptureObservedState as St, yellow as T, resolveStateBucketWithDefaultAndSource as Tt, DagBuilder as U, CdkdError as Ut, applyRoleArnIfSet as V, setAwsClients as Vt, TemplateParser as W, ConfigError as Wt, stringifyValue as X, MissingCdkCliError as Xt, AssetPublisher as Y, LockError as Yt, WorkGraph as Z, NestedStackChildDirectDestroyError as Zt, isStatefulRecreateTargetSync as _, synthesisStatusMessage as _t, DeploymentEventsStore as a, SynthesisError as an, getBootstrapMarkerKey as at, bold as b, resolveApp as bt, replayFailedOperations as c, normalizeAwsError as cn, validateContainerRepoName as ct, withRetry as d, getDockerCmd as dt, ResourceTimeoutError as en, loadPublishableAssetManifest as et, isRetryableTransientError as f, runDockerForeground as ft, MULTI_REGION_RECREATE_BLOCKED_TYPES as g, Synthesizer as gt, extractDeploymentEventError as h, getDockerImageBySourceHash as ht, DeploymentEventsReader as i, StateError as in, ensureAssetStorage as it, slowCcOperationTimeoutMs as j, findLargeInlineResources as jt, findActionableSilentDrops as k, CFN_TEMPLATE_URL_LIMIT as kt, replayRollback as l, withErrorHandling as ln, buildDockerImage as lt, computeImplicitDeleteEdges as m, AssetManifestLoader as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, StackHasActiveImportsError as nn, AssetModeResolver as nt, planFailedOps as o, formatError as on, parseBootstrapMarker as ot, IMPLICIT_DELETE_DEPENDENCIES as p, runDockerStreaming as pt, rebuildClientForBucketRegion as q, LocalMigrateError as qt, DeployEngine as r, StackTerminationProtectionError as rn, BOOTSTRAP_MARKER_PREFIX as rt, planRollback as s, isCdkdError as sn, validateAssetBucketName as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, ResourceUpdateNotSupportedError as tn, rewriteTemplateAssetReferences as tt, withResourceDeadline as u, __exportAll as un, formatDockerLoginError as ut, renderStatefulReason as v, getDefaultStateBucketName as vt, red as w, resolveStateBucketWithDefault as wt, cyan as x, resolveAutoAssetStorage as xt, formatResourceLine as y, getLegacyStateBucketName as yt, resolveExplicitPhysicalId as z, getAwsClients as zt };
19220
- //# sourceMappingURL=deploy-engine-Dirmvxw3.js.map
19255
+ export { buildAssetRedirectMap as $, PartialFailureError as $t, findActionableSilentDrops as A, CFN_TEMPLATE_URL_LIMIT as At, resolveExplicitPhysicalId as B, getAwsClients as Bt, green as C, resolveCaptureObservedState as Ct, collectInlinePolicyNamesManagedBySiblings as D, resolveUseCdkBootstrapAssets as Dt, IAMRoleProvider as E, resolveStateBucketWithDefaultAndSource as Et, IntrinsicFunctionResolver as F, AssemblyReader as Ft, TemplateParser as G, ConfigError as Gt, applyRoleArnIfSet as H, setAwsClients as Ht, cfnRefValueFromPhysicalId as I, processStackMessages as It, rebuildClientForBucketRegion as J, LocalMigrateError as Jt, LockManager as K, DependencyError as Kt, refStateLookupFromResource as L, clearBucketRegionCache as Lt, slowCcOperationTimeoutMs as M, findLargeInlineResources as Mt, disableInstanceApiTermination as N, uploadCfnTemplate as Nt, clearOnUpdateRemoval as O, warnDeprecatedNoPrefixCliFlag as Ot, isTerminationProtectionPropagationError as P, expectedOwnerParam as Pt, WorkGraph as Q, NestedStackChildDirectDestroyError as Qt, WAFv2WebACLProvider as R, resolveBucketRegion as Rt, gray as S, resolveAutoAssetStorage as St, yellow as T, resolveStateBucketWithDefault as Tt, DiffCalculator as U, AssetError as Ut, assertRegionMatch as V, resetAwsClients as Vt, DagBuilder as W, CdkdError as Wt, AssetPublisher as X, LockError as Xt, shouldRetainResource as Y, LocalStartServiceError as Yt, stringifyValue as Z, MissingCdkCliError as Zt, isStatefulRecreateTargetSync as _, Synthesizer as _t, DeploymentEventsStore as a, StateError as an, ensureAssetStorage as at, bold as b, getLegacyStateBucketName as bt, replayFailedOperations as c, isCdkdError as cn, validateAssetBucketName as ct, withRetry as d, __exportAll as dn, formatDockerLoginError as dt, ProvisioningError as en, createAssetRedirectResolver as et, isRetryableTransientError as f, getDockerCmd as ft, MULTI_REGION_RECREATE_BLOCKED_TYPES as g, getDockerImageBySourceHash as gt, extractDeploymentEventError as h, AssetManifestLoader as ht, DeploymentEventsReader as i, StackTerminationProtectionError as in, BOOTSTRAP_MARKER_PREFIX as it, CloudControlProvider as j, MIGRATE_TMP_PREFIX as jt, ProviderRegistry as k, CFN_TEMPLATE_BODY_LIMIT as kt, replayRollback as l, normalizeAwsError as ln, validateContainerRepoName as lt, computeImplicitDeleteEdges as m, runDockerStreaming as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, ResourceUpdateNotSupportedError as nn, rewriteTemplateAssetReferences as nt, planFailedOps as o, SynthesisError as on, getBootstrapMarkerKey as ot, IMPLICIT_DELETE_DEPENDENCIES as p, runDockerForeground as pt, S3StateBackend as q, LocalInvokeBuildError as qt, DeployEngine as r, StackHasActiveImportsError as rn, AssetModeResolver as rt, planRollback as s, formatError as sn, parseBootstrapMarker as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, ResourceTimeoutError as tn, loadPublishableAssetManifest as tt, withResourceDeadline as u, withErrorHandling as un, buildDockerImage as ut, renderStatefulReason as v, synthesisStatusMessage as vt, red as w, resolveSkipPrefix as wt, cyan as x, resolveApp as xt, formatResourceLine as y, getDefaultStateBucketName as yt, normalizeAwsTagsToCfn as z, AwsClients as zt };
19256
+ //# sourceMappingURL=deploy-engine-_FHAyPJN.js.map