Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runs:
using: composite
steps:
- name: Install pnpm
uses: pnpm/action-setup@v3
uses: pnpm/action-setup@v6
- name: Install node
uses: actions/setup-node@v6
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/checking-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v6
with:
node-version: 24.13.1
node-version: 24.15.0
cache: pnpm

- run: pnpm install --frozen-lockfile
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "1.0.0",
"private": true,
"description": "Monorepo workspace for effect-template",
"packageManager": "pnpm@10.30.0",
"packageManager": "pnpm@11.1.2",
"workspaces": [
"packages/*"
],
Expand All @@ -21,8 +21,8 @@
"lint-app": "pnpm --filter @effect-template/app lint"
},
"devDependencies": {
"@changesets/changelog-github": "^0.5.2",
"@changesets/cli": "^2.29.8"
"@changesets/changelog-github": "^0.7.0",
"@changesets/cli": "^2.31.0"
},
"repository": {
"type": "git",
Expand Down
70 changes: 35 additions & 35 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,54 +34,54 @@
"url": "https://github.com/ProverCoderAI/effect-template/issues"
},
"homepage": "https://github.com/ProverCoderAI/effect-template#readme",
"packageManager": "pnpm@10.30.0",
"packageManager": "pnpm@11.1.2",
"dependencies": {
"@effect/cli": "^0.73.2",
"@effect/cluster": "^0.56.4",
"@effect/experimental": "^0.58.0",
"@effect/platform": "^0.94.5",
"@effect/platform-node": "^0.104.1",
"@effect/printer": "^0.47.0",
"@effect/printer-ansi": "^0.47.0",
"@effect/rpc": "^0.73.2",
"@effect/cli": "^0.75.1",
"@effect/cluster": "^0.58.2",
"@effect/experimental": "^0.60.0",
"@effect/platform": "^0.96.1",
"@effect/platform-node": "^0.106.0",
"@effect/printer": "^0.49.0",
"@effect/printer-ansi": "^0.49.0",
"@effect/rpc": "^0.75.1",
"@effect/schema": "^0.75.5",
"@effect/sql": "^0.49.0",
"@effect/typeclass": "^0.38.0",
"@effect/workflow": "^0.16.0",
"effect": "^3.19.18",
"ts-morph": "^27.0.2"
"@effect/sql": "^0.51.1",
"@effect/typeclass": "^0.40.0",
"@effect/workflow": "^0.18.1",
"effect": "^3.21.2",
"ts-morph": "^28.0.0"
},
"devDependencies": {
"@biomejs/biome": "^2.4.2",
"@biomejs/biome": "^2.4.15",
"@effect/eslint-plugin": "^0.3.2",
"@effect/language-service": "latest",
"@effect/vitest": "^0.27.0",
"@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
"@eslint/compat": "2.0.2",
"@eslint/eslintrc": "3.3.3",
"@effect/vitest": "^0.29.0",
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
"@eslint/compat": "2.1.0",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@prover-coder-ai/eslint-plugin-suggest-members": "^0.0.25",
"@prover-coder-ai/eslint-plugin-suggest-members": "^0.0.26",
"@ton-ai-core/vibecode-linter": "^1.0.11",
"@types/node": "^25.3.0",
"@typescript-eslint/eslint-plugin": "^8.56.0",
"@typescript-eslint/parser": "^8.56.0",
"@vitest/coverage-v8": "^4.0.18",
"eslint": "^10.0.0",
"@types/node": "^25.8.0",
"@typescript-eslint/eslint-plugin": "^8.59.3",
"@typescript-eslint/parser": "^8.59.3",
"@vitest/coverage-v8": "^4.1.6",
"eslint": "^10.3.0",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-codegen": "0.34.1",
"@effect-template/eslint-template": "workspace:*",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-sonarjs": "^4.0.0",
"eslint-plugin-simple-import-sort": "^13.0.0",
"eslint-plugin-sonarjs": "^4.0.3",
"eslint-plugin-sort-destructure-keys": "^3.0.0",
"eslint-plugin-unicorn": "^63.0.0",
"@vitest/eslint-plugin": "^1.6.9",
"globals": "^17.3.0",
"jscpd": "^4.0.8",
"typescript": "^5.9.3",
"typescript-eslint": "^8.56.0",
"vite": "^7.3.1",
"eslint-plugin-unicorn": "^64.0.0",
"@vitest/eslint-plugin": "^1.6.17",
"globals": "^17.6.0",
"jscpd": "^4.2.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.3",
"vite": "^8.0.13",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^4.0.18"
"vitest": "^4.1.6"
}
}
80 changes: 40 additions & 40 deletions packages/eslint-template/package.json
Original file line number Diff line number Diff line change
@@ -1,59 +1,59 @@
{
"dependencies": {
"@effect/cli": "^0.73.2",
"@effect/cluster": "^0.56.4",
"@effect/experimental": "^0.58.0",
"@effect/platform": "^0.94.5",
"@effect/platform-node": "^0.104.1",
"@effect/printer": "^0.47.0",
"@effect/printer-ansi": "^0.47.0",
"@effect/rpc": "^0.73.2",
"@effect/cli": "^0.75.1",
"@effect/cluster": "^0.58.2",
"@effect/experimental": "^0.60.0",
"@effect/platform": "^0.96.1",
"@effect/platform-node": "^0.106.0",
"@effect/printer": "^0.49.0",
"@effect/printer-ansi": "^0.49.0",
"@effect/rpc": "^0.75.1",
"@effect/schema": "^0.75.5",
"@effect/sql": "^0.49.0",
"@effect/typeclass": "^0.38.0",
"@effect/workflow": "^0.16.0",
"@typescript-eslint/utils": "8.56.0",
"effect": "^3.19.18",
"ts-morph": "^27.0.2"
"@effect/sql": "^0.51.1",
"@effect/typeclass": "^0.40.0",
"@effect/workflow": "^0.18.1",
"@typescript-eslint/utils": "8.59.3",
"effect": "^3.21.2",
"ts-morph": "^28.0.0"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Search for ts-morph and vite API usage to assess breaking change impact

echo "=== Checking ts-morph usage patterns ==="
rg -n --type ts --type js -C 3 "from ['\"]ts-morph['\"]" || echo "No ts-morph imports found"
rg -n --type ts --type js -C 3 "require\(['\"]ts-morph['\"]" || echo "No ts-morph requires found"

echo -e "\n=== Checking vite usage patterns ==="
rg -n --type ts --type js -C 3 "from ['\"]vite['\"]" || echo "No vite imports found"
rg -n --type ts --type js -C 3 "require\(['\"]vite['\"]" || echo "No vite requires found"

echo -e "\n=== Checking for vite config files ==="
fd -e js -e ts -e mjs "vite.config" --exec cat {}

Repository: ProverCoderAI/effect-eslint-template

Length of output: 2436


🌐 Web query:

What are the breaking changes in ts-morph version 28.0.0 compared to version 27.x?

💡 Result:

The primary breaking change in ts-morph version 28.0.0 compared to 27.x is the upgrade to TypeScript 6.0 support, which introduces breaking changes stemming from TypeScript 6.0's own breaking compiler option defaults and API changes.[1][2] The release notes explicitly mark this as "feat(BREAKING): TypeScript 6.0 by @dsherret in #1669" and warn: "Note there are some breaking changes due to TypeScript 6.0. Read more here: https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/"[1][2] No other explicit breaking changes unique to ts-morph (beyond the TS 6.0 integration) are listed in the available sources. Other changes include: - feat: standalone printStructure function by @dsherret in #1670[2] - fix: InvalidOperationError in addTypeArgument by @jfirebaugh in #1663[2] TypeScript 6.0 itself has several breaking defaults that may indirectly affect ts-morph usage, such as strict: true, module: esnext, target: es2025, moduleResolution: bundler, types: [] (no auto @types inclusion), changed rootDir inference, and more.[3][4][5] Since ts-morph wraps the TypeScript Compiler API, code relying on previous TS behaviors or ts-morph methods affected by the new TS version may break. The official release page (likely https://github.com/dsherret/ts-morph/releases/tag/28.0.0) should be consulted for full details, as snippets confirm its existence but detailed content is not fully extracted here.[1][6] No dedicated migration guide was found.

Citations:


🌐 Web query:

What are the breaking changes in Vite version 8 compared to version 7?

💡 Result:

The main breaking changes in Vite 8 compared to Vite 7, as detailed in the official migration guide and changelog, revolve around the replacement of esbuild and Rollup with Rolldown and Oxc tools, along with some specific removals and config updates. Vite 8 was released on 2026-03-12 [1][2][3]. Key breaking changes: 1. Bundler replacement: Vite 8 integrates Rolldown (replacing Rollup/esbuild for building and optimization) and Oxc (for JS transforms and minification). A compatibility layer auto-converts existing esbuild/rollupOptions to Rolldown/Oxc equivalents, so many configs work unchanged [1][4][5]. However: - optimizeDeps.esbuildOptions is deprecated; migrate to optimizeDeps.rolldownOptions [4][5]. - esbuild config is deprecated; migrate to oxc [4][5]. - Plugins using transformWithEsbuild must install esbuild as devDep and migrate to transformWithOxc [4][5]. - build.rollupOptions and build.esbuildOptions are deprecated in favor of rolldownOptions equivalents (details in migration guide) [4]. 2. Default browser target updated (NRV - New Rolldown Vite): build.target 'baseline-widely-available' now targets newer browsers: Chrome/Edge 111 (from 107), Firefox 114 (from 104), Safari 16.4 (from 16.0) [6][7]. 3. Removed import.meta.hot.accept resolution fallback for URLs (must pass IDs instead) [8][2][3][7]. 4. Rolldown-vite merge: Internal integration of the experimental rolldown-vite package [8][2][3]. 5. Node.js requirement: Vite 8 requires Node 20.19+, 22.12+ (same as Vite 7, but ESM-only distribution) [1]. 6. Increased install size: ~15MB larger due to lightningcss (~10MB) and Rolldown (~5MB) [1]. 7. Deprecated features planned for removal (post-8.x): Various like this.environment in hooks, but opt-in via future flags [9]. Some like chunk emit options may change [6]. For smooth migration: - Use rolldown-vite on Vite 7 first as a gradual step [1][4]. - Review vite.config for deprecated options. - Test dev/build/SSR thoroughly, especially plugins [4][10]. Full details in official Migration Guide (https://vite.dev/guide/migration) [4] and Changelog (https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) [3].

Citations:


Test build and SSR processes after major version updates; verify TypeScript 6.0 compatibility for ESLint rules.

This PR includes major version bumps to ts-morph (27.x → 28.0.0) and vite (7.x → 8.0.13), both with documented breaking changes:

  • ts-morph 28.0.0: Primary breaking change is TypeScript 6.0 support integration. TS 6.0 introduces breaking compiler option defaults (strict: true, module: esnext, target: es2025, moduleResolution: bundler, types: []) that could affect ESLint rule behavior since ts-morph wraps the TypeScript Compiler API.

  • vite 8.0.13: Major bundler replacement (Rolldown+Oxc replacing Rollup+esbuild), but includes a compatibility layer that auto-converts existing rollupOptions and esbuildOptions. The current vite.config.ts files use compatible APIs, but the build and SSR processes should be tested.

The codebase does not directly import ts-morph, reducing direct risk. However, verify that the ESLint rules and build/SSR outputs work correctly with these versions. Refer to the Vite 8 migration guide and ts-morph 28.0.0 release notes for detailed compatibility information.

🤖 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 `@packages/eslint-template/package.json` at line 17, The package bump to
ts-morph@28.0.0 and vite@8.0.13 can surface TypeScript 6.0-related defaults that
break ESLint rule behavior and SSR builds; run full test builds and SSR
(dev/prod) for packages/eslint-template and any projects using vite.config.ts,
verify ESLint rule outputs (rules that use ts-morph/TypeScript APIs), and
confirm the repo's TypeScript version (tsconfig.json / devDependencies) is
pinned or adjusted; if problems appear, either pin ts-morph/vite or explicitly
set TypeScript compiler options in tsconfig.json (e.g., strict, module, target,
moduleResolution, types) to previous values, and update vite.config.ts to
address any rollupOptions/esbuildOptions compatibility issues per the Vite 8
migration guide.

},
"devDependencies": {
"@biomejs/biome": "^2.4.2",
"@changesets/changelog-github": "^0.5.2",
"@changesets/cli": "^2.29.8",
"@biomejs/biome": "^2.4.15",
"@changesets/changelog-github": "^0.7.0",
"@changesets/cli": "^2.31.0",
"@effect/eslint-plugin": "^0.3.2",
"@effect/language-service": "latest",
"@effect/vitest": "^0.27.0",
"@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
"@eslint/compat": "2.0.2",
"@eslint/eslintrc": "3.3.3",
"@effect/vitest": "^0.29.0",
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
"@eslint/compat": "2.1.0",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "10.0.1",
"@prover-coder-ai/eslint-plugin-suggest-members": "^0.0.25",
"@prover-coder-ai/eslint-plugin-suggest-members": "^0.0.26",
"@ton-ai-core/vibecode-linter": "^1.0.11",
"@types/node": "^25.3.0",
"@typescript-eslint/eslint-plugin": "^8.56.0",
"@typescript-eslint/parser": "^8.56.0",
"@typescript-eslint/rule-tester": "8.56.0",
"@vitest/coverage-v8": "^4.0.18",
"eslint-doc-generator": "^3.1.0",
"@types/node": "^25.8.0",
"@typescript-eslint/eslint-plugin": "^8.59.3",
"@typescript-eslint/parser": "^8.59.3",
"@typescript-eslint/rule-tester": "8.59.3",
"@vitest/coverage-v8": "^4.1.6",
"eslint-doc-generator": "^3.3.2",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-codegen": "0.34.1",
"eslint-plugin-eslint-plugin": "^7.3.1",
"eslint-plugin-eslint-plugin": "^7.3.3",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-sonarjs": "^4.0.0",
"eslint-plugin-simple-import-sort": "^13.0.0",
"eslint-plugin-sonarjs": "^4.0.3",
"eslint-plugin-sort-destructure-keys": "^3.0.0",
"eslint-plugin-unicorn": "^63.0.0",
"@vitest/eslint-plugin": "^1.6.9",
"globals": "^17.3.0",
"jscpd": "^4.0.8",
"typescript-eslint": "^8.56.0",
"vite": "^7.3.1",
"eslint-plugin-unicorn": "^64.0.0",
"@vitest/eslint-plugin": "^1.6.17",
"globals": "^17.6.0",
"jscpd": "^4.2.0",
"typescript-eslint": "^8.59.3",
"vite": "^8.0.13",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^4.0.18"
"vitest": "^4.1.6"
},
"peerDependencies": {
"eslint": "^10.0.0",
"typescript": "^5.9.3"
"eslint": "^10.3.0",
"typescript": "^6.0.3"
Comment on lines +55 to +56
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

What TypeScript versions are officially supported by @typescript-eslint/parser 8.59.3 (and the typescript-eslint 8.59.3 toolchain)?

💡 Result:

@typescript-eslint/parser 8.59.3 (and the typescript-eslint 8.59.3 toolchain) officially supports TypeScript in the version range >=4.8.4 and <6.1.0 (i.e., TypeScript 4.8.x through 6.0.x, but not 6.1+). [1][2][3] Notes: - typescript-eslint publishes the same version number across packages to coordinate releases, so the 8.59.3 toolchain refers to the 8.59.3 versions of related packages like the parser and typescript-estree. [4] - If you use a non-supported TypeScript version, the parser logs a warning (configurable via parserOptions). [3]

Citations:


Peer dependency range is incompatible with official TypeScript-ESLint support matrix.

Line 56 restricts peers to TypeScript 6.0.x, but @typescript-eslint/parser 8.59.3 officially supports TypeScript >=4.8.4 and <6.1.0. The current range excludes TypeScript 5.x (which is supported) and inadvertently allows 6.1.0+ (which is not supported). Use "typescript": ">=4.8.4, <6.1.0" to align with the official support matrix.

Suggested fix
-    "typescript": "^6.0.3"
+    "typescript": ">=4.8.4, <6.1.0"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"eslint": "^10.3.0",
"typescript": "^6.0.3"
"eslint": "^10.3.0",
"typescript": ">=4.8.4, <6.1.0"
🤖 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 `@packages/eslint-template/package.json` around lines 55 - 56, Update the peer
dependency range for TypeScript in package.json so it aligns with the official
`@typescript-eslint/parser` support matrix: change the "typescript" peer
dependency value (in packages/eslint-template/package.json) to ">=4.8.4, <6.1.0"
so TypeScript 5.x is allowed and 6.1.0+ is excluded.

},
"exports": {
".": {
Expand Down
Loading
Loading