@go-to-k/cdkd 0.280.16 → 0.280.17

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 requireConfigString, $t as processStackMessages, A as red, At as runDockerStreaming, B as isTerminationProtectionPropagationError, Bt as resolveSkipPrefix, C as isStatefulRecreateTargetSync, Ct as parseBootstrapMarker, D as cyan, Dn as normalizeAwsError, Dt as formatDockerLoginError, E as bold, Et as buildDockerImage, F as ProviderRegistry, Ft as getDefaultStateBucketName, G as normalizeAwsTagsToCfn, Gt as warnDeprecatedNoPrefixCliFlag, H as cfnRefValueFromPhysicalId, Ht as resolveStateBucketWithDefaultAndSource, I as findActionableSilentDrops, It as getLegacyStateBucketName, J as configStringRefusal, Jt as MIGRATE_TMP_PREFIX, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_BODY_LIMIT, L as CloudControlProvider, Lt as resolveApp, M as IAMRoleProvider, Mt as getDockerImageBySourceHash, N as collectInlinePolicyNamesManagedBySiblings, Nt as Synthesizer, O as gray, On as withErrorHandling, Ot as getDockerCmd, P as clearOnUpdateRemoval, Pt as synthesisStatusMessage, Q as requireConfigObject, Qt as AssemblyReader, R as slowCcOperationTimeoutMs, Rt as resolveAutoAssetStorage, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, Sn as StackTerminationProtectionError, St as getBootstrapMarkerKey, T as formatResourceLine, Tt as validateContainerRepoName, U as refStateLookupFromResource, Ut as resolveUseCdkBootstrapAssets, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefault, W as WAFv2WebACLProvider, Wt as stateBucketExistenceConfirmed, X as replayWarn, Xt as uploadCfnTemplate, Y as readConfigString, Yt as findLargeInlineResources, Z as requireConfigArray, Zt as expectedOwnerParam, _ as createPreDeleteFinalSnapshot, _n as PartialFailureError, _t as loadPublishableAssetManifest, a as DeploymentEventsStore, an as setAwsClients, at as isThrottlingError, b as unsupportedFinalSnapshotError, bn as ResourceUpdateNotSupportedError, bt as BOOTSTRAP_MARKER_PREFIX, c as replayFailedOperations, ct as LockManager, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalInvokeBuildError$1, dt as shouldRetainResource, et as applyRoleArnIfSet, f as computeImplicitDeleteEdges, fn as LocalMigrateError, ft as AssetPublisher, g as ccRoutedFinalSnapshotError, gn as NestedStackChildDirectDestroyError, gt as createAssetRedirectResolver, h as buildFinalSnapshotIdentifier, hn as MissingCdkCliError, ht as buildAssetRedirectMap, i as DeploymentEventsReader, in as resetAwsClients, it as isRetryableTransientError, j as yellow, jt as AssetManifestLoader, k as green, kt as runDockerForeground, l as replayRollback, lt as S3StateBackend, m as PRE_DELETE_SNAPSHOT_TYPES, mt as WorkGraph, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as AwsClients, nt as describeTypeWithThrottleRetry, o as planFailedOps, ot as DagBuilder, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalStartServiceError, pt as stringifyValue, q as assertRegionMatch, qt as CFN_TEMPLATE_URL_LIMIT, r as DeployEngine, rn as getAwsClients, rt as withRetry, s as planRollback, sn as CdkdError, st as TemplateParser, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveBucketRegion, tt as DiffCalculator, u as withResourceDeadline, un as DeployCancelledError, ut as rebuildClientForBucketRegion, v as isFinalSnapshotError, vn as ProvisioningError, vt as rewriteTemplateAssetReferences, w as renderStatefulReason, wt as validateAssetBucketName, x as extractDeploymentEventError, xn as StackHasActiveImportsError, xt as ensureAssetStorage, y as refusesFinalSnapshot, yn as ResourceTimeoutError, yt as AssetModeResolver, z as disableInstanceApiTermination, zt as resolveCaptureObservedState } from "./deploy-engine-1eZqhWKB.js";
2
+ import { $ as requireConfigString, $t as processStackMessages, A as red, At as runDockerStreaming, B as isTerminationProtectionPropagationError, Bt as resolveSkipPrefix, C as isStatefulRecreateTargetSync, Ct as parseBootstrapMarker, D as cyan, Dn as normalizeAwsError, Dt as formatDockerLoginError, E as bold, Et as buildDockerImage, F as ProviderRegistry, Ft as getDefaultStateBucketName, G as normalizeAwsTagsToCfn, Gt as warnDeprecatedNoPrefixCliFlag, H as cfnRefValueFromPhysicalId, Ht as resolveStateBucketWithDefaultAndSource, I as findActionableSilentDrops, It as getLegacyStateBucketName, J as configStringRefusal, Jt as MIGRATE_TMP_PREFIX, K as resolveExplicitPhysicalId, Kt as CFN_TEMPLATE_BODY_LIMIT, L as CloudControlProvider, Lt as resolveApp, M as IAMRoleProvider, Mt as getDockerImageBySourceHash, N as collectInlinePolicyNamesManagedBySiblings, Nt as Synthesizer, O as gray, On as withErrorHandling, Ot as getDockerCmd, P as clearOnUpdateRemoval, Pt as synthesisStatusMessage, Q as requireConfigObject, Qt as AssemblyReader, R as slowCcOperationTimeoutMs, Rt as resolveAutoAssetStorage, S as MULTI_REGION_RECREATE_BLOCKED_TYPES, Sn as StackTerminationProtectionError, St as getBootstrapMarkerKey, T as formatResourceLine, Tt as validateContainerRepoName, U as refStateLookupFromResource, Ut as resolveUseCdkBootstrapAssets, V as IntrinsicFunctionResolver, Vt as resolveStateBucketWithDefault, W as WAFv2WebACLProvider, Wt as stateBucketExistenceConfirmed, X as replayWarn, Xt as uploadCfnTemplate, Y as readConfigString, Yt as findLargeInlineResources, Z as requireConfigArray, Zt as expectedOwnerParam, _ as createPreDeleteFinalSnapshot, _n as PartialFailureError, _t as loadPublishableAssetManifest, a as DeploymentEventsStore, an as setAwsClients, at as isThrottlingError, b as unsupportedFinalSnapshotError, bn as ResourceUpdateNotSupportedError, bt as BOOTSTRAP_MARKER_PREFIX, c as replayFailedOperations, ct as LockManager, d as IMPLICIT_DELETE_DEPENDENCIES, dn as LocalInvokeBuildError$1, dt as shouldRetainResource, et as applyRoleArnIfSet, f as computeImplicitDeleteEdges, fn as LocalMigrateError, ft as AssetPublisher, g as ccRoutedFinalSnapshotError, gn as NestedStackChildDirectDestroyError, gt as createAssetRedirectResolver, h as buildFinalSnapshotIdentifier, hn as MissingCdkCliError, ht as buildAssetRedirectMap, i as DeploymentEventsReader, in as resetAwsClients, it as isRetryableTransientError, j as yellow, jt as AssetManifestLoader, k as green, kt as runDockerForeground, l as replayRollback, lt as S3StateBackend, m as PRE_DELETE_SNAPSHOT_TYPES, mt as WorkGraph, n as DEFAULT_RESOURCE_WARN_AFTER_MS, nn as AwsClients, nt as describeTypeWithThrottleRetry, o as planFailedOps, ot as DagBuilder, p as ATOMIC_FINAL_SNAPSHOT_TYPES, pn as LocalStartServiceError, pt as stringifyValue, q as assertRegionMatch, qt as CFN_TEMPLATE_URL_LIMIT, r as DeployEngine, rn as getAwsClients, rt as withRetry, s as planRollback, sn as CdkdError, st as TemplateParser, t as DEFAULT_RESOURCE_TIMEOUT_MS, tn as resolveBucketRegion, tt as DiffCalculator, u as withResourceDeadline, un as DeployCancelledError, ut as rebuildClientForBucketRegion, v as isFinalSnapshotError, vn as ProvisioningError, vt as rewriteTemplateAssetReferences, w as renderStatefulReason, wt as validateAssetBucketName, x as extractDeploymentEventError, xn as StackHasActiveImportsError, xt as ensureAssetStorage, y as refusesFinalSnapshot, yn as ResourceTimeoutError, yt as AssetModeResolver, z as disableInstanceApiTermination, zt as resolveCaptureObservedState } from "./deploy-engine-tCcs8UGn.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-4pPwAL_v.js";
4
+ import { t as ASGProvider } from "./asg-provider-DQLjoTQ3.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, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, 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";
@@ -22462,6 +22462,7 @@ var ApiGatewayV2Provider = class {
22462
22462
  const apiId = properties["ApiId"];
22463
22463
  const integrationType = properties["IntegrationType"];
22464
22464
  if (!apiId || !integrationType) throw new ProvisioningError(`ApiId and IntegrationType are required for API Gateway V2 Integration ${logicalId}`, resourceType, logicalId);
22465
+ this.warnTlsConfigIgnoredIfPublic(logicalId, properties);
22465
22466
  try {
22466
22467
  const integrationId = (await this.getClient().send(new CreateIntegrationCommand({
22467
22468
  ApiId: apiId,
@@ -22630,6 +22631,30 @@ var ApiGatewayV2Provider = class {
22630
22631
  * each uses `properties.ApiId` (passed through PR G's signature
22631
22632
  * extension) to issue the appropriate `Get*` call.
22632
22633
  */
22634
+ /**
22635
+ * `TlsConfig` is meaningful ONLY for a private (VPC-Link) integration.
22636
+ * On a public one (`ConnectionType` absent or `INTERNET`) AWS SILENTLY
22637
+ * IGNORES the field — it is absent from both the `CreateIntegration`
22638
+ * echo and the `GetIntegration` read-back (direct A/B, 2026-08-11
22639
+ * us-east-1) — so the provider can never read it back and a template
22640
+ * that declares it would report permanent phantom drift on the
22641
+ * `properties`-fallback baseline, with `--revert` re-sending a value AWS
22642
+ * discards on every run (issue #1602). The path is scoped by the
22643
+ * resource's own `ConnectionType` via the optional `properties` bag: a
22644
+ * VPC_LINK integration keeps full `TlsConfig` drift coverage (AWS
22645
+ * returns the field there). Without a USABLE properties bag the answer
22646
+ * stays empty — comparing is the safe default, since hiding a private
22647
+ * integration's real `TlsConfig` drift is worse than a false positive on
22648
+ * a caller that could not supply the bag. An EMPTY bag counts as unusable
22649
+ * for the same reason: the caller passes `resource.properties ?? {}`, so
22650
+ * `{}` means "nothing recorded", not "ConnectionType is absent, therefore
22651
+ * public" (an empty bag also has no `TlsConfig` key for the comparator to
22652
+ * walk, so refusing to declare costs nothing).
22653
+ */
22654
+ getDriftUnknownPaths(resourceType, properties) {
22655
+ if (resourceType === "AWS::ApiGatewayV2::Integration" && properties !== void 0 && Object.keys(properties).length > 0 && properties["ConnectionType"] !== "VPC_LINK") return ["TlsConfig"];
22656
+ return [];
22657
+ }
22633
22658
  async readCurrentState(physicalId, _logicalId, resourceType, properties) {
22634
22659
  switch (resourceType) {
22635
22660
  case "AWS::ApiGatewayV2::Api": return this.readApi(physicalId);
@@ -22707,7 +22732,7 @@ var ApiGatewayV2Provider = class {
22707
22732
  if (resp.IntegrationSubtype !== void 0) result["IntegrationSubtype"] = resp.IntegrationSubtype;
22708
22733
  if (resp.PassthroughBehavior !== void 0) result["PassthroughBehavior"] = resp.PassthroughBehavior;
22709
22734
  if (resp.RequestTemplates !== void 0) result["RequestTemplates"] = resp.RequestTemplates;
22710
- if (resp.ResponseParameters !== void 0) result["ResponseParameters"] = this.toCfnResponseParameters(resp.ResponseParameters);
22735
+ if (resp.ResponseParameters !== void 0) result["ResponseParameters"] = this.toCfnResponseParameters(resp.ResponseParameters, properties?.["ResponseParameters"]);
22711
22736
  if (resp.TemplateSelectionExpression !== void 0) result["TemplateSelectionExpression"] = resp.TemplateSelectionExpression;
22712
22737
  if (resp.TlsConfig !== void 0) result["TlsConfig"] = resp.TlsConfig;
22713
22738
  return result;
@@ -23082,6 +23107,7 @@ var ApiGatewayV2Provider = class {
23082
23107
  changed = true;
23083
23108
  }
23084
23109
  if (properties["TlsConfig"] != null && !this.deepEqual(properties["TlsConfig"], previousProperties["TlsConfig"])) {
23110
+ this.warnTlsConfigIgnoredIfPublic(logicalId, properties);
23085
23111
  input.TlsConfig = properties["TlsConfig"];
23086
23112
  changed = true;
23087
23113
  }
@@ -23435,6 +23461,22 @@ var ApiGatewayV2Provider = class {
23435
23461
  return merged;
23436
23462
  }
23437
23463
  /**
23464
+ * Announce a `TlsConfig` that AWS will silently discard (issue #1602):
23465
+ * the field is only honored on a private (VPC-Link) integration, and on a
23466
+ * public one (`ConnectionType` absent or `INTERNET`) AWS accepts the value
23467
+ * and drops it — it never appears on the `GetIntegration` read-back
23468
+ * (direct A/B, 2026-08-11 us-east-1). cdkd still sends the field (parity:
23469
+ * CloudFormation forwards it too and AWS accepts it), but the never-silent
23470
+ * policy requires saying so. The matching drift false positive is closed
23471
+ * by {@link getDriftUnknownPaths}. A WARN on both create and update, never
23472
+ * a throw — the update path can be a state-record replay
23473
+ * (`rollback-executor.ts` / `drift --revert`) where a refusal would leave
23474
+ * the resource un-revertable.
23475
+ */
23476
+ warnTlsConfigIgnoredIfPublic(logicalId, properties) {
23477
+ if (properties["TlsConfig"] != null && properties["ConnectionType"] !== "VPC_LINK") this.logger.warn(`AWS::ApiGatewayV2::Integration ${logicalId}: TlsConfig is only honored on a VPC_LINK (private) integration — AWS silently ignores it on a public one, and the value will never be readable back from AWS (issue #1602).`);
23478
+ }
23479
+ /**
23438
23480
  * `ResponseParameters` is the one `AWS::ApiGatewayV2::Integration` property
23439
23481
  * whose CFn shape does NOT match the SDK's, so forwarding it verbatim is not
23440
23482
  * an option (issue #609). CloudFormation models it as
@@ -23493,26 +23535,87 @@ var ApiGatewayV2Provider = class {
23493
23535
  * baseline carries the CFn list-of-pairs, and every `cdkd drift` run would
23494
23536
  * report permanent phantom drift on a resource nobody touched.
23495
23537
  *
23496
- * The pairs are sorted by `Destination` because this turns an UNORDERED SDK
23497
- * map into an ARRAY, and `calculateResourceDrift` compares arrays
23498
- * POSITIONALLY — AWS does not guarantee map readback order, so an unsorted
23499
- * rebuild would trade the shape-mismatch phantom drift for an ordering one
23500
- * (and `--revert` would re-push an identical value forever). Same reasoning
23501
- * as `src/analyzer/drift-normalize.ts`, applied at the source instead.
23502
- */
23503
- toCfnResponseParameters(value) {
23538
+ * Order matters because this turns an UNORDERED SDK map into an ARRAY, and
23539
+ * `calculateResourceDrift` compares arrays POSITIONALLY AWS does not
23540
+ * guarantee map readback order, so an arbitrary rebuild would trade the
23541
+ * shape-mismatch phantom drift for an ordering one (and `--revert` would
23542
+ * re-push an identical value forever). Declared destinations therefore keep
23543
+ * their DECLARED position and anything else is sorted; both are stable
23544
+ * across reads. Same reasoning as `src/analyzer/drift-normalize.ts`,
23545
+ * applied at the source instead.
23546
+ *
23547
+ * `declared` (the state-recorded desired `ResponseParameters` block, when
23548
+ * the caller has it) makes the inverse MIRROR the template's spelling per
23549
+ * status code (issue #1602): {@link toSdkResponseParameters} accepts an
23550
+ * ALREADY-FLAT block (`{ "<status>": { "<Destination>": "<Source>" } }` —
23551
+ * the SDK spelling a hand-written template may use) and passes it through,
23552
+ * which made the pair non-injective — this method always rebuilt the CFn
23553
+ * list shape, so a flat-spelled baseline could never compare equal to the
23554
+ * read-back and reported permanent phantom drift. For a status code whose
23555
+ * DECLARED block matches the flat-passthrough branch of
23556
+ * {@link toSdkResponseParameters} (an object without an array
23557
+ * `ResponseParameters` member), the read-back now stays flat too; every
23558
+ * other status code (declared CFn shape, declared absent, no `declared` at
23559
+ * all) keeps the CFn list shape. Object comparison is key-based, so the
23560
+ * flat map round-trips without the sort the list shape needs.
23561
+ *
23562
+ * The CFn arm mirrors the declared block too, in the two ways the
23563
+ * `properties`-fallback baseline is compared on: ENTRY ORDER (the
23564
+ * comparator walks arrays positionally, and the template's order is
23565
+ * whatever the author wrote — sorting only the read side is the mistake
23566
+ * `drift-normalize.ts`'s header records) and SCALAR TYPE (CFn types
23567
+ * `Source` as free-form and cdkd coerces a number to a string on the way
23568
+ * out, so re-emitting AWS's string against a numeric declaration is
23569
+ * permanent phantom drift). Declared destinations keep their declared
23570
+ * position and their declared scalar whenever the value still agrees with
23571
+ * AWS; a destination AWS returns that the template never declared is
23572
+ * appended in sorted order, so the result stays deterministic across reads.
23573
+ */
23574
+ toCfnResponseParameters(value, declared) {
23504
23575
  if (value == null) return void 0;
23576
+ const declaredBlocks = declared != null && typeof declared === "object" && !Array.isArray(declared) ? declared : void 0;
23505
23577
  const out = {};
23506
23578
  for (const [statusCode, flat] of Object.entries(value)) {
23507
23579
  if (flat == null || typeof flat !== "object" || Array.isArray(flat)) continue;
23508
- out[statusCode] = { ResponseParameters: Object.entries(flat).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([destination, source]) => ({
23509
- Destination: destination,
23510
- Source: source
23511
- })) };
23580
+ const declaredBlock = declaredBlocks?.[statusCode];
23581
+ const declaredIsBlock = declaredBlock != null && typeof declaredBlock === "object" && !Array.isArray(declaredBlock);
23582
+ const declaredEntries = declaredIsBlock ? declaredBlock["ResponseParameters"] : void 0;
23583
+ if (declaredIsBlock && !Array.isArray(declaredEntries)) {
23584
+ out[statusCode] = flat;
23585
+ continue;
23586
+ }
23587
+ out[statusCode] = { ResponseParameters: this.mirrorDeclaredResponsePairs(flat, declaredEntries) };
23512
23588
  }
23513
23589
  return out;
23514
23590
  }
23515
23591
  /**
23592
+ * Rebuild one status code's CFn list-of-pairs from AWS's flat map, keeping
23593
+ * the DECLARED entries' order and scalar types where they still agree with
23594
+ * AWS. See {@link toCfnResponseParameters} for why both matter.
23595
+ */
23596
+ mirrorDeclaredResponsePairs(flat, declaredEntries) {
23597
+ const remaining = new Map(Object.entries(flat));
23598
+ const pairs = [];
23599
+ if (Array.isArray(declaredEntries)) for (const entry of declaredEntries) {
23600
+ if (entry == null || typeof entry !== "object" || Array.isArray(entry)) continue;
23601
+ const destination = entry["Destination"];
23602
+ if (typeof destination !== "string" || !remaining.has(destination)) continue;
23603
+ const awsSource = remaining.get(destination);
23604
+ remaining.delete(destination);
23605
+ const declaredSource = entry["Source"];
23606
+ const declaredDenotesSame = (typeof declaredSource === "number" || typeof declaredSource === "boolean") && String(declaredSource) === awsSource;
23607
+ pairs.push({
23608
+ Destination: destination,
23609
+ Source: declaredDenotesSame ? declaredSource : awsSource
23610
+ });
23611
+ }
23612
+ for (const [destination, source] of [...remaining.entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) pairs.push({
23613
+ Destination: destination,
23614
+ Source: source
23615
+ });
23616
+ return pairs;
23617
+ }
23618
+ /**
23516
23619
  * Convert CloudFormation Tags (Array<{Key, Value}>) to SDK Tags (Record<string, string>).
23517
23620
  */
23518
23621
  cfnTagsToRecord(tags) {
@@ -51937,7 +52040,7 @@ async function runDriftForStack(stackName, region, stateBackend, providerRegistr
51937
52040
  });
51938
52041
  continue;
51939
52042
  }
51940
- const ignorePaths = provider.getDriftUnknownPaths ? provider.getDriftUnknownPaths(resource.resourceType) : [];
52043
+ const ignorePaths = provider.getDriftUnknownPaths ? provider.getDriftUnknownPaths(resource.resourceType, resource.properties ?? {}) : [];
51941
52044
  const unorderedPaths = provider.getDriftUnorderedPaths ? provider.getDriftUnorderedPaths(resource.resourceType) : [];
51942
52045
  const useObserved = resource.observedProperties !== void 0;
51943
52046
  const baseline = useObserved ? resource.observedProperties : resource.properties ?? {};
@@ -69419,7 +69522,7 @@ function createMigrateCommand() {
69419
69522
  */
69420
69523
  function buildProgram() {
69421
69524
  const program = new Command();
69422
- program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.16");
69525
+ program.name("cdkd").description("CDK Direct - Deploy AWS CDK apps directly via SDK/Cloud Control API").version("0.280.17");
69423
69526
  program.hook("preAction", (_thisCommand, actionCommand) => {
69424
69527
  const { profile } = actionCommand.optsWithGlobals();
69425
69528
  if (profile !== void 0) process.env["AWS_PROFILE"] = profile;