From 35c59e3a1c0fb45623afd646a9247ec14cb051af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Tue, 16 Dec 2025 17:58:01 +0100 Subject: [PATCH 1/2] chore: bump TS to v5.9 --- package.json | 2 +- pnpm-lock.yaml | 226 ++++++++++++++++++++++++------------------------- 2 files changed, 114 insertions(+), 114 deletions(-) diff --git a/package.json b/package.json index 9ceb9a3c..844bac90 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "semantic-release": "^25.0.2", "semver": "^7.6.3", "tsdown": "^0.17.3", - "typescript": "^5.7.2", + "typescript": "^5.9.3", "typescript-eslint": "^8.15.0", "vitest": "^3.2.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b77556d9..52152703 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,11 +13,11 @@ importers: version: 8.43.0 '@typescript-eslint/utils': specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) devDependencies: '@commitlint/cli': specifier: ^19.6.0 - version: 19.8.1(@types/node@22.15.29)(typescript@5.7.2) + version: 19.8.1(@types/node@22.15.29)(typescript@5.9.3) '@commitlint/config-conventional': specifier: ^19.6.0 version: 19.8.0 @@ -35,13 +35,13 @@ importers: version: 22.15.29 '@typescript-eslint/rule-tester': specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4) '@vitest/eslint-plugin': specifier: ^1.5.2 - version: 1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)(vitest@3.2.4) + version: 1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4) '@vitest/ui': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -53,13 +53,13 @@ importers: version: 10.1.8(eslint@9.35.0(jiti@2.6.1)) eslint-doc-generator: specifier: ^2.4.0 - version: 2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.7.2) + version: 2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.9.3) eslint-import-resolver-typescript: specifier: ^4.4.4 - version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) + version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) + version: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@9.35.0(jiti@2.6.1)) @@ -92,19 +92,19 @@ importers: version: 0.3.16 semantic-release: specifier: ^25.0.2 - version: 25.0.2(typescript@5.7.2) + version: 25.0.2(typescript@5.9.3) semver: specifier: ^7.6.3 version: 7.7.2 tsdown: specifier: ^0.17.3 - version: 0.17.3(publint@0.3.16)(typescript@5.7.2) + version: 0.17.3(publint@0.3.16)(typescript@5.9.3) typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.9.3 + version: 5.9.3 typescript-eslint: specifier: ^8.15.0 - version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + version: 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) vitest: specifier: ^3.2.4 version: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) @@ -3834,8 +3834,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -4175,11 +4175,11 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@commitlint/cli@19.8.1(@types/node@22.15.29)(typescript@5.7.2)': + '@commitlint/cli@19.8.1(@types/node@22.15.29)(typescript@5.9.3)': dependencies: '@commitlint/format': 19.8.1 '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@22.15.29)(typescript@5.7.2) + '@commitlint/load': 19.8.1(@types/node@22.15.29)(typescript@5.9.3) '@commitlint/read': 19.8.1 '@commitlint/types': 19.8.1 tinyexec: 1.0.1 @@ -4226,15 +4226,15 @@ snapshots: '@commitlint/rules': 19.8.1 '@commitlint/types': 19.8.1 - '@commitlint/load@19.8.1(@types/node@22.15.29)(typescript@5.7.2)': + '@commitlint/load@19.8.1(@types/node@22.15.29)(typescript@5.9.3)': dependencies: '@commitlint/config-validator': 19.8.1 '@commitlint/execute-rule': 19.8.1 '@commitlint/resolve-extends': 19.8.1 '@commitlint/types': 19.8.1 chalk: 5.6.0 - cosmiconfig: 9.0.0(typescript@5.7.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.15.29)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.15.29)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -4817,7 +4817,7 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.7.2))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 @@ -4827,13 +4827,13 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 25.0.2(typescript@5.7.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color '@semantic-release/error@4.0.0': {} - '@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.7.2))': + '@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -4849,14 +4849,14 @@ snapshots: lodash-es: 4.17.21 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 25.0.2(typescript@5.7.2) + semantic-release: 25.0.2(typescript@5.9.3) tinyglobby: 0.2.15 undici: 7.16.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@13.1.1(semantic-release@25.0.2(typescript@5.7.2))': + '@semantic-release/npm@13.1.1(semantic-release@25.0.2(typescript@5.9.3))': dependencies: '@actions/core': 1.11.1 '@semantic-release/error': 4.0.0 @@ -4871,11 +4871,11 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.1.0 - semantic-release: 25.0.2(typescript@5.7.2) + semantic-release: 25.0.2(typescript@5.9.3) semver: 7.7.2 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.7.2))': + '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.9.3))': dependencies: conventional-changelog-angular: 8.1.0 conventional-changelog-writer: 8.2.0 @@ -4887,7 +4887,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 25.0.2(typescript@5.7.2) + semantic-release: 25.0.2(typescript@5.9.3) transitivePeerDependencies: - supports-color @@ -4933,58 +4933,58 @@ snapshots: '@types/yoga-layout@1.9.2': {} - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.43.0 eslint: 9.35.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 eslint: 9.35.0(jiti@2.6.1) - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.43.0(typescript@5.7.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.3) '@typescript-eslint/types': 8.43.0 debug: 4.4.1 - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.49.0(typescript@5.7.2)': + '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) '@typescript-eslint/types': 8.49.0 debug: 4.4.3 - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/rule-tester@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) ajv: 6.12.6 eslint: 9.35.0(jiti@2.6.1) json-stable-stringify-without-jsonify: 1.0.1 @@ -5004,23 +5004,23 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.7.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.3)': dependencies: - typescript: 5.7.2 + typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.7.2)': + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': dependencies: - typescript: 5.7.2 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.1 eslint: 9.35.0(jiti@2.6.1) - ts-api-utils: 2.1.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5028,10 +5028,10 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.43.0(typescript@5.7.2) - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.7.2) + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.3) '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 @@ -5039,45 +5039,45 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.49.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.49.0(typescript@5.7.2) - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.7.2) + '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.2 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) eslint: 9.35.0(jiti@2.6.1) - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)': + '@typescript-eslint/utils@8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) eslint: 9.35.0(jiti@2.6.1) - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5169,13 +5169,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2)(vitest@3.2.4)': + '@vitest/eslint-plugin@1.5.2(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/utils': 8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.49.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.35.0(jiti@2.6.1) optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 vitest: 3.2.4(@types/node@22.15.29)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -5597,21 +5597,21 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.15.29)(cosmiconfig@9.0.0(typescript@5.7.2))(typescript@5.7.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.15.29)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: '@types/node': 22.15.29 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 - typescript: 5.7.2 + typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.7.2): + cosmiconfig@9.0.0(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 cross-spawn@7.0.6: dependencies: @@ -5919,13 +5919,13 @@ snapshots: dependencies: eslint: 9.35.0(jiti@2.6.1) - eslint-doc-generator@2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.7.2): + eslint-doc-generator@2.4.0(eslint@9.35.0(jiti@2.6.1))(prettier@3.6.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) ajv: 8.17.1 change-case: 5.4.4 commander: 14.0.2 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.9.3) deepmerge: 4.3.1 dot-prop: 9.0.0 editorconfig: 3.0.1 @@ -5957,7 +5957,7 @@ snapshots: - supports-color optional: true - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)): dependencies: debug: 4.4.1 eslint: 9.35.0(jiti@2.6.1) @@ -5968,19 +5968,19 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.35.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color optional: true @@ -5991,7 +5991,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0(jiti@2.6.1)): dependencies: '@typescript-eslint/types': 8.43.0 comment-parser: 1.4.1 @@ -6004,12 +6004,12 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6020,7 +6020,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6032,7 +6032,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7415,7 +7415,7 @@ snapshots: rfdc@1.4.1: {} - rolldown-plugin-dts@0.18.3(rolldown@1.0.0-beta.53)(typescript@5.7.2): + rolldown-plugin-dts@0.18.3(rolldown@1.0.0-beta.53)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 @@ -7428,7 +7428,7 @@ snapshots: obug: 2.1.1 rolldown: 1.0.0-beta.53 optionalDependencies: - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver @@ -7516,15 +7516,15 @@ snapshots: loose-envify: 1.4.0 object-assign: 4.1.1 - semantic-release@25.0.2(typescript@5.7.2): + semantic-release@25.0.2(typescript@5.9.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.2(typescript@5.7.2)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.2(semantic-release@25.0.2(typescript@5.7.2)) - '@semantic-release/npm': 13.1.1(semantic-release@25.0.2(typescript@5.7.2)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.2(typescript@5.7.2)) + '@semantic-release/github': 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/npm': 13.1.1(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.9.3) debug: 4.4.3 env-ci: 11.2.0 execa: 9.6.0 @@ -7885,9 +7885,9 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.7.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.7.2 + typescript: 5.9.3 tsconfig-paths@3.15.0: dependencies: @@ -7897,7 +7897,7 @@ snapshots: strip-bom: 3.0.0 optional: true - tsdown@0.17.3(publint@0.3.16)(typescript@5.7.2): + tsdown@0.17.3(publint@0.3.16)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -7907,7 +7907,7 @@ snapshots: import-without-cache: 0.2.3 obug: 2.1.1 rolldown: 1.0.0-beta.53 - rolldown-plugin-dts: 0.18.3(rolldown@1.0.0-beta.53)(typescript@5.7.2) + rolldown-plugin-dts: 0.18.3(rolldown@1.0.0-beta.53)(typescript@5.9.3) semver: 7.7.3 tinyexec: 1.0.2 tinyglobby: 0.2.15 @@ -7916,7 +7916,7 @@ snapshots: unrun: 0.2.19 optionalDependencies: publint: 0.3.16 - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' @@ -7992,18 +7992,18 @@ snapshots: reflect.getprototypeof: 1.0.10 optional: true - typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2): + typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2))(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.35.0(jiti@2.6.1) - typescript: 5.7.2 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.9.3: {} uglify-js@3.19.3: optional: true From c231a2f82e4cedb708b766b77aad4a865f531c49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Tue, 16 Dec 2025 18:36:27 +0100 Subject: [PATCH 2/2] fix: apply strictness TS options --- .../detect-testing-library-utils.ts | 2 +- src/node-utils/accessors.ts | 2 +- src/rules/no-container.ts | 2 +- src/rules/no-global-regexp-flag-in-query.ts | 4 +++- src/rules/no-manual-cleanup.ts | 9 +++++++-- src/rules/no-promise-in-fire-event.ts | 3 +++ src/rules/no-wait-for-multiple-assertions.ts | 2 +- src/rules/no-wait-for-side-effects.ts | 2 +- src/rules/prefer-find-by.ts | 12 +++++++++++- src/rules/prefer-query-by-disappearance.ts | 4 ++++ src/rules/prefer-user-event.ts | 7 ++++--- src/utils/resolve-to-testing-library-fn.ts | 5 ++++- tests/rules/prefer-query-matchers.test.ts | 4 ++-- tests/rules/prefer-user-event.test.ts | 8 +++++--- tests/test-utils.ts | 2 +- tsconfig.json | 6 +++--- 16 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/create-testing-library-rule/detect-testing-library-utils.ts b/src/create-testing-library-rule/detect-testing-library-utils.ts index a140a74f..d0603637 100644 --- a/src/create-testing-library-rule/detect-testing-library-utils.ts +++ b/src/create-testing-library-rule/detect-testing-library-utils.ts @@ -317,7 +317,7 @@ export function detectTestingLibraryUtils< // Helpers for Testing Library detection. const getTestingLibraryImportNode: GetTestingLibraryImportNodeFn = () => { - return importedTestingLibraryNodes[0]; + return importedTestingLibraryNodes[0] ?? null; }; const getAllTestingLibraryImportNodes: GetTestingLibraryImportNodesFn = diff --git a/src/node-utils/accessors.ts b/src/node-utils/accessors.ts index e9ba2ee5..0205603a 100644 --- a/src/node-utils/accessors.ts +++ b/src/node-utils/accessors.ts @@ -47,7 +47,7 @@ const isSimpleTemplateLiteral = ( ): node is TemplateLiteral => isTemplateLiteral(node) && node.quasis.length === 1 && // bail out if not simple - (value === undefined || node.quasis[0].value.raw === value); + (value === undefined || node.quasis[0]?.value.raw === value); export type StringNode = | StringLiteral diff --git a/src/rules/no-container.ts b/src/rules/no-container.ts index 2ecfa56b..32418018 100644 --- a/src/rules/no-container.ts +++ b/src/rules/no-container.ts @@ -144,7 +144,7 @@ export default createTestingLibraryRule({ ); const nodeValue = - containerIndex !== -1 && node.id.properties[containerIndex].value; + containerIndex !== -1 && node.id.properties[containerIndex]?.value; if (!nodeValue) { return; diff --git a/src/rules/no-global-regexp-flag-in-query.ts b/src/rules/no-global-regexp-flag-in-query.ts index 2255b0bb..ac8c1249 100644 --- a/src/rules/no-global-regexp-flag-in-query.ts +++ b/src/rules/no-global-regexp-flag-in-query.ts @@ -124,7 +124,9 @@ export default createTestingLibraryRule({ const [firstArg, secondArg] = getArguments(identifierNode); - const firstArgumentHasError = reportLiteralWithRegex(firstArg); + const firstArgumentHasError = firstArg + ? reportLiteralWithRegex(firstArg) + : false; if (firstArgumentHasError) { return; } diff --git a/src/rules/no-manual-cleanup.ts b/src/rules/no-manual-cleanup.ts index 91322862..7debe859 100644 --- a/src/rules/no-manual-cleanup.ts +++ b/src/rules/no-manual-cleanup.ts @@ -69,9 +69,14 @@ export default createTestingLibraryRule({ if (isImportDeclaration(moduleNode)) { // case: import utils from 'testing-library-module' if (isImportDefaultSpecifier(moduleNode.specifiers[0])) { - const { references } = getDeclaredVariables(context, moduleNode)[0]; + const declaredVariables = getDeclaredVariables( + context, + moduleNode + )[0]; - reportImportReferences(references); + if (declaredVariables) { + reportImportReferences(declaredVariables.references); + } } // case: import { cleanup } from 'testing-library-module' diff --git a/src/rules/no-promise-in-fire-event.ts b/src/rules/no-promise-in-fire-event.ts index 1c81e905..fc2beacf 100644 --- a/src/rules/no-promise-in-fire-event.ts +++ b/src/rules/no-promise-in-fire-event.ts @@ -111,6 +111,9 @@ export default createTestingLibraryRule({ const domElementArgument = closestCallExpression.arguments[0]; + if (!domElementArgument) { + return; + } checkSuspiciousNode(domElementArgument); }, }; diff --git a/src/rules/no-wait-for-multiple-assertions.ts b/src/rules/no-wait-for-multiple-assertions.ts index 3962da0a..6e853380 100644 --- a/src/rules/no-wait-for-multiple-assertions.ts +++ b/src/rules/no-wait-for-multiple-assertions.ts @@ -122,7 +122,7 @@ export default createTestingLibraryRule({ }); const lines = sourceCode.getText().split('\n'); const line = lines[callExpressionNode.loc.start.line - 1]; - const indent = line.match(/^\s*/)?.[0] ?? ''; + const indent = line?.match(/^\s*/)?.[0] ?? ''; const expressionStatementLines = lines.slice( expressionStatement.loc.start.line - 1, diff --git a/src/rules/no-wait-for-side-effects.ts b/src/rules/no-wait-for-side-effects.ts index 3082d8b3..ca7d01c2 100644 --- a/src/rules/no-wait-for-side-effects.ts +++ b/src/rules/no-wait-for-side-effects.ts @@ -227,7 +227,7 @@ export default createTestingLibraryRule({ const lines = sourceCode.getText().split('\n'); const line = lines[targetNode.loc.start.line - 1]; - const indent = line.match(/^\s*/)?.[0] ?? ''; + const indent = line?.match(/^\s*/)?.[0] ?? ''; const sideEffectLines = lines.slice( sideEffectNode.loc.start.line - 1, sideEffectNode.loc.end.line diff --git a/src/rules/prefer-find-by.ts b/src/rules/prefer-find-by.ts index 1d550bf0..0b5d5133 100644 --- a/src/rules/prefer-find-by.ts +++ b/src/rules/prefer-find-by.ts @@ -388,6 +388,11 @@ export default createTestingLibraryRule({ const queryMethod = fullQueryMethod.split('By')[1]; const queryVariant = getFindByQueryVariant(fullQueryMethod); + if (!queryMethod) { + // We shouldn't reach this point, but it's a safeguard for TS noUncheckedIndexedAccess + throw Error('Query method could not be determined.'); + } + reportInvalidUsage(node, { queryMethod, queryVariant, @@ -399,7 +404,7 @@ export default createTestingLibraryRule({ .slice(1, -1) .trim(); const { line, column } = expressionStatement.loc.start; - const indent = sourceCode.getLines()[line - 1].slice(0, column); + const indent = sourceCode.getLines()[line - 1]?.slice(0, column); const newText = bodyText .split('\n') .map((line) => line.trim()) @@ -498,6 +503,11 @@ export default createTestingLibraryRule({ const queryVariant = getFindByQueryVariant(fullQueryMethod); const callArguments = getQueryArguments(argumentBody); + if (!queryMethod) { + // We shouldn't reach this point, but it's a safeguard for TS noUncheckedIndexedAccess + throw Error('Query method could not be determined.'); + } + reportInvalidUsage(node, { queryMethod, queryVariant, diff --git a/src/rules/prefer-query-by-disappearance.ts b/src/rules/prefer-query-by-disappearance.ts index 2306830e..d915fb0f 100644 --- a/src/rules/prefer-query-by-disappearance.ts +++ b/src/rules/prefer-query-by-disappearance.ts @@ -178,6 +178,10 @@ export default createTestingLibraryRule({ const argumentNode = node.arguments[0]; + if (!argumentNode) { + return; + } + checkNonCallbackViolation(argumentNode); checkArrowFunctionViolation(argumentNode); checkFunctionExpressionViolation(argumentNode); diff --git a/src/rules/prefer-user-event.ts b/src/rules/prefer-user-event.ts index 16d3cf0d..cf652351 100644 --- a/src/rules/prefer-user-event.ts +++ b/src/rules/prefer-user-event.ts @@ -56,9 +56,10 @@ export const MAPPING_TO_USER_EVENT: Record = { }; function buildErrorMessage(fireEventMethod: string) { - const userEventMethods = MAPPING_TO_USER_EVENT[fireEventMethod].map( - (methodName) => `userEvent.${methodName}` - ); + const userEventMethods = + MAPPING_TO_USER_EVENT[fireEventMethod]?.map( + (methodName) => `userEvent.${methodName}` + ) ?? []; // TODO: when min node version is 13, we can reimplement this using `Intl.ListFormat` return userEventMethods.join(', ').replace(/, ([a-zA-Z.]+)$/, ', or $1'); diff --git a/src/utils/resolve-to-testing-library-fn.ts b/src/utils/resolve-to-testing-library-fn.ts index 9a791fa8..931e3328 100644 --- a/src/utils/resolve-to-testing-library-fn.ts +++ b/src/utils/resolve-to-testing-library-fn.ts @@ -108,7 +108,7 @@ const resolveScope = ( const ref = currentScope.set.get(identifier); if (ref && ref.defs.length > 0) { const def = ref.defs[ref.defs.length - 1]; - const importDetails = describePossibleImportDef(def); + const importDetails = def ? describePossibleImportDef(def) : null; if (importDetails?.local === identifier) { return importDetails; @@ -159,6 +159,9 @@ export const resolveToTestingLibraryFn = < if (!chain?.length) return null; const identifier = chain[0]; + if (!identifier) { + return null; + } const scope = context.sourceCode.getScope(identifier); const maybeImport = resolveScope(scope, getAccessorValue(identifier)); diff --git a/tests/rules/prefer-query-matchers.test.ts b/tests/rules/prefer-query-matchers.test.ts index a7c7128c..e6c27fa9 100644 --- a/tests/rules/prefer-query-matchers.test.ts +++ b/tests/rules/prefer-query-matchers.test.ts @@ -100,7 +100,7 @@ const getInvalidAssertions = ({ messageId, line: 7, column: 10, - data: { query: validEntry.query, matcher: validEntry.matcher }, + data: { query: validEntry?.query, matcher: validEntry?.matcher }, }, ], }, @@ -113,7 +113,7 @@ const getInvalidAssertions = ({ messageId, line: 7, column: 17, - data: { query: validEntry.query, matcher: validEntry.matcher }, + data: { query: validEntry?.query, matcher: validEntry?.matcher }, }, ], }, diff --git a/tests/rules/prefer-user-event.test.ts b/tests/rules/prefer-user-event.test.ts index f3c1f9ad..523306b2 100644 --- a/tests/rules/prefer-user-event.test.ts +++ b/tests/rules/prefer-user-event.test.ts @@ -29,9 +29,11 @@ function createScenarioWithImport< const ruleTester = createRuleTester(); function formatUserEventMethodsMessage(fireEventMethod: string): string { - const userEventMethods = MAPPING_TO_USER_EVENT[fireEventMethod].map( - (methodName) => `userEvent.${methodName}` - ); + // TODO: refactor this using `Intl.ListFormat` + const userEventMethods = + MAPPING_TO_USER_EVENT[fireEventMethod]?.map( + (methodName) => `userEvent.${methodName}` + ) ?? []; let joinedList = ''; for (let i = 0; i < userEventMethods.length; i++) { diff --git a/tests/test-utils.ts b/tests/test-utils.ts index 66a0db26..d6534b93 100644 --- a/tests/test-utils.ts +++ b/tests/test-utils.ts @@ -9,7 +9,7 @@ const DEFAULT_TEST_CASE_CONFIG = { }; class TestingLibraryRuleTester extends RuleTester { - run( + override run( ruleName: string, rule: TestingLibraryPluginRuleModule, { invalid, valid }: RunTests diff --git a/tsconfig.json b/tsconfig.json index aa22e7ac..a07de7a1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,14 @@ { "compilerOptions": { "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, "target": "ES2023", "module": "preserve", // "moduleResolution": "Bundler", <-- this is implied by "module": "preserve" "noEmit": true, "lib": ["ES2023"], "skipLibCheck": true, - "isolatedModules": true, - // TODO: turn it on - "noUncheckedIndexedAccess": false + "isolatedModules": true } }