@go-to-k/cdkd 0.278.0 → 0.278.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.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-xrRngpAo.js";
2
+ import { $ as DagBuilder, A as red, At as resolveApp, B as isTerminationProtectionPropagationError, Bt as CFN_TEMPLATE_URL_LIMIT, C as isStatefulRecreateTargetSync, Ct as runDockerStreaming, D as cyan, Dt as synthesisStatusMessage, E as bold, Et as Synthesizer, F as ProviderRegistry, Ft as resolveStateBucketWithDefaultAndSource, G as normalizeAwsTagsToCfn, Gt as AssemblyReader, H as cfnRefValueFromPhysicalId, Ht as findLargeInlineResources, I as findActionableSilentDrops, It as resolveUseCdkBootstrapAssets, J as applyRoleArnIfSet, Jt as resolveBucketRegion, K as resolveExplicitPhysicalId, Kt as processStackMessages, L as CloudControlProvider, Lt as stateBucketExistenceConfirmed, M as IAMRoleProvider, Mt as resolveCaptureObservedState, N as collectInlinePolicyNamesManagedBySiblings, Nt as resolveSkipPrefix, O as gray, Ot as getDefaultStateBucketName, P as clearOnUpdateRemoval, Pt as resolveStateBucketWithDefault, Q as isRetryableTransientError, Qt as setAwsClients, R as slowCcOperationTimeoutMs, Rt as warnDeprecatedNoPrefixCliFlag, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, St as runDockerForeground, T as formatResourceLine, Tt as getDockerImageBySourceHash, U as refStateLookupFromResource, Ut as uploadCfnTemplate, V as IntrinsicFunctionResolver, Vt as MIGRATE_TMP_PREFIX, W as WAFv2WebACLProvider, Wt as expectedOwnerParam, X as describeTypeWithThrottleRetry, Xt as getAwsClients, Y as DiffCalculator, Yt as AwsClients, Z as withRetry, Zt as resetAwsClients, _ as createPreDeleteFinalSnapshot, _t as validateAssetBucketName, a as DeploymentEventsStore, an as LocalMigrateError, at as AssetPublisher, b as unsupportedFinalSnapshotError, bn as normalizeAwsError, bt as formatDockerLoginError, c as replayFailedOperations, cn as MissingCdkCliError, ct as buildAssetRedirectMap, d as IMPLICIT_DELETE_DEPENDENCIES, dn as ProvisioningError, dt as rewriteTemplateAssetReferences, en as CdkdError, et as TemplateParser, f as computeImplicitDeleteEdges, fn as ResourceTimeoutError, ft as AssetModeResolver, g as ccRoutedFinalSnapshotError, gt as parseBootstrapMarker, h as buildFinalSnapshotIdentifier, hn as StackTerminationProtectionError, ht as getBootstrapMarkerKey, i as DeploymentEventsReader, in as LocalInvokeBuildError$1, it as shouldRetainResource, j as yellow, jt as resolveAutoAssetStorage, k as green, kt as getLegacyStateBucketName, l as replayRollback, ln as NestedStackChildDirectDestroyError, lt as createAssetRedirectResolver, m as PRE_DELETE_SNAPSHOT_TYPES, mn as StackHasActiveImportsError, mt as ensureAssetStorage, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nt as S3StateBackend, o as planFailedOps, on as LocalStartServiceError, ot as stringifyValue, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as ResourceUpdateNotSupportedError, pt as BOOTSTRAP_MARKER_PREFIX, q as assertRegionMatch, r as DeployEngine, rn as DeployCancelledError, rt as rebuildClientForBucketRegion, s as planRollback, st as WorkGraph, t as DEFAULT_RESOURCE_TIMEOUT_MS, tt as LockManager, u as withResourceDeadline, un as PartialFailureError, ut as loadPublishableAssetManifest, v as isFinalSnapshotError, vt as validateContainerRepoName, w as renderStatefulReason, wt as AssetManifestLoader, x as extractDeploymentEventError, xn as withErrorHandling, xt as getDockerCmd, y as refusesFinalSnapshot, yt as buildDockerImage, z as disableInstanceApiTermination, zt as CFN_TEMPLATE_BODY_LIMIT } from "./deploy-engine-CunQFmO7.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-B8KbdJqN.js";
4
+ import { t as ASGProvider } from "./asg-provider-D2NA5UuZ.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";
@@ -14790,6 +14790,112 @@ var EventBridgeRuleProvider = class {
14790
14790
  this.eventBridgeClient = awsClients.eventBridge;
14791
14791
  }
