chore(deps): upgrade Nx to 23.1.0, TypeScript to 6.0.3, and align package versions - #9934
chore(deps): upgrade Nx to 23.1.0, TypeScript to 6.0.3, and align package versions#9934rahul-rocket wants to merge 10 commits into
Conversation
- Update nx.json eslint lint inputs to include ^default - Reformat project.json files (ai-provider-*, constants, desktop-activity, desktop-core) - Update apps/gauzy/project.json serve config and remove deprecated setupFile
- Add ignoreDeprecations: '6.0' to tsconfig.base.json and all sub-package tsconfig.json - Add TS6 compat flags to tsconfig.base.json: strict: false, noUncheckedSideEffectImports: false, types: ['*'] - Reformat electron tsconfig files to use tabs consistently - Fix path formatting in root tsconfig.json
- Upgrade @nx/* packages from ^22.5.2 to 23.1.0 - Upgrade nx from ^22.5.2 to 23.1.0 - Upgrade @angular-eslint/* from 21.0.0 to 21.4.0 - Upgrade cypress from ^15.9.0 to 15.18.1 - Upgrade eslint-plugin-cypress from 2.13.4 to 3.6.0 - Upgrade jest from 30.0.0 to 30.3.0 - Upgrade ts-jest from 29.4.6 to 29.4.9 - Upgrade typescript from ^5.9.3 to 6.0.3 - Upgrade webpack from 5.104.1 to 5.108.4 - Upgrade webpack-cli from ^6.0.1 to 7.2.1 - Upgrade verdaccio from ^6.0.5 to 6.8.0 - Add webpack-dev-server ^5.2.1
Align package versions to ensure consistency across the monorepo: - typescript: ^5.9.3 -> ~6.0.3 (43 sub-packages) - @nestjs/common: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps) - @nestjs/core: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps) - @nestjs/swagger: ^11.2.6 -> ^11.4.4 (ai-chat) - @types/express: ^5.0.1 -> ^5.0.3 (7 plugin packages) - tslib: ^2.3.0 -> ^2.6.2 (integration-plane, scheduler) - mysql2: ^3.16.3 -> ^3.17.3 (core, agent, desktop-timer) - ts-jest: 29.4.6 -> 29.4.9 (core) - jest: 30.0.0 -> 30.3.0 (core) - zod: ^4.1.13 -> ^4.3.6 (ai-chat)
- @grpc/grpc-js: ^1.6.7 -> ^1.7.3 (desktop, desktop-api, desktop-timer, server, server-api) - mysql2: ^3.16.3 -> ^3.17.3 (agent, desktop-timer) - jest: 30.0.0 -> 30.3.0 (gauzy, gauzy-e2e) - webpack: 5.104.1 -> 5.108.4 (gauzy) - webpack-cli: ^6.0.1 -> 7.2.1 (gauzy) - karma-jasmine-html-reporter: ^1.5.4 -> ^1.7.0 (gauzy)
Summary by CodeRabbit
WalkthroughThe pull request refreshes workspace dependencies, updates Nx and project target configuration, adds ignore rules, and documents Nx 23.1.0 ESLint and Jest migration procedures. ChangesWorkspace refresh
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
- Update all @nx/* packages and the nx CLI to 23.1.1 - Regenerate yarn.lock against the updated Nx version Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pin typescript to ^5.9.3 across the root package.json and all app/package manifests, and drop the TypeScript 6 only compiler options that came with the upgrade: - Remove "ignoreDeprecations": "6.0" from every tsconfig. - Remove the strict/noUncheckedSideEffectImports/types/esModuleInterop overrides added to tsconfig.base.json for the TS 6 trial. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nx deprecated `projects: "self"` in `dependsOn` entries and will remove it in v24. Omitting `projects` is the sanctioned way to express a same-project dependency, so drop the key from ui-config:build and ui-core:build. `params: "forward"` is kept explicitly: it defaults to "ignore", so collapsing these to bare target strings would have silently stopped forwarding params to the dependent target. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/gauzy/package.json`:
- Around line 193-194: Remove the stale webpack and webpack-cli entries from the
local resolutions configuration in apps/gauzy/package.json so the declared
dependencies webpack 5.108.4 and webpack-cli 7.2.1 are used. Do not retain
conflicting local overrides; only move the policy to the root manifest if it
uses those same versions.
In `@package.json`:
- Around line 762-764: Update the root package.json dependency for
jest-environment-node from the 29.x range to the compatible 30.x line, matching
the pinned Jest version (30.3.2 or the repository’s established 30.x
convention). Leave the other Jest dependencies and configuration unchanged.
- Around line 707-708: Update eslint.config.js to replace `@nx/eslint-plugin-nx`
imports and usage with the corresponding `@nx/eslint-plugin` API, then remove the
stale `@nx/eslint-plugin-nx` entry from the root dependencies while retaining the
Nx 23.1.1 package.
In `@tools/ai-migrations/`@nx/eslint/23.1.0/convert-to-flat-config.md:
- Around line 155-157: Add the migration-specific terms to Cspell’s workspace
technical-word dictionary (or apply file-local ignore directives): add tseslint
at tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155-157,
codeframe and checkstyle at :218, rulesdir at :244, and typecheck at
tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md:1-13.
In `@tools/ai-migrations/`@nx/eslint/23.1.0/migrate-ban-types-rule.md:
- Around line 24-29: Update the migration guidance for custom
`@typescript-eslint/ban-types` types so every custom banned-type entry is
preserved under `@typescript-eslint/no-restricted-types`, including its
corresponding restriction details where supported. Only drop options without an
equivalent after applying this mapping, while retaining the existing mappings
for {}, Function, and wrapper-object types.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 93faa565-fc16-4477-b07a-c586b29ad457
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (42)
.gitignore.prettierignoreapps/agent/package.jsonapps/desktop-api/package.jsonapps/desktop-timer/package.jsonapps/desktop/package.jsonapps/gauzy-e2e/package.jsonapps/gauzy/package.jsonapps/gauzy/project.jsonapps/server-api/package.jsonapps/server/package.jsonapps/worker/package.jsonnx.jsonpackage.jsonpackages/core/package.jsonpackages/plugin/package.jsonpackages/plugins/ai-chat/package.jsonpackages/plugins/ai-provider-anthropic/package.jsonpackages/plugins/ai-provider-anthropic/project.jsonpackages/plugins/ai-provider-gauzy-ai/package.jsonpackages/plugins/ai-provider-gauzy-ai/project.jsonpackages/plugins/ai-provider-openai/package.jsonpackages/plugins/ai-provider-openai/project.jsonpackages/plugins/ai-provider-openrouter/package.jsonpackages/plugins/ai-provider-openrouter/project.jsonpackages/plugins/ai-provider-vercel-gateway/package.jsonpackages/plugins/ai-provider-vercel-gateway/project.jsonpackages/plugins/camshot/package.jsonpackages/plugins/integration-activepieces/package.jsonpackages/plugins/integration-github/package.jsonpackages/plugins/integration-hubstaff/package.jsonpackages/plugins/integration-plane/package.jsonpackages/plugins/integration-sim/package.jsonpackages/plugins/integration-upwork/package.jsonpackages/plugins/soundshot/package.jsonpackages/plugins/videos/package.jsonpackages/scheduler/package.jsonpackages/ui-config/project.jsonpackages/ui-core/project.jsontools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.mdtools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.mdtools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md
💤 Files with no reviewable changes (4)
- packages/plugins/integration-github/package.json
- packages/plugin/package.json
- packages/ui-config/project.json
- packages/ui-core/project.json
| "webpack": "5.108.4", | ||
| "webpack-cli": "7.2.1", |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python - <<'PY'
import json
from pathlib import Path
manifest = json.loads(Path("apps/gauzy/package.json").read_text())
for name in ("webpack", "webpack-cli"):
print(
name,
"direct=", manifest["devDependencies"].get(name),
"local_resolution=", manifest.get("resolutions", {}).get(name),
)
PY
rg -n -C 3 '"resolutions"|"webpack"|"webpack-cli"' package.json apps/gauzy/package.json
rg -n -C 2 '^(webpack|webpack-cli)@' yarn.lockRepository: ever-co/ever-gauzy
Length of output: 3404
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import json
from pathlib import Path
root = json.loads(Path("package.json").read_text())
gauzy = json.loads(Path("apps/gauzy/package.json").read_text())
for name in ("webpack", "webpack-cli"):
root_res = root.get("resolutions", {}).get(name)
gauzy_dep = gauzy.get("devDependencies", {}).get(name)
gauzy_res = gauzy.get("resolutions", {}).get(name)
gauge_cli_dep = gauzy.get("dependencies", {}).get(name)
print(f"{name}:")
print(f" root manifest resolutions={root_res!r}")
print(f" apps/gauzy devDependencies={gauzy_dep!r}")
print(f" apps/gauzy dependencies={gauge_cli_dep!r}")
print(f" apps/gauzy resolutions={gauzy_res!r}")
lock_text = Path("yarn.lock").read_text()
for name in ("webpack-cli@7.2.1:", "webpack@5.108.4:", "webpack@5.104.1, webpack@^5, webpack@^5.80.0, webpack@^5.88.0:", "webpack-cli@^6.0.1:"):
idx = lock_text.find(name)
print(f"\nLock entry {name!r} present={idx != -1}")
PYRepository: ever-co/ever-gauzy
Length of output: 679
Remove the stale apps/gauzy Webpack resolutions.
apps/gauzy/package.json now declares webpack 5.108.4 and webpack-cli 7.2.1, but its local resolutions still override them to webpack 5.104.1 and webpack-cli ^6.0.1. If resolved, the dependency versions will not match the intended upgrade. Either move the policy to the root manifest with matching versions, or remove these stale local overrides.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/gauzy/package.json` around lines 193 - 194, Remove the stale webpack and
webpack-cli entries from the local resolutions configuration in
apps/gauzy/package.json so the declared dependencies webpack 5.108.4 and
webpack-cli 7.2.1 are used. Do not retain conflicting local overrides; only move
the policy to the root manifest if it uses those same versions.
| "@nx/eslint-plugin": "23.1.1", | ||
| "@nx/eslint-plugin-nx": "16.0.0-beta.1", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg --hidden -n \
--glob 'eslint.config.*' \
--glob '.eslintrc*' \
--glob 'nx.json' \
'`@nx/eslint-plugin-nx`|`@nx/eslint-plugin`' .
yarn why `@nx/eslint-plugin-nx`
yarn why `@nx/eslint-plugin`Repository: ever-co/ever-gauzy
Length of output: 2199
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "## package.json relevant deps"
sed -n '680,730p' package.json
echo
echo "## root eslint.config.js"
cat -n eslint.config.js
echo
echo "## package manager lock references"
rg -n '"`@nx/eslint-plugin-nx`"|"`@nx/eslint-plugin`"' package.json yarn.lock || true
echo
echo "## npm metadata for `@nx/eslint-plugin-nx` versions"
npm view `@nx/eslint-plugin-nx` versions --json | sed -n '1,80p'
npm view `@nx/eslint-plugin-nx`@16.0.0-beta.1 --json | sed -n '1,20p'Repository: ever-co/ever-gauzy
Length of output: 3584
Remove the legacy Nx ESLint package usage from the root config.
eslint.config.js imports @nx/eslint-plugin-nx, but that package only has 16.0.0-beta releases while this workspace uses Nx 23.1.1 packages and @nx/eslint-plugin. Migrate the root ESLint config to @nx/eslint-plugin and delete the stale @nx/eslint-plugin-nx dependency.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` around lines 707 - 708, Update eslint.config.js to replace
`@nx/eslint-plugin-nx` imports and usage with the corresponding `@nx/eslint-plugin`
API, then remove the stale `@nx/eslint-plugin-nx` entry from the root dependencies
while retaining the Nx 23.1.1 package.
| "jest": "30.3.0", | ||
| "jest-environment-jsdom": "30.0.0", | ||
| "jest-environment-node": "^29.7.0", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg --hidden -n -C 2 \
--glob 'package.json' \
--glob '**/project.json' \
--glob 'jest.config.*' \
--glob '**/*.spec.*' \
'jest-environment-node|jest-environment-jsdom|jest-jasmine2|testEnvironment|`@jest-environment`' .
yarn why jest-environment-nodeRepository: ever-co/ever-gauzy
Length of output: 22571
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "Relevant package.json dependency lines:"
python3 - <<'PY'
import json
p=json.load(open('package.json'))
for key in ['jest','jest-environment-jsdom','jest-environment-node','jest-jasmine2','jest-util']:
print(f"{key}: {p.get('devDependencies',{}).get(key)}")
PY
echo
echo "Lockfile references for jest-environment-node:"
fd '^(yarn.lock|package-lock.json|pnpm-lock.yaml)$' -x sh -c 'echo "--- $1"; rg -n "jest-environment-node" "$1" | head -80' sh {}Repository: ever-co/ever-gauzy
Length of output: 1087
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "Search for explicit package environment configuration:"
rg --hidden -n \
--glob 'package.json' \
--glob 'nx.json' \
--glob 'jest.preset.js' \
--glob 'jest.config.*' \
--glob 'project.json' \
'jest-environment-node|testEnvironment|preset' .Repository: ever-co/ever-gauzy
Length of output: 26514
Keep the root Jest environment packages on the same 30.x line.
package.json pins jest to 30.3.2 and several Jest configs use environment strings such as node, while jest-environment-node still specifies ^29.7.0. This introduces a direct root package and yarn hoists jest-environment-node@29.7.0; update this dependency to a compatible 30.3.2/30.x value to avoid mixed Jest runtime expectations.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` around lines 762 - 764, Update the root package.json dependency
for jest-environment-node from the 29.x range to the compatible 30.x line,
matching the pinned Jest version (30.3.2 or the repository’s established 30.x
convention). Leave the other Jest dependencies and configuration unchanged.
| import tseslint from 'typescript-eslint'; | ||
|
|
||
| export default [...tseslint.configs.recommended]; |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add the migration terms to Cspell's technical-word dictionary.
The new guides contain valid package, formatter, option, and Nx target identifiers that the spelling check does not recognize. Add them to the workspace dictionary or use file-local Cspell ignore directives.
tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L155-L157: addtseslint.tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L218-L218: addcodeframeandcheckstyle.tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L244-L244: addrulesdir.tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md#L1-L13: addtypecheck.
🧰 Tools
🪛 GitHub Actions: Check Spelling and Typos with cspell / 0_Cspell.txt
[warning] 155-155: cspell: Unknown word (tseslint)
[warning] 157-157: cspell: Unknown word (tseslint)
🪛 GitHub Actions: Check Spelling and Typos with cspell / Cspell
[error] 155-155: cspell: Unknown word (tseslint)
[error] 157-157: cspell: Unknown word (tseslint)
🪛 GitHub Check: Cspell
[warning] 157-157:
Unknown word (tseslint)
[warning] 155-155:
Unknown word (tseslint)
📍 Affects 2 files
tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L155-L157(this comment)tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L218-L218tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md#L244-L244tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md#L1-L13
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@tools/ai-migrations/`@nx/eslint/23.1.0/convert-to-flat-config.md around lines
155 - 157, Add the migration-specific terms to Cspell’s workspace technical-word
dictionary (or apply file-local ignore directives): add tseslint at
tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155-157,
codeframe and checkstyle at :218, rulesdir at :244, and typecheck at
tools/ai-migrations/@nx/jest/23.1.0/verify-typecheck.md:1-13.
Sources: Linters/SAST tools, Pipeline failures
| In every ESLint flat config (`eslint.config.{mjs,cjs,js,cts,ts,mts}`) that sets | ||
| `@typescript-eslint/ban-types`, replace that single entry with the three rules | ||
| above. The options do not map 1:1: if the old entry was just `'error'`/`'warn'`, | ||
| set all three to that level; if it customized `types`/`extendDefaults`, translate | ||
| the intent to whichever successor rule covers each banned type and drop anything | ||
| with no equivalent. Then run `nx run-many -t lint` and confirm the configs load. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== candidate file =="
sed -n '1,80p' tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md
echo "== related files =="
git ls-files 'tools/ai-migrations/@nx/eslint/23.1.0/*' | sed -n '1,120p'
echo "== docs references =="
rg -n "no-restricted-types|ban-types|wrapper-object-types|restrict|types" tools/ai-migrations/@nx/eslint -S || trueRepository: ever-co/ever-gauzy
Length of output: 4890
🌐 Web query:
@typescript-eslint ban-types no-restricted-types successor
💡 Result:
In typescript-eslint v8, the @typescript-eslint/ban-types rule was deprecated and removed [1][2][3]. It has been replaced by several more targeted rules to separate its dual responsibilities: banning configurable types versus banning specific built-in types [4][5][3]. The functionality previously covered by @typescript-eslint/ban-types is now split across the following four rules [1][6][3]: 1. @typescript-eslint/no-restricted-types: This is the direct successor for the configurable aspect of the old rule [1][4]. It allows you to define a custom list of types to ban and provides options for custom error messages, autofixes, and suggestions [7][8]. It does not have any types enabled by default [1][3]. 2. @typescript-eslint/no-empty-object-type: Replaces the portion of ban-types that banned the built-in {} type in confusing locations [1][9]. 3. @typescript-eslint/no-unsafe-function-type: Replaces the portion of ban-types that banned the built-in Function type [1][4]. 4. @typescript-eslint/no-wrapper-object-types: Replaces the portion of ban-types that banned Object and built-in class wrappers like Number, Boolean, and String [1][2]. If you were previously using @typescript-eslint/ban-types, you should migrate to these specific rules, which are typically included in the recommended configurations, or enable them manually in your ESLint configuration [3].
Citations:
- 1: https://typescript-eslint.io/rules/ban-types/
- 2: feat(eslint-plugin): replace ban-types with no-restricted-types, no-unsafe-function-type, no-wrapper-object-types typescript-eslint/typescript-eslint#9102
- 3: https://typescript-eslint.io/blog/announcing-typescript-eslint-v8-beta/
- 4: https://typescript-eslint.io/blog/revamping-the-ban-types-rule/
- 5: Enhancement: [ban-types] Split into default-less no-restricted-types and more targeted type ban rule(s) typescript-eslint/typescript-eslint#8978
- 6: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/ban-types.md
- 7: https://typescript-eslint.io/rules/no-restricted-types/
- 8: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-restricted-types.mdx
- 9: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-types.md
🌐 Web query:
typescript-eslint no-restricted-types migrate ban-types types
💡 Result:
The @typescript-eslint/ban-types rule has been deprecated and removed in typescript-eslint v8 [1][2][3]. It has been replaced by more targeted rules to provide better configuration and clarity [1][4]. To migrate from ban-types, you should replace it with the following rules depending on your needs: 1. Use @typescript-eslint/no-restricted-types for custom bans: This is the direct replacement for the user-configurable portion of ban-types [1][2][4]. Unlike the original rule, it has no default options [5][3]. It allows you to define a specific list of types to ban, optionally providing custom error messages, autofixers (fixWith), and suggestions [5][6]. 2. Use specialized rules for common built-in types: The built-in defaults previously covered by ban-types are now handled by three dedicated, recommended rules [1][3][4]: - @typescript-eslint/no-empty-object-type: Bans the built-in {} type in certain confusing locations [1][2]. - @typescript-eslint/no-unsafe-function-type: Bans the use of the built-in Function type [1][2][4]. - @typescript-eslint/no-wrapper-object-types: Bans the use of Object and built-in class wrappers like Number, String, and Boolean [1][2][4]. If you were previously relying on the default behavior of ban-types, you should enable these three new rules in your ESLint configuration (often handled automatically if you use the recommended presets) [3][4]. If you had custom types banned via ban-types, you should migrate those configurations to the types option within @typescript-eslint/no-restricted-types [5][3].
Citations:
- 1: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/ban-types.md
- 2: https://typescript-eslint.io/rules/ban-types/
- 3: https://typescript-eslint.io/blog/announcing-typescript-eslint-v8-beta/
- 4: https://typescript-eslint.io/blog/revamping-the-ban-types-rule/
- 5: https://typescript-eslint.io/rules/no-restricted-types/
- 6: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-restricted-types.mdx
Document the no-restricted-types mapping for custom ban-types.types entries.
The replacement list currently covers only {} , Function, and wrapper-object types. @typescript-eslint/ban-types also supports custom banned types; keep those entries and map them to @typescript-eslint/no-restricted-types before dropping unmatched options.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@tools/ai-migrations/`@nx/eslint/23.1.0/migrate-ban-types-rule.md around lines
24 - 29, Update the migration guidance for custom `@typescript-eslint/ban-types`
types so every custom banned-type entry is preserved under
`@typescript-eslint/no-restricted-types`, including its corresponding restriction
details where supported. Only drop options without an equivalent after applying
this mapping, while retaining the existing mappings for {}, Function, and
wrapper-object types.
There was a problem hiding this comment.
5 issues found across 43 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".gitignore">
<violation number="1" location=".gitignore:164">
P3: The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.</violation>
</file>
<file name="apps/gauzy/project.json">
<violation number="1" location="apps/gauzy/project.json:185">
P1: Removing the `setupFile` from the gauzy `test` target, without adding an equivalent in `apps/gauzy/jest.config.ts`, means `apps/gauzy/src/test-setup.ts` (which does `import 'jest-preset-angular'`) is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest `setupFile` deprecation by declaring `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` to `apps/gauzy/jest.config.ts` (and mirroring the jest-preset-angular transform/serializers used by the other apps).</violation>
</file>
<file name="package.json">
<violation number="1" location="package.json:707">
P2: Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.</violation>
</file>
<file name="tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md">
<violation number="1" location="tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md:8">
P3: This migration guide only documents the mapping for the built-in `{}`s`, `Function`, and wrapper-object cases of the removed `ban-types` rule. It doesn't address custom entries configured via `ban-types`' `types` option, which should be mapped to `no-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.</violation>
</file>
<file name="tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md">
<violation number="1" location="tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md:155">
P3: The new migration guide introduces technical terms (e.g. `tseslint`, `codeframe`, `checkstyle`, `rulesdir`, `typecheck`) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| "executor": "@nx/jest:jest", | ||
| "options": { | ||
| "jestConfig": "apps/gauzy/jest.config.js", | ||
| "setupFile": "apps/gauzy/src/test-setup.ts", |
There was a problem hiding this comment.
P1: Removing the setupFile from the gauzy test target, without adding an equivalent in apps/gauzy/jest.config.ts, means apps/gauzy/src/test-setup.ts (which does import 'jest-preset-angular') is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest setupFile deprecation by declaring setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'] in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'] to apps/gauzy/jest.config.ts (and mirroring the jest-preset-angular transform/serializers used by the other apps).
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/gauzy/project.json, line 185:
<comment>Removing the `setupFile` from the gauzy `test` target, without adding an equivalent in `apps/gauzy/jest.config.ts`, means `apps/gauzy/src/test-setup.ts` (which does `import 'jest-preset-angular'`) is no longer loaded. Every other Angular app in this monorepo (desktop, desktop-timer, server, server-api) survives the same @nx/jest `setupFile` deprecation by declaring `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` in their jest.config.ts. As-is, gauzy unit tests lose the Angular Zone/TestBed initialization and component tests will break. Recommend adding `setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts']` to `apps/gauzy/jest.config.ts` (and mirroring the jest-preset-angular transform/serializers used by the other apps).</comment>
<file context>
@@ -182,7 +182,6 @@
"options": {
"jestConfig": "apps/gauzy/jest.config.js",
- "setupFile": "apps/gauzy/src/test-setup.ts",
"tsConfig": "apps/gauzy/tsconfig.spec.json"
}
},
</file context>
| "@nx/cypress": "23.1.1", | ||
| "@nx/devkit": "23.1.1", | ||
| "@nx/eslint": "23.1.1", | ||
| "@nx/eslint-plugin": "23.1.1", |
There was a problem hiding this comment.
P2: Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At package.json, line 707:
<comment>Nx packages were upgraded to 23.1.1 here, but @nx/eslint-plugin-nx remains pinned at the old 16.0.0-beta.1 release and is still referenced from the root ESLint config. Consider migrating the root ESLint config to @nx/eslint-plugin and dropping the stale @nx/eslint-plugin-nx dependency to avoid using an incompatible legacy package alongside Nx 23.</comment>
<file context>
@@ -700,20 +700,20 @@
+ "@nx/cypress": "23.1.1",
+ "@nx/devkit": "23.1.1",
+ "@nx/eslint": "23.1.1",
+ "@nx/eslint-plugin": "23.1.1",
"@nx/eslint-plugin-nx": "16.0.0-beta.1",
- "@nx/jest": "^22.5.2",
</file context>
|
|
||
| /Tempnx-console-tmp**/** | ||
|
|
||
| .claude/worktrees No newline at end of file |
There was a problem hiding this comment.
P3: The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .gitignore, line 164:
<comment>The new .gitignore entry is missing a trailing newline at end of file. Add one to conform to POSIX text-file convention and avoid the 'No newline at end of file' diff artifact and potential issues with tooling that expects newline-terminated files.</comment>
<file context>
@@ -160,3 +160,5 @@ apps/server-api/src/assets/icons/menu
/Tempnx-console-tmp**/**
+
+.claude/worktrees
\ No newline at end of file
</file context>
| .claude/worktrees | |
| .claude/worktrees | |
|
|
||
| - `@typescript-eslint/no-empty-object-type` - the `{}` type | ||
| - `@typescript-eslint/no-unsafe-function-type` - the `Function` type | ||
| - `@typescript-eslint/no-wrapper-object-types` - wrapper types (`String`, `Number`, `Boolean`, `Object`, ...) |
There was a problem hiding this comment.
P3: This migration guide only documents the mapping for the built-in {}s, Function, and wrapper-object cases of the removed ban-typesrule. It doesn't address custom entries configured viaban-types' typesoption, which should be mapped tono-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tools/ai-migrations/@nx/eslint/23.1.0/migrate-ban-types-rule.md, line 8:
<comment>This migration guide only documents the mapping for the built-in `{}`s`, `Function`, and wrapper-object cases of the removed `ban-types` rule. It doesn't address custom entries configured via `ban-types`' `types` option, which should be mapped to `no-restricted-types` before those options are dropped, otherwise custom banned-type enforcement silently disappears during migration.</comment>
<file context>
@@ -0,0 +1,29 @@
+
+- `@typescript-eslint/no-empty-object-type` - the `{}` type
+- `@typescript-eslint/no-unsafe-function-type` - the `Function` type
+- `@typescript-eslint/no-wrapper-object-types` - wrapper types (`String`, `Number`, `Boolean`, `Object`, ...)
+
+## First, check whether there is anything to do
</file context>
| @@ -0,0 +1,291 @@ | |||
| # ESLint v9 Flat Config Migration Instructions for LLM | |||
There was a problem hiding this comment.
P3: The new migration guide introduces technical terms (e.g. tseslint, codeframe, checkstyle, rulesdir, typecheck) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tools/ai-migrations/@nx/eslint/23.1.0/convert-to-flat-config.md, line 155:
<comment>The new migration guide introduces technical terms (e.g. `tseslint`, `codeframe`, `checkstyle`, `rulesdir`, `typecheck`) that aren't recognized by the CSpell dictionary, causing the spell-check CI job to fail. Add these terms to the workspace CSpell dictionary or use file-local ignore directives.</comment>
<file context>
@@ -0,0 +1,291 @@
+
+```js
+// AFTER (flat-native, eslint.config.mjs)
+import tseslint from 'typescript-eslint';
+
+export default [...tseslint.configs.recommended];
</file context>
Greptile SummaryThis update moves the workspace to Nx 23.1.1, aligns related development dependencies and lockfile entries, removes deprecated self-project dependency syntax from UI build targets, and adds Nx migration guidance. No product defect was confirmed. T-Rex validation blockedA completed package installation is missing: Confidence Score: 5/5No merge-blocking product defect was identified in the reviewed changes. No independently actionable findings remain. The focused target-configuration comparison confirmed the deprecated field was removed without removing the prerequisite target declarations; runtime execution remains unavailable until dependencies are installed completely. Files Needing Attention: Before relying on the upgrade in CI or release workflows, complete the frozen-lockfile installation and run the migrated Nx targets for
What T-Rex did
Reviews (1): Last reviewed commit: "chore: drop deprecated dependsOn "projec..." | Re-trigger Greptile |



Description
Dependency and toolchain refresh across the monorepo: Nx 22.x → 23.1.0, TypeScript 5.9 → 6.0.3, and version alignment for shared dev dependencies across the root, apps, and all sub-packages.
This replaces the earlier
chore/update-packagesbranch, which was based on adevelopfrom 2026-07-19 and had fallen 196 commits behind. The same seven commits have been rebased onto currentdevelop.Toolchain upgrades
@nx/*packages pinned to23.1.0(previously carets on^22.5.2)~6.0.3in every sub-package'sdevDependencieswebpack-cli6 → 7.2.1, addedwebpack-dev-server ^5.2.1ts-jest29.4.6 → 29.4.915.18.1,eslint-plugin-cypress2.13.4 → 3.6.06.8.0Nx 23 migration
setupFileoption from the@nx/jest:jesttarget inapps/gauzy/project.json(the option no longer exists in@nx/jest23)"^default"to@nx/eslint:lintinputs innx.jsondefaultConfigurationaboveoptionsin the gauzyservetargetai-provider-*project.jsonfiles to match Prettier's current outputTypeScript 6 compatibility
ignoreDeprecations: "6.0"was added totsconfig.base.json, the roottsconfig.json, and every packagetsconfig.jsonto acknowledge options deprecated in TS 6.tsconfig.base.jsonalso pins several options that TS 6 changed the defaults for, so existing code keeps compiling:Review notes
Three things reviewers should weigh in on:
"types": ["*"]intsconfig.base.json—typestakes@typespackage names, not globs, so this is unlikely to do what it looks like it does. It also disables automatic inclusion of all@typespackages. Mosttsconfig.lib.json/tsconfig.spec.jsonfiles overridetypes, so the blast radius is limited to configs inheriting base directly, but this should probably just be removed.strict: false/esModuleInterop: falseat the base config — TS 6 turns both on by default. Pinning them off repo-wide is a reasonable migration step, but it's worth agreeing that it's temporary rather than the new baseline.setupFilewas required by Nx 23, but nothing replaced it, soapps/gauzy/src/test-setup.ts(import 'jest-preset-angular') no longer loads. Separately, the target points atapps/gauzy/jest.config.jswhile the file on disk isjest.config.ts, which predates this branch. Both probably want fixing together, either here or in a follow-up.Type of change
Checklist
developyarn installclean andyarn.lockregeneratedSummary by cubic
Upgrade monorepo tooling to
nx/@nx/*23.1.1 and align package versions across apps/packages. Keeptypescriptat 5.9.3 and remove TS 6-only config; also drop a deprecated NxdependsOnsetting.Dependencies
nx/@nx/*→ 23.1.1,@angular-eslint/*→ 21.4.0, keeptypescriptat ^5.9.3.jest→ 30.3.0,ts-jest→ 29.4.9,cypresspinned to 15.18.1,eslint-plugin-cypress→ 3.6.0.webpack→ 5.108.4,webpack-cli→ 7.2.1, addwebpack-dev-server5.2.1,verdaccio→ 6.8.0.@grpc/grpc-js→ 1.7.3,mysql2→ 3.17.3,@nestjs/common/@nestjs/corepeerDeps → 11.1.26,@nestjs/swagger→ 11.4.4,zod→ 4.3.6,@types/express→ 5.0.3.Migration
setupFilefrom@nx/jestinapps/gauzy, added^defaultto@nx/eslint:lintinputs, movedserve.defaultConfigurationaboveoptions, reformattedproject.json.dependsOn.projects: "self"inpackages/ui-configandpackages/ui-corebuild targets."ignoreDeprecations": "6.0"and TS 6-only flags from alltsconfigs.Written for commit 6e0410b. Summary will update on new commits.