@go-to-k/cdkd 0.265.3 → 0.267.0

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,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as createAssetRedirectResolver, $t as ResourceTimeoutError, A as CloudControlProvider, At as MIGRATE_TMP_PREFIX, B as assertRegionMatch, Bt as setAwsClients, C as green, Ct as resolveSkipPrefix, D as collectInlinePolicyNamesManagedBySiblings, Dt as warnDeprecatedNoPrefixCliFlag, E as IAMRoleProvider, Et as resolveUseCdkBootstrapAssets, F as cfnRefValueFromPhysicalId, G as LockManager, Gt as LocalInvokeBuildError$1, H as DiffCalculator, Ht as CdkdError, I as refStateLookupFromResource, It as resolveBucketRegion, J as shouldRetainResource, K as S3StateBackend, Kt as LocalMigrateError, L as WAFv2WebACLProvider, Lt as AwsClients, M as disableInstanceApiTermination, Mt as uploadCfnTemplate, N as isTerminationProtectionPropagationError, Nt as expectedOwnerParam, O as ProviderRegistry, Ot as CFN_TEMPLATE_BODY_LIMIT, P as IntrinsicFunctionResolver, Pt as AssemblyReader, Q as buildAssetRedirectMap, Qt as ProvisioningError, R as normalizeAwsTagsToCfn, Rt as getAwsClients, S as gray, St as resolveCaptureObservedState, T as yellow, Tt as resolveStateBucketWithDefaultAndSource, U as DagBuilder, V as applyRoleArnIfSet, W as TemplateParser, X as stringifyValue, Xt as NestedStackChildDirectDestroyError, Y as AssetPublisher, Yt as MissingCdkCliError, Z as WorkGraph, Zt as PartialFailureError, _ as isStatefulRecreateTargetSync, _t as synthesisStatusMessage, a as DeploymentEventsStore, at as getBootstrapMarkerKey, b as bold, bt as resolveApp, c as replayFailedOperations, cn as withErrorHandling, ct as validateContainerRepoName, d as withRetry, dt as getDockerCmd, en as ResourceUpdateNotSupportedError, et as loadPublishableAssetManifest, f as isRetryableTransientError, ft as runDockerForeground, g as MULTI_REGION_RECREATE_BLOCKED_TYPES, gt as Synthesizer, h as extractDeploymentEventError, ht as getDockerImageBySourceHash, i as DeploymentEventsReader, it as ensureAssetStorage, j as slowCcOperationTimeoutMs, jt as findLargeInlineResources, k as findActionableSilentDrops, kt as CFN_TEMPLATE_URL_LIMIT, l as replayRollback, lt as buildDockerImage, m as computeImplicitDeleteEdges, mt as AssetManifestLoader, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as StackTerminationProtectionError, nt as AssetModeResolver, o as planFailedOps, ot as parseBootstrapMarker, p as IMPLICIT_DELETE_DEPENDENCIES, pt as runDockerStreaming, q as rebuildClientForBucketRegion, qt as LocalStartServiceError, r as DeployEngine, rt as BOOTSTRAP_MARKER_PREFIX, s as planRollback, sn as normalizeAwsError, st as validateAssetBucketName, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as StackHasActiveImportsError, tt as rewriteTemplateAssetReferences, u as withResourceDeadline, ut as formatDockerLoginError, v as renderStatefulReason, vt as getDefaultStateBucketName, w as red, wt as resolveStateBucketWithDefault, x as cyan, xt as resolveAutoAssetStorage, y as formatResourceLine, yt as getLegacyStateBucketName, z as resolveExplicitPhysicalId, zt as resetAwsClients } from "./deploy-engine-CyxJwyBN.js";
2
+ import { $ as createAssetRedirectResolver, $t as ProvisioningError, A as CloudControlProvider, At as MIGRATE_TMP_PREFIX, B as assertRegionMatch, Bt as resetAwsClients, C as green, Ct as resolveSkipPrefix, D as collectInlinePolicyNamesManagedBySiblings, Dt as warnDeprecatedNoPrefixCliFlag, E as IAMRoleProvider, Et as resolveUseCdkBootstrapAssets, F as cfnRefValueFromPhysicalId, Ft as processStackMessages, G as LockManager, H as DiffCalculator, I as refStateLookupFromResource, J as shouldRetainResource, Jt as LocalStartServiceError, K as S3StateBackend, Kt as LocalInvokeBuildError$1, L as WAFv2WebACLProvider, Lt as resolveBucketRegion, M as disableInstanceApiTermination, Mt as uploadCfnTemplate, N as isTerminationProtectionPropagationError, Nt as expectedOwnerParam, O as ProviderRegistry, Ot as CFN_TEMPLATE_BODY_LIMIT, P as IntrinsicFunctionResolver, Pt as AssemblyReader, Q as buildAssetRedirectMap, Qt as PartialFailureError, R as normalizeAwsTagsToCfn, Rt as AwsClients, S as gray, St as resolveCaptureObservedState, T as yellow, Tt as resolveStateBucketWithDefaultAndSource, U as DagBuilder, Ut as CdkdError, V as applyRoleArnIfSet, Vt as setAwsClients, W as TemplateParser, X as stringifyValue, Xt as MissingCdkCliError, Y as AssetPublisher, Z as WorkGraph, Zt as NestedStackChildDirectDestroyError, _ as isStatefulRecreateTargetSync, _t as synthesisStatusMessage, a as DeploymentEventsStore, at as getBootstrapMarkerKey, b as bold, bt as resolveApp, c as replayFailedOperations, cn as normalizeAwsError, ct as validateContainerRepoName, d as withRetry, dt as getDockerCmd, en as ResourceTimeoutError, et as loadPublishableAssetManifest, f as isRetryableTransientError, ft as runDockerForeground, g as MULTI_REGION_RECREATE_BLOCKED_TYPES, gt as Synthesizer, h as extractDeploymentEventError, ht as getDockerImageBySourceHash, i as DeploymentEventsReader, it as ensureAssetStorage, j as slowCcOperationTimeoutMs, jt as findLargeInlineResources, k as findActionableSilentDrops, kt as CFN_TEMPLATE_URL_LIMIT, l as replayRollback, ln as withErrorHandling, lt as buildDockerImage, m as computeImplicitDeleteEdges, mt as AssetManifestLoader, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as StackHasActiveImportsError, nt as AssetModeResolver, o as planFailedOps, ot as parseBootstrapMarker, p as IMPLICIT_DELETE_DEPENDENCIES, pt as runDockerStreaming, q as rebuildClientForBucketRegion, qt as LocalMigrateError, r as DeployEngine, rn as StackTerminationProtectionError, rt as BOOTSTRAP_MARKER_PREFIX, s as planRollback, st as validateAssetBucketName, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as ResourceUpdateNotSupportedError, tt as rewriteTemplateAssetReferences, u as withResourceDeadline, ut as formatDockerLoginError, v as renderStatefulReason, vt as getDefaultStateBucketName, w as red, wt as resolveStateBucketWithDefault, x as cyan, xt as resolveAutoAssetStorage, y as formatResourceLine, yt as getLegacyStateBucketName, z as resolveExplicitPhysicalId, zt as getAwsClients } from "./deploy-engine-BXgD8s_k.js";
3
3
  import { a as getLiveRenderer, c as PATTERN_B_RESOURCE_TYPES, d as generateResourceNameWithFallback, f as withSkipPrefix, i as runStackBuffered, n as getLogger, o as PATTERN_B_NAME_OPTIONS, p as withStackName, s as PATTERN_B_NAME_PROPERTIES, u as generateResourceName } from "./logger-BYMEE-BS.js";