14792
14792
  /**
14793
+ * Convert each target's CFn-shaped `EcsParameters` to the SDK shape
14794
+ * (issue #1381). The `AWS::Events::Rule` schema and
14795
+ * `@aws-sdk/client-eventbridge` diverge on several ECS sub-shape
14796
+ * spellings, and the SDK serializer silently drops unknown keys — a
14797
+ * Fargate target's `NetworkConfiguration.AwsVpcConfiguration` never
14798
+ * reached AWS, so PutTargets rejected with "Parameter
14799
+ * NetworkConfiguration must be specified".
14800
+ */
14801
+ toSdkTargets(targets) {
14802
+ return targets.map((target) => {
14803
+ const ecs = target["EcsParameters"];
14804
+ if (!ecs) return target;
14805
+ return {
14806
+ ...target,
14807
+ EcsParameters: this.toSdkEcsParameters(ecs)
14808
+ };
14809
+ });
14810
+ }
14811
+ toSdkEcsParameters(ecs) {
14812
+ const result = { ...ecs };
14813
+ const network = result["NetworkConfiguration"];
14814
+ if (network && network["AwsVpcConfiguration"] !== void 0) {
14815
+ const { AwsVpcConfiguration, ...restNetwork } = network;
14816
+ result["NetworkConfiguration"] = {
14817
+ ...restNetwork,
14818
+ awsvpcConfiguration: AwsVpcConfiguration
14819
+ };
14820
+ }
14821
+ if (result["TagList"] !== void 0) {
14822
+ result["Tags"] = result["TagList"];
14823
+ delete result["TagList"];
14824
+ }
14825
+ if (Array.isArray(result["PlacementStrategies"])) {
14826
+ result["PlacementStrategy"] = result["PlacementStrategies"].map((item) => this.lowerCaseItemKeys(item, ["Type", "Field"]));
14827
+ delete result["PlacementStrategies"];
14828
+ }
14829
+ if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.lowerCaseItemKeys(item, ["Type", "Expression"]));
14830
+ if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.lowerCaseItemKeys(item, [
14831
+ "CapacityProvider",
14832
+ "Weight",
14833
+ "Base"
14834
+ ]));
14835
+ return result;
14836
+ }
14837
+ /**
14838
+ * Inverse of {@link toSdkEcsParameters} for `readCurrentState`:
14839
+ * ListTargetsByRule returns the SDK spellings, but drift compares the
14840
+ * whole `Targets` array against state's CFn spellings — without the
14841
+ * re-map every ECS Fargate rule target would report phantom drift on
14842
+ * `AwsVpcConfiguration` / `TagList` / `PlacementStrategies` under the
14843
+ * `properties`-fallback baseline.
14844
+ */
14845
+ toCfnTargets(targets) {
14846
+ return targets.map((target) => {
14847
+ const ecs = target["EcsParameters"];
14848
+ if (!ecs) return target;
14849
+ return {
14850
+ ...target,
14851
+ EcsParameters: this.toCfnEcsParameters(ecs)
14852
+ };
14853
+ });
14854
+ }
14855
+ toCfnEcsParameters(ecs) {
14856
+ const result = { ...ecs };
14857
+ const network = result["NetworkConfiguration"];
14858
+ if (network && network["awsvpcConfiguration"] !== void 0) {
14859
+ const { awsvpcConfiguration, ...restNetwork } = network;
14860
+ result["NetworkConfiguration"] = {
14861
+ ...restNetwork,
14862
+ AwsVpcConfiguration: awsvpcConfiguration
14863
+ };
14864
+ }
14865
+ if (result["Tags"] !== void 0) {
14866
+ result["TagList"] = result["Tags"];
14867
+ delete result["Tags"];
14868
+ }
14869
+ if (Array.isArray(result["PlacementStrategy"])) {
14870
+ result["PlacementStrategies"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["type", "field"], "upper"));
14871
+ delete result["PlacementStrategy"];
14872
+ }
14873
+ if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["type", "expression"], "upper"));
14874
+ if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
14875
+ "capacityProvider",
14876
+ "weight",
14877
+ "base"
14878
+ ], "upper"));
14879
+ return result;
14880
+ }
14881
+ lowerCaseItemKeys(item, keys) {
14882
+ return this.renameItemKeys(item, keys, "lower");
14883
+ }
14884
+ /**
14885
+ * Flip the first letter's case on the listed keys of one array item
14886
+ * (`Type` <-> `type`, `CapacityProvider` <-> `capacityProvider`); keys
14887
+ * not listed (or absent) pass through unchanged.
14888
+ */
14889
+ renameItemKeys(item, keys, direction) {
14890
+ const result = { ...item };
14891
+ for (const key of keys) if (result[key] !== void 0) {
14892
+ const flipped = direction === "lower" ? key.charAt(0).toLowerCase() + key.slice(1) : key.charAt(0).toUpperCase() + key.slice(1);
14893
+ result[flipped] = result[key];
14894
+ delete result[key];
14895
+ }
14896
+ return result;
14897
+ }
14898
+ /**
14793
14899
  * Create an EventBridge rule
14794
14900
  */
