From 6c62e53901dc228da623e7a4aef1f154729703c6 Mon Sep 17 00:00:00 2001 From: Josh Goldberg <git@joshuakgoldberg.com> Date: Thu, 20 Jul 2023 11:39:45 -0400 Subject: [PATCH] feat: use @typescript-eslint/recommended-type-checked in create-next-app --typescript --- .../06-configuring/02-eslint.mdx | 15 + examples/middleware/.eslintrc.json | 5 +- examples/next-forms/.eslintrc.json | 7 +- examples/with-temporal/package.json | 4 +- .../templates/app-tw/js/eslintrc.json | 5 +- .../templates/app-tw/ts/eslintrc.json | 5 +- .../templates/app/js/eslintrc.json | 5 +- .../templates/app/ts/eslintrc.json | 5 +- .../templates/default-tw/js/eslintrc.json | 5 +- .../templates/default-tw/ts/eslintrc.json | 5 +- .../templates/default/js/eslintrc.json | 5 +- .../templates/default/ts/eslintrc.json | 5 +- packages/eslint-config-next/index.js | 16 +- packages/eslint-config-next/package.json | 3 +- pnpm-lock.yaml | 289 +++++++++++++----- 15 files changed, 274 insertions(+), 105 deletions(-) diff --git a/docs/02-app/01-building-your-application/06-configuring/02-eslint.mdx b/docs/02-app/01-building-your-application/06-configuring/02-eslint.mdx index 5d797148491624..317451b19505dc 100644 --- a/docs/02-app/01-building-your-application/06-configuring/02-eslint.mdx +++ b/docs/02-app/01-building-your-application/06-configuring/02-eslint.mdx @@ -202,6 +202,21 @@ The `next/core-web-vitals` rule set is enabled when `next lint` is run for the f > The `next/core-web-vitals` entry point is automatically included for new applications built with [Create Next App](/docs/app/api-reference/create-next-app). +### TypeScript + +In addition to the Next.js ESLint rules, `create-next-app --typescript` will also add [`@typescript-eslint`'s base recommended rules] to your config: + +```json filename=".eslintrc.json" +{ + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] +} +``` + +See [typescript-eslint > Configs](https://typescript-eslint.io/linting/configs) for details on those recommended rules. + ## Usage With Other Tools ### Prettier diff --git a/examples/middleware/.eslintrc.json b/examples/middleware/.eslintrc.json index bffb357a712252..768b952e6d5626 100755 --- a/examples/middleware/.eslintrc.json +++ b/examples/middleware/.eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/examples/next-forms/.eslintrc.json b/examples/next-forms/.eslintrc.json index a2569c2c7ca0ae..43068b987e31b1 100644 --- a/examples/next-forms/.eslintrc.json +++ b/examples/next-forms/.eslintrc.json @@ -1,4 +1,7 @@ { - "root": true, - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ], + "root": true } diff --git a/examples/with-temporal/package.json b/examples/with-temporal/package.json index 6de6cd21d8db42..1fa8086830f885 100644 --- a/examples/with-temporal/package.json +++ b/examples/with-temporal/package.json @@ -24,8 +24,8 @@ "@types/node-fetch": "^3.0.3", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.1", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "cross-env": "^7.0.3", "nodemon": "^2.0.12", "ts-node": "^10.2.1", diff --git a/packages/create-next-app/templates/app-tw/js/eslintrc.json b/packages/create-next-app/templates/app-tw/js/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/app-tw/js/eslintrc.json +++ b/packages/create-next-app/templates/app-tw/js/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/app-tw/ts/eslintrc.json b/packages/create-next-app/templates/app-tw/ts/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/app-tw/ts/eslintrc.json +++ b/packages/create-next-app/templates/app-tw/ts/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/app/js/eslintrc.json b/packages/create-next-app/templates/app/js/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/app/js/eslintrc.json +++ b/packages/create-next-app/templates/app/js/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/app/ts/eslintrc.json b/packages/create-next-app/templates/app/ts/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/app/ts/eslintrc.json +++ b/packages/create-next-app/templates/app/ts/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/default-tw/js/eslintrc.json b/packages/create-next-app/templates/default-tw/js/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/default-tw/js/eslintrc.json +++ b/packages/create-next-app/templates/default-tw/js/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/default-tw/ts/eslintrc.json b/packages/create-next-app/templates/default-tw/ts/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/default-tw/ts/eslintrc.json +++ b/packages/create-next-app/templates/default-tw/ts/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/default/js/eslintrc.json b/packages/create-next-app/templates/default/js/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/default/js/eslintrc.json +++ b/packages/create-next-app/templates/default/js/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/create-next-app/templates/default/ts/eslintrc.json b/packages/create-next-app/templates/default/ts/eslintrc.json index bffb357a712252..768b952e6d5626 100644 --- a/packages/create-next-app/templates/default/ts/eslintrc.json +++ b/packages/create-next-app/templates/default/ts/eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": [ + "plugin:@typescript-eslint/recommended-type-checked", + "next/core-web-vitals" + ] } diff --git a/packages/eslint-config-next/index.js b/packages/eslint-config-next/index.js index a17aa9d618f9f7..f2b084fa59f23a 100644 --- a/packages/eslint-config-next/index.js +++ b/packages/eslint-config-next/index.js @@ -30,12 +30,13 @@ sortedPaths.push(...keptPaths) const hookPropertyMap = new Map( [ - ['eslint-plugin-import', 'eslint-plugin-import'], - ['eslint-plugin-react', 'eslint-plugin-react'], - ['eslint-plugin-jsx-a11y', 'eslint-plugin-jsx-a11y'], - ].map(([request, replacement]) => [ + '@typescript-eslint/eslint-plugin', + 'eslint-plugin-import', + 'eslint-plugin-react', + 'eslint-plugin-jsx-a11y', + ].map((request) => [ request, - require.resolve(replacement, { paths: sortedPaths }), + require.resolve(request, { paths: sortedPaths }), ]) ) @@ -95,11 +96,8 @@ module.exports = { files: ['**/*.ts?(x)'], parser: '@typescript-eslint/parser', parserOptions: { + project: true, sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - warnOnUnsupportedTypeScriptVersion: true, }, }, ], diff --git a/packages/eslint-config-next/package.json b/packages/eslint-config-next/package.json index 96d8d5218df7b9..611ca6aa383746 100644 --- a/packages/eslint-config-next/package.json +++ b/packages/eslint-config-next/package.json @@ -12,7 +12,8 @@ "dependencies": { "@next/eslint-plugin-next": "13.4.10", "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.26.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccd1eb09d8ea96..34a6412f8de32f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -436,7 +436,8 @@ importers: specifiers: '@next/eslint-plugin-next': 13.4.10 '@rushstack/eslint-patch': ^1.1.3 - '@typescript-eslint/parser': ^5.42.0 + '@typescript-eslint/eslint-plugin': ^6.1.0 + '@typescript-eslint/parser': ^6.1.0 eslint: ^7.23.0 || ^8.0.0 eslint-import-resolver-node: ^0.3.6 eslint-import-resolver-typescript: ^3.5.2 @@ -448,11 +449,12 @@ importers: dependencies: '@next/eslint-plugin-next': link:../eslint-plugin-next '@rushstack/eslint-patch': 1.1.3 - '@typescript-eslint/parser': 5.42.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/eslint-plugin': 6.1.0_y4uvcmn7jcgzi57cvb7id5rxne + '@typescript-eslint/parser': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4 - eslint-plugin-import: 2.26.0_rro5vshdcwktyq3ib6gggwkshq + eslint-plugin-import: 2.26.0_e7gnhrr2al7nil5dy7ts3p4gbm eslint-plugin-jsx-a11y: 6.5.1_eslint@8.31.0 eslint-plugin-react: 7.31.8_eslint@8.31.0 eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705_eslint@8.31.0 @@ -4673,6 +4675,21 @@ packages: jsdoc-type-pratt-parser: 3.1.0 dev: true + /@eslint-community/eslint-utils/4.4.0_eslint@8.31.0: + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.31.0 + eslint-visitor-keys: 3.4.1 + dev: false + + /@eslint-community/regexpp/4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + /@eslint/eslintrc/0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5307,7 +5324,7 @@ packages: jest-haste-map: 27.5.1 jest-regex-util: 27.5.1 jest-util: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 source-map: 0.6.1 @@ -5431,7 +5448,7 @@ packages: npm-package-arg: 8.1.0 p-map: 4.0.0 pacote: 11.2.6 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - bluebird - supports-color @@ -5462,7 +5479,7 @@ packages: p-map-series: 2.1.0 p-waterfall: 2.1.1 read-package-tree: 5.3.1 - semver: 7.3.8 + semver: 7.5.4 dev: true /@lerna/changed/4.0.0: @@ -5567,7 +5584,7 @@ packages: npm-package-arg: 8.1.0 npmlog: 4.1.2 pify: 5.0.0 - semver: 7.3.8 + semver: 7.5.4 dev: true /@lerna/create-symlink/4.0.0: @@ -5595,7 +5612,7 @@ packages: p-reduce: 2.1.0 pacote: 11.2.6 pify: 5.0.0 - semver: 7.3.8 + semver: 7.5.4 slash: 3.0.0 validate-npm-package-license: 3.0.4 validate-npm-package-name: 3.0.0 @@ -5706,7 +5723,7 @@ packages: engines: {node: '>= 10.18.0'} dependencies: '@lerna/child-process': 4.0.0 - semver: 7.3.8 + semver: 7.5.4 dev: true /@lerna/import/4.0.0: @@ -5878,7 +5895,7 @@ packages: '@lerna/validation-error': 4.0.0 npm-package-arg: 8.1.0 npmlog: 4.1.2 - semver: 7.3.8 + semver: 7.5.4 dev: true /@lerna/package/4.0.0: @@ -5894,7 +5911,7 @@ packages: resolution: {integrity: sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==} engines: {node: '>= 10.18.0'} dependencies: - semver: 7.3.8 + semver: 7.5.4 dev: true /@lerna/profiler/4.0.0: @@ -5963,7 +5980,7 @@ packages: p-map: 4.0.0 p-pipe: 3.1.0 pacote: 11.2.6 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - bluebird - encoding @@ -6095,7 +6112,7 @@ packages: p-pipe: 3.1.0 p-reduce: 2.1.0 p-waterfall: 2.1.1 - semver: 7.3.8 + semver: 7.5.4 slash: 3.0.0 temp-write: 4.0.0 write-json-file: 4.3.0 @@ -6122,7 +6139,7 @@ packages: nopt: 5.0.0 npmlog: 4.1.2 rimraf: 3.0.2 - semver: 7.3.8 + semver: 7.5.4 tar: 6.1.15 transitivePeerDependencies: - encoding @@ -6136,7 +6153,7 @@ packages: dependencies: '@mdx-js/mdx': 2.2.1 source-map: 0.7.3 - webpack: 5.86.0_@swc+core@1.3.55 + webpack: 5.86.0 transitivePeerDependencies: - supports-color @@ -6239,7 +6256,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.8 + semver: 7.5.4 dev: true /@npmcli/git/2.0.4: @@ -6251,7 +6268,7 @@ packages: npm-pick-manifest: 6.1.0 promise-inflight: 1.0.1 promise-retry: 1.1.1 - semver: 7.3.8 + semver: 7.5.4 unique-filename: 1.1.1 which: 2.0.2 transitivePeerDependencies: @@ -6810,6 +6827,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-darwin-x64/1.3.55: @@ -6818,6 +6836,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm-gnueabihf/1.3.55: @@ -6826,6 +6845,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-gnu/1.3.55: @@ -6834,6 +6854,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-musl/1.3.55: @@ -6842,6 +6863,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-gnu/1.3.55: @@ -6850,6 +6872,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-musl/1.3.55: @@ -6858,6 +6881,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-win32-arm64-msvc/1.3.55: @@ -6866,6 +6890,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-ia32-msvc/1.3.55: @@ -6874,6 +6899,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-x64-msvc/1.3.55: @@ -6882,6 +6908,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core/1.3.55_@swc+helpers@0.5.1: @@ -6906,6 +6933,7 @@ packages: '@swc/core-win32-arm64-msvc': 1.3.55 '@swc/core-win32-ia32-msvc': 1.3.55 '@swc/core-win32-x64-msvc': 1.3.55 + dev: true /@swc/helpers/0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} @@ -7475,6 +7503,10 @@ packages: '@types/node': 20.2.5 dev: true + /@types/semver/7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: false + /@types/send/0.14.4: resolution: {integrity: sha512-SCVCRRjSbpwoKgA34wK8cq14OUPu4qrKigO85/ZH6J04NGws37khLtq7YQr17zyOH01p4T5oy8e1TxEzql01Pg==} dependencies: @@ -7615,6 +7647,36 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin/6.1.0_y4uvcmn7jcgzi57cvb7id5rxne: + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/type-utils': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/utils': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4 + eslint: 8.31.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.1_typescript@4.8.2 + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + dev: false + /@typescript-eslint/experimental-utils/4.29.1_gbw5sebpv3ij5sxvftfumdnkh4: resolution: {integrity: sha512-kl6QG6qpzZthfd2bzPNSJB2YcZpNOrP6r9jueXupcZHnL74WiuSjaft7WSu17J9+ae9zTlk0KJMXPUj0daBxMw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -7653,19 +7715,20 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.42.0_xdoee2m3rk6cql2eld7jqbrwui: - resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser/6.1.0_xdoee2m3rk6cql2eld7jqbrwui: + resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.42.0 - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.2 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0_typescript@4.8.2 + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 eslint: 8.31.0 typescript: 4.8.2 @@ -7681,12 +7744,32 @@ packages: '@typescript-eslint/visitor-keys': 4.29.1 dev: true - /@typescript-eslint/scope-manager/5.42.0: - resolution: {integrity: sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager/6.1.0: + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 + dev: false + + /@typescript-eslint/type-utils/6.1.0_xdoee2m3rk6cql2eld7jqbrwui: + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/visitor-keys': 5.42.0 + '@typescript-eslint/typescript-estree': 6.1.0_typescript@4.8.2 + '@typescript-eslint/utils': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui + debug: 4.3.4 + eslint: 8.31.0 + ts-api-utils: 1.0.1_typescript@4.8.2 + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color dev: false /@typescript-eslint/types/4.29.1: @@ -7694,9 +7777,9 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/types/5.42.0: - resolution: {integrity: sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/types/6.1.0: + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + engines: {node: ^16.0.0 || >=18.0.0} dev: false /@typescript-eslint/typescript-estree/4.29.1_typescript@5.1.3: @@ -7713,34 +7796,53 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0_typescript@5.1.3 typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.42.0_typescript@4.8.2: - resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree/6.1.0_typescript@4.8.2: + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.42.0 - '@typescript-eslint/visitor-keys': 5.42.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.2 + semver: 7.5.4 + ts-api-utils: 1.0.1_typescript@4.8.2 typescript: 4.8.2 transitivePeerDependencies: - supports-color dev: false + /@typescript-eslint/utils/6.1.0_xdoee2m3rk6cql2eld7jqbrwui: + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0_eslint@8.31.0 + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0_typescript@4.8.2 + eslint: 8.31.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /@typescript-eslint/visitor-keys/4.29.1: resolution: {integrity: sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} @@ -7749,12 +7851,12 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /@typescript-eslint/visitor-keys/5.42.0: - resolution: {integrity: sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys/6.1.0: + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.42.0 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 6.1.0 + eslint-visitor-keys: 3.4.1 dev: false /@vercel/fetch-cached-dns/2.0.2_node-fetch@2.6.7: @@ -11849,7 +11951,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.31.0 - eslint-plugin-import: 2.26.0_rro5vshdcwktyq3ib6gggwkshq + eslint-plugin-import: 2.26.0_e7gnhrr2al7nil5dy7ts3p4gbm get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.11.0 @@ -11885,7 +11987,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_sxk65rprkegpqfhvolrvhmfthi: + /eslint-module-utils/2.7.3_ux64pgzucxqmnakiyjiz2imkhu: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} peerDependencies: @@ -11903,7 +12005,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.42.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/parser': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui debug: 3.2.7 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4 @@ -11954,7 +12056,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.26.0_rro5vshdcwktyq3ib6gggwkshq: + /eslint-plugin-import/2.26.0_e7gnhrr2al7nil5dy7ts3p4gbm: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -11964,14 +12066,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.42.0_xdoee2m3rk6cql2eld7jqbrwui + '@typescript-eslint/parser': 6.1.0_xdoee2m3rk6cql2eld7jqbrwui array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_sxk65rprkegpqfhvolrvhmfthi + eslint-module-utils: 2.7.3_ux64pgzucxqmnakiyjiz2imkhu has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -12157,6 +12259,10 @@ packages: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys/3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint/7.24.0: resolution: {integrity: sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==} engines: {node: ^10.12.0 || >=12.0.0} @@ -12242,7 +12348,7 @@ packages: optionator: 0.9.1 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.3.8 + semver: 7.5.4 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 table: 6.8.0 @@ -12314,7 +12420,7 @@ packages: dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2_acorn@8.8.2 - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.1 /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -12721,7 +12827,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -12966,7 +13072,7 @@ packages: dependencies: detect-file: 1.0.0 is-glob: 4.0.3 - micromatch: 4.0.4 + micromatch: 4.0.5 resolve-dir: 1.0.1 dev: true @@ -13659,7 +13765,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.11 + fast-glob: 3.2.12 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -13760,6 +13866,10 @@ packages: /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + /graphemer/1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false + /growl/1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} @@ -14511,7 +14621,7 @@ packages: promzard: 0.3.0 read: 1.0.7 read-package-json: 3.0.0 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-license: 3.0.4 validate-npm-package-name: 3.0.0 dev: true @@ -15390,7 +15500,7 @@ packages: jest-runner: 27.0.6 jest-util: 27.5.1 jest-validate: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 27.5.1 transitivePeerDependencies: - bufferutil @@ -15535,7 +15645,7 @@ packages: jest-serializer: 27.5.1 jest-util: 27.5.1 jest-worker: 27.5.1 - micromatch: 4.0.4 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 @@ -15553,7 +15663,7 @@ packages: jest-regex-util: 29.4.3 jest-util: 29.5.0 jest-worker: 29.5.0 - micromatch: 4.0.4 + micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 @@ -15657,7 +15767,7 @@ packages: '@types/stack-utils': 2.0.1 chalk: 4.1.0 graceful-fs: 4.2.11 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 26.6.2 slash: 3.0.0 stack-utils: 2.0.6 @@ -15686,7 +15796,7 @@ packages: '@types/stack-utils': 2.0.1 chalk: 4.1.0 graceful-fs: 4.2.11 - micromatch: 4.0.4 + micromatch: 4.0.5 pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.6 @@ -15921,7 +16031,7 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -15951,7 +16061,7 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -16503,7 +16613,7 @@ packages: normalize-package-data: 3.0.0 npm-package-arg: 8.1.0 npm-registry-fetch: 9.0.0 - semver: 7.3.8 + semver: 7.5.4 ssri: 8.0.1 transitivePeerDependencies: - bluebird @@ -17780,6 +17890,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.2.3 + dev: true /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -18131,6 +18242,10 @@ packages: querystring: 0.2.0 dev: true + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -18279,7 +18394,7 @@ packages: npmlog: 4.1.2 request: 2.88.2 rimraf: 3.0.2 - semver: 7.3.8 + semver: 7.5.4 tar: 6.1.15 which: 2.0.2 dev: true @@ -18368,7 +18483,7 @@ packages: dependencies: hosted-git-info: 3.0.8 resolve: 1.22.2 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -18410,7 +18525,7 @@ packages: resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} engines: {node: '>=10'} dependencies: - semver: 7.3.8 + semver: 7.5.4 dev: true /npm-lifecycle/3.1.5: @@ -18435,7 +18550,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 3.0.8 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-name: 3.0.0 dev: true @@ -18455,7 +18570,7 @@ packages: dependencies: npm-install-checks: 4.0.0 npm-package-arg: 8.1.0 - semver: 7.3.8 + semver: 7.5.4 dev: true /npm-registry-fetch/9.0.0: @@ -19322,7 +19437,7 @@ packages: dev: true /path-type/1.1.0: - resolution: {integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=} + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} dependencies: graceful-fs: 4.2.11 @@ -19331,7 +19446,7 @@ packages: dev: true /path-type/2.0.0: - resolution: {integrity: sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=} + resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} engines: {node: '>=4'} dependencies: pify: 2.3.0 @@ -19382,6 +19497,7 @@ packages: /picomatch/2.2.3: resolution: {integrity: sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==} engines: {node: '>=8.6'} + dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -22526,6 +22642,14 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true + + /semver/7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 /send/0.17.1: resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} @@ -23738,6 +23862,7 @@ packages: serialize-javascript: 6.0.1 terser: 5.17.7 webpack: 5.86.0_@swc+core@1.3.55 + dev: true /terser/5.10.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} @@ -24044,6 +24169,15 @@ packages: /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + /ts-api-utils/1.0.1_typescript@4.8.2: + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 4.8.2 + dev: false + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -24082,16 +24216,6 @@ packages: /tslib/2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - /tsutils/3.21.0_typescript@4.8.2: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.11.1 - typescript: 4.8.2 - dev: false - /tsutils/3.21.0_typescript@5.1.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -25090,6 +25214,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: true /websocket-driver/0.7.3: resolution: {integrity: sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==}