4
- import { t as ASGProvider } from "./asg-provider-C3MDoBIO.js";
4
+ import { r as clearOnUpdateRemoval, t as ASGProvider } from "./asg-provider-CBMy7ibk.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { createHash, randomBytes, randomUUID } from "node:crypto";
7
7
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
@@ -516,6 +516,15 @@ const useCdkBootstrapAssetsOption = new Option("--use-cdk-bootstrap-assets", "Pu
516
516
  * Output cannot be resolved (default: warn and store no value).
517
517
  */
518
518
  const strictGetattOption = new Option("--strict-getatt", "Fail the deploy on ANY Fn::GetAtt that falls back to the physical ID because cdkd cannot construct the attribute (default: warn and use the physical ID, hard-failing only when the fallback is knowably wrong — an *Arn attribute with a non-ARN value or a *Url attribute with a non-http(s) value). Also fails the deploy when a stack Output cannot be resolved (default: warn and store no value).").default(false);
519
+ /**
520
+ * CDK annotation-message behavior flags (issue #1230, CDK CLI parity).
521
+ * Shared by `cdkd synth` and `cdkd deploy` — the two commands that fail on
522
+ * `Annotations.addError` (issue #1228). `--strict` additionally fails when
523
+ * any WARNING annotation exists (`Found warnings (--strict mode)`);
524
+ * `--ignore-errors` displays every message but never fails the run. When
525
+ * both are passed, strict wins (matches the CDK CLI's failAt resolution).
526
+ */
527
+ const annotationMessageOptions = [new Option("--strict", "Do not proceed with stacks carrying warning annotations").default(false), new Option("--ignore-errors", "Ignore error annotations from stack synthesis, which will likely produce an invalid deployment").default(false)];
519
528
  const deployOptions = [
520
529
  new Option("--concurrency <number>", "Maximum concurrent resource operations").default(10).argParser((value) => parseInt(value, 10)),
521
530
  new Option("--stack-concurrency <number>", "Maximum concurrent stack deployments").default(4).argParser((value) => parseInt(value, 10)),
@@ -1229,6 +1238,10 @@ async function synthCommand(options) {
1229
1238
  ...Object.keys(context).length > 0 && { context }
1230
1239
  };
1231
1240
  const { stacks, assemblyDir } = await synthesizer.synthesize(synthOptions);
1241
+ processStackMessages(stacks, logger, {
1242
+ strict: options.strict === true,
1243
+ ignoreErrors: options.ignoreErrors === true
1244
+ });
1232
1245
  if (stacks.length === 1) {
1233
1246
  const template = stacks[0].template;
1234
1247
  process.stdout.write(toYaml(template));
@@ -1257,7 +1270,8 @@ function createSynthCommand() {
1257
1270
  [
1258
1271
  ...commonOptions,
1259
1272
  ...appOptions,
1260
- ...contextOptions
1273
+ ...contextOptions,
1274
+ ...annotationMessageOptions
1261
1275
  ].forEach((opt) => cmd.addOption(opt));
1262
1276
  cmd.addOption(deprecatedRegionOption);
1263
1277
  return cmd;
@@ -8054,20 +8068,20 @@ var LambdaFunctionProvider = class {
8054
8068
  Role: properties["Role"],
8055
8069
  Handler: properties["Handler"],
8056
8070
  Runtime: properties["Runtime"],
8057
- Timeout: this.clearOnUpdateRemoval(properties["Timeout"], previousProperties["Timeout"], 3),
8058
- MemorySize: this.clearOnUpdateRemoval(properties["MemorySize"], previousProperties["MemorySize"], 128),
8059
- Description: this.clearOnUpdateRemoval(properties["Description"], previousProperties["Description"], ""),
8060
- Environment: this.clearOnUpdateRemoval(this.normalizeEnvironmentForUpdate(properties["Environment"]), previousProperties["Environment"], { Variables: {} }),
8061
- Layers: this.clearOnUpdateRemoval(properties["Layers"], previousProperties["Layers"], []),
8062
- TracingConfig: this.clearOnUpdateRemoval(properties["TracingConfig"], previousProperties["TracingConfig"], { Mode: "PassThrough" }),
8063
- EphemeralStorage: this.clearOnUpdateRemoval(properties["EphemeralStorage"], previousProperties["EphemeralStorage"], { Size: 512 }),
8071
+ Timeout: clearOnUpdateRemoval(properties["Timeout"], previousProperties["Timeout"], 3),
8072
+ MemorySize: clearOnUpdateRemoval(properties["MemorySize"], previousProperties["MemorySize"], 128),
8073
+ Description: clearOnUpdateRemoval(properties["Description"], previousProperties["Description"], ""),
8074
+ Environment: clearOnUpdateRemoval(this.normalizeEnvironmentForUpdate(properties["Environment"]), previousProperties["Environment"], { Variables: {} }),
8075
+ Layers: clearOnUpdateRemoval(properties["Layers"], previousProperties["Layers"], []),
8076
+ TracingConfig: clearOnUpdateRemoval(properties["TracingConfig"], previousProperties["TracingConfig"], { Mode: "PassThrough" }),
8077
+ EphemeralStorage: clearOnUpdateRemoval(properties["EphemeralStorage"], previousProperties["EphemeralStorage"], { Size: 512 }),
8064
8078
  VpcConfig: this.buildVpcConfigForUpdate(properties["VpcConfig"], previousProperties["VpcConfig"]),
8065
- DeadLetterConfig: this.clearOnUpdateRemoval(properties["DeadLetterConfig"], previousProperties["DeadLetterConfig"], { TargetArn: "" }),
8066
- KMSKeyArn: this.clearOnUpdateRemoval(properties["KmsKeyArn"], previousProperties["KmsKeyArn"], ""),
8067
- FileSystemConfigs: this.clearOnUpdateRemoval(properties["FileSystemConfigs"], previousProperties["FileSystemConfigs"], []),
8068
- ImageConfig: this.clearOnUpdateRemoval(properties["ImageConfig"], previousProperties["ImageConfig"], {}),
8069
- SnapStart: this.clearOnUpdateRemoval(properties["SnapStart"], previousProperties["SnapStart"], { ApplyOn: "None" }),
8070
- LoggingConfig: this.clearOnUpdateRemoval(properties["LoggingConfig"], previousProperties["LoggingConfig"], { LogFormat: "Text" })
8079
+ DeadLetterConfig: clearOnUpdateRemoval(properties["DeadLetterConfig"], previousProperties["DeadLetterConfig"], { TargetArn: "" }),
8080
+ KMSKeyArn: clearOnUpdateRemoval(properties["KmsKeyArn"], previousProperties["KmsKeyArn"], ""),
8081
+ FileSystemConfigs: clearOnUpdateRemoval(properties["FileSystemConfigs"], previousProperties["FileSystemConfigs"], []),
8082
+ ImageConfig: clearOnUpdateRemoval(properties["ImageConfig"], previousProperties["ImageConfig"], {}),
8083
+ SnapStart: clearOnUpdateRemoval(properties["SnapStart"], previousProperties["SnapStart"], { ApplyOn: "None" }),
8084
+ LoggingConfig: clearOnUpdateRemoval(properties["LoggingConfig"], previousProperties["LoggingConfig"], { LogFormat: "Text" })
8071
8085
  };
8072
8086
  await this.lambdaClient.send(new UpdateFunctionConfigurationCommand(configParams));
8073
8087
  this.logger.debug(`Updated configuration for Lambda function ${physicalId}`);
@@ -8210,24 +8224,6 @@ var LambdaFunctionProvider = class {
8210
8224
  };
8211
8225
  }
8212
8226
  /**
8213
- * Build an UpdateFunctionConfiguration field value that clears on removal.
8214
- *
8215
- * `UpdateFunctionConfiguration` treats an absent field as "no change", so
8216
- * passing `undefined` for a field the user just dropped from the template
8217
- * leaves the old value live on AWS — the update reports success while the
8218
- * field silently persists. For every optional config field we send its
8219
- * CFn-default / explicit reset value (e.g. Timeout `3`, MemorySize `128`,
8220
- * Environment `{Variables:{}}`, Layers `[]`, TracingConfig
8221
- * `{Mode:'PassThrough'}`, EphemeralStorage `{Size:512}`, DeadLetterConfig
8222
- * `{TargetArn:''}`, KMSKeyArn `''`, FileSystemConfigs `[]`, ImageConfig `{}`,
8223
- * SnapStart `{ApplyOn:'None'}`, LoggingConfig `{LogFormat:'Text'}`) when the
8224
- * field was present before and is now absent. Mirrors `buildVpcConfigForUpdate`.
8225
- */
8226
- clearOnUpdateRemoval(newValue, previousValue, clearValue) {
8227
- if (newValue !== void 0) return newValue;
8228
- if (previousValue !== void 0) return clearValue;
8229
- }
8230
- /**
8231
8227
  * Normalize a template `Environment` block for UpdateFunctionConfiguration.
8232
8228
  *
8233
8229
  * `Environment: {}` (present, but no `Variables` key — a hand-written L1 /
@@ -21947,14 +21943,14 @@ var ECSProvider = class {
21947
21943
  if (!isEcsController && (loadBalancersChanged || serviceRegistriesChanged)) throw new ProvisioningError(`AWS::ECS::Service '${logicalId}' changes LoadBalancers/ServiceRegistries under the '${deploymentControllerType}' deployment controller, which applies them via a new CodeDeploy deployment / task set rather than UpdateService. cdkd does not support updating these under a non-ECS controller; recreate the service or manage the blue/green deployment out-of-band.`, resourceType, logicalId, physicalId);
21948
21944
  const loadBalancersInput = isEcsController && loadBalancersChanged ? this.convertLoadBalancers(properties["LoadBalancers"]) ?? [] : void 0;
21949
21945
  const serviceRegistriesInput = isEcsController && serviceRegistriesChanged ? this.convertServiceRegistries(properties["ServiceRegistries"]) ?? [] : void 0;
21950
- const capacityProviderStrategyInput = this.clearOnUpdateRemoval(this.convertCapacityProviderStrategy(properties["CapacityProviderStrategy"]), previousProperties["CapacityProviderStrategy"], []);
21951
- const placementConstraintsInput = this.clearOnUpdateRemoval(this.convertPlacementConstraints(properties["PlacementConstraints"]), previousProperties["PlacementConstraints"], []);
21952
- const placementStrategyInput = this.clearOnUpdateRemoval(this.convertPlacementStrategies(properties["PlacementStrategies"] ?? properties["PlacementStrategy"]), previousProperties["PlacementStrategies"] ?? previousProperties["PlacementStrategy"], []);
21953
- const platformVersionInput = this.clearOnUpdateRemoval(properties["PlatformVersion"], previousProperties["PlatformVersion"], "LATEST");
21954
- const healthCheckGracePeriodSecondsInput = this.clearOnUpdateRemoval(properties["HealthCheckGracePeriodSeconds"], previousProperties["HealthCheckGracePeriodSeconds"], 0);
21955
- const enableECSManagedTagsInput = this.clearOnUpdateRemoval(properties["EnableECSManagedTags"], previousProperties["EnableECSManagedTags"], false);
21956
- const propagateTagsInput = this.clearOnUpdateRemoval(properties["PropagateTags"], previousProperties["PropagateTags"], "NONE");
21957
- const enableExecuteCommandInput = this.clearOnUpdateRemoval(properties["EnableExecuteCommand"], previousProperties["EnableExecuteCommand"], false);
21946
+ const capacityProviderStrategyInput = clearOnUpdateRemoval(this.convertCapacityProviderStrategy(properties["CapacityProviderStrategy"]), previousProperties["CapacityProviderStrategy"], []);
21947
+ const placementConstraintsInput = clearOnUpdateRemoval(this.convertPlacementConstraints(properties["PlacementConstraints"]), previousProperties["PlacementConstraints"], []);
21948
+ const placementStrategyInput = clearOnUpdateRemoval(this.convertPlacementStrategies(properties["PlacementStrategies"] ?? properties["PlacementStrategy"]), previousProperties["PlacementStrategies"] ?? previousProperties["PlacementStrategy"], []);
21949
+ const platformVersionInput = clearOnUpdateRemoval(properties["PlatformVersion"], previousProperties["PlatformVersion"], "LATEST");
21950
+ const healthCheckGracePeriodSecondsInput = clearOnUpdateRemoval(properties["HealthCheckGracePeriodSeconds"], previousProperties["HealthCheckGracePeriodSeconds"], 0);
21951
+ const enableECSManagedTagsInput = clearOnUpdateRemoval(properties["EnableECSManagedTags"], previousProperties["EnableECSManagedTags"], false);
21952
+ const propagateTagsInput = clearOnUpdateRemoval(properties["PropagateTags"], previousProperties["PropagateTags"], "NONE");
21953
+ const enableExecuteCommandInput = clearOnUpdateRemoval(properties["EnableExecuteCommand"], previousProperties["EnableExecuteCommand"], false);
21958
21954
  try {
21959
21955
  const service = (await client.send(new UpdateServiceCommand({
21960
21956
  cluster: properties["Cluster"],
@@ -21988,20 +21984,6 @@ var ECSProvider = class {
21988
21984
  throw new ProvisioningError(`Failed to update ECS service ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
21989
21985
  }
21990
21986
  }
21991
- /**
21992
- * Resolve an optional UpdateService field so that a property REMOVED from the
21993
- * template is reset to its CloudFormation default instead of silently
21994
- * retaining the old live value (issue #1160 — the absent-field removal
21995
- * silent-drop bug class; reference fix `LambdaFunctionProvider`, #1157).
21996
- *
21997
- * Returns `newValue` when present, the `clearValue` when the field was
21998
- * present before and is now absent (removal), and `undefined` when it was
21999
- * never present (so a genuinely-absent field stays absent = no change).
22000
- */
22001
- clearOnUpdateRemoval(newValue, previousValue, clearValue) {
22002
- if (newValue !== void 0) return newValue;
22003
- if (previousValue !== void 0) return clearValue;
22004
- }
22005
21987
  async deleteService(logicalId, physicalId, resourceType, properties, context) {
22006
21988
  this.logger.debug(`Deleting ECS service ${logicalId}: ${physicalId}`);
22007
21989
  const client = this.getClient();
@@ -23976,16 +23958,16 @@ var RDSProvider = class {
23976
23958
  await this.getClient().send(new ModifyDBClusterCommand({
23977
23959
  DBClusterIdentifier: physicalId,
23978
23960
  EngineVersion: properties["EngineVersion"],
23979
- DeletionProtection: this.clearOnUpdateRemoval(properties["DeletionProtection"], previousProperties["DeletionProtection"], false),
23980
- BackupRetentionPeriod: this.clearOnUpdateRemoval(properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0, previousProperties["BackupRetentionPeriod"] != null ? Number(previousProperties["BackupRetentionPeriod"]) : void 0, 1),
23961
+ DeletionProtection: clearOnUpdateRemoval(properties["DeletionProtection"], previousProperties["DeletionProtection"], false),
23962
+ BackupRetentionPeriod: clearOnUpdateRemoval(properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0, previousProperties["BackupRetentionPeriod"] != null ? Number(previousProperties["BackupRetentionPeriod"]) : void 0, 1),
23981
23963
  ...sendVpcSgIds && { VpcSecurityGroupIds: vpcSgIds },
23982
23964
  MasterUserPassword: properties["MasterUserPassword"],
23983
23965
  Port: properties["Port"] != null ? Number(properties["Port"]) : void 0,
23984
23966
  ...properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
23985
23967
  ...masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
23986
23968
  ...properties["MonitoringRoleArn"] !== void 0 && { MonitoringRoleArn: properties["MonitoringRoleArn"] },
23987
- MonitoringInterval: this.clearOnUpdateRemoval(properties["MonitoringInterval"] != null ? Number(properties["MonitoringInterval"]) : void 0, previousProperties["MonitoringInterval"] != null ? Number(previousProperties["MonitoringInterval"]) : void 0, 0),
23988
- EnableIAMDatabaseAuthentication: this.clearOnUpdateRemoval(properties["EnableIAMDatabaseAuthentication"], previousProperties["EnableIAMDatabaseAuthentication"], false),
23969
+ MonitoringInterval: clearOnUpdateRemoval(properties["MonitoringInterval"] != null ? Number(properties["MonitoringInterval"]) : void 0, previousProperties["MonitoringInterval"] != null ? Number(previousProperties["MonitoringInterval"]) : void 0, 0),
23970
+ EnableIAMDatabaseAuthentication: clearOnUpdateRemoval(properties["EnableIAMDatabaseAuthentication"], previousProperties["EnableIAMDatabaseAuthentication"], false),
23989
23971
  ...hasServerlessV2 && { ServerlessV2ScalingConfiguration: {
23990
23972
  MinCapacity: serverlessV2Config.MinCapacity,
23991
23973
  MaxCapacity: serverlessV2Config.MaxCapacity
@@ -24011,21 +23993,6 @@ var RDSProvider = class {
24011
23993
  throw new ProvisioningError(`Failed to update DBCluster ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
24012
23994
  }
24013
23995
  }
24014
- /**
24015
- * Resolve an optional ModifyDBCluster / ModifyDBInstance field so that a
24016
- * property REMOVED from the template is reset to its CloudFormation
24017
- * default instead of silently retaining the old live value (issue #1160 —
24018
- * the absent-field removal silent-drop bug class; reference fix
24019
- * `LambdaFunctionProvider`, #1157).
24020
- *
24021
- * Returns `newValue` when present, the `clearValue` when the field was
24022
- * present before and is now absent (removal), and `undefined` when it was
24023
- * never present (so a genuinely-absent field stays absent = no change).
24024
- */
24025
- clearOnUpdateRemoval(newValue, previousValue, clearValue) {
24026
- if (newValue !== void 0) return newValue;
24027
- if (previousValue !== void 0) return clearValue;
24028
- }
24029
23996
  async deleteDBCluster(logicalId, physicalId, resourceType, context) {
24030
23997
  this.logger.debug(`Deleting DBCluster ${logicalId}: ${physicalId}`);
24031
23998
  try {
@@ -24117,7 +24084,7 @@ var RDSProvider = class {
24117
24084
  PubliclyAccessible: properties["PubliclyAccessible"],
24118
24085
  ApplyImmediately: true,
24119
24086
  ...properties["AllocatedStorage"] !== void 0 && { AllocatedStorage: Number(properties["AllocatedStorage"]) },
24120
- DeletionProtection: this.clearOnUpdateRemoval(properties["DeletionProtection"], previousProperties["DeletionProtection"], false),
24087
+ DeletionProtection: clearOnUpdateRemoval(properties["DeletionProtection"], previousProperties["DeletionProtection"], false),
24121
24088
  ...newEngineVersion !== void 0 && {
24122
24089
  EngineVersion: newEngineVersion,
24123
24090
  ...allowMajorVersionUpgrade && { AllowMajorVersionUpgrade: true }
@@ -24128,8 +24095,8 @@ var RDSProvider = class {
24128
24095
  ...masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
24129
24096
  ...properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
24130
24097
  ...properties["MonitoringRoleArn"] !== void 0 && { MonitoringRoleArn: properties["MonitoringRoleArn"] },
24131
- MonitoringInterval: this.clearOnUpdateRemoval(properties["MonitoringInterval"] != null ? Number(properties["MonitoringInterval"]) : void 0, previousProperties["MonitoringInterval"] != null ? Number(previousProperties["MonitoringInterval"]) : void 0, 0),
24132
- EnableIAMDatabaseAuthentication: this.clearOnUpdateRemoval(properties["EnableIAMDatabaseAuthentication"], previousProperties["EnableIAMDatabaseAuthentication"], false)
24098
+ MonitoringInterval: clearOnUpdateRemoval(properties["MonitoringInterval"] != null ? Number(properties["MonitoringInterval"]) : void 0, previousProperties["MonitoringInterval"] != null ? Number(previousProperties["MonitoringInterval"]) : void 0, 0),
24099
+ EnableIAMDatabaseAuthentication: clearOnUpdateRemoval(properties["EnableIAMDatabaseAuthentication"], previousProperties["EnableIAMDatabaseAuthentication"], false)
24133
24100
  }));
24134
24101
  this.logger.debug(`Successfully updated DBInstance ${logicalId}`);
24135
24102
  const described = await this.describeDBInstance(physicalId);
@@ -42432,6 +42399,10 @@ async function deployCommand(stacks, options) {
42432
42399
  };
42433
42400
  for (const stack of [...targetStacks]) addDependencies(stack.stackName);
42434
42401
  }
42402
+ processStackMessages(targetStacks, logger, {
42403
+ strict: options.strict === true,
42404
+ ignoreErrors: options.ignoreErrors === true
42405
+ });
42435
42406
  await synthesizer.expandMacrosForStacks(targetStacks, synthOptions);
42436
42407
  const { STSClient, GetCallerIdentityCommand } = await import("@aws-sdk/client-sts");
42437
42408
  const stsClient = new STSClient({ region: options.region || process.env["AWS_REGION"] || "us-east-1" });
@@ -42693,7 +42664,8 @@ function createDeployCommand() {
42693
42664
  ...stateOptions,
42694
42665
  ...stackOptions,
42695
42666
  ...deployOptions,
42696
- ...contextOptions
42667
+ ...contextOptions,
42668
+ ...annotationMessageOptions
42697
42669
  ].forEach((opt) => cmd.addOption(opt));
42698
42670
  cmd.addOption(deprecatedRegionOption);
42699
42671
  return cmd;
@@ -61968,7 +61940,7 @@ function createMigrateCommand() {
61968
61940
  */
61969
61941
  function buildProgram() {
61970
61942
  const program = new Command();
61971
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.265.3");
61943
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.267.0");
61972
61944
  program.hook("preAction", (_thisCommand, actionCommand) => {
61973
61945
  const { profile } = actionCommand.optsWithGlobals();
61974
61946
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;