14795
14901
  async create(logicalId, resourceType, properties) {
@@ -14813,7 +14919,7 @@ var EventBridgeRuleProvider = class {
14813
14919
  await this.eventBridgeClient.send(new PutTargetsCommand({
14814
14920
  Rule: ruleName,
14815
14921
  EventBusName: eventBusName,
14816
- Targets: targets
14922
+ Targets: this.toSdkTargets(targets)
14817
14923
  }));
14818
14924
  this.logger.debug(`Added ${targets.length} targets to rule ${ruleName}`);
14819
14925
  }
@@ -14881,7 +14987,7 @@ var EventBridgeRuleProvider = class {
14881
14987
  await this.eventBridgeClient.send(new PutTargetsCommand({
14882
14988
  Rule: ruleName,
14883
14989
  EventBusName: eventBusName,
14884
- Targets: newTargets
14990
+ Targets: this.toSdkTargets(newTargets)
14885
14991
  }));
14886
14992
  this.logger.debug(`Updated ${newTargets.length} targets on rule ${ruleName}`);
14887
14993
  }
@@ -15014,10 +15120,11 @@ var EventBridgeRuleProvider = class {
15014
15120
  if (resp.State !== void 0) result["State"] = resp.State;
15015
15121
  if (resp.RoleArn !== void 0) result["RoleArn"] = resp.RoleArn;
15016
15122
  try {
15017
- result["Targets"] = (await this.eventBridgeClient.send(new ListTargetsByRuleCommand({
15123
+ const targetsResp = await this.eventBridgeClient.send(new ListTargetsByRuleCommand({
15018
15124
  Rule: ruleName,
15019
15125
  ...busParam
15020
- }))).Targets ?? [];
15126
+ }));
15127
+ result["Targets"] = this.toCfnTargets(targetsResp.Targets ?? []);
15021
15128
  } catch (err) {
15022
15129
  if (!(err instanceof ResourceNotFoundException$2)) throw err;
15023
15130
  }
@@ -29391,6 +29498,19 @@ var CognitoUserPoolProvider = class {
29391
29498
  return this.cognitoClient;
29392
29499
  }
29393
29500
  /**
29501
+ * Build the SDK `Policies` input from the CFn `Policies` blob. Both
29502
+ * sub-keys must be forwarded: `SignInPolicy` (passwordless first-auth
29503
+ * factors) was silently dropped before issue #1380, and UpdateUserPool
29504
+ * resets omitted attributes to their defaults, so leaving it out also
29505
+ * wipes an existing sign-in policy on every update.
29506
+ */
29507
+ toSdkUserPoolPolicies(policies) {
29508
+ const result = {};
29509
+ if (policies["PasswordPolicy"]) result.PasswordPolicy = policies["PasswordPolicy"];
29510
+ if (policies["SignInPolicy"]) result.SignInPolicy = policies["SignInPolicy"];
29511
+ return Object.keys(result).length > 0 ? result : void 0;
29512
+ }
29513
+ /**
29394
29514
  * Create a Cognito User Pool
29395
29515
  */
29396
29516
  async create(logicalId, resourceType, properties) {
@@ -29402,8 +29522,8 @@ var CognitoUserPoolProvider = class {
29402
29522
  if (properties["AutoVerifiedAttributes"]) createParams.AutoVerifiedAttributes = properties["AutoVerifiedAttributes"];
29403
29523
  if (properties["UsernameAttributes"]) createParams.UsernameAttributes = properties["UsernameAttributes"];
29404
29524
  if (properties["Policies"]) {
29405
- const policies = properties["Policies"];
29406
- if (policies["PasswordPolicy"]) createParams.Policies = { PasswordPolicy: policies["PasswordPolicy"] };
29525
+ const sdkPolicies = this.toSdkUserPoolPolicies(properties["Policies"]);
29526
+ if (sdkPolicies) createParams.Policies = sdkPolicies;
29407
29527
  }
29408
29528
  if (properties["Schema"]) createParams.Schema = properties["Schema"];
29409
29529
  if (properties["LambdaConfig"]) createParams.LambdaConfig = properties["LambdaConfig"];
@@ -29498,8 +29618,8 @@ var CognitoUserPoolProvider = class {
29498
29618
  try {
29499
29619
  const updateParams = { UserPoolId: physicalId };
29500
29620
  if (properties["Policies"]) {
29501
- const policies = properties["Policies"];
29502
- if (policies["PasswordPolicy"]) updateParams.Policies = { PasswordPolicy: policies["PasswordPolicy"] };
29621
+ const sdkPolicies = this.toSdkUserPoolPolicies(properties["Policies"]);
29622
+ if (sdkPolicies) updateParams.Policies = sdkPolicies;
29503
29623
  }
29504
29624
  if (properties["LambdaConfig"]) updateParams.LambdaConfig = properties["LambdaConfig"];
29505
29625
  if (properties["AutoVerifiedAttributes"]) updateParams.AutoVerifiedAttributes = properties["AutoVerifiedAttributes"];
@@ -35264,14 +35384,16 @@ var SchedulerScheduleProvider = class {
35264
35384
  }
35265
35385
  /**
35266
35386
  * Map the CFn property shape to the Scheduler SDK input shape. The two
35267
- * are PascalCase-identical except `StartDate` / `EndDate`, which CFn
35268
- * carries as ISO strings and the SDK types as `Date`.
35387
+ * are PascalCase-identical except `StartDate` / `EndDate` (CFn carries
35388
+ * ISO strings, the SDK types `Date`) and the Target's ECS sub-shapes
35389
+ * (camelCase islands in the SDK model — see {@link toSdkTarget},
35390
+ * issue #1382).
35269
35391
  */
35270
35392
  toSdkFields(properties) {
35271
35393
  return {
35272
35394
  ScheduleExpression: properties["ScheduleExpression"],
35273
35395
  FlexibleTimeWindow: properties["FlexibleTimeWindow"],
35274
- Target: properties["Target"],
35396
+ Target: this.toSdkTarget(properties["Target"]),
35275
35397
  ...properties["Description"] !== void 0 && { Description: properties["Description"] },
35276
35398
  ...properties["ScheduleExpressionTimezone"] !== void 0 && { ScheduleExpressionTimezone: properties["ScheduleExpressionTimezone"] },
35277
35399
  ...properties["StartDate"] !== void 0 && { StartDate: new Date(properties["StartDate"]) },
@@ -35280,6 +35402,84 @@ var SchedulerScheduleProvider = class {
35280
35402
  ...properties["KmsKeyArn"] !== void 0 && { KmsKeyArn: properties["KmsKeyArn"] }
35281
35403
  };
35282
35404
  }
35405
+ /**
35406
+ * Convert the CFn-shaped `Target` blob's ECS sub-shapes to the SDK shape
35407
+ * (issue #1382). `@aws-sdk/client-scheduler` is PascalCase except a few
35408
+ * camelCase islands the CFn schema spells PascalCase; the SDK serializer
35409
+ * silently drops unknown keys, so a Fargate target's
35410
+ * `NetworkConfiguration.AwsvpcConfiguration` never reached AWS and
35411
+ * CreateSchedule rejected with "Parameter NetworkConfiguration must be
35412
+ * specified".
35413
+ */
35414
+ toSdkTarget(target) {
35415
+ const ecs = target["EcsParameters"];
35416
+ if (!ecs) return target;
35417
+ const result = { ...ecs };
35418
+ const network = result["NetworkConfiguration"];
35419
+ if (network && network["AwsvpcConfiguration"] !== void 0) {
35420
+ const { AwsvpcConfiguration, ...restNetwork } = network;
35421
+ result["NetworkConfiguration"] = {
35422
+ ...restNetwork,
35423
+ awsvpcConfiguration: AwsvpcConfiguration
35424
+ };
35425
+ }
35426
+ if (Array.isArray(result["PlacementStrategy"])) result["PlacementStrategy"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["Type", "Field"], "lower"));
35427
+ if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["Type", "Expression"], "lower"));
35428
+ if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
35429
+ "CapacityProvider",
35430
+ "Weight",
35431
+ "Base"
35432
+ ], "lower"));
35433
+ return {
35434
+ ...target,
35435
+ EcsParameters: result
35436
+ };
35437
+ }
35438
+ /**
35439
+ * Inverse of {@link toSdkTarget} for `readCurrentState`: GetSchedule
35440
+ * returns the SDK spellings, but drift compares against the state's CFn
35441
+ * spellings — without the re-map every ECS Fargate schedule would report
35442
+ * phantom drift on `AwsvpcConfiguration` after deploy.
35443
+ */
35444
+ toCfnTarget(target) {
35445
+ const raw = target;
35446
+ const ecs = raw["EcsParameters"];
35447
+ if (!ecs) return raw;
35448
+ const result = { ...ecs };
35449
+ const network = result["NetworkConfiguration"];
35450
+ if (network && network["awsvpcConfiguration"] !== void 0) {
35451
+ const { awsvpcConfiguration, ...restNetwork } = network;
35452
+ result["NetworkConfiguration"] = {
35453
+ ...restNetwork,
35454
+ AwsvpcConfiguration: awsvpcConfiguration
35455
+ };
35456
+ }
35457
+ if (Array.isArray(result["PlacementStrategy"])) result["PlacementStrategy"] = result["PlacementStrategy"].map((item) => this.renameItemKeys(item, ["type", "field"], "upper"));
35458
+ if (Array.isArray(result["PlacementConstraints"])) result["PlacementConstraints"] = result["PlacementConstraints"].map((item) => this.renameItemKeys(item, ["type", "expression"], "upper"));
35459
+ if (Array.isArray(result["CapacityProviderStrategy"])) result["CapacityProviderStrategy"] = result["CapacityProviderStrategy"].map((item) => this.renameItemKeys(item, [
35460
+ "capacityProvider",
35461
+ "weight",
35462
+ "base"
35463
+ ], "upper"));
35464
+ return {
35465
+ ...raw,
35466
+ EcsParameters: result
35467
+ };
35468
+ }
35469
+ /**
35470
+ * Flip the first letter's case on the listed keys of one array item
35471
+ * (`Type` <-> `type`, `CapacityProvider` <-> `capacityProvider`); keys
35472
+ * not listed (or absent) pass through unchanged.
35473
+ */
35474
+ renameItemKeys(item, keys, direction) {
35475
+ const result = { ...item };
35476
+ for (const key of keys) if (result[key] !== void 0) {
35477
+ const flipped = direction === "lower" ? key.charAt(0).toLowerCase() + key.slice(1) : key.charAt(0).toUpperCase() + key.slice(1);
35478
+ result[flipped] = result[key];
35479
+ delete result[key];
35480
+ }
35481
+ return result;
35482
+ }
35283
35483
  async create(logicalId, resourceType, properties) {
35284
35484
  const name = properties["Name"] ?? generateResourceName(logicalId, { maxLength: 64 });
35285
35485
  const groupName = this.groupNameOf(properties);
@@ -35382,7 +35582,7 @@ var SchedulerScheduleProvider = class {
35382
35582
  ...response.State !== void 0 && { State: response.State },
35383
35583
  ...response.KmsKeyArn !== void 0 && { KmsKeyArn: response.KmsKeyArn },
35384
35584
  ...response.FlexibleTimeWindow !== void 0 && { FlexibleTimeWindow: response.FlexibleTimeWindow },
35385
- ...response.Target !== void 0 && { Target: response.Target }
35585
+ ...response.Target !== void 0 && { Target: this.toCfnTarget(response.Target) }
35386
35586
  };
35387
35587
  } catch (error) {
35388
35588
  if (error instanceof ResourceNotFoundException$11) return;
@@ -64085,7 +64285,7 @@ function createMigrateCommand() {
64085
64285
  */
64086
64286
  function buildProgram() {
64087
64287
  const program = new Command();
64088
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.0");
64288
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.278.2");
64089
64289
  program.hook("preAction", (_thisCommand, actionCommand) => {
64090
64290
  const { profile } = actionCommand.optsWithGlobals();
64091
64291
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;