@go-to-k/cdkd 0.51.6 → 0.51.8

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
@@ -35710,22 +35710,37 @@ var FirehoseProvider = class {
35710
35710
  * `KinesisStreamSourceConfiguration` parent fields when present (the
35711
35711
  * `DescribeDeliveryStream` response splits source under `Source.KinesisStreamSourceDescription`).
35712
35712
  *
35713
- * **Destination configurations**: partial coverage. AWS returns destination
35714
- * config under `Destinations[0].*DestinationDescription` (note:
35715
- * `Description`, not `Configuration`). For S3 / ExtendedS3 destinations
35716
- * the top-level fields with a clean reverse-mapping are surfaced —
35717
- * `BucketARN`, `RoleARN`, `Prefix`, `ErrorOutputPrefix`, `BufferingHints`,
35718
- * `CompressionFormat`, plus `S3BackupMode` for Extended. Inner nested
35719
- * fields (`EncryptionConfiguration`, `CloudWatchLoggingOptions`,
35720
- * `ProcessingConfiguration`, `DataFormatConversionConfiguration`,
35721
- * `DynamicPartitioningConfiguration`, `S3BackupConfiguration`) are not
35722
- * re-shaped AWS auto-defaults / extra-metadata / write-only redaction
35723
- * (`Password`) make the round-trip unsafe; they're declared via
35724
- * `getDriftUnknownPaths()` so the comparator skips them instead of firing
35725
- * false drift. Non-S3 destination types
35713
+ * **Destination configurations**: full coverage for S3 / ExtendedS3.
35714
+ * AWS returns destination config under `Destinations[0].*DestinationDescription`
35715
+ * (note: `Description`, not `Configuration`); the SDK reuses the same
35716
+ * type as the corresponding `*Configuration` input for the inner
35717
+ * sub-shapes, so reverse-mapping is a `pickDefinedDeep` pass-through.
35718
+ *
35719
+ * Surfaced top-level fields: `BucketARN`, `RoleARN`, `Prefix`,
35720
+ * `ErrorOutputPrefix`, `BufferingHints`, `CompressionFormat`, plus
35721
+ * `S3BackupMode` for Extended. Surfaced inner nested fields:
35722
+ * `EncryptionConfiguration`, `CloudWatchLoggingOptions` (both shapes);
35723
+ * additionally for Extended `ProcessingConfiguration`,
35724
+ * `DataFormatConversionConfiguration`, `DynamicPartitioningConfiguration`,
35725
+ * `S3BackupConfiguration` (reverse-mapped from the AWS-side
35726
+ * `S3BackupDescription`). Each inner subtree is always emitted (even
35727
+ * as `{}` placeholder) so the v3 `observedProperties` baseline catches
35728
+ * console-side ADDs to a previously-default sub-shape.
35729
+ *
35730
+ * Non-S3 destination types
35726
35731
  * (`Redshift`/`Elasticsearch`/`Amazonopensearchservice`/`Splunk`/`HttpEndpoint`/`AmazonOpenSearchServerless`)
35727
- * stay drift-unknown for v1 — same shape-divergence problem at scale.
35728
- * `DeliveryStreamEncryptionConfigurationInput` also drift-unknown.
35732
+ * are reverse-mapped via `mapRedshiftDescriptionToCfn` /
35733
+ * `mapHttpEndpointDescriptionToCfn` / `mapNonS3DestinationToCfn`. The
35734
+ * SDK reuses field names between Description and Configuration for
35735
+ * these destinations, so a `pickDefinedDeep` pass-through produces a
35736
+ * CFn-compatible shape. AWS-managed read-only `VpcId` is stripped
35737
+ * from `VpcConfigurationDescription`. Write-only fields AWS strips
35738
+ * from descriptions (`RedshiftDestinationConfiguration.Password`,
35739
+ * `HttpEndpointDestinationConfiguration.EndpointConfiguration.AccessKey`)
35740
+ * stay drift-unknown via `getDriftUnknownPaths`.
35741
+ * `DeliveryStreamEncryptionConfigurationInput` is also still
35742
+ * drift-unknown (separate `Get*` call needed for the read-side
35743
+ * `DeliveryStreamEncryptionConfiguration`).
35729
35744
  *
35730
35745
  * Tags are surfaced via a follow-up `ListTagsForDeliveryStream` call
35731
35746
  * with `aws:*` filtered out and always emitted as `[]` placeholder when
@@ -35767,57 +35782,37 @@ var FirehoseProvider = class {
35767
35782
  }
35768
35783
  const dest = desc.Destinations?.[0];
35769
35784
  if (dest?.ExtendedS3DestinationDescription) {
35770
- const ext = dest.ExtendedS3DestinationDescription;
35771
- const out = {};
35772
- if (ext.BucketARN !== void 0)
35773
- out["BucketARN"] = ext.BucketARN;
35774
- if (ext.RoleARN !== void 0)
35775
- out["RoleARN"] = ext.RoleARN;
35776
- if (ext.Prefix !== void 0)
35777
- out["Prefix"] = ext.Prefix;
35778
- if (ext.ErrorOutputPrefix !== void 0)
35779
- out["ErrorOutputPrefix"] = ext.ErrorOutputPrefix;
35780
- if (ext.CompressionFormat !== void 0)
35781
- out["CompressionFormat"] = ext.CompressionFormat;
35782
- if (ext.BufferingHints) {
35783
- const hints = {};
35784
- if (ext.BufferingHints.SizeInMBs !== void 0)
35785
- hints["SizeInMBs"] = ext.BufferingHints.SizeInMBs;
35786
- if (ext.BufferingHints.IntervalInSeconds !== void 0)
35787
- hints["IntervalInSeconds"] = ext.BufferingHints.IntervalInSeconds;
35788
- if (Object.keys(hints).length > 0)
35789
- out["BufferingHints"] = hints;
35790
- }
35791
- if (ext.S3BackupMode !== void 0)
35792
- out["S3BackupMode"] = ext.S3BackupMode;
35793
- if (Object.keys(out).length > 0) {
35794
- result["ExtendedS3DestinationConfiguration"] = out;
35795
- }
35785
+ result["ExtendedS3DestinationConfiguration"] = mapExtendedS3DescriptionToCfn(
35786
+ dest.ExtendedS3DestinationDescription
35787
+ );
35796
35788
  } else if (dest?.S3DestinationDescription) {
35797
- const s3 = dest.S3DestinationDescription;
35798
- const out = {};
35799
- if (s3.BucketARN !== void 0)
35800
- out["BucketARN"] = s3.BucketARN;
35801
- if (s3.RoleARN !== void 0)
35802
- out["RoleARN"] = s3.RoleARN;
35803
- if (s3.Prefix !== void 0)
35804
- out["Prefix"] = s3.Prefix;
35805
- if (s3.ErrorOutputPrefix !== void 0)
35806
- out["ErrorOutputPrefix"] = s3.ErrorOutputPrefix;
35807
- if (s3.CompressionFormat !== void 0)
35808
- out["CompressionFormat"] = s3.CompressionFormat;
35809
- if (s3.BufferingHints) {
35810
- const hints = {};
35811
- if (s3.BufferingHints.SizeInMBs !== void 0)
35812
- hints["SizeInMBs"] = s3.BufferingHints.SizeInMBs;
35813
- if (s3.BufferingHints.IntervalInSeconds !== void 0)
35814
- hints["IntervalInSeconds"] = s3.BufferingHints.IntervalInSeconds;
35815
- if (Object.keys(hints).length > 0)
35816
- out["BufferingHints"] = hints;
35817
- }
35818
- if (Object.keys(out).length > 0) {
35819
- result["S3DestinationConfiguration"] = out;
35820
- }
35789
+ result["S3DestinationConfiguration"] = mapS3DescriptionToCfn(
35790
+ dest.S3DestinationDescription
35791
+ );
35792
+ } else if (dest?.RedshiftDestinationDescription) {
35793
+ result["RedshiftDestinationConfiguration"] = mapRedshiftDescriptionToCfn(
35794
+ dest.RedshiftDestinationDescription
35795
+ );
35796
+ } else if (dest?.ElasticsearchDestinationDescription) {
35797
+ result["ElasticsearchDestinationConfiguration"] = mapNonS3DestinationToCfn(
35798
+ dest.ElasticsearchDestinationDescription
35799
+ );
35800
+ } else if (dest?.AmazonopensearchserviceDestinationDescription) {
35801
+ result["AmazonopensearchserviceDestinationConfiguration"] = mapNonS3DestinationToCfn(
35802
+ dest.AmazonopensearchserviceDestinationDescription
35803
+ );
35804
+ } else if (dest?.AmazonOpenSearchServerlessDestinationDescription) {
35805
+ result["AmazonOpenSearchServerlessDestinationConfiguration"] = mapNonS3DestinationToCfn(
35806
+ dest.AmazonOpenSearchServerlessDestinationDescription
35807
+ );
35808
+ } else if (dest?.SplunkDestinationDescription) {
35809
+ result["SplunkDestinationConfiguration"] = mapNonS3DestinationToCfn(
35810
+ dest.SplunkDestinationDescription
35811
+ );
35812
+ } else if (dest?.HttpEndpointDestinationDescription) {
35813
+ result["HttpEndpointDestinationConfiguration"] = mapHttpEndpointDescriptionToCfn(
35814
+ dest.HttpEndpointDestinationDescription
35815
+ );
35821
35816
  }
35822
35817
  try {
35823
35818
  const tagsResp = await this.getClient().send(
@@ -35842,34 +35837,28 @@ var FirehoseProvider = class {
35842
35837
  * docstring for the full rationale per category.
35843
35838
  *
35844
35839
  * Categories:
35845
- * - Inner nested fields under S3 / ExtendedS3 destinations: shape
35846
- * divergence between `Configuration` (CFn input) and `Description`
35847
- * (AWS read), AWS auto-defaults, write-only fields.
35848
- * - Non-S3 destination types: same shape-divergence problem at scale,
35849
- * deferred to a follow-up.
35840
+ * - Write-only fields AWS strips from descriptions: Redshift
35841
+ * `Password`, HttpEndpoint `EndpointConfiguration.AccessKey`. State
35842
+ * that carries these fires drift on every run otherwise; declaring
35843
+ * them as drift-unknown is the cleanest fix.
35850
35844
  * - `DeliveryStreamEncryptionConfigurationInput`: input-only shape
35851
35845
  * (`KeyARN` + `KeyType`) vs. read-side `DeliveryStreamEncryptionConfiguration`
35852
35846
  * (extra status / failure fields); not yet round-tripped.
35847
+ *
35848
+ * S3 / ExtendedS3 inner nested fields and non-S3 destination types
35849
+ * (Redshift / Elasticsearch / Amazonopensearchservice / Splunk /
35850
+ * HttpEndpoint / AmazonOpenSearchServerless) are now reverse-mapped
35851
+ * via `mapS3DescriptionToCfn` / `mapExtendedS3DescriptionToCfn` /
35852
+ * `mapNonS3DestinationToCfn` / `mapRedshiftDescriptionToCfn` /
35853
+ * `mapHttpEndpointDescriptionToCfn` and no longer drift-unknown at the
35854
+ * top level.
35853
35855
  */
35854
35856
  getDriftUnknownPaths() {
35855
35857
  return [
35856
- // S3 / ExtendedS3 nested fields with shape divergence
35857
- "S3DestinationConfiguration.EncryptionConfiguration",
35858
- "S3DestinationConfiguration.CloudWatchLoggingOptions",
35859
- "ExtendedS3DestinationConfiguration.EncryptionConfiguration",
35860
- "ExtendedS3DestinationConfiguration.CloudWatchLoggingOptions",
35861
- "ExtendedS3DestinationConfiguration.ProcessingConfiguration",
35862
- "ExtendedS3DestinationConfiguration.DataFormatConversionConfiguration",
35863
- "ExtendedS3DestinationConfiguration.DynamicPartitioningConfiguration",
35864
- "ExtendedS3DestinationConfiguration.S3BackupConfiguration",
35865
- // Non-S3 destinations (drift-unknown for v1)
35866
- "RedshiftDestinationConfiguration",
35867
- "ElasticsearchDestinationConfiguration",
35868
- "AmazonopensearchserviceDestinationConfiguration",
35869
- "SplunkDestinationConfiguration",
35870
- "HttpEndpointDestinationConfiguration",
35871
- "AmazonOpenSearchServerlessDestinationConfiguration",
35872
- // Encryption input shape (deferred)
35858
+ // Write-only fields AWS does not return on read.
35859
+ "RedshiftDestinationConfiguration.Password",
35860
+ "HttpEndpointDestinationConfiguration.EndpointConfiguration.AccessKey",
35861
+ // Encryption input shape (deferred — separate Get* call needed).
35873
35862
  "DeliveryStreamEncryptionConfigurationInput"
35874
35863
  ];
35875
35864
  }
@@ -35936,6 +35925,132 @@ var FirehoseProvider = class {
35936
35925
  this.logger.warn(`Firehose ${logicalId} did not reach ACTIVE after ${maxAttempts} attempts`);
35937
35926
  }
35938
35927
  };
35928
+ function pickDefinedDeep(input) {
35929
+ if (input === void 0 || input === null)
35930
+ return void 0;
35931
+ if (typeof input !== "object")
35932
+ return input;
35933
+ if (Array.isArray(input)) {
35934
+ return input.map((v) => pickDefinedDeep(v));
35935
+ }
35936
+ const out = {};
35937
+ for (const [k, v] of Object.entries(input)) {
35938
+ if (v === void 0)
35939
+ continue;
35940
+ const cleaned = pickDefinedDeep(v);
35941
+ if (cleaned === void 0)
35942
+ continue;
35943
+ if (cleaned !== null && typeof cleaned === "object" && !Array.isArray(cleaned) && Object.keys(cleaned).length === 0) {
35944
+ continue;
35945
+ }
35946
+ out[k] = cleaned;
35947
+ }
35948
+ return out;
35949
+ }
35950
+ function mapS3DescriptionToCfn(desc) {
35951
+ const out = {};
35952
+ if (desc["BucketARN"] !== void 0)
35953
+ out["BucketARN"] = desc["BucketARN"];
35954
+ if (desc["RoleARN"] !== void 0)
35955
+ out["RoleARN"] = desc["RoleARN"];
35956
+ if (desc["Prefix"] !== void 0)
35957
+ out["Prefix"] = desc["Prefix"];
35958
+ if (desc["ErrorOutputPrefix"] !== void 0) {
35959
+ out["ErrorOutputPrefix"] = desc["ErrorOutputPrefix"];
35960
+ }
35961
+ if (desc["CompressionFormat"] !== void 0) {
35962
+ out["CompressionFormat"] = desc["CompressionFormat"];
35963
+ }
35964
+ if (desc["BufferingHints"]) {
35965
+ const hints = pickDefinedDeep(desc["BufferingHints"]);
35966
+ if (hints && typeof hints === "object" && Object.keys(hints).length > 0) {
35967
+ out["BufferingHints"] = hints;
35968
+ }
35969
+ }
35970
+ out["EncryptionConfiguration"] = pickDefinedDeep(desc["EncryptionConfiguration"]) ?? {};
35971
+ out["CloudWatchLoggingOptions"] = pickDefinedDeep(desc["CloudWatchLoggingOptions"]) ?? {};
35972
+ return out;
35973
+ }
35974
+ function mapExtendedS3DescriptionToCfn(desc) {
35975
+ const out = mapS3DescriptionToCfn(desc);
35976
+ if (desc["S3BackupMode"] !== void 0)
35977
+ out["S3BackupMode"] = desc["S3BackupMode"];
35978
+ out["ProcessingConfiguration"] = pickDefinedDeep(desc["ProcessingConfiguration"]) ?? {};
35979
+ out["DataFormatConversionConfiguration"] = pickDefinedDeep(desc["DataFormatConversionConfiguration"]) ?? {};
35980
+ out["DynamicPartitioningConfiguration"] = pickDefinedDeep(desc["DynamicPartitioningConfiguration"]) ?? {};
35981
+ if (desc["S3BackupDescription"]) {
35982
+ out["S3BackupConfiguration"] = mapS3DescriptionToCfn(
35983
+ desc["S3BackupDescription"]
35984
+ );
35985
+ } else {
35986
+ out["S3BackupConfiguration"] = {};
35987
+ }
35988
+ return out;
35989
+ }
35990
+ function mapNonS3DestinationToCfn(desc) {
35991
+ const cleaned = pickDefinedDeep(desc);
35992
+ if (!cleaned)
35993
+ return {};
35994
+ if (cleaned["VpcConfigurationDescription"]) {
35995
+ const vpc = { ...cleaned["VpcConfigurationDescription"] };
35996
+ delete vpc["VpcId"];
35997
+ delete cleaned["VpcConfigurationDescription"];
35998
+ if (Object.keys(vpc).length > 0)
35999
+ cleaned["VpcConfiguration"] = vpc;
36000
+ }
36001
+ return cleaned;
36002
+ }
36003
+ function mapRedshiftDescriptionToCfn(desc) {
36004
+ const out = {};
36005
+ for (const k of [
36006
+ "RoleARN",
36007
+ "ClusterJDBCURL",
36008
+ "CopyCommand",
36009
+ "Username",
36010
+ "RetryOptions",
36011
+ "ProcessingConfiguration",
36012
+ "S3BackupMode",
36013
+ "CloudWatchLoggingOptions",
36014
+ "SecretsManagerConfiguration"
36015
+ ]) {
36016
+ const v = pickDefinedDeep(desc[k]);
36017
+ if (v !== void 0)
36018
+ out[k] = v;
36019
+ }
36020
+ if (desc["S3DestinationDescription"]) {
36021
+ out["S3Configuration"] = mapS3DescriptionToCfn(
36022
+ desc["S3DestinationDescription"]
36023
+ );
36024
+ }
36025
+ if (desc["S3BackupDescription"]) {
36026
+ out["S3BackupConfiguration"] = mapS3DescriptionToCfn(
36027
+ desc["S3BackupDescription"]
36028
+ );
36029
+ }
36030
+ return out;
36031
+ }
36032
+ function mapHttpEndpointDescriptionToCfn(desc) {
36033
+ const out = {};
36034
+ for (const k of [
36035
+ "BufferingHints",
36036
+ "CloudWatchLoggingOptions",
36037
+ "RequestConfiguration",
36038
+ "ProcessingConfiguration",
36039
+ "RoleARN",
36040
+ "RetryOptions",
36041
+ "SecretsManagerConfiguration"
36042
+ ]) {
36043
+ const v = pickDefinedDeep(desc[k]);
36044
+ if (v !== void 0)
36045
+ out[k] = v;
36046
+ }
36047
+ if (desc["EndpointConfiguration"]) {
36048
+ const endpoint = pickDefinedDeep(desc["EndpointConfiguration"]);
36049
+ if (endpoint !== void 0)
36050
+ out["EndpointConfiguration"] = endpoint;
36051
+ }
36052
+ return out;
36053
+ }
35939
36054
 
35940
36055
  // src/provisioning/providers/cloudtrail-provider.ts
35941
36056
  import {
@@ -45073,7 +45188,7 @@ function reorderArgs(argv) {
45073
45188
  }
45074
45189
  async function main() {
45075
45190
  const program = new Command14();
45076
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.51.6");
45191
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.51.8");
45077
45192
  program.addCommand(createBootstrapCommand());
45078
45193
  program.addCommand(createSynthCommand());
45079
45194
  program.addCommand(createListCommand());