From abea66546d3a7deb34f59095c817ef3ec45ac44c Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 23 Nov 2025 15:22:43 +0100 Subject: [PATCH 1/2] Switching to defineConfig() --- eslint.config.mts | 6 +- package.json | 1 + packages/common/eslint.config.mts | 4 +- packages/cursorless-cheatsheet/package.json | 2 +- packages/cursorless-engine/eslint.config.mts | 2 +- packages/cursorless-engine/package.json | 2 +- packages/cursorless-neovim-e2e/package.json | 2 +- packages/cursorless-neovim/package.json | 2 +- packages/cursorless-org/eslint.config.mts | 10 +- packages/cursorless-org/package.json | 2 +- packages/cursorless-tutorial/package.json | 2 +- packages/cursorless-vscode-e2e/package.json | 2 +- packages/cursorless-vscode/eslint.config.mts | 2 +- packages/neovim-common/package.json | 2 +- pnpm-lock.yaml | 177 ++++++++++++------- 15 files changed, 133 insertions(+), 85 deletions(-) diff --git a/eslint.config.mts b/eslint.config.mts index 1a2db317a8..b9bff7698f 100644 --- a/eslint.config.mts +++ b/eslint.config.mts @@ -1,10 +1,12 @@ +import type { ConfigWithExtends } from "@eslint/config-helpers"; import eslintJs from "@eslint/js"; import prettierConfig from "eslint-config-prettier/flat"; import importPlugin from "eslint-plugin-import"; import mochaPlugin from "eslint-plugin-mocha"; import unicornPlugin from "eslint-plugin-unicorn"; import unusedImportsPlugin from "eslint-plugin-unused-imports"; -import eslintTs, { type ConfigWithExtends } from "typescript-eslint"; +import { defineConfig } from "eslint/config"; +import eslintTs from "typescript-eslint"; import { commonConfig } from "./packages/common/eslint.config.mts"; import { cursorlessEngineConfig } from "./packages/cursorless-engine/eslint.config.mts"; import { cursorlessOrgConfig } from "./packages/cursorless-org/eslint.config.mts"; @@ -141,7 +143,7 @@ const disabledTypeCheckConfig: ConfigWithExtends = { extends: [eslintTs.configs.disableTypeChecked], }; -export default eslintTs.config( +export default defineConfig( ignoresConfig, eslintJs.configs.recommended, // We want to enable this in the long run. For now there are a lot of errors that needs to be handled. diff --git a/package.json b/package.json index 6fc22c95a1..08e8ddf0b9 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "watch:tsc": "tsc --build --watch" }, "devDependencies": { + "@eslint/config-helpers": "^0.5.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", "@pnpm/meta-updater": "^2.0.6", diff --git a/packages/common/eslint.config.mts b/packages/common/eslint.config.mts index e239477ac1..d44d50b4eb 100644 --- a/packages/common/eslint.config.mts +++ b/packages/common/eslint.config.mts @@ -1,6 +1,6 @@ -import type { ConfigArray } from "typescript-eslint"; +import type { ConfigWithExtendsArray } from "@eslint/config-helpers"; -export const commonConfig: ConfigArray = [ +export const commonConfig: ConfigWithExtendsArray = [ { files: ["packages/common/**/*.ts"], diff --git a/packages/cursorless-cheatsheet/package.json b/packages/cursorless-cheatsheet/package.json index 88f8f15f48..941d0e1dfc 100644 --- a/packages/cursorless-cheatsheet/package.json +++ b/packages/cursorless-cheatsheet/package.json @@ -24,7 +24,7 @@ "dependencies": { "@cursorless/common": "workspace:*", "@cursorless/node-common": "workspace:*", - "immer": "^10.2.0", + "immer": "^11.0.0", "lodash-es": "^4.17.21", "node-html-parser": "^7.0.1" }, diff --git a/packages/cursorless-engine/eslint.config.mts b/packages/cursorless-engine/eslint.config.mts index 217f1fc7ce..74a2dae547 100644 --- a/packages/cursorless-engine/eslint.config.mts +++ b/packages/cursorless-engine/eslint.config.mts @@ -1,4 +1,4 @@ -import type { ConfigWithExtends } from "typescript-eslint"; +import type { ConfigWithExtends } from "@eslint/config-helpers"; export const cursorlessEngineConfig: ConfigWithExtends = { files: ["packages/cursorless-engine/**/*.ts"], diff --git a/packages/cursorless-engine/package.json b/packages/cursorless-engine/package.json index df2e7fd6c2..d96a0c265b 100644 --- a/packages/cursorless-engine/package.json +++ b/packages/cursorless-engine/package.json @@ -30,7 +30,7 @@ "@cursorless/common": "workspace:*", "@cursorless/node-common": "workspace:*", "@cursorless/sentence-parser": "workspace:*", - "immer": "^10.2.0", + "immer": "^11.0.0", "immutability-helper": "^3.1.1", "itertools": "^2.5.0", "lodash-es": "^4.17.21", diff --git a/packages/cursorless-neovim-e2e/package.json b/packages/cursorless-neovim-e2e/package.json index 3751598cde..055d0584e3 100644 --- a/packages/cursorless-neovim-e2e/package.json +++ b/packages/cursorless-neovim-e2e/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@types/chai": "^5.2.3", "@types/js-yaml": "^4.0.9", - "@types/lodash": "^4.17.20", + "@types/lodash": "^4.17.21", "@types/sinon": "^21.0.0", "neovim": "^5.4.0" } diff --git a/packages/cursorless-neovim/package.json b/packages/cursorless-neovim/package.json index 80027c0a62..41b39505af 100644 --- a/packages/cursorless-neovim/package.json +++ b/packages/cursorless-neovim/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@types/chai": "^5.2.3", "@types/js-yaml": "^4.0.9", - "@types/lodash": "^4.17.20", + "@types/lodash": "^4.17.21", "lodash": "^4.17.21", "neovim": "^5.4.0", "vscode-uri": "^3.1.0" diff --git a/packages/cursorless-org/eslint.config.mts b/packages/cursorless-org/eslint.config.mts index 1f1210d9fb..d3497c031e 100644 --- a/packages/cursorless-org/eslint.config.mts +++ b/packages/cursorless-org/eslint.config.mts @@ -1,14 +1,10 @@ -import { FlatCompat } from "@eslint/eslintrc"; -import type { ConfigWithExtends } from "typescript-eslint"; - -const compat = new FlatCompat({ - baseDirectory: import.meta.dirname, -}); +import type { ConfigWithExtends } from "@eslint/config-helpers"; +import nextVitals from "eslint-config-next/core-web-vitals"; export const cursorlessOrgConfig: ConfigWithExtends = { files: ["packages/cursorless-org/**/*"], - extends: [compat.extends("next/core-web-vitals")], + extends: nextVitals, settings: { next: { diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index 2b4eb700df..44b35bab29 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -46,7 +46,7 @@ "@types/react": "^19.2.6", "@types/react-dom": "^19.2.3", "eslint": "^9.39.1", - "eslint-config-next": "^15.5.6", + "eslint-config-next": "^16.0.3", "http-server": "^14.1.1", "postcss": "^8.5.6", "tailwindcss": "^4.1.17", diff --git a/packages/cursorless-tutorial/package.json b/packages/cursorless-tutorial/package.json index aebda8d9c3..d7fd4e7b08 100644 --- a/packages/cursorless-tutorial/package.json +++ b/packages/cursorless-tutorial/package.json @@ -24,7 +24,7 @@ "dependencies": { "@cursorless/common": "workspace:*", "@cursorless/cursorless-engine": "workspace:*", - "immer": "^10.2.0", + "immer": "^11.0.0", "lodash-es": "^4.17.21" }, "devDependencies": { diff --git a/packages/cursorless-vscode-e2e/package.json b/packages/cursorless-vscode-e2e/package.json index 2bca4df267..a1f476d16d 100644 --- a/packages/cursorless-vscode-e2e/package.json +++ b/packages/cursorless-vscode-e2e/package.json @@ -22,7 +22,7 @@ "@cursorless/common": "workspace:*", "@cursorless/node-common": "workspace:*", "@cursorless/vscode-common": "workspace:*", - "immer": "^10.2.0", + "immer": "^11.0.0", "lodash-es": "^4.17.21" }, "devDependencies": { diff --git a/packages/cursorless-vscode/eslint.config.mts b/packages/cursorless-vscode/eslint.config.mts index a9253dd0f7..3e11327c1f 100644 --- a/packages/cursorless-vscode/eslint.config.mts +++ b/packages/cursorless-vscode/eslint.config.mts @@ -1,4 +1,4 @@ -import type { ConfigWithExtends } from "typescript-eslint"; +import type { ConfigWithExtends } from "@eslint/config-helpers"; export const cursorlessVscodeConfig: ConfigWithExtends = { files: ["packages/cursorless-vscode/src/scripts/**/*.ts"], diff --git a/packages/neovim-common/package.json b/packages/neovim-common/package.json index e19e8c4636..a3aeb80666 100644 --- a/packages/neovim-common/package.json +++ b/packages/neovim-common/package.json @@ -31,7 +31,7 @@ "vscode-uri": "^3.1.0" }, "devDependencies": { - "@types/lodash": "^4.17.20", + "@types/lodash": "^4.17.21", "@types/vscode": "1.95.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e08a09f168..71074edd67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: .: devDependencies: + '@eslint/config-helpers': + specifier: ^0.5.0 + version: 0.5.0 '@eslint/eslintrc': specifier: ^3.3.1 version: 3.3.1 @@ -46,7 +49,7 @@ importers: version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-mocha: specifier: ^11.2.0 version: 11.2.0(eslint@9.39.1(jiti@2.6.1)) @@ -255,8 +258,8 @@ importers: specifier: workspace:* version: link:../node-common immer: - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^11.0.0 + version: 11.0.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -280,8 +283,8 @@ importers: specifier: workspace:* version: link:../sentence-parser immer: - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^11.0.0 + version: 11.0.0 immutability-helper: specifier: ^3.1.1 version: 3.1.1 @@ -413,8 +416,8 @@ importers: specifier: ^4.0.9 version: 4.0.9 '@types/lodash': - specifier: ^4.17.20 - version: 4.17.20 + specifier: ^4.17.21 + version: 4.17.21 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -450,8 +453,8 @@ importers: specifier: ^4.0.9 version: 4.0.9 '@types/lodash': - specifier: ^4.17.20 - version: 4.17.20 + specifier: ^4.17.21 + version: 4.17.21 '@types/sinon': specifier: ^21.0.0 version: 21.0.0 @@ -511,8 +514,8 @@ importers: specifier: ^9.39.1 version: 9.39.1(jiti@2.6.1) eslint-config-next: - specifier: ^15.5.6 - version: 15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + specifier: ^16.0.3 + version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) http-server: specifier: ^14.1.1 version: 14.1.1 @@ -620,8 +623,8 @@ importers: specifier: workspace:* version: link:../cursorless-engine immer: - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^11.0.0 + version: 11.0.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -730,8 +733,8 @@ importers: specifier: workspace:* version: link:../vscode-common immer: - specifier: ^10.2.0 - version: 10.2.0 + specifier: ^11.0.0 + version: 11.0.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -866,8 +869,8 @@ importers: version: 3.1.0 devDependencies: '@types/lodash': - specifier: ^4.17.20 - version: 4.17.20 + specifier: ^4.17.21 + version: 4.17.21 '@types/vscode': specifier: 1.95.0 version: 1.95.0 @@ -995,8 +998,8 @@ importers: packages: - '@ai-sdk/gateway@2.0.13': - resolution: {integrity: sha512-q8M+7+VEKp91I295cjNDgQ4LyGImKj5cDLVARDay7nBTXGjIRZOlthYE7K6Rbz2yHKFyTmKH7MMkYavAM7L/UQ==} + '@ai-sdk/gateway@2.0.14': + resolution: {integrity: sha512-QU+ZVizSXN/V5uWgwapXrCLvkUEmmJeojAbikMH4gLgbeQF3oRugcQm3D8X9B+Rnestbz5cevNap7vKyJT/jfA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -1011,8 +1014,8 @@ packages: resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/react@2.0.99': - resolution: {integrity: sha512-HeWpXxiVk3/Yi2W/lg/GvstK5zNr7egaulqkp5rJjinUJ8+XGEbYyqf+cNUB662v7Sjas2mZaLwaY3IK3yLD2Q==} + '@ai-sdk/react@2.0.100': + resolution: {integrity: sha512-bC4cEoX9xfBKKnVyhyrhdRraji71uxpCKlNAwD6u1xPgcsCnz99X+9ByoBKvOHRzBtSFUq2K6016huip8Cvq6w==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -2437,10 +2440,18 @@ packages: resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.0': + resolution: {integrity: sha512-OCt2pY98qw68AXjNDGn+9q3vnqvBh4OFTZWmzaWH2thEpAugBZCBDRMHZa7oGsX+/ZybKOiKjJ6XX1E8hxcxGg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/core@0.17.0': resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.0.0': + resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2876,8 +2887,8 @@ packages: '@next/env@15.5.6': resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==} - '@next/eslint-plugin-next@15.5.6': - resolution: {integrity: sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==} + '@next/eslint-plugin-next@16.0.3': + resolution: {integrity: sha512-6sPWmZetzFWMsz7Dhuxsdmbu3fK+/AxKRtj7OB0/3OZAI2MHB/v2FeYh271LZ9abvnM1WIwWc/5umYjx0jo5sQ==} '@next/mdx@15.5.6': resolution: {integrity: sha512-lyzXcnZWPjYxbkz/5tv1bRlCOjKYX1lFg3LIuoIf9ERTOUBDzkCvUnWjtRsmFRxKv1/6uwpLVQvrJDd54gVDBw==} @@ -3597,9 +3608,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@rushstack/eslint-patch@1.15.0': - resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} - '@rushstack/worker-pool@0.4.9': resolution: {integrity: sha512-ibAOeQCuz3g0c88GGawAPO2LVOTZE3uPh4DCEJILZS9SEv9opEUObsovC18EHPgeIuFy4HkoJT+t7l8LURZjIw==} peerDependencies: @@ -4012,8 +4020,8 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -4494,8 +4502,8 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@5.0.99: - resolution: {integrity: sha512-omnQLLi5yNQWLLJAaQdACsgBSj+c9LTCWwl9z+6albiqlATNF3AGdpr1ZMTJosGkupwswZc6LDIMa3cfHR4x/g==} + ai@5.0.100: + resolution: {integrity: sha512-+ANP4EJomTcUKdEF3UpVAWEl6DGn+ozDLxVZKXmTV7NRfyEC2cLYcKwoU4o3sKJpqXMUKNzpFlJFBKOcsKdMyg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -5834,10 +5842,10 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@15.5.6: - resolution: {integrity: sha512-cGr3VQlPsZBEv8rtYp4BpG1KNXDqGvPo9VC1iaCgIA11OfziC/vczng+TnAS3WpRIR3Q5ye/6yl+CRUuZ1fPGg==} + eslint-config-next@16.0.3: + resolution: {integrity: sha512-5F6qDjcZldf0Y0ZbqvWvap9xzYUxyDf7/of37aeyhvkrQokj/4bT1JYWZdlWUr283aeVa+s52mPq9ogmGg+5dw==} peerDependencies: - eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + eslint: '>=9.0.0' typescript: '>=3.3.1' peerDependenciesMeta: typescript: @@ -5929,9 +5937,9 @@ packages: peerDependencies: eslint: '>=9.0.0' - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -6390,6 +6398,10 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + globals@16.5.0: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} @@ -6516,6 +6528,12 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -6687,8 +6705,8 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - immer@10.2.0: - resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} + immer@11.0.0: + resolution: {integrity: sha512-XtRG4SINt4dpqlnJvs70O2j6hH7H0X8fUzFsjMn1rwnETaxwp83HLNimXBjZ78MrKl3/d3/pkzDH0o0Lkxm37Q==} immutability-helper@3.1.1: resolution: {integrity: sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==} @@ -10796,6 +10814,12 @@ packages: youtube-video-element@1.8.0: resolution: {integrity: sha512-u3M0MgO+KUtVwIyKJXZXXJ0As0k6d5NflOrh1GjyG8NNOp+liW2nFU29hpXeUcxUWbVKhudIYd39hMVeEgCilQ==} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + zod@4.1.12: resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} @@ -10804,7 +10828,7 @@ packages: snapshots: - '@ai-sdk/gateway@2.0.13(zod@4.1.12)': + '@ai-sdk/gateway@2.0.14(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) @@ -10822,10 +10846,10 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@2.0.99(react@19.2.0)(zod@4.1.12)': + '@ai-sdk/react@2.0.100(react@19.2.0)(zod@4.1.12)': dependencies: '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) - ai: 5.0.99(zod@4.1.12) + ai: 5.0.100(zod@4.1.12) react: 19.2.0 swr: 2.3.6(react@19.2.0) throttleit: 2.1.0 @@ -12092,11 +12116,11 @@ snapshots: '@docsearch/react@4.3.2(@algolia/client-search@5.44.0)(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)': dependencies: - '@ai-sdk/react': 2.0.99(react@19.2.0)(zod@4.1.12) + '@ai-sdk/react': 2.0.100(react@19.2.0)(zod@4.1.12) '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.44.0)(algoliasearch@5.44.0)(search-insights@2.17.3) '@docsearch/core': 4.3.1(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@docsearch/css': 4.3.2 - ai: 5.0.99(zod@4.1.12) + ai: 5.0.100(zod@4.1.12) algoliasearch: 5.44.0 marked: 16.4.2 zod: 4.1.12 @@ -12978,10 +13002,18 @@ snapshots: dependencies: '@eslint/core': 0.17.0 + '@eslint/config-helpers@0.5.0': + dependencies: + '@eslint/core': 1.0.0 + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@1.0.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -13528,7 +13560,7 @@ snapshots: '@next/env@15.5.6': {} - '@next/eslint-plugin-next@15.5.6': + '@next/eslint-plugin-next@16.0.3': dependencies: fast-glob: 3.3.1 @@ -14726,8 +14758,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/eslint-patch@1.15.0': {} - '@rushstack/worker-pool@0.4.9(@types/node@24.10.1)': optionalDependencies: '@types/node': 24.10.1 @@ -15173,9 +15203,9 @@ snapshots: '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.20 + '@types/lodash': 4.17.21 - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/mdast@4.0.4': dependencies: @@ -15687,9 +15717,9 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@5.0.99(zod@4.1.12): + ai@5.0.100(zod@4.1.12): dependencies: - '@ai-sdk/gateway': 2.0.13(zod@4.1.12) + '@ai-sdk/gateway': 2.0.14(zod@4.1.12) '@ai-sdk/provider': 2.0.0 '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) '@opentelemetry/api': 1.9.0 @@ -17175,22 +17205,22 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 15.5.6 - '@rushstack/eslint-patch': 1.15.0 - '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@next/eslint-plugin-next': 16.0.3 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1)) + globals: 16.4.0 + typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: + - '@typescript-eslint/parser' - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color @@ -17225,7 +17255,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -17240,11 +17270,11 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: @@ -17255,7 +17285,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -17266,7 +17296,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -17309,9 +17339,16 @@ snapshots: eslint: 9.39.1(jiti@2.6.1) globals: 15.15.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)): dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 eslint: 9.39.1(jiti@2.6.1) + hermes-parser: 0.25.1 + zod: 4.1.12 + zod-validation-error: 4.0.2(zod@4.1.12) + transitivePeerDependencies: + - supports-color eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): dependencies: @@ -17859,6 +17896,8 @@ snapshots: globals@15.15.0: {} + globals@16.4.0: {} + globals@16.5.0: {} globalthis@1.0.4: @@ -18081,6 +18120,12 @@ snapshots: he@1.2.0: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + history@4.10.1: dependencies: '@babel/runtime': 7.28.4 @@ -18304,7 +18349,7 @@ snapshots: immediate@3.0.6: {} - immer@10.2.0: {} + immer@11.0.0: {} immutability-helper@3.1.1: {} @@ -23248,6 +23293,10 @@ snapshots: youtube-video-element@1.8.0: {} + zod-validation-error@4.0.2(zod@4.1.12): + dependencies: + zod: 4.1.12 + zod@4.1.12: {} zwitch@2.0.4: {} From e8b3dc2a7c52f430b74547acbc41912e18ec7467 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 27 Nov 2025 10:19:29 +0100 Subject: [PATCH 2/2] Fix lint issues --- eslint.config.mts | 11 ++++++----- packages/cursorless-org/eslint.config.mts | 5 +++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/eslint.config.mts b/eslint.config.mts index b9bff7698f..eb3aee4b2b 100644 --- a/eslint.config.mts +++ b/eslint.config.mts @@ -1,3 +1,5 @@ +/* eslint-disable import/no-relative-packages */ + import type { ConfigWithExtends } from "@eslint/config-helpers"; import eslintJs from "@eslint/js"; import prettierConfig from "eslint-config-prettier/flat"; @@ -6,7 +8,7 @@ import mochaPlugin from "eslint-plugin-mocha"; import unicornPlugin from "eslint-plugin-unicorn"; import unusedImportsPlugin from "eslint-plugin-unused-imports"; import { defineConfig } from "eslint/config"; -import eslintTs from "typescript-eslint"; +import tsEslint from "typescript-eslint"; import { commonConfig } from "./packages/common/eslint.config.mts"; import { cursorlessEngineConfig } from "./packages/cursorless-engine/eslint.config.mts"; import { cursorlessOrgConfig } from "./packages/cursorless-org/eslint.config.mts"; @@ -35,7 +37,7 @@ const rootConfig: ConfigWithExtends = { }, languageOptions: { - parser: eslintTs.parser, + parser: tsEslint.parser, ecmaVersion: 6, sourceType: "module", parserOptions: { @@ -139,8 +141,7 @@ const disabledTypeCheckConfig: ConfigWithExtends = { "**/*.js", "**/*.mjs", ], - - extends: [eslintTs.configs.disableTypeChecked], + extends: [tsEslint.configs.disableTypeChecked], }; export default defineConfig( @@ -148,7 +149,7 @@ export default defineConfig( eslintJs.configs.recommended, // We want to enable this in the long run. For now there are a lot of errors that needs to be handled. // eslintTs.configs.recommendedTypeChecked, - eslintTs.configs.recommended, + tsEslint.configs.recommended, prettierConfig, rootConfig, tsxConfig, diff --git a/packages/cursorless-org/eslint.config.mts b/packages/cursorless-org/eslint.config.mts index d3497c031e..5ea7be59cd 100644 --- a/packages/cursorless-org/eslint.config.mts +++ b/packages/cursorless-org/eslint.config.mts @@ -1,11 +1,16 @@ import type { ConfigWithExtends } from "@eslint/config-helpers"; import nextVitals from "eslint-config-next/core-web-vitals"; +import tsEslint from "typescript-eslint"; export const cursorlessOrgConfig: ConfigWithExtends = { files: ["packages/cursorless-org/**/*"], extends: nextVitals, + languageOptions: { + parser: tsEslint.parser, + }, + settings: { next: { rootDir: "packages/cursorless-org",