Conversation
|
View your CI Pipeline Execution ↗ for commit 188c197
☁️ Nx Cloud last updated this comment at |
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the ConfigurationSourceMaps import path across four files to its new location in nx/src/project-graph/utils/project-configuration/source-maps, as it was moved internally in Nx 22.7.0-rc.0 and is no longer re-exported from project-configuration-utils. We also fixed the Option interface and getItems function in shared-schema to accommodate the changed items property type in CliOption (PropertyDescription | PropertyDescription[]), which was caused by the same Nx upgrade.
Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
ProjectGraph,
} from 'nx/src/devkit-exports';
import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { performance } from 'perf_hooks';
import {
getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
import { getNxWorkspaceConfig } from './get-nx-workspace-config';
import { getNxDaemonClient } from './get-nx-workspace-package';
import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { execSync } from 'child_process';
const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.spec.ts b/libs/shared/schema/src/normalize-schema.spec.ts
index de11a56a..b2418c9d 100644
--- a/libs/shared/schema/src/normalize-schema.spec.ts
+++ b/libs/shared/schema/src/normalize-schema.spec.ts
@@ -25,7 +25,6 @@ describe('utils', () => {
};
it('should work with schema without any properties', async () => {
- // @ts-expect-error absence of required property "properties" is needed to test failure resistance
const r = await normalizeSchema({});
expect(r).toEqual([]);
});
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..0dbf521d 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
}
function getItems(option: CliOption): { items: string[] } | undefined {
- return (
- option.items && {
- items:
- (option.items as ItemsWithEnum).enum ||
- ((option.items as string[]).length && option.items),
- }
- );
+ if (!option.items) return undefined;
+ const enumItems = (option.items as ItemsWithEnum).enum;
+ if (enumItems) {
+ return { items: enumItems };
+ }
+ const stringItems = option.items as string[];
+ if (stringItems.length) {
+ return { items: stringItems };
+ }
+ return undefined;
}
function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..ce3277f1 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -20,7 +20,7 @@ export type CliOption = {
deprecated?: boolean | string;
} & OptionPropertyDescription;
-export interface Option extends CliOption {
+export interface Option extends Omit<CliOption, 'items'> {
tooltip?: string;
itemTooltips?: ItemTooltips;
items?: string[] | ItemsWithEnum;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
ProjectFileMap,
ProjectGraph,
} from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
export type NxProjectConfiguration = ProjectConfiguration & {
files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
import { Logger } from '@nx-console/shared-utils';
import { randomUUID } from 'crypto';
import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';
Or Apply changes locally with:
npx nx-cloud apply-locally uZ9F-OChI
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Important
At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.
Nx Cloud is proposing a fix for your failed CI:
We updated the ConfigurationSourceMaps import path across four files to its new location in nx/src/project-graph/utils/project-configuration/source-maps, as it was moved internally in Nx 22.7.0-rc.0 and is no longer re-exported from project-configuration-utils. We also fixed the Option interface and getItems function in shared-schema to accommodate the changed items property type in CliOption (PropertyDescription | PropertyDescription[]), which was caused by the same Nx upgrade.
Warning
❌ We could not verify this fix.
Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
ProjectGraph,
} from 'nx/src/devkit-exports';
import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { performance } from 'perf_hooks';
import {
getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
import { getNxWorkspaceConfig } from './get-nx-workspace-config';
import { getNxDaemonClient } from './get-nx-workspace-package';
import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { execSync } from 'child_process';
const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.spec.ts b/libs/shared/schema/src/normalize-schema.spec.ts
index de11a56a..b2418c9d 100644
--- a/libs/shared/schema/src/normalize-schema.spec.ts
+++ b/libs/shared/schema/src/normalize-schema.spec.ts
@@ -25,7 +25,6 @@ describe('utils', () => {
};
it('should work with schema without any properties', async () => {
- // @ts-expect-error absence of required property "properties" is needed to test failure resistance
const r = await normalizeSchema({});
expect(r).toEqual([]);
});
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..0dbf521d 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
}
function getItems(option: CliOption): { items: string[] } | undefined {
- return (
- option.items && {
- items:
- (option.items as ItemsWithEnum).enum ||
- ((option.items as string[]).length && option.items),
- }
- );
+ if (!option.items) return undefined;
+ const enumItems = (option.items as ItemsWithEnum).enum;
+ if (enumItems) {
+ return { items: enumItems };
+ }
+ const stringItems = option.items as string[];
+ if (stringItems.length) {
+ return { items: stringItems };
+ }
+ return undefined;
}
function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..ce3277f1 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -20,7 +20,7 @@ export type CliOption = {
deprecated?: boolean | string;
} & OptionPropertyDescription;
-export interface Option extends CliOption {
+export interface Option extends Omit<CliOption, 'items'> {
tooltip?: string;
itemTooltips?: ItemTooltips;
items?: string[] | ItemsWithEnum;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
ProjectFileMap,
ProjectGraph,
} from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
export type NxProjectConfiguration = ProjectConfiguration & {
files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
import { Logger } from '@nx-console/shared-utils';
import { randomUUID } from 'crypto';
import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';
Or Apply changes locally with:
npx nx-cloud apply-locally uZ9F-OChI
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the import path for ConfigurationSourceMaps across four files to reflect its move to a new module in Nx 22.7, and fixed the CliOption type definition to remain compatible with PropertyDescription.items changing from a string-friendly type to PropertyDescription | PropertyDescription[]. These changes will fix the TS2459, TS2430, and TS2322 type errors that were introduced by the Nx upgrade.
Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
ProjectGraph,
} from 'nx/src/devkit-exports';
import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { performance } from 'perf_hooks';
import {
getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
import { getNxWorkspaceConfig } from './get-nx-workspace-config';
import { getNxDaemonClient } from './get-nx-workspace-package';
import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { execSync } from 'child_process';
const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..6e30dc78 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
}
function getItems(option: CliOption): { items: string[] } | undefined {
- return (
- option.items && {
- items:
- (option.items as ItemsWithEnum).enum ||
- ((option.items as string[]).length && option.items),
- }
- );
+ if (!option.items) return undefined;
+ const asItemsWithEnum = option.items as ItemsWithEnum;
+ if (asItemsWithEnum.enum) {
+ return { items: asItemsWithEnum.enum };
+ }
+ const asStringArray = option.items as string[];
+ if (asStringArray.length) {
+ return { items: asStringArray };
+ }
+ return undefined;
}
function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..b48ced19 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -18,7 +18,8 @@ export type CliOption = {
alias?: string;
hidden?: boolean;
deprecated?: boolean | string;
-} & OptionPropertyDescription;
+ items?: OptionPropertyDescription['items'] | string[] | ItemsWithEnum;
+} & Omit<OptionPropertyDescription, 'items'>;
export interface Option extends CliOption {
tooltip?: string;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
ProjectFileMap,
ProjectGraph,
} from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
export type NxProjectConfiguration = ProjectConfiguration & {
files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
import { Logger } from '@nx-console/shared-utils';
import { randomUUID } from 'crypto';
import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';
Or Apply changes locally with:
npx nx-cloud apply-locally HjuB-cEks
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Important
At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.
Nx Cloud is proposing a fix for your failed CI:
We updated the import path for ConfigurationSourceMaps across four files to reflect its move to a new module in Nx 22.7, and fixed the CliOption type definition to remain compatible with PropertyDescription.items changing from a string-friendly type to PropertyDescription | PropertyDescription[]. These changes will fix the TS2459, TS2430, and TS2322 type errors that were introduced by the Nx upgrade.
Tip
✅ We verified this fix by re-running shared-types:typecheck, shared-schema:typecheck, vscode-migrate-sidebar-webview:build and 4 more.
Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
ProjectGraph,
} from 'nx/src/devkit-exports';
import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { performance } from 'perf_hooks';
import {
getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
import { getNxWorkspaceConfig } from './get-nx-workspace-config';
import { getNxDaemonClient } from './get-nx-workspace-package';
import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { execSync } from 'child_process';
const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..6e30dc78 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
}
function getItems(option: CliOption): { items: string[] } | undefined {
- return (
- option.items && {
- items:
- (option.items as ItemsWithEnum).enum ||
- ((option.items as string[]).length && option.items),
- }
- );
+ if (!option.items) return undefined;
+ const asItemsWithEnum = option.items as ItemsWithEnum;
+ if (asItemsWithEnum.enum) {
+ return { items: asItemsWithEnum.enum };
+ }
+ const asStringArray = option.items as string[];
+ if (asStringArray.length) {
+ return { items: asStringArray };
+ }
+ return undefined;
}
function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..b48ced19 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -18,7 +18,8 @@ export type CliOption = {
alias?: string;
hidden?: boolean;
deprecated?: boolean | string;
-} & OptionPropertyDescription;
+ items?: OptionPropertyDescription['items'] | string[] | ItemsWithEnum;
+} & Omit<OptionPropertyDescription, 'items'>;
export interface Option extends CliOption {
tooltip?: string;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
ProjectFileMap,
ProjectGraph,
} from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
export type NxProjectConfiguration = ProjectConfiguration & {
files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
import { Logger } from '@nx-console/shared-utils';
import { randomUUID } from 'crypto';
import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';
Or Apply changes locally with:
npx nx-cloud apply-locally HjuB-cEks
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
return requiredFields.has(nxOption.name);
}
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+ if (!option.items) {
+ return undefined;
+ }
const items = normalizeOptionItems(option.items);
- return items ? { items } : undefined;
+ return { items };
}
function normalizeOptionItems(items: CliOption['items']): string[] | undefined {
Or Apply changes locally with:
npx nx-cloud apply-locally 7N3B-fOhQ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.
Tip
✅ We verified this fix by re-running shared-schema:test.
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
return requiredFields.has(nxOption.name);
}
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+ if (!option.items) {
+ return undefined;
+ }
const items = normalizeOptionItems(option.items);
- return items ? { items } : undefined;
+ return { items };
}
function normalizeOptionItems(items: CliOption['items']): string[] | undefined {
Or Apply changes locally with:
npx nx-cloud apply-locally 7N3B-fOhQ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
Co-authored-by: FrozenPandaz <FrozenPandaz@users.noreply.github.com>
There was a problem hiding this comment.
✅ The fix from Nx Cloud was applied
We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.
Tip
✅ We verified this fix by re-running shared-schema:test.
Suggested Fix changes
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
return requiredFields.has(nxOption.name);
}
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+ if (!option.items) {
+ return undefined;
+ }
const items = normalizeOptionItems(option.items);
- return items ? { items } : undefined;
+ return { items };
}
function normalizeOptionItems(items: CliOption['items']): string[] | undefined {
➡️ This fix was applied by MaxKless
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We added an explicit dependsOn(named("compileKotlin")) to the instrumentCode task in build.gradle.kts to resolve a Gradle 8.13 validation error exposed by the dev.nx.gradle.project-graph 0.1.20 plugin upgrade. This fix satisfies Gradle's strict implicit dependency detection without altering any build behavior.
diff --git a/apps/intellij/build.gradle.kts b/apps/intellij/build.gradle.kts
index 8d2a44c6..80876aa4 100644
--- a/apps/intellij/build.gradle.kts
+++ b/apps/intellij/build.gradle.kts
@@ -163,6 +163,10 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
}
tasks {
+ named("instrumentCode") {
+ dependsOn(named("compileKotlin"))
+ }
+
prepareSandbox() {
from(nxlsRoot) {
include("**")
Or Apply changes locally with:
npx nx-cloud apply-locally q3Ue-DUav
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Important
At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.
Nx Cloud is proposing a fix for your failed CI:
We added an explicit dependsOn(named("compileKotlin")) to the instrumentCode task in build.gradle.kts to resolve a Gradle 8.13 validation error exposed by the dev.nx.gradle.project-graph 0.1.20 plugin upgrade. This fix satisfies Gradle's strict implicit dependency detection without altering any build behavior.
Tip
✅ We verified this fix by re-running intellij:test.
diff --git a/apps/intellij/build.gradle.kts b/apps/intellij/build.gradle.kts
index 8d2a44c6..80876aa4 100644
--- a/apps/intellij/build.gradle.kts
+++ b/apps/intellij/build.gradle.kts
@@ -163,6 +163,10 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
}
tasks {
+ named("instrumentCode") {
+ dependsOn(named("compileKotlin"))
+ }
+
prepareSandbox() {
from(nxlsRoot) {
include("**")
Or Apply changes locally with:
npx nx-cloud apply-locally q3Ue-DUav
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
Updating Nx from 22.6.0-beta.2 to 22.7.0-beta.17