diff --git a/CHANGELOG.md b/CHANGELOG.md index f8f32f7a0300..9a8c351378a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,29 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + + +### Bug Fixes + +* **eslint-plugin:** [member-ordering] account for repeated names ([#6864](https://github.com/typescript-eslint/typescript-eslint/issues/6864)) ([d207b59](https://github.com/typescript-eslint/typescript-eslint/commit/d207b59e24acb9377a7a55104d082bd91fbb664e)) +* **eslint-plugin:** [no-unsafe-enum-comparison] exempt bit shift operators ([#7074](https://github.com/typescript-eslint/typescript-eslint/issues/7074)) ([b3e0e75](https://github.com/typescript-eslint/typescript-eslint/commit/b3e0e7571f1abb5dae347d3701844324232b1431)) +* **eslint-plugin:** [prefer-nullish-coalescing] handle case when type of left side is null or undefined ([#7225](https://github.com/typescript-eslint/typescript-eslint/issues/7225)) ([b62affe](https://github.com/typescript-eslint/typescript-eslint/commit/b62affe8ddac7c0af22bf74f22503d0cda92f4c0)) +* **eslint-plugin:** use a default export for the rules type ([#7266](https://github.com/typescript-eslint/typescript-eslint/issues/7266)) ([af77a1d](https://github.com/typescript-eslint/typescript-eslint/commit/af77a1d33f0853d2ab0f61e4ac04dec47cd7ba18)) +* **typescript-estree:** fix TSNode type error on old ts versions ([#7267](https://github.com/typescript-eslint/typescript-eslint/issues/7267)) ([f2aed1b](https://github.com/typescript-eslint/typescript-eslint/commit/f2aed1bee1d265e8c87423a17b674be31a075f58)) + + +### Features + +* **eslint-plugin:** [class-methods-use-this] add extension rule ([#6457](https://github.com/typescript-eslint/typescript-eslint/issues/6457)) ([18ea3b1](https://github.com/typescript-eslint/typescript-eslint/commit/18ea3b1f8938e25053f89b7e4ec8dcc6c453118a)) +* **eslint-plugin:** sync getFunctionHeadLoc implementation with upstream ([#7260](https://github.com/typescript-eslint/typescript-eslint/issues/7260)) ([f813147](https://github.com/typescript-eslint/typescript-eslint/commit/f81314731cccb779423e2580a805eff3efff8564)) + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/docs/contributing/local-development/Local_Linking.mdx b/docs/contributing/local-development/Local_Linking.mdx new file mode 100644 index 000000000000..00908758485c --- /dev/null +++ b/docs/contributing/local-development/Local_Linking.mdx @@ -0,0 +1,97 @@ +--- +id: local-linking +title: Local Linking +--- + +It can sometimes be useful to try out your local `typescript-eslint` repository's changes in another local ("downstream") repository. +The general strategy to do so is: + +1. [Global linking](#global-linking): Use your package manager's global link command to make `@typescript-eslint/*` packages available as global symlinks. +2. [Repository linking](#repository-linking): Use your package manager's link command to reference those global symlinks in the local downstream repository. + +## Global Linking + +To make all `@typescript-eslint/*` packages available globally, run this command from your `typescript-eslint` repository root: + +```shell +for package in ./packages/*; do + cd $package + # Insert your package manager's global link command here + cd ../.. +done +``` + +The command to put instead of that `#` comment, depends on the local downstream repository's package manager: + +- [npm](https://docs.npmjs.com/cli/v9/commands/npm-link 'npm link docs'): `npm link` +- [pnpm](https://pnpm.io/cli/link 'pnpm link docs'): `pnpm link --global` +- [Yarn v1 / classic](https://classic.yarnpkg.com/lang/en/docs/cli/link/ 'Yarn v1 / classic docs'): `yarn link` +- [Yarn v2 / v3 / berry](https://yarnpkg.com/cli/link 'Yarn v2 / v3 / berry docs'): _skip this step altogether_ + +## Repository Linking + +Now that the `@typescript-eslint/*` packages are available locally, you can link to them in the local downstream repository. +Run that repository's package manager's link command for any `@typescript-eslint/*` packages that repository depends on: + +- npm: `npm link @typescript-eslint/eslint-plugin @typescript-eslint/parser` +- pnpm: `pnpm link @typescript-eslint/eslint-plugin @typescript-eslint/parser --global` +- Yarn v1 / classic: `yarn link @typescript-eslint/eslint-plugin @typescript-eslint/parser` +- Yarn v2 / v3 / berry: `yarn link /path/to/your/typescript-eslint/packages/eslint-plugin /path/to/your/typescript-eslint/packages/parser` + - This will add a `resolutions` entry for each package in the local downstream repository's `package.json` + +Now, you should be able to run ESLint in the local downstream repository as you normally would, and have it reference the local typescript-eslint package. + +:::tip +To check that the local package is being used, consider adding a `console.log("Hello, world!");` to a file such as `./packages/eslint-plugin/dist/index.js` and making sure that log appears when linting the local downstream repository. +::: + +## Troubleshooting + +### Packages Not Found (`Cannot find module`) + +If a local `@typescript-eslint/*` package has a dependency not present in the published npm version, linting in the local downstream repository may see a different error: + +```plaintext +Error: Failed to load parser '@typescript-eslint/parser' declared in '.eslintrc.js': Cannot find module 'ts-api-utils' +Require stack: +- /repos/typescript-eslint/packages/typescript-estree/dist/convert-comments.js +``` + +In this case, you can manually install any missing packages in the local downstream repository as dev dependencies (`--save-dev`). + +```shell +yarn add ts-api-utils -D +``` + +### Yarn Link Failures (`Cannot link ... conflicts with parent dependency`) + +Yarn v2 / v3 / berry can be strict about conflicting dependencies. +You may see errors about conflicting versions when running `yarn` to install in the local downstream repository: + +```plaintext +$ yarn +➤ YN0000: ┌ Resolution step +➤ YN0000: └ Completed +➤ YN0000: ┌ Fetch step +➤ YN0000: └ Completed +➤ YN0000: ┌ Link step +➤ YN0071: │ Cannot link @typescript-eslint/parser into eslint-plugin-import@npm:2.27.5 [6d590] dependency debug@npm:4.3.4 [531b6] conflicts with parent dependency debug@npm:3.2.7 [65bed] +➤ YN0071: │ Cannot link @typescript-eslint/parser into eslint-module-utils@npm:2.8.0 [0b7fa] dependency debug@npm:4.3.4 [531b6] conflicts with parent dependency debug@npm:3.2.7 [65bed] +➤ YN0000: └ Completed in 0s 370ms +➤ YN0000: Failed with errors in 0s 643ms +``` + +To resolve this, you can add a manual entry to the `resolutions` field in the local downstream repository's `package.json` for each failing package. +Use the largest major version referenced in the Yarn errors. + +```json +{ + "resolutions": { + "@typescript-eslint/eslint-plugin": "portal:/path/to/your/typescript-eslint/packages/eslint-plugin", + "@typescript-eslint/parser": "portal:/path/to/your/typescript-eslint/packages/parser", + "debug": "4" + } +} +``` + +Re-running `yarn` should succeed. diff --git a/jest.config.base.js b/jest.config.base.js index 355b70884c96..4f2c5c124246 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -36,4 +36,5 @@ module.exports = { }, ], }, + workerIdleMemoryLimit: '300MB', }; diff --git a/lerna.json b/lerna.json index 5d9d7085471d..2713860cf0ff 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "6.1.0", + "version": "6.2.0", "npmClient": "yarn", "stream": true, "command": { diff --git a/package.json b/package.json index 22460b599a7f..e93d904d0d6d 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,10 @@ "@babel/eslint-parser": "^7.22.7", "@babel/parser": "^7.22.7", "@babel/types": "^7.22.5", - "@nrwl/nx-cloud": "16.1.0", - "@nx/jest": "16.5.2", - "@nx/linter": "16.5.2", - "@nx/workspace": "16.5.2", + "@nrwl/nx-cloud": "16.1.1", + "@nx/jest": "16.5.3", + "@nx/linter": "16.5.3", + "@nx/workspace": "16.5.3", "@swc/core": "^1.3.68", "@swc/jest": "^0.2.26", "@types/babel__code-frame": "^7.0.3", @@ -101,14 +101,14 @@ "jest-snapshot": "^29.6.1", "jest-specific-snapshot": "^8.0.0", "jest": "29.6.1", - "lerna": "7.1.3", + "lerna": "7.1.4", "lint-staged": "^13.2.3", "make-dir": "^4.0.0", "markdownlint-cli": "^0.35.0", "ncp": "^2.0.0", "netlify": "^13.1.9", - "nx-cloud": "16.1.0", - "nx": "16.5.2", + "nx-cloud": "16.1.1", + "nx": "16.5.3", "patch-package": "^7.0.0", "prettier": "^2.8.4", "pretty-format": "^29.6.1", diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index e418c59e37d7..dfdad311aa46 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/ast-spec + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/ast-spec diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index eb3ff3bb63da..32e4deaf5932 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "6.1.0", + "version": "6.2.0", "description": "Complete specification for the TypeScript-ESTree AST", "private": true, "keywords": [ diff --git a/packages/eslint-plugin-internal/CHANGELOG.md b/packages/eslint-plugin-internal/CHANGELOG.md index 1d080caea34b..f885c79a67a3 100644 --- a/packages/eslint-plugin-internal/CHANGELOG.md +++ b/packages/eslint-plugin-internal/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/eslint-plugin-internal diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index f113aa24fa0a..1a5ed9eee3db 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin-internal", - "version": "6.1.0", + "version": "6.2.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,10 +14,10 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/rule-tester": "6.1.0", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/rule-tester": "6.2.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/type-utils": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 61b4b22f1509..8a0dd55068b6 100644 --- a/packages/eslint-plugin-tslint/CHANGELOG.md +++ b/packages/eslint-plugin-tslint/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/eslint-plugin-tslint + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json index 3ec92c951977..19a3a0e22a5a 100644 --- a/packages/eslint-plugin-tslint/package.json +++ b/packages/eslint-plugin-tslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin-tslint", - "version": "6.1.0", + "version": "6.2.0", "main": "dist/index.js", "typings": "src/index.ts", "description": "ESLint plugin that wraps a TSLint configuration and lints the whole source using TSLint", @@ -46,7 +46,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "6.1.0" + "@typescript-eslint/utils": "6.2.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -54,7 +54,7 @@ "typescript": "*" }, "devDependencies": { - "@typescript-eslint/parser": "6.1.0" + "@typescript-eslint/parser": "6.2.0" }, "funding": { "type": "opencollective", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index ddaac1c3b0d7..a336d00ce05a 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,28 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + + +### Bug Fixes + +* **eslint-plugin:** [member-ordering] account for repeated names ([#6864](https://github.com/typescript-eslint/typescript-eslint/issues/6864)) ([d207b59](https://github.com/typescript-eslint/typescript-eslint/commit/d207b59e24acb9377a7a55104d082bd91fbb664e)) +* **eslint-plugin:** [no-unsafe-enum-comparison] exempt bit shift operators ([#7074](https://github.com/typescript-eslint/typescript-eslint/issues/7074)) ([b3e0e75](https://github.com/typescript-eslint/typescript-eslint/commit/b3e0e7571f1abb5dae347d3701844324232b1431)) +* **eslint-plugin:** [prefer-nullish-coalescing] handle case when type of left side is null or undefined ([#7225](https://github.com/typescript-eslint/typescript-eslint/issues/7225)) ([b62affe](https://github.com/typescript-eslint/typescript-eslint/commit/b62affe8ddac7c0af22bf74f22503d0cda92f4c0)) +* **eslint-plugin:** use a default export for the rules type ([#7266](https://github.com/typescript-eslint/typescript-eslint/issues/7266)) ([af77a1d](https://github.com/typescript-eslint/typescript-eslint/commit/af77a1d33f0853d2ab0f61e4ac04dec47cd7ba18)) + + +### Features + +* **eslint-plugin:** [class-methods-use-this] add extension rule ([#6457](https://github.com/typescript-eslint/typescript-eslint/issues/6457)) ([18ea3b1](https://github.com/typescript-eslint/typescript-eslint/commit/18ea3b1f8938e25053f89b7e4ec8dcc6c453118a)) +* **eslint-plugin:** sync getFunctionHeadLoc implementation with upstream ([#7260](https://github.com/typescript-eslint/typescript-eslint/issues/7260)) ([f813147](https://github.com/typescript-eslint/typescript-eslint/commit/f81314731cccb779423e2580a805eff3efff8564)) + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/eslint-plugin/TSLINT_RULE_ALTERNATIVES.md b/packages/eslint-plugin/TSLINT_RULE_ALTERNATIVES.md index 097de8938048..8276fabd9226 100644 --- a/packages/eslint-plugin/TSLINT_RULE_ALTERNATIVES.md +++ b/packages/eslint-plugin/TSLINT_RULE_ALTERNATIVES.md @@ -185,7 +185,7 @@ It lists all TSLint rules along side rules from the ESLint ecosystem that are th | [`one-line`] | 🌟 | [`brace-style`][brace-style] or [Prettier] | | [`one-variable-per-declaration`] | 🌟 | [`one-var`][one-var] | | [`ordered-imports`] | 🌓 | [`import/order`] | -| [`prefer-function-over-method`] | 🌟 | [`class-methods-use-this`][class-methods-use-this] | +| [`prefer-function-over-method`] | 🌟 | [`@typescript-eslint/class-methods-use-this`] | | [`prefer-method-signature`] | ✅ | [`@typescript-eslint/method-signature-style`] | | [`prefer-switch`] | 🛑 | N/A | | [`prefer-template`] | 🌟 | [`prefer-template`][prefer-template] | @@ -566,7 +566,6 @@ Relevant plugins: [`chai-expect-keywords`](https://github.com/gavinaiken/eslint- [object-shorthand]: https://eslint.org/docs/rules/object-shorthand [brace-style]: https://eslint.org/docs/rules/brace-style [one-var]: https://eslint.org/docs/rules/one-var -[class-methods-use-this]: https://eslint.org/docs/rules/class-methods-use-this [prefer-template]: https://eslint.org/docs/rules/prefer-template [quotes]: https://eslint.org/docs/rules/quotes [semi]: https://eslint.org/docs/rules/semi @@ -598,6 +597,7 @@ Relevant plugins: [`chai-expect-keywords`](https://github.com/gavinaiken/eslint- [`@typescript-eslint/await-thenable`]: https://typescript-eslint.io/rules/await-thenable [`@typescript-eslint/ban-types`]: https://typescript-eslint.io/rules/ban-types [`@typescript-eslint/ban-ts-comment`]: https://typescript-eslint.io/rules/ban-ts-comment +[`@typescript-eslint/class-methods-use-this`]: https://typescript-eslint.io/rules/class-methods-use-this [`@typescript-eslint/consistent-type-assertions`]: https://typescript-eslint.io/rules/consistent-type-assertions [`@typescript-eslint/consistent-type-definitions`]: https://typescript-eslint.io/rules/consistent-type-definitions [`@typescript-eslint/explicit-member-accessibility`]: https://typescript-eslint.io/rules/explicit-member-accessibility diff --git a/packages/eslint-plugin/docs/rules/TEMPLATE.md b/packages/eslint-plugin/docs/rules/TEMPLATE.md index ddc6def34a5c..3fb311ad2a16 100644 --- a/packages/eslint-plugin/docs/rules/TEMPLATE.md +++ b/packages/eslint-plugin/docs/rules/TEMPLATE.md @@ -1,6 +1,10 @@ +--- +description: '' +--- + > 🛑 This file is source code, not the primary documentation location! 🛑 > -> See **https://typescript-eslint.io/rules/your-rule-name** for documentation. +> See **https://typescript-eslint.io/rules/RULE_NAME_REPLACEME** for documentation. ## Examples diff --git a/packages/eslint-plugin/docs/rules/class-methods-use-this.md b/packages/eslint-plugin/docs/rules/class-methods-use-this.md new file mode 100644 index 000000000000..4ee075552d2b --- /dev/null +++ b/packages/eslint-plugin/docs/rules/class-methods-use-this.md @@ -0,0 +1,57 @@ +--- +description: 'Enforce that class methods utilize `this`.' +--- + +> 🛑 This file is source code, not the primary documentation location! 🛑 +> +> See **https://typescript-eslint.io/rules/class-methods-use-this** for documentation. + +## Examples + +This rule extends the base [`eslint/class-methods-use-this`](https://eslint.org/docs/rules/class-methods-use-this) rule. +It adds support for ignoring `override` methods or methods on classes that implement an interface. + +## Options + +This rule adds the following options: + +```ts +interface Options extends BaseClassMethodsUseThisOptions { + ignoreOverrideMethods?: boolean; + ignoreClassesThatImplementAnInterface?: boolean; +} + +const defaultOptions: Options = { + ...baseClassMethodsUseThisOptions, + ignoreOverrideMethods: false, + ignoreClassesThatImplementAnInterface: false, +}; +``` + +### `ignoreOverrideMethods` + +Makes the rule to ignores any class member explicitly marked with `override`. + +Example of a correct code when `ignoreOverrideMethods` is set to `true`: + +```ts +class X { + override method() {} + override property = () => {}; +} +``` + +### `ignoreClassesThatImplementAnInterface` + +Makes the rule ignore all class members that are defined within a class that `implements` a type. + +It's important to note that this option does not only apply to members defined in the interface as that would require type information. + +Example of a correct code when `ignoreClassesThatImplementAnInterface` is set to `true`: + +```ts +class X implements Y { + method() {} + property = () => {}; +} +``` diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 5392896ccbd8..58c821310e16 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "6.1.0", + "version": "6.2.0", "description": "TypeScript plugin for ESLint", "files": [ "dist", @@ -51,16 +51,16 @@ "generate:breaking-changes": "yarn tsx tools/generate-breaking-changes.mts", "generate:configs": "yarn tsx tools/generate-configs.ts", "lint": "nx lint", - "test": "jest --coverage", + "test": "jest --coverage --logHeapUsage", "test-single": "jest --no-coverage", "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/type-utils": "6.2.0", + "@typescript-eslint/utils": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -74,8 +74,8 @@ "@types/marked": "*", "@types/natural-compare": "*", "@types/prettier": "*", - "@typescript-eslint/rule-schema-to-typescript-types": "6.1.0", - "@typescript-eslint/rule-tester": "6.1.0", + "@typescript-eslint/rule-schema-to-typescript-types": "6.2.0", + "@typescript-eslint/rule-tester": "6.2.0", "ajv": "^6.12.6", "chalk": "^5.3.0", "cross-fetch": "*", diff --git a/packages/eslint-plugin/rules.d.ts b/packages/eslint-plugin/rules.d.ts index 9a5272d205c3..49518b6ee502 100644 --- a/packages/eslint-plugin/rules.d.ts +++ b/packages/eslint-plugin/rules.d.ts @@ -41,4 +41,4 @@ export interface TypeScriptESLintRules { [ruleName: string]: RuleModule; } declare const rules: TypeScriptESLintRules; -export = rules; +export default rules; diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index 184a241a66fd..d0bd265b0996 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -19,6 +19,8 @@ export = { 'brace-style': 'off', '@typescript-eslint/brace-style': 'error', '@typescript-eslint/class-literal-property-style': 'error', + 'class-methods-use-this': 'off', + '@typescript-eslint/class-methods-use-this': 'error', 'comma-dangle': 'off', '@typescript-eslint/comma-dangle': 'error', 'comma-spacing': 'off', diff --git a/packages/eslint-plugin/src/rules/class-methods-use-this.ts b/packages/eslint-plugin/src/rules/class-methods-use-this.ts new file mode 100644 index 000000000000..948aa4def5ba --- /dev/null +++ b/packages/eslint-plugin/src/rules/class-methods-use-this.ts @@ -0,0 +1,265 @@ +import type { TSESTree } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; + +import * as util from '../util'; + +type Options = [ + { + exceptMethods?: string[]; + enforceForClassFields?: boolean; + ignoreOverrideMethods?: boolean; + ignoreClassesThatImplementAnInterface?: boolean; + }, +]; +type MessageIds = 'missingThis'; + +export default util.createRule({ + name: 'class-methods-use-this', + meta: { + type: 'suggestion', + docs: { + description: 'Enforce that class methods utilize `this`', + extendsBaseRule: true, + requiresTypeChecking: false, + }, + fixable: 'code', + hasSuggestions: false, + schema: [ + { + type: 'object', + properties: { + exceptMethods: { + type: 'array', + description: + 'Allows specified method names to be ignored with this rule', + items: { + type: 'string', + }, + }, + enforceForClassFields: { + type: 'boolean', + description: + 'Enforces that functions used as instance field initializers utilize `this`', + default: true, + }, + ignoreOverrideMethods: { + type: 'boolean', + description: 'Ingore members marked with the `override` modifier', + }, + ignoreClassesThatImplementAnInterface: { + type: 'boolean', + description: + 'Ignore classes that specifically implement some interface', + }, + }, + additionalProperties: false, + }, + ], + messages: { + missingThis: "Expected 'this' to be used by class {{name}}.", + }, + }, + defaultOptions: [ + { + enforceForClassFields: true, + exceptMethods: [], + ignoreClassesThatImplementAnInterface: false, + ignoreOverrideMethods: false, + }, + ], + create( + context, + [ + { + enforceForClassFields, + exceptMethods: exceptMethodsRaw, + ignoreClassesThatImplementAnInterface, + ignoreOverrideMethods, + }, + ], + ) { + const exceptMethods = new Set(exceptMethodsRaw); + type Stack = + | { + member: null; + class: null; + parent: Stack | undefined; + usesThis: boolean; + } + | { + member: TSESTree.MethodDefinition | TSESTree.PropertyDefinition; + class: TSESTree.ClassDeclaration | TSESTree.ClassExpression; + parent: Stack | undefined; + usesThis: boolean; + }; + let stack: Stack | undefined; + + const sourceCode = context.getSourceCode(); + + function pushContext( + member?: TSESTree.MethodDefinition | TSESTree.PropertyDefinition, + ): void { + if (member?.parent.type === AST_NODE_TYPES.ClassBody) { + stack = { + member, + class: member.parent.parent as + | TSESTree.ClassDeclaration + | TSESTree.ClassExpression, + usesThis: false, + parent: stack, + }; + } else { + stack = { + member: null, + class: null, + usesThis: false, + parent: stack, + }; + } + } + + function enterFunction( + node: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression, + ): void { + if ( + node.parent.type === AST_NODE_TYPES.MethodDefinition || + node.parent.type === AST_NODE_TYPES.PropertyDefinition + ) { + pushContext(node.parent); + } else { + pushContext(); + } + } + + /** + * Pop `this` used flag from the stack. + */ + function popContext(): Stack | undefined { + const oldStack = stack; + stack = stack?.parent; + return oldStack; + } + + /** + * Check if the node is an instance method not excluded by config + */ + function isIncludedInstanceMethod( + node: NonNullable, + ): node is NonNullable { + if ( + node.static || + (node.type === AST_NODE_TYPES.MethodDefinition && + node.kind === 'constructor') || + (node.type === AST_NODE_TYPES.PropertyDefinition && + !enforceForClassFields) + ) { + return false; + } + + if (node.computed || exceptMethods.size === 0) { + return true; + } + + const hashIfNeeded = + node.key.type === AST_NODE_TYPES.PrivateIdentifier ? '#' : ''; + const name = + node.key.type === AST_NODE_TYPES.Literal + ? util.getStaticStringValue(node.key) + : node.key.name || ''; + + return !exceptMethods.has(hashIfNeeded + (name ?? '')); + } + + /** + * Checks if we are leaving a function that is a method, and reports if 'this' has not been used. + * Static methods and the constructor are exempt. + * Then pops the context off the stack. + */ + function exitFunction( + node: TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression, + ): void { + const stackContext = popContext(); + if ( + stackContext?.member == null || + stackContext.class == null || + stackContext.usesThis || + (ignoreOverrideMethods && stackContext.member.override) || + (ignoreClassesThatImplementAnInterface && + stackContext.class.implements != null) + ) { + return; + } + + if (isIncludedInstanceMethod(stackContext.member)) { + context.report({ + node, + loc: util.getFunctionHeadLoc(node, sourceCode), + messageId: 'missingThis', + data: { + name: util.getFunctionNameWithKind(node), + }, + }); + } + } + + return { + // function declarations have their own `this` context + FunctionDeclaration(): void { + pushContext(); + }, + 'FunctionDeclaration:exit'(): void { + popContext(); + }, + + FunctionExpression(node): void { + enterFunction(node); + }, + 'FunctionExpression:exit'(node): void { + exitFunction(node); + }, + ...(enforceForClassFields + ? { + 'PropertyDefinition > ArrowFunctionExpression.value'( + node: TSESTree.ArrowFunctionExpression, + ): void { + enterFunction(node); + }, + 'PropertyDefinition > ArrowFunctionExpression.value:exit'( + node: TSESTree.ArrowFunctionExpression, + ): void { + exitFunction(node); + }, + } + : {}), + + /* + * Class field value are implicit functions. + */ + 'PropertyDefinition > *.key:exit'(): void { + pushContext(); + }, + 'PropertyDefinition:exit'(): void { + popContext(); + }, + + /* + * Class static blocks are implicit functions. They aren't required to use `this`, + * but we have to push context so that it captures any use of `this` in the static block + * separately from enclosing contexts, because static blocks have their own `this` and it + * shouldn't count as used `this` in enclosing contexts. + */ + StaticBlock(): void { + pushContext(); + }, + 'StaticBlock:exit'(): void { + popContext(); + }, + + 'ThisExpression, Super'(): void { + if (stack) { + stack.usesThis = true; + } + }, + }; + }, +}); diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index f5cf92c28d16..44aedd6198e1 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -7,6 +7,7 @@ import banTypes from './ban-types'; import blockSpacing from './block-spacing'; import braceStyle from './brace-style'; import classLiteralPropertyStyle from './class-literal-property-style'; +import classMethodsUseThis from './class-methods-use-this'; import commaDangle from './comma-dangle'; import commaSpacing from './comma-spacing'; import consistentGenericConstructors from './consistent-generic-constructors'; @@ -141,6 +142,7 @@ export default { 'block-spacing': blockSpacing, 'brace-style': braceStyle, 'class-literal-property-style': classLiteralPropertyStyle, + 'class-methods-use-this': classMethodsUseThis, 'comma-dangle': commaDangle, 'comma-spacing': commaSpacing, 'consistent-generic-constructors': consistentGenericConstructors, diff --git a/packages/eslint-plugin/src/rules/member-ordering.ts b/packages/eslint-plugin/src/rules/member-ordering.ts index 29b748e88cfe..f7ad60c58feb 100644 --- a/packages/eslint-plugin/src/rules/member-ordering.ts +++ b/packages/eslint-plugin/src/rules/member-ordering.ts @@ -800,6 +800,10 @@ export default util.createRule({ previousName: string, order: AlphabeticalOrder, ): boolean { + if (name === previousName) { + return false; + } + switch (order) { case 'alphabetically': return name < previousName; diff --git a/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts b/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts index 0a068b577e70..888924e3bc88 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts @@ -63,7 +63,7 @@ export default util.createRule({ } return { - 'BinaryExpression[operator=/=|<|>/]'( + 'BinaryExpression[operator=/^[<>!=]?={0,2}$/]'( node: TSESTree.BinaryExpression, ): void { const left = getTypeFromNode(node.left); diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index 99bc76429d21..f9a953f501cf 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -310,6 +310,8 @@ export default util.createRule({ .filter((flag): flag is number => flag !== undefined) .reduce((previous, flag) => previous | flag, 0); if ( + type.flags !== ts.TypeFlags.Null && + type.flags !== ts.TypeFlags.Undefined && (type as ts.UnionOrIntersectionType).types.some(t => tsutils.isTypeFlagSet(t, ignorableFlags), ) diff --git a/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts index ddc004d0397d..a8f6bc40afbd 100644 --- a/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts +++ b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts @@ -1,5 +1,9 @@ +// adapted from https://github.com/eslint/eslint/blob/5bdaae205c3a0089ea338b382df59e21d5b06436/lib/rules/utils/ast-utils.js#L1668-L1787 + import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; -import { AST_NODE_TYPES, AST_TOKEN_TYPES } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES, ESLintUtils } from '@typescript-eslint/utils'; + +import { isArrowToken, isOpeningParenToken } from './astUtils'; type FunctionNode = | TSESTree.ArrowFunctionExpression @@ -7,65 +11,193 @@ type FunctionNode = | TSESTree.FunctionExpression; /** - * Creates a report location for the given function. - * The location only encompasses the "start" of the function, and not the body - * - * eg. - * - * ``` - * function foo(args) {} - * ^^^^^^^^^^^^^^^^^^ - * - * get y(args) {} - * ^^^^^^^^^^^ - * - * const x = (args) => {} - * ^^^^^^^^^ - * ``` + * Gets the `(` token of the given function node. + * @param node The function node to get. + * @param sourceCode The source code object to get tokens. + * @returns `(` token. */ -export function getFunctionHeadLoc( +function getOpeningParenOfParams( node: FunctionNode, sourceCode: TSESLint.SourceCode, -): TSESTree.SourceLocation { - function getLocStart(): TSESTree.Position { - if (node.parent.type === AST_NODE_TYPES.MethodDefinition) { - // return the start location for class method - - if (node.parent.decorators && node.parent.decorators.length > 0) { - // exclude decorators - return sourceCode.getTokenAfter( - node.parent.decorators[node.parent.decorators.length - 1], - )!.loc.start; - } +): TSESTree.Token { + // If the node is an arrow function and doesn't have parens, this returns the identifier of the first param. + if ( + node.type === AST_NODE_TYPES.ArrowFunctionExpression && + node.params.length === 1 + ) { + const argToken = ESLintUtils.nullThrows( + sourceCode.getFirstToken(node.params[0]), + ESLintUtils.NullThrowsReasons.MissingToken('parameter', 'arrow function'), + ); + const maybeParenToken = sourceCode.getTokenBefore(argToken); - return node.parent.loc.start; - } + return maybeParenToken && isOpeningParenToken(maybeParenToken) + ? maybeParenToken + : argToken; + } - if (node.parent.type === AST_NODE_TYPES.Property && node.parent.method) { - // return the start location for object method shorthand - return node.parent.loc.start; - } + // Otherwise, returns paren. + return node.id != null + ? ESLintUtils.nullThrows( + sourceCode.getTokenAfter(node.id, isOpeningParenToken), + ESLintUtils.NullThrowsReasons.MissingToken('id', 'function'), + ) + : ESLintUtils.nullThrows( + sourceCode.getFirstToken(node, isOpeningParenToken), + ESLintUtils.NullThrowsReasons.MissingToken( + 'opening parenthesis', + 'function', + ), + ); +} - // return the start location for a regular function - return node.loc.start; - } +/** + * Gets the location of the given function node for reporting. + * + * - `function foo() {}` + * ^^^^^^^^^^^^ + * - `(function foo() {})` + * ^^^^^^^^^^^^ + * - `(function() {})` + * ^^^^^^^^ + * - `function* foo() {}` + * ^^^^^^^^^^^^^ + * - `(function* foo() {})` + * ^^^^^^^^^^^^^ + * - `(function*() {})` + * ^^^^^^^^^ + * - `() => {}` + * ^^ + * - `async () => {}` + * ^^ + * - `({ foo: function foo() {} })` + * ^^^^^^^^^^^^^^^^^ + * - `({ foo: function() {} })` + * ^^^^^^^^^^^^^ + * - `({ ['foo']: function() {} })` + * ^^^^^^^^^^^^^^^^^ + * - `({ [foo]: function() {} })` + * ^^^^^^^^^^^^^^^ + * - `({ foo() {} })` + * ^^^ + * - `({ foo: function* foo() {} })` + * ^^^^^^^^^^^^^^^^^^ + * - `({ foo: function*() {} })` + * ^^^^^^^^^^^^^^ + * - `({ ['foo']: function*() {} })` + * ^^^^^^^^^^^^^^^^^^ + * - `({ [foo]: function*() {} })` + * ^^^^^^^^^^^^^^^^ + * - `({ *foo() {} })` + * ^^^^ + * - `({ foo: async function foo() {} })` + * ^^^^^^^^^^^^^^^^^^^^^^^ + * - `({ foo: async function() {} })` + * ^^^^^^^^^^^^^^^^^^^ + * - `({ ['foo']: async function() {} })` + * ^^^^^^^^^^^^^^^^^^^^^^^ + * - `({ [foo]: async function() {} })` + * ^^^^^^^^^^^^^^^^^^^^^ + * - `({ async foo() {} })` + * ^^^^^^^^^ + * - `({ get foo() {} })` + * ^^^^^^^ + * - `({ set foo(a) {} })` + * ^^^^^^^ + * - `class A { constructor() {} }` + * ^^^^^^^^^^^ + * - `class A { foo() {} }` + * ^^^ + * - `class A { *foo() {} }` + * ^^^^ + * - `class A { async foo() {} }` + * ^^^^^^^^^ + * - `class A { ['foo']() {} }` + * ^^^^^^^ + * - `class A { *['foo']() {} }` + * ^^^^^^^^ + * - `class A { async ['foo']() {} }` + * ^^^^^^^^^^^^^ + * - `class A { [foo]() {} }` + * ^^^^^ + * - `class A { *[foo]() {} }` + * ^^^^^^ + * - `class A { async [foo]() {} }` + * ^^^^^^^^^^^ + * - `class A { get foo() {} }` + * ^^^^^^^ + * - `class A { set foo(a) {} }` + * ^^^^^^^ + * - `class A { static foo() {} }` + * ^^^^^^^^^^ + * - `class A { static *foo() {} }` + * ^^^^^^^^^^^ + * - `class A { static async foo() {} }` + * ^^^^^^^^^^^^^^^^ + * - `class A { static get foo() {} }` + * ^^^^^^^^^^^^^^ + * - `class A { static set foo(a) {} }` + * ^^^^^^^^^^^^^^ + * - `class A { foo = function() {} }` + * ^^^^^^^^^^^^^^ + * - `class A { static foo = function() {} }` + * ^^^^^^^^^^^^^^^^^^^^^ + * - `class A { foo = (a, b) => {} }` + * ^^^^^^ + * @param node The function node to get. + * @param sourceCode The source code object to get tokens. + * @returns The location of the function node for reporting. + */ +export function getFunctionHeadLoc( + node: FunctionNode, + sourceCode: TSESLint.SourceCode, +): TSESTree.SourceLocation { + const parent = node.parent; + let start = null; + let end = null; - function getLocEnd(): TSESTree.Position { - if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) { - // find the end location for arrow function expression - return sourceCode.getTokenBefore( - node.body, - token => - token.type === AST_TOKEN_TYPES.Punctuator && token.value === '=>', - )!.loc.end; + if ( + parent.type === AST_NODE_TYPES.MethodDefinition || + parent.type === AST_NODE_TYPES.PropertyDefinition + ) { + // the decorator's range is included within the member + // however it's usually irrelevant to the member itself - so we don't want + // to highlight it ever. + if (parent.decorators.length > 0) { + const lastDecorator = parent.decorators[parent.decorators.length - 1]; + const firstTokenAfterDecorator = ESLintUtils.nullThrows( + sourceCode.getTokenAfter(lastDecorator), + ESLintUtils.NullThrowsReasons.MissingToken( + 'modifier or member name', + 'class member', + ), + ); + start = firstTokenAfterDecorator.loc.start; + } else { + start = parent.loc.start; } + end = getOpeningParenOfParams(node, sourceCode).loc.start; + } else if (parent.type === AST_NODE_TYPES.Property) { + start = parent.loc.start; + end = getOpeningParenOfParams(node, sourceCode).loc.start; + } else if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) { + const arrowToken = ESLintUtils.nullThrows( + sourceCode.getTokenBefore(node.body, isArrowToken), + ESLintUtils.NullThrowsReasons.MissingToken( + 'arrow token', + 'arrow function', + ), + ); - // return the end location for a regular function - return sourceCode.getTokenBefore(node.body)!.loc.end; + start = arrowToken.loc.start; + end = arrowToken.loc.end; + } else { + start = node.loc.start; + end = getOpeningParenOfParams(node, sourceCode).loc.start; } return { - start: getLocStart(), - end: getLocEnd(), + start: Object.assign({}, start), + end: Object.assign({}, end), }; } diff --git a/packages/eslint-plugin/src/util/getStaticStringValue.ts b/packages/eslint-plugin/src/util/getStaticStringValue.ts new file mode 100644 index 000000000000..6eeaf9af8ce3 --- /dev/null +++ b/packages/eslint-plugin/src/util/getStaticStringValue.ts @@ -0,0 +1,49 @@ +// adapted from https://github.com/eslint/eslint/blob/5bdaae205c3a0089ea338b382df59e21d5b06436/lib/rules/utils/ast-utils.js#L191-L230 + +import type { TSESTree } from '@typescript-eslint/utils'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; + +import { isNullLiteral } from './isNullLiteral'; + +/** + * Returns the result of the string conversion applied to the evaluated value of the given expression node, + * if it can be determined statically. + * + * This function returns a `string` value for all `Literal` nodes and simple `TemplateLiteral` nodes only. + * In all other cases, this function returns `null`. + * @param node Expression node. + * @returns String value if it can be determined. Otherwise, `null`. + */ +export function getStaticStringValue(node: TSESTree.Node): string | null { + switch (node.type) { + case AST_NODE_TYPES.Literal: + // eslint-disable-next-line eqeqeq -- intentional strict comparison for literal value + if (node.value === null) { + if (isNullLiteral(node)) { + return String(node.value); // "null" + } + if ('regex' in node) { + return `/${node.regex.pattern}/${node.regex.flags}`; + } + + if ('bigint' in node) { + return node.bigint; + } + + // Otherwise, this is an unknown literal. The function will return null. + } else { + return String(node.value); + } + break; + + case AST_NODE_TYPES.TemplateLiteral: + if (node.expressions.length === 0 && node.quasis.length === 1) { + return node.quasis[0].value.cooked; + } + break; + + // no default + } + + return null; +} diff --git a/packages/eslint-plugin/src/util/index.ts b/packages/eslint-plugin/src/util/index.ts index 53a19a96d368..5e9994a136d9 100644 --- a/packages/eslint-plugin/src/util/index.ts +++ b/packages/eslint-plugin/src/util/index.ts @@ -5,6 +5,7 @@ export * from './collectUnusedVariables'; export * from './createRule'; export * from './getFunctionHeadLoc'; export * from './getOperatorPrecedence'; +export * from './getStaticStringValue'; export * from './getStringLength'; export * from './getThisExpression'; export * from './getWrappingFixer'; diff --git a/packages/eslint-plugin/src/util/isNullLiteral.ts b/packages/eslint-plugin/src/util/isNullLiteral.ts index 85bf45882123..d59a926c5aaa 100644 --- a/packages/eslint-plugin/src/util/isNullLiteral.ts +++ b/packages/eslint-plugin/src/util/isNullLiteral.ts @@ -1,6 +1,6 @@ import type { TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; -export function isNullLiteral(i: TSESTree.Node): boolean { +export function isNullLiteral(i: TSESTree.Node): i is TSESTree.NullLiteral { return i.type === AST_NODE_TYPES.Literal && i.value == null; } diff --git a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts new file mode 100644 index 000000000000..4fba4d557f15 --- /dev/null +++ b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this-core.test.ts @@ -0,0 +1,431 @@ +/* eslint-disable @typescript-eslint/internal/plugin-test-formatting -- +keeping eslint core formatting on purpose to make upstream diffing easier and so we don't need to edit line/cols */ +import { RuleTester } from '@typescript-eslint/rule-tester'; +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; + +import rule from '../../../src/rules/class-methods-use-this'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +ruleTester.run('class-methods-use-this', rule, { + valid: [ + { code: 'class A { constructor() {} }', parserOptions: { ecmaVersion: 6 } }, + { code: 'class A { foo() {this} }', parserOptions: { ecmaVersion: 6 } }, + { + code: "class A { foo() {this.bar = 'bar';} }", + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A { foo() {bar(this);} }', + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A extends B { foo() {super.foo();} }', + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A { foo() { if(true) { return this; } } }', + parserOptions: { ecmaVersion: 6 }, + }, + { code: 'class A { static foo() {} }', parserOptions: { ecmaVersion: 6 } }, + { code: '({ a(){} });', parserOptions: { ecmaVersion: 6 } }, + { + code: 'class A { foo() { () => this; } }', + parserOptions: { ecmaVersion: 6 }, + }, + { code: '({ a: function () {} });', parserOptions: { ecmaVersion: 6 } }, + { + code: 'class A { foo() {this} bar() {} }', + options: [{ exceptMethods: ['bar'] }], + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A { "foo"() { } }', + options: [{ exceptMethods: ['foo'] }], + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A { 42() { } }', + options: [{ exceptMethods: ['42'] }], + parserOptions: { ecmaVersion: 6 }, + }, + { + code: 'class A { foo = function() {this} }', + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { foo = () => {this} }', + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { foo = () => {super.toString} }', + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { static foo = function() {} }', + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { static foo = () => {} }', + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { #bar() {} }', + options: [{ exceptMethods: ['#bar'] }], + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { foo = function () {} }', + options: [{ enforceForClassFields: false }], + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { foo = () => {} }', + options: [{ enforceForClassFields: false }], + parserOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class A { foo() { return class { [this.foo] = 1 }; } }', + parserOptions: { ecmaVersion: 2022 }, + }, + { code: 'class A { static {} }', parserOptions: { ecmaVersion: 2022 } }, + ], + invalid: [ + { + code: 'class A { foo() {} }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {/**this**/} }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {var a = function () {this};} }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {var a = function () {var b = function(){this}};} }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {window.this} }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: "class A { foo() {that.this = 'this';} }", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() { () => undefined; } }', + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {} bar() {} }', + options: [{ exceptMethods: ['bar'] }], + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + ], + }, + { + code: 'class A { foo() {} hasOwnProperty() {} }', + options: [{ exceptMethods: ['foo'] }], + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 20, + messageId: 'missingThis', + data: { name: "method 'hasOwnProperty'" }, + }, + ], + }, + { + code: 'class A { [foo]() {} }', + options: [{ exceptMethods: ['foo'] }], + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 11, + messageId: 'missingThis', + data: { name: 'method' }, + }, + ], + }, + { + code: 'class A { #foo() { } foo() {} #bar() {} }', + options: [{ exceptMethods: ['#foo'] }], + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 22, + messageId: 'missingThis', + data: { name: "method 'foo'" }, + }, + { + type: AST_NODE_TYPES.FunctionExpression, + line: 1, + column: 31, + messageId: 'missingThis', + data: { name: 'private method #bar' }, + }, + ], + }, + { + code: "class A { foo(){} 'bar'(){} 123(){} [`baz`](){} [a](){} [f(a)](){} get quux(){} set[a](b){} *quuux(){} }", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 11, + }, + { + messageId: 'missingThis', + data: { name: "method 'bar'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 19, + }, + { + messageId: 'missingThis', + data: { name: "method '123'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 29, + }, + { + messageId: 'missingThis', + data: { name: "method 'baz'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 37, + }, + { + messageId: 'missingThis', + data: { name: 'method' }, + type: AST_NODE_TYPES.FunctionExpression, + column: 49, + }, + { + messageId: 'missingThis', + data: { name: 'method' }, + type: AST_NODE_TYPES.FunctionExpression, + column: 57, + }, + { + messageId: 'missingThis', + data: { name: "getter 'quux'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 68, + }, + { + messageId: 'missingThis', + data: { name: 'setter' }, + type: AST_NODE_TYPES.FunctionExpression, + column: 81, + }, + { + messageId: 'missingThis', + data: { name: "generator method 'quuux'" }, + type: AST_NODE_TYPES.FunctionExpression, + column: 93, + }, + ], + }, + { + code: 'class A { foo = function() {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + column: 11, + endColumn: 25, + }, + ], + }, + { + code: 'class A { foo = () => {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + column: 11, + endColumn: 17, + }, + ], + }, + { + code: 'class A { #foo = function() {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: 'private method #foo' }, + column: 11, + endColumn: 26, + }, + ], + }, + { + code: 'class A { #foo = () => {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: 'private method #foo' }, + column: 11, + endColumn: 18, + }, + ], + }, + { + code: 'class A { #foo() {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: 'private method #foo' }, + column: 11, + endColumn: 15, + }, + ], + }, + { + code: 'class A { get #foo() {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: 'private getter #foo' }, + column: 11, + endColumn: 19, + }, + ], + }, + { + code: 'class A { set #foo(x) {} }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: 'private setter #foo' }, + column: 11, + endColumn: 19, + }, + ], + }, + { + code: 'class A { foo () { return class { foo = this }; } }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + column: 11, + endColumn: 15, + }, + ], + }, + { + code: 'class A { foo () { return function () { foo = this }; } }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + column: 11, + endColumn: 15, + }, + ], + }, + { + code: 'class A { foo () { return class { static { this; } } } }', + parserOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'missingThis', + data: { name: "method 'foo'" }, + column: 11, + endColumn: 15, + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts new file mode 100644 index 000000000000..5f2532b7b3df --- /dev/null +++ b/packages/eslint-plugin/tests/rules/class-methods-use-this/class-methods-use-this.test.ts @@ -0,0 +1,186 @@ +import { RuleTester } from '@typescript-eslint/rule-tester'; + +import rule from '../../../src/rules/class-methods-use-this'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +ruleTester.run('class-methods-use-this', rule, { + valid: [ + { + code: ` +class Foo implements Bar { + method() {} +} + `, + options: [{ ignoreClassesThatImplementAnInterface: true }], + }, + { + code: ` +class Foo { + override method() {} +} + `, + options: [{ ignoreOverrideMethods: true }], + }, + { + code: ` +class Foo implements Bar { + override method() {} +} + `, + options: [ + { + ignoreClassesThatImplementAnInterface: true, + ignoreOverrideMethods: true, + }, + ], + }, + { + code: ` +class Foo implements Bar { + property = () => {}; +} + `, + options: [{ ignoreClassesThatImplementAnInterface: true }], + }, + { + code: ` +class Foo { + override property = () => {}; +} + `, + options: [{ ignoreOverrideMethods: true }], + }, + { + code: ` +class Foo implements Bar { + override property = () => {}; +} + `, + options: [ + { + ignoreClassesThatImplementAnInterface: true, + ignoreOverrideMethods: true, + }, + ], + }, + { + code: ` +class Foo implements Bar { + property = () => {}; +} + `, + options: [ + { + ignoreClassesThatImplementAnInterface: false, + enforceForClassFields: false, + }, + ], + }, + { + code: ` +class Foo { + override property = () => {}; +} + `, + options: [ + { + ignoreOverrideMethods: false, + enforceForClassFields: false, + }, + ], + }, + ], + invalid: [ + { + code: ` +class Foo implements Bar { + method() {} +} + `, + options: [{ ignoreClassesThatImplementAnInterface: false }], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + { + code: ` +class Foo { + override method() {} +} + `, + options: [{ ignoreOverrideMethods: false }], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + { + code: ` +class Foo implements Bar { + override method() {} +} + `, + options: [ + { + ignoreClassesThatImplementAnInterface: false, + ignoreOverrideMethods: false, + }, + ], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + { + code: ` +class Foo implements Bar { + property = () => {}; +} + `, + options: [{ ignoreClassesThatImplementAnInterface: false }], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + { + code: ` +class Foo { + override property = () => {}; +} + `, + options: [{ ignoreOverrideMethods: false }], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + { + code: ` +class Foo implements Bar { + override property = () => {}; +} + `, + options: [ + { + ignoreClassesThatImplementAnInterface: false, + ignoreOverrideMethods: false, + }, + ], + errors: [ + { + messageId: 'missingThis', + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts index a17a27dec178..d65263a9c023 100644 --- a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts @@ -680,7 +680,7 @@ function test(a: number, b: number) { line: 2, endLine: 2, column: 1, - endColumn: 36, + endColumn: 14, }, ], }, @@ -696,7 +696,7 @@ function test() { line: 2, endLine: 2, column: 1, - endColumn: 16, + endColumn: 14, }, ], }, @@ -712,7 +712,7 @@ var fn = function () { line: 2, endLine: 2, column: 10, - endColumn: 21, + endColumn: 19, }, ], }, @@ -725,7 +725,7 @@ var arrowFn = () => 'test'; messageId: 'missingReturnType', line: 2, endLine: 2, - column: 15, + column: 18, endColumn: 20, }, ], @@ -751,30 +751,30 @@ class Test { { messageId: 'missingReturnType', line: 4, - endLine: 4, column: 3, - endColumn: 13, + endLine: 4, + endColumn: 11, }, { messageId: 'missingReturnType', line: 8, - endLine: 8, column: 3, - endColumn: 11, + endLine: 8, + endColumn: 9, }, { messageId: 'missingReturnType', line: 11, + column: 3, endLine: 11, - column: 11, - endColumn: 16, + endColumn: 11, }, { messageId: 'missingReturnType', line: 12, - endLine: 12, column: 3, - endColumn: 19, + endLine: 12, + endColumn: 17, }, ], }, @@ -791,7 +791,7 @@ function test() { line: 2, endLine: 2, column: 1, - endColumn: 16, + endColumn: 14, }, ], }, @@ -803,7 +803,7 @@ function test() { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 13, + column: 16, endColumn: 18, }, ], @@ -817,7 +817,7 @@ function test() { line: 1, endLine: 1, column: 13, - endColumn: 24, + endColumn: 22, }, ], }, @@ -829,7 +829,7 @@ function test() { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 16, + column: 19, endColumn: 21, }, ], @@ -843,7 +843,7 @@ function test() { line: 1, endLine: 1, column: 16, - endColumn: 27, + endColumn: 25, }, ], }, @@ -863,37 +863,37 @@ class Foo { { messageId: 'missingReturnType', line: 3, + column: 3, endLine: 3, - column: 14, - endColumn: 19, + endColumn: 14, }, { messageId: 'missingReturnType', line: 4, + column: 3, endLine: 4, - column: 14, - endColumn: 25, + endColumn: 23, }, { messageId: 'missingReturnType', line: 5, + column: 3, endLine: 5, - column: 14, - endColumn: 29, + endColumn: 27, }, { messageId: 'missingReturnType', line: 7, + column: 3, endLine: 7, - column: 14, - endColumn: 19, + endColumn: 14, }, { messageId: 'missingReturnType', line: 8, + column: 3, endLine: 8, - column: 14, - endColumn: 25, + endColumn: 23, }, ], }, @@ -905,7 +905,7 @@ class Foo { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 15, + column: 18, endColumn: 20, }, ], @@ -923,7 +923,7 @@ var funcExpr = function () { line: 2, endLine: 2, column: 16, - endColumn: 27, + endColumn: 25, }, ], }, @@ -936,7 +936,7 @@ var funcExpr = function () { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 12, + column: 15, endColumn: 17, }, ], @@ -954,8 +954,8 @@ const x = { messageId: 'missingReturnType', line: 4, endLine: 4, - column: 8, - endColumn: 13, + column: 3, + endColumn: 8, }, ], }, @@ -972,8 +972,8 @@ const x: Foo = { messageId: 'missingReturnType', line: 4, endLine: 4, - column: 8, - endColumn: 13, + column: 3, + endColumn: 8, }, ], }, @@ -985,7 +985,7 @@ const x: Foo = { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 7, + column: 10, endColumn: 12, }, ], @@ -999,7 +999,7 @@ const x: Foo = { line: 1, endLine: 1, column: 7, - endColumn: 18, + endColumn: 16, }, ], }, @@ -1015,7 +1015,7 @@ const x: Foo = { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1033,7 +1033,7 @@ const x: Foo = { line: 3, endLine: 3, column: 10, - endColumn: 21, + endColumn: 19, }, ], }, @@ -1049,7 +1049,7 @@ function fn() { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1067,7 +1067,7 @@ function fn() { line: 3, endLine: 3, column: 10, - endColumn: 21, + endColumn: 19, }, ], }, @@ -1093,7 +1093,7 @@ function FunctionDeclaration() { messageId: 'missingReturnType', line: 9, endLine: 9, - column: 11, + column: 14, endColumn: 16, }, ], @@ -1112,7 +1112,7 @@ function FunctionDeclaration() { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1136,36 +1136,36 @@ foo(() => ''); { messageId: 'missingReturnType', line: 3, + column: 8, endLine: 3, - column: 5, endColumn: 10, }, { messageId: 'missingReturnType', line: 4, + column: 8, endLine: 4, - column: 5, endColumn: 10, }, { messageId: 'missingReturnType', line: 5, + column: 8, endLine: 5, - column: 5, endColumn: 10, }, { messageId: 'missingReturnType', line: 6, + column: 8, endLine: 6, - column: 5, endColumn: 10, }, { messageId: 'missingReturnType', line: 7, + column: 8, endLine: 7, - column: 5, endColumn: 10, }, ], @@ -1192,7 +1192,7 @@ new Accumulator().accumulate(() => 1); messageId: 'missingReturnType', line: 10, endLine: 10, - column: 30, + column: 33, endColumn: 35, }, ], @@ -1209,7 +1209,7 @@ new Accumulator().accumulate(() => 1); messageId: 'missingReturnType', line: 1, endLine: 1, - column: 2, + column: 5, endColumn: 7, }, ], @@ -1242,23 +1242,23 @@ foo({ { messageId: 'missingReturnType', line: 4, - endLine: 4, column: 3, - endColumn: 9, + endLine: 4, + endColumn: 7, }, { messageId: 'missingReturnType', line: 9, + column: 3, endLine: 9, - column: 9, - endColumn: 20, + endColumn: 18, }, { messageId: 'missingReturnType', line: 14, + column: 3, endLine: 14, - column: 9, - endColumn: 14, + endColumn: 9, }, ], }, @@ -1278,7 +1278,7 @@ const x: HigherOrderType = () => arg1 => arg2 => 'foo'; messageId: 'missingReturnType', line: 3, endLine: 3, - column: 42, + column: 47, endColumn: 49, }, ], @@ -1299,21 +1299,21 @@ const x: HigherOrderType = () => arg1 => arg2 => 'foo'; messageId: 'missingReturnType', line: 3, endLine: 3, - column: 28, + column: 31, endColumn: 33, }, { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 34, + column: 39, endColumn: 41, }, { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 42, + column: 47, endColumn: 49, }, ], @@ -1333,14 +1333,14 @@ const func = (value: number) => ({ type: 'X', value } as Action); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 14, + column: 30, endColumn: 32, }, { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 14, + column: 30, endColumn: 32, }, ], @@ -1359,7 +1359,7 @@ const func = (value: number) => ({ type: 'X', value } as const); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 14, + column: 30, endColumn: 32, }, ], @@ -1374,7 +1374,7 @@ const func = (value: number) => ({ type: 'X', value } as const); messageId: 'missingReturnType', line: 1, endLine: 1, - column: 13, + column: 31, endColumn: 33, }, ], @@ -1391,7 +1391,7 @@ const func = (value: number) => ({ type: 'X', value } as const); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 21, + column: 39, endColumn: 41, }, ], @@ -1451,46 +1451,46 @@ const x = { `, errors: [ { - messageId: 'missingReturnType', line: 2, - endLine: 2, column: 1, - endColumn: 16, + messageId: 'missingReturnType', + endLine: 2, + endColumn: 14, }, { - messageId: 'missingReturnType', line: 5, + column: 16, + messageId: 'missingReturnType', endLine: 5, - column: 13, endColumn: 18, }, { - messageId: 'missingReturnType', line: 8, - endLine: 8, column: 13, - endColumn: 24, + messageId: 'missingReturnType', + endLine: 8, + endColumn: 22, }, { - messageId: 'missingReturnType', line: 11, - endLine: 11, column: 20, - endColumn: 31, + messageId: 'missingReturnType', + endLine: 11, + endColumn: 29, }, { line: 15, - column: 12, + column: 3, messageId: 'missingReturnType', endLine: 15, - endColumn: 23, + endColumn: 21, }, { - messageId: 'missingReturnType', line: 20, + column: 3, + messageId: 'missingReturnType', endLine: 20, - column: 6, - endColumn: 17, + endColumn: 15, }, ], }, @@ -1508,7 +1508,7 @@ class Foo { line: 4, endLine: 4, column: 3, - endColumn: 18, + endColumn: 16, }, ], }, @@ -1529,7 +1529,7 @@ const foo = (function () { line: 2, endLine: 2, column: 14, - endColumn: 25, + endColumn: 23, }, ], }, @@ -1551,7 +1551,7 @@ const foo = (function () { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1573,7 +1573,7 @@ let foo = function () { line: 2, endLine: 2, column: 11, - endColumn: 22, + endColumn: 20, }, ], }, @@ -1591,7 +1591,7 @@ let foo = (() => () => {})()(); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 18, + column: 21, endColumn: 23, }, ], diff --git a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts index 854aa1bfe345..ce9176c136b4 100644 --- a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts @@ -753,7 +753,7 @@ export function test(a: number, b: number) { line: 2, endLine: 2, column: 8, - endColumn: 43, + endColumn: 21, }, ], }, @@ -769,7 +769,7 @@ export function test() { line: 2, endLine: 2, column: 8, - endColumn: 23, + endColumn: 21, }, ], }, @@ -785,7 +785,7 @@ export var fn = function () { line: 2, endLine: 2, column: 17, - endColumn: 28, + endColumn: 26, }, ], }, @@ -798,7 +798,7 @@ export var arrowFn = () => 'test'; messageId: 'missingReturnType', line: 2, endLine: 2, - column: 22, + column: 25, endColumn: 27, }, ], @@ -825,15 +825,15 @@ export class Test { { messageId: 'missingReturnType', line: 4, - endLine: 4, column: 3, - endColumn: 13, + endLine: 4, + endColumn: 11, }, { messageId: 'missingArgType', line: 7, - endLine: 7, column: 12, + endLine: 7, endColumn: 17, data: { name: 'value', @@ -842,22 +842,22 @@ export class Test { { messageId: 'missingReturnType', line: 8, - endLine: 8, column: 3, - endColumn: 11, + endLine: 8, + endColumn: 9, }, { messageId: 'missingReturnType', line: 11, + column: 3, endLine: 11, - column: 11, - endColumn: 17, + endColumn: 11, }, { messageId: 'missingArgType', line: 11, - endLine: 11, column: 11, + endLine: 11, endColumn: 14, data: { name: 'arg', @@ -897,37 +897,37 @@ export class Foo { { messageId: 'missingReturnType', line: 3, + column: 3, endLine: 3, - column: 14, - endColumn: 19, + endColumn: 14, }, { messageId: 'missingReturnType', line: 4, + column: 3, endLine: 4, - column: 14, - endColumn: 25, + endColumn: 23, }, { messageId: 'missingReturnType', line: 5, + column: 3, endLine: 5, - column: 14, - endColumn: 29, + endColumn: 27, }, { messageId: 'missingReturnType', line: 7, + column: 3, endLine: 7, - column: 14, - endColumn: 19, + endColumn: 14, }, { messageId: 'missingReturnType', line: 8, + column: 3, endLine: 8, - column: 14, - endColumn: 25, + endColumn: 23, }, ], }, @@ -938,7 +938,7 @@ export class Foo { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 16, + column: 19, endColumn: 21, }, ], @@ -951,7 +951,7 @@ export class Foo { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 22, + column: 25, endColumn: 27, }, ], @@ -969,7 +969,7 @@ export var funcExpr = function () { line: 2, endLine: 2, column: 23, - endColumn: 34, + endColumn: 32, }, ], }, @@ -986,8 +986,8 @@ export const x: Foo = { messageId: 'missingReturnType', line: 4, endLine: 4, - column: 8, - endColumn: 13, + column: 3, + endColumn: 8, }, ], }, @@ -999,7 +999,7 @@ export const x: Foo = { messageId: 'missingReturnType', line: 1, endLine: 1, - column: 22, + column: 25, endColumn: 27, }, ], @@ -1013,7 +1013,7 @@ export const x: Foo = { line: 1, endLine: 1, column: 22, - endColumn: 33, + endColumn: 31, }, ], }, @@ -1029,7 +1029,7 @@ export default () => { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1047,7 +1047,7 @@ export default () => { line: 3, endLine: 3, column: 10, - endColumn: 21, + endColumn: 19, }, ], }, @@ -1063,7 +1063,7 @@ export function fn() { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1081,7 +1081,7 @@ export function fn() { line: 3, endLine: 3, column: 10, - endColumn: 21, + endColumn: 19, }, ], }, @@ -1107,7 +1107,7 @@ export function FunctionDeclaration() { messageId: 'missingReturnType', line: 9, endLine: 9, - column: 11, + column: 14, endColumn: 16, }, ], @@ -1126,7 +1126,7 @@ export default () => () => { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 10, + column: 13, endColumn: 15, }, ], @@ -1146,14 +1146,14 @@ export const func2 = (value: number) => ({ type: 'X', value } as Action); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 22, + column: 38, endColumn: 40, }, { messageId: 'missingReturnType', line: 3, endLine: 3, - column: 22, + column: 38, endColumn: 40, }, ], @@ -1172,7 +1172,7 @@ export const func = (value: number) => ({ type: 'X', value } as const); messageId: 'missingReturnType', line: 2, endLine: 2, - column: 21, + column: 37, endColumn: 39, }, ], @@ -1203,14 +1203,14 @@ export class Test { line: 8, endLine: 8, column: 3, - endColumn: 11, + endColumn: 9, }, { messageId: 'missingReturnType', line: 12, endLine: 12, - column: 9, - endColumn: 14, + column: 3, + endColumn: 9, }, ], }, @@ -1254,7 +1254,7 @@ export const func2 = (value: number) => value; messageId: 'missingReturnType', line: 2, endLine: 2, - column: 22, + column: 38, endColumn: 40, }, ], @@ -1342,10 +1342,6 @@ const foo = arg => arg; export default foo; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1353,6 +1349,10 @@ export default foo; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1361,10 +1361,6 @@ const foo = arg => arg; export = foo; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1372,6 +1368,10 @@ export = foo; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1381,10 +1381,6 @@ foo = arg => arg; export default foo; `, errors: [ - { - messageId: 'missingReturnType', - line: 3, - }, { messageId: 'missingArgType', line: 3, @@ -1392,6 +1388,10 @@ export default foo; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 3, + }, ], }, { @@ -1400,10 +1400,6 @@ const foo = arg => arg; export default [foo]; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1411,6 +1407,10 @@ export default [foo]; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1419,10 +1419,6 @@ const foo = arg => arg; export default { foo }; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1430,6 +1426,10 @@ export default { foo }; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1617,10 +1617,6 @@ test = (): void => { export default test; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1628,6 +1624,10 @@ export default test; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1639,10 +1639,6 @@ test = (): void => { export { test }; `, errors: [ - { - messageId: 'missingReturnType', - line: 2, - }, { messageId: 'missingArgType', line: 2, @@ -1650,6 +1646,10 @@ export { test }; name: 'arg', }, }, + { + messageId: 'missingReturnType', + line: 2, + }, ], }, { @@ -1667,7 +1667,7 @@ export const foo = { messageId: 'missingReturnType', line: 3, - column: 3, + column: 6, }, ], }, @@ -1680,7 +1680,7 @@ export var arrowFn = () => () => {}; { messageId: 'missingReturnType', line: 2, - column: 28, + column: 31, }, ], }, @@ -1889,14 +1889,14 @@ export const foo = { line: 2, endLine: 2, column: 8, - endColumn: 24, + endColumn: 22, }, { messageId: 'missingReturnType', line: 6, endLine: 6, column: 3, - endColumn: 10, + endColumn: 8, }, ], }, diff --git a/packages/eslint-plugin/tests/rules/member-ordering.test.ts b/packages/eslint-plugin/tests/rules/member-ordering.test.ts index 9e8dda8b778b..b947d8a5a1e1 100644 --- a/packages/eslint-plugin/tests/rules/member-ordering.test.ts +++ b/packages/eslint-plugin/tests/rules/member-ordering.test.ts @@ -2008,6 +2008,53 @@ interface Foo { }, ], }, + // https://github.com/typescript-eslint/typescript-eslint/issues/6812 + { + code: ` +class Foo { + #bar: string; + + get bar(): string { + return this.#bar; + } + + set bar(value: string) { + this.#bar = value; + } +} + `, + options: [ + { + default: { + memberTypes: [['get', 'set']], + order: 'alphabetically', + }, + }, + ], + }, + { + code: ` +class Foo { + #bar: string; + + get bar(): string { + return this.#bar; + } + + set bar(value: string) { + this.#bar = value; + } +} + `, + options: [ + { + default: { + memberTypes: [['get', 'set']], + order: 'natural', + }, + }, + ], + }, ], invalid: [ { diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts index adb3630354ea..c31b742160ce 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts @@ -292,6 +292,20 @@ ruleTester.run('strict-enums-comparison', rule, { num === someFunction; mixed === someFunction; `, + ` + enum Fruit { + Apple, + } + + const bitShift = 1 << Fruit.Apple; + `, + ` + enum Fruit { + Apple, + } + + const bitShift = 1 >> Fruit.Apple; + `, ], invalid: [ { diff --git a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts index 022eb5cdb8bc..9ba8d2dd34f2 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -1208,5 +1208,47 @@ x || y; }, ], }, + { + code: ` +declare const x: null; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +const x = undefined; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +null || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +undefined || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, ], }); diff --git a/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot b/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot new file mode 100644 index 000000000000..14858cd2617e --- /dev/null +++ b/packages/eslint-plugin/tests/schema-snapshots/class-methods-use-this.shot @@ -0,0 +1,52 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Rule schemas should be convertible to TS types for documentation purposes class-methods-use-this 1`] = ` +" +# SCHEMA: + +[ + { + "additionalProperties": false, + "properties": { + "enforceForClassFields": { + "default": true, + "description": "Enforces that functions used as instance field initializers utilize \`this\`", + "type": "boolean" + }, + "exceptMethods": { + "description": "Allows specified method names to be ignored with this rule", + "items": { + "type": "string" + }, + "type": "array" + }, + "ignoreClassesThatImplementAnInterface": { + "description": "Ignore classes that specifically implement some interface", + "type": "boolean" + }, + "ignoreOverrideMethods": { + "description": "Ingore members marked with the \`override\` modifier", + "type": "boolean" + } + }, + "type": "object" + } +] + + +# TYPES: + +type Options = [ + { + /** Enforces that functions used as instance field initializers utilize \`this\` */ + enforceForClassFields?: boolean; + /** Allows specified method names to be ignored with this rule */ + exceptMethods?: string[]; + /** Ignore classes that specifically implement some interface */ + ignoreClassesThatImplementAnInterface?: boolean; + /** Ingore members marked with the \`override\` modifier */ + ignoreOverrideMethods?: boolean; + }, +]; +" +`; diff --git a/packages/integration-tests/CHANGELOG.md b/packages/integration-tests/CHANGELOG.md index 48fd31149c34..e028840cecb4 100644 --- a/packages/integration-tests/CHANGELOG.md +++ b/packages/integration-tests/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/integration-tests + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 3ed4cf8c5279..90ab24cbcbcf 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/integration-tests", - "version": "6.1.0", + "version": "6.2.0", "private": true, "scripts": { "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index a4889a68f6e1..81f2bfddae46 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/parser + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/parser/package.json b/packages/parser/package.json index 9b582e0df42c..f39f8a7dac16 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "6.1.0", + "version": "6.2.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "files": [ "dist", @@ -51,10 +51,10 @@ "eslint": "^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "6.1.0", - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", + "@typescript-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index d83318a2cef1..3abec56ed7f8 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/repo-tools + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/repo-tools diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 0afe859c4671..5d8c490195f1 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/repo-tools", - "version": "6.1.0", + "version": "6.2.0", "private": true, "scripts": { "build": "tsc -b tsconfig.build.json", diff --git a/packages/rule-schema-to-typescript-types/CHANGELOG.md b/packages/rule-schema-to-typescript-types/CHANGELOG.md index 324919e7fed1..042c246b8957 100644 --- a/packages/rule-schema-to-typescript-types/CHANGELOG.md +++ b/packages/rule-schema-to-typescript-types/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/rule-schema-to-typescript-types + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json index a3ddab833079..04e9bc3e6bee 100644 --- a/packages/rule-schema-to-typescript-types/package.json +++ b/packages/rule-schema-to-typescript-types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/rule-schema-to-typescript-types", - "version": "6.1.0", + "version": "6.2.0", "private": true, "type": "commonjs", "exports": { @@ -33,8 +33,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/type-utils": "6.1.0", - "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/type-utils": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "natural-compare": "^1.4.0", "prettier": "*" }, diff --git a/packages/rule-tester/CHANGELOG.md b/packages/rule-tester/CHANGELOG.md index b4b3034a726a..ef5b7d84b9f3 100644 --- a/packages/rule-tester/CHANGELOG.md +++ b/packages/rule-tester/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/rule-tester + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index 5513949ae671..1d2349136229 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/rule-tester", - "version": "6.1.0", + "version": "6.2.0", "description": "Tooling to test ESLint rules", "files": [ "dist", @@ -47,8 +47,8 @@ }, "//": "NOTE - AJV is out-of-date, but it's intentionally synced with ESLint - https://github.com/eslint/eslint/blob/ad9dd6a933fd098a0d99c6a9aa059850535c23ee/package.json#L70", "dependencies": { - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "ajv": "^6.10.0", "lodash.merge": "4.6.2", "semver": "^7.5.4" @@ -59,7 +59,7 @@ }, "devDependencies": { "@types/lodash.merge": "4.6.7", - "@typescript-eslint/parser": "6.1.0", + "@typescript-eslint/parser": "6.2.0", "chai": "^4.3.7", "mocha": "^8.3.2", "sinon": "^11.0.0", diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 62f2ad6c8126..fdcbd692d1ea 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/scope-manager diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 14aacf7ee23c..2eb5a7048d8c 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "6.1.0", + "version": "6.2.0", "description": "TypeScript scope analyser for ESLint", "files": [ "dist", @@ -44,12 +44,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0" + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/typescript-estree": "6.2.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index babefc41d356..68ae9a9c9038 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/type-utils + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index ef0f88667467..2c1fb9734d7a 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "6.1.0", + "version": "6.2.0", "description": "Type utilities for working with TypeScript + ESLint together", "files": [ "dist", @@ -45,13 +45,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "6.1.0", - "@typescript-eslint/utils": "6.1.0", + "@typescript-eslint/typescript-estree": "6.2.0", + "@typescript-eslint/utils": "6.2.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, "devDependencies": { - "@typescript-eslint/parser": "6.1.0", + "@typescript-eslint/parser": "6.2.0", "ajv": "^8.12.0", "typescript": "*" }, diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 59338dda722c..93649ba81c89 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/types + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/types/package.json b/packages/types/package.json index f7c2178932e2..cb99f11eefa8 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "6.1.0", + "version": "6.2.0", "description": "Types for the TypeScript-ESTree AST spec", "files": [ "dist", diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md index 5343ba318639..a14e6dcd89de 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + + +### Bug Fixes + +* **typescript-estree:** fix TSNode type error on old ts versions ([#7267](https://github.com/typescript-eslint/typescript-eslint/issues/7267)) ([f2aed1b](https://github.com/typescript-eslint/typescript-eslint/commit/f2aed1bee1d265e8c87423a17b674be31a075f58)) + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 3c78a4cdb23f..2eea7e9e3f9e 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "6.1.0", + "version": "6.2.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "files": [ "dist", @@ -52,8 +52,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/visitor-keys": "6.1.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/visitor-keys": "6.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", diff --git a/packages/typescript-estree/src/ts-estree/ts-nodes.ts b/packages/typescript-estree/src/ts-estree/ts-nodes.ts index 588316c297ad..3e9eab7fe8d6 100644 --- a/packages/typescript-estree/src/ts-estree/ts-nodes.ts +++ b/packages/typescript-estree/src/ts-estree/ts-nodes.ts @@ -4,18 +4,13 @@ import type * as ts from 'typescript'; // Eg: https://github.com/typescript-eslint/typescript-eslint/issues/2388, https://github.com/typescript-eslint/typescript-eslint/issues/2784 /* eslint-disable @typescript-eslint/no-empty-interface */ declare module 'typescript' { - // added in TS 4.0 - export interface NamedTupleMember extends ts.Node {} - // added in TS 4.1 - export interface TemplateLiteralTypeNode extends ts.Node {} - // added in TS 4.3 - export interface PrivateIdentifier extends ts.Node {} - export interface ClassStaticBlockDeclaration extends ts.Node {} // added in TS 4.5 export interface AssertClause extends ts.Node {} export interface AssertEntry extends ts.Node {} // added in TS 4.9 export interface SatisfiesExpression extends ts.Node {} + // added in TS 5.1 + export interface JsxNamespacedName extends ts.Node {} } /* eslint-enable @typescript-eslint/no-empty-interface */ diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index de31060da285..f10392417c42 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/utils + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/utils/package.json b/packages/utils/package.json index e6537e850faa..d6f9cbcd0f09 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "6.1.0", + "version": "6.2.0", "description": "Utilities for working with TypeScript + ESLint together", "files": [ "dist", @@ -68,16 +68,16 @@ "@eslint-community/eslint-utils": "^4.4.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-eslint/scope-manager": "6.2.0", + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/typescript-estree": "6.2.0", "semver": "^7.5.4" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "6.1.0", + "@typescript-eslint/parser": "6.2.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index ef7763154735..74581c8b17c6 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/visitor-keys diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 3143e8ccdcbe..983c5326aebc 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "6.1.0", + "version": "6.2.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "files": [ "dist", @@ -45,7 +45,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/types": "6.2.0", "eslint-visitor-keys": "^3.4.1" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 62df50b63955..e9c7ffc71e4c 100644 --- a/packages/website-eslint/CHANGELOG.md +++ b/packages/website-eslint/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package @typescript-eslint/website-eslint + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) **Note:** Version bump only for package @typescript-eslint/website-eslint diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index e223d9e53789..69f9d8bdabcc 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "6.1.0", + "version": "6.2.0", "private": true, "description": "ESLint which works in browsers.", "files": [ @@ -23,18 +23,18 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@typescript-eslint/types": "6.1.0", - "@typescript-eslint/utils": "6.1.0" + "@typescript-eslint/types": "6.2.0", + "@typescript-eslint/utils": "6.2.0" }, "devDependencies": { "@eslint/js": "8.45.0", - "@typescript-eslint/eslint-plugin": "6.1.0", - "@typescript-eslint/parser": "6.1.0", - "@typescript-eslint/scope-manager": "6.1.0", + "@typescript-eslint/eslint-plugin": "6.2.0", + "@typescript-eslint/parser": "6.2.0", + "@typescript-eslint/scope-manager": "6.2.0", "@typescript-eslint/types": "6.0.0", - "@typescript-eslint/typescript-estree": "6.1.0", + "@typescript-eslint/typescript-estree": "6.2.0", "@typescript-eslint/utils": "6.0.0", - "@typescript-eslint/visitor-keys": "6.1.0", + "@typescript-eslint/visitor-keys": "6.2.0", "esbuild": "~0.18.0", "eslint": "*", "esquery": "*", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 9ca7c5defcb5..3dac0578b710 100644 --- a/packages/website/CHANGELOG.md +++ b/packages/website/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.2.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.1.0...v6.2.0) (2023-07-24) + +**Note:** Version bump only for package website + +You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. + + + + + # [6.1.0](https://github.com/typescript-eslint/typescript-eslint/compare/v6.0.0...v6.1.0) (2023-07-17) diff --git a/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md b/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md index e79664a58748..c4a5d6b7d3b5 100644 --- a/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md +++ b/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md @@ -110,6 +110,7 @@ See [our _Configurations_ linting docs](/linting/configs) for the updated docume For more information on these changes, see: +- [Our documentation on our configurations](https://typescript-eslint.io/linting/configs). - [Configs: Have recommended/strict configs include lesser configs, and simplify type checked names](https://github.com/typescript-eslint/typescript-eslint/discussions/6019) for the discussion leading up to these configuration changes. - [feat(eslint-plugin): rework configs: recommended, strict, stylistic; -type-checked](https://github.com/typescript-eslint/typescript-eslint/pull/5251) for the pull request implementing the changes. @@ -636,7 +637,7 @@ As of [feat: add package.json exports for public packages](https://github.com/ty Developers must now mostly import directly from the package names, e.g.: ```ts -import * as TSESLint from '@typescript-eslint/ts-eslint'; +import * as TSESLint from '@typescript-eslint/utils/ts-eslint'; ``` See [RFC: Use package.json exports to "hide" the dist folder for packages and control our exported surface-area](https://github.com/typescript-eslint/typescript-eslint/discussions/6015) for more backing context. diff --git a/packages/website/package.json b/packages/website/package.json index 88c7338a3293..6f8cc3a49bc9 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "6.1.0", + "version": "6.2.0", "private": true, "scripts": { "build": "docusaurus build", @@ -24,8 +24,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.4.1", "@docusaurus/theme-common": "~2.4.1", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "6.1.0", - "@typescript-eslint/website-eslint": "6.1.0", + "@typescript-eslint/parser": "6.2.0", + "@typescript-eslint/website-eslint": "6.2.0", "clsx": "^1.2.1", "eslint": "*", "json-schema": "^0.4.0", @@ -51,9 +51,9 @@ "@types/react": "*", "@types/react-helmet": "^6.1.6", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "6.1.0", - "@typescript-eslint/rule-schema-to-typescript-types": "6.1.0", - "@typescript-eslint/types": "6.1.0", + "@typescript-eslint/eslint-plugin": "6.2.0", + "@typescript-eslint/rule-schema-to-typescript-types": "6.2.0", + "@typescript-eslint/types": "6.2.0", "copy-webpack-plugin": "^11.0.0", "cross-fetch": "*", "globby": "^11.1.0", diff --git a/packages/website/sidebars/sidebar.base.js b/packages/website/sidebars/sidebar.base.js index d414d4803ba8..f9d408bbb43f 100644 --- a/packages/website/sidebars/sidebar.base.js +++ b/packages/website/sidebars/sidebar.base.js @@ -84,7 +84,16 @@ module.exports = { items: [ 'contributing/discussions', 'contributing/issues', - 'contributing/local-development', + { + collapsible: false, + items: ['contributing/local-development/local-linking'], + label: 'Local Development', + link: { + id: 'contributing/local-development', + type: 'doc', + }, + type: 'category', + }, 'contributing/pull-requests', ], label: 'Contributing', diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index be25b707ba49..4b1623c7c756 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -134,28 +134,33 @@ function Home(): React.JSX.Element { const { siteConfig } = useDocusaurusContext(); return ( -
-
- -

{siteConfig.title}

-

{siteConfig.tagline}

-
- - Get Started - - - Playground - +
+
+
+ Hero Logo +

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Get Started + + + Playground + +
-
-
+ {features.map((props, idx) => (
=16.1.3 < 17": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.5.1.tgz#1d6a27895a7c85edebe0ba31e0a394839ad5fdd2" - integrity sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg== +"@nx/devkit@16.5.2", "@nx/devkit@>=16.5.1 < 17": + version "16.5.2" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.5.2.tgz#0a30fc4e3beeea7d7bf16a0496d1ff3c5fa05299" + integrity sha512-QDOQeFzVhQCA65g+2RfoGKZBUnCb151+F7/PvwRESEM+jybXHoXwR9PSE3ClnnmO/d0LUKB2ohU3Z9WQrQDALQ== dependencies: - "@nrwl/devkit" "16.5.1" + "@nrwl/devkit" "16.5.2" ejs "^3.1.7" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/devkit@16.5.2": - version "16.5.2" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.5.2.tgz#0a30fc4e3beeea7d7bf16a0496d1ff3c5fa05299" - integrity sha512-QDOQeFzVhQCA65g+2RfoGKZBUnCb151+F7/PvwRESEM+jybXHoXwR9PSE3ClnnmO/d0LUKB2ohU3Z9WQrQDALQ== +"@nx/devkit@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.5.3.tgz#df9bd5a4c0818d6d845e2f271e377c1217e7c292" + integrity sha512-szsBpO4ZYEwilUZMEjpmvg8ritl8C7jEAkAq3k2CxEdwE24cDBPwjXWnbc4YffvYW9gatDt+n93in5XYXWT5CA== dependencies: - "@nrwl/devkit" "16.5.2" + "@nrwl/devkit" "16.5.3" ejs "^3.1.7" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/jest@16.5.2": - version "16.5.2" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.5.2.tgz#f4de39379b5b2e6ffcf3047193ffffb4c569f740" - integrity sha512-EVELIF4cy9iri8dSSLA2ZvEkExq/3DMTritxbI2mqI/iHixybqJ2D4aSw26gzbCz8rilMgPacriADDbkhGiFkw== +"@nx/jest@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.5.3.tgz#319493b590f7a7d28dccb5e5556de3de18dfbab8" + integrity sha512-E9SMO/wFDXBZCepcE3TcAk6Fu0Q/wTIGCXNum6urTS+2hqetisugC+cxCoisBrevPlqZvTm5WmBU/4UipmxN0g== dependencies: "@jest/reporters" "^29.4.1" "@jest/test-result" "^29.4.1" - "@nrwl/jest" "16.5.2" - "@nx/devkit" "16.5.2" - "@nx/js" "16.5.2" + "@nrwl/jest" "16.5.3" + "@nx/devkit" "16.5.3" + "@nx/js" "16.5.3" "@phenomnomnominal/tsquery" "~5.0.1" chalk "^4.1.0" dotenv "~10.0.0" @@ -3014,10 +3021,10 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nx/js@16.5.2": - version "16.5.2" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.5.2.tgz#200e1ddad3f61f8a200397717edbeb4d51e23d47" - integrity sha512-CuV0I3erdx9Kv3QParQrdUnIxzHt9iWOMI6hhrcGARrP0C2l2cxQ10X/pG7pA9XMMWw5aibfHj7sPQzHXWWkSw== +"@nx/js@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.5.3.tgz#ababd7048279610c4304cd88fff002b7a3577284" + integrity sha512-4eGseRQR2t9QoahwBOEvqv3xGL7icfpx4dhCfhv1YV5ImoycuqwaUhoJZwTYvxOW0pahwI2qDZCpOUGXz76kGg== dependencies: "@babel/core" "^7.15.0" "@babel/plugin-proposal-class-properties" "^7.14.5" @@ -3026,9 +3033,9 @@ "@babel/preset-env" "^7.15.0" "@babel/preset-typescript" "^7.15.0" "@babel/runtime" "^7.14.8" - "@nrwl/js" "16.5.2" - "@nx/devkit" "16.5.2" - "@nx/workspace" "16.5.2" + "@nrwl/js" "16.5.3" + "@nx/devkit" "16.5.3" + "@nx/workspace" "16.5.3" "@phenomnomnominal/tsquery" "~5.0.1" babel-plugin-const-enum "^1.0.1" babel-plugin-macros "^2.8.0" @@ -3044,125 +3051,125 @@ source-map-support "0.5.19" tslib "^2.3.0" -"@nx/linter@16.5.2": - version "16.5.2" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.5.2.tgz#59cf9a0116fc01b544c6c63960c781715e1677d5" - integrity sha512-d9HPiVCcYb8s5bYrjI7uqwZO640arOwB6FKn3AdIo6SHge1wn8rNvsytDx1IB0C3TcGQhjIC+4X7ZxN5GmfRbw== +"@nx/linter@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.5.3.tgz#a5a1d8c44d67748f67c2e3bcc694987764ebdf5f" + integrity sha512-md+dzialAUqXMgEZWqguhTyeFkuGMJ2oRQed3k4EkkJ2JScXXtnj/Izk2kob7Eik7KEoBTSlNdOMHdCgc4FeIA== dependencies: - "@nrwl/linter" "16.5.2" - "@nx/devkit" "16.5.2" - "@nx/js" "16.5.2" + "@nrwl/linter" "16.5.3" + "@nx/devkit" "16.5.3" + "@nx/js" "16.5.3" "@phenomnomnominal/tsquery" "~5.0.1" tmp "~0.2.1" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.1.tgz#87111664de492e5ae270ef2adc74553e03d77341" - integrity sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q== - "@nx/nx-darwin-arm64@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.2.tgz#0efcc62881eddd20e5bb8f881e6c8cc082c864f8" integrity sha512-myiNbDJLhhVHRLo6z3TeiaUeYTWdvBR3RdHQq4szTgb82Bnn8ruzteRGGJwKZd551YlttRcieBysxzUzHkmVBg== -"@nx/nx-darwin-x64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.1.tgz#05c34ce8f8f23eeae0529d3c1022ee3e95a608a1" - integrity sha512-j9HmL1l8k7EVJ3eOM5y8COF93gqrydpxCDoz23ZEtsY+JHY77VAiRQsmqBgEx9GGA2dXi9VEdS67B0+1vKariw== +"@nx/nx-darwin-arm64@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.5.3.tgz#94c96114293e91553aa233adcb38f82598b6badb" + integrity sha512-HS3R/vRVFwOjZ0l1y3h1UMSd7Zfh4NQ2qDe1FSOfA38AXNftyWNCnZ1kkOikVjJKCpwKXls56XcPDu+2hbqSDA== "@nx/nx-darwin-x64@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.2.tgz#6b03c1f4569411db7f8f90df90c820b083bde65f" integrity sha512-m354qmKrv7a5eD9Qv8bGEmrLCBEyCS6/y0PyOR32Dmi7qwlgHsQ4FfVkOnlWefC5ednhFLJQT6yxwhg8cFGDxw== -"@nx/nx-freebsd-x64@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.1.tgz#b4303ac5066f5c8ced7768097d6c85e8055c7d3a" - integrity sha512-CXSPT01aVS869tvCCF2tZ7LnCa8l41wJ3mTVtWBkjmRde68E5Up093hklRMyXb3kfiDYlfIKWGwrV4r0eH6x1A== +"@nx/nx-darwin-x64@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.5.3.tgz#6cb273f439f07441ba78ea98cab7521c3dd30e64" + integrity sha512-3QEZkliJy+rk5UrcBsMnExBIAXmjqd4dHBDGH1eo0w85/3Bih3Z9QxU/n+3tEewvUCCx4o4kg+bya/hVz23V6g== "@nx/nx-freebsd-x64@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.2.tgz#931e8be5c70d87b87f17d8faf0b9089383df0505" integrity sha512-qrR9yxcC2BLnw9JulecILmyp6Jco9unHHzQcfhLZTpw5c1PNHmZzHwJ3i3iNEf1o2kXEIa+SlOCis9ndvNQQVA== -"@nx/nx-linux-arm-gnueabihf@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.1.tgz#4dde9e8c79da9c5a213b6938dff74f65dd79c157" - integrity sha512-BhrumqJSZCWFfLFUKl4CAUwR0Y0G2H5EfFVGKivVecEQbb+INAek1aa6c89evg2/OvetQYsJ+51QknskwqvLsA== +"@nx/nx-freebsd-x64@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.5.3.tgz#506e33a1229a554ce17b611cbf55b774ea6166ec" + integrity sha512-FyJ2xUBPifO0y9LoVuS0CjwN+GGsYSy+O1y541eh8j4Y86/xcPx0j+fhHhh3MDnKA9ftjbq+vrqgs84NHmIAAw== "@nx/nx-linux-arm-gnueabihf@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.2.tgz#d9d865f99ba1128f6aa5b6bf0887bb743590eeb6" integrity sha512-+I1Oj54caDymMsQuRu/l4ULS4RVvwDUM1nXey5JhWulDOUF//09Ckz03Q9p0NCnvBvQd3SyE65++PMfZrrurbA== -"@nx/nx-linux-arm64-gnu@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.1.tgz#43dcdbd9b39fa91923ab949d161aa25c650f56d9" - integrity sha512-x7MsSG0W+X43WVv7JhiSq2eKvH2suNKdlUHEG09Yt0vm3z0bhtym1UCMUg3IUAK7jy9hhLeDaFVFkC6zo+H/XQ== +"@nx/nx-linux-arm-gnueabihf@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.5.3.tgz#f7c0c8e3cdd46d8b92d1ea6f2c2d2985802b7888" + integrity sha512-Zn343k/satXGWEJjh56+Y/Uxtsl1aCyUtq0OPxznwx/ZGG+Sw2wN/ZEnePEh0OB1/yZ2uWAFRHVSA2fYPrmdhQ== "@nx/nx-linux-arm64-gnu@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.2.tgz#c442df598108776cce297561555520ffbce251ea" integrity sha512-4Q4jpgtNBTb4lMegFKS9hkzS/WttH3MxkgM//8qs1zhgUz/AsuXTitBo71E3xCnQl/i38p0eIpiKXXwBJeHgDw== -"@nx/nx-linux-arm64-musl@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.1.tgz#fc33960cecb0064c3dd3330f393e3a38be8a71b7" - integrity sha512-J+/v/mFjOm74I0PNtH5Ka+fDd+/dWbKhpcZ2R1/6b9agzZk+Ff/SrwJcSYFXXWKbPX+uQ4RcJoytT06Zs3s0ow== +"@nx/nx-linux-arm64-gnu@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.5.3.tgz#69c3b2eeda6cbbada94d7c91034159746bf04202" + integrity sha512-ACUhKWHe7C7IopyIwXAoHx/phaZudBOu+pZwzVDaRy2xn78tdzJQrOySsQ7YmBGoGSXEAd5+3pVVXnXcRNJ2aA== "@nx/nx-linux-arm64-musl@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.2.tgz#e07c0031f60372e726d2272fac5f3743c4d9591c" integrity sha512-VLukS/pfenr/Qw/EUn3GPAREDVXuSmfKeYBQKkALXEK6cRVQhXFXMLGHgMemCYbpoUJyFtFEO94PKV7VU7wZPg== -"@nx/nx-linux-x64-gnu@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz#2b2ffbb80e29455b6900ec20d4249055590dc58f" - integrity sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ== +"@nx/nx-linux-arm64-musl@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.5.3.tgz#23381f971ef910e675aef0e2f279d8cb92888103" + integrity sha512-eNrVa1Oaf42kEiCoJu01NlmGs6hQMzDhHiQ/DBKxMePW1bh4O5FEQUtYp1K/AKPcHH5270VNz0eAl164+fMqpQ== "@nx/nx-linux-x64-gnu@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.2.tgz#0748beae6944b42276f4705bc41b9e06cefb1d55" integrity sha512-TAGmY+MXbNl/aGg2KMvtg53rbmX0XHwnJRQtjhjqjAyvaOfFWI/WOqTU7xf/QCkXBUIK0D9xHWpALfA/fZFCBA== -"@nx/nx-linux-x64-musl@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz#955b2eae615ee6cf1954e24d42c205b1de8772bf" - integrity sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A== +"@nx/nx-linux-x64-gnu@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.3.tgz#4630eca95e41210db2362db8dfbed037fbca42c0" + integrity sha512-ZAW+Oar+WEwbmu8KFw80qDpT9y3qmWZdVD5wNRX5CMByuVJ3ly7MJbtD/rEDtvAUOgSMJikuGsK0jQ6acm+X/A== "@nx/nx-linux-x64-musl@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.2.tgz#7b150081e21ba7aa0da511f80aae1c5d230d1664" integrity sha512-YyWmqcNbZgU76+LThAt+0arx9C2ewfI5UUI6kooZRniAd408EA2xl5fx2AWLLrISGH4nTb5p20HGmeWfGqjHPA== -"@nx/nx-win32-arm64-msvc@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.1.tgz#1dc4a7e3662eb757214c46d8db432f61e43a3dd9" - integrity sha512-qtqiLS9Y9TYyAbbpq58kRoOroko4ZXg5oWVqIWFHoxc5bGPweQSJCROEqd1AOl2ZDC6BxfuVHfhDDop1kK05WA== +"@nx/nx-linux-x64-musl@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.3.tgz#905927d9002be5c589b6d07d86bf5e727d4db343" + integrity sha512-jM2igA26dd0YVj9w/Pv2x3ZUUziVP4H3rFzYDAd80sQqLYWqELr6Fljyvj/2C+o+mOfVcw85+yfessjlPz8K8Q== "@nx/nx-win32-arm64-msvc@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.2.tgz#f06f74b876c92d6b12cd351baff016b18bfd9a73" integrity sha512-pl7LluCc/57kl9VZ1ES27ym16ps4zgfCIeJiF8Ne8C6ALgt7C3PEG6417sFqbQw5J7NhsZ1aTb3eJ9fa9hurhA== -"@nx/nx-win32-x64-msvc@16.5.1": - version "16.5.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.1.tgz#d2f4a1b2bf675bceb6fb16174b836438293f9dca" - integrity sha512-kUJBLakK7iyA9WfsGGQBVennA4jwf5XIgm0lu35oMOphtZIluvzItMt0EYBmylEROpmpEIhHq0P6J9FA+WH0Rg== +"@nx/nx-win32-arm64-msvc@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.5.3.tgz#36e76555d8e8410ed5b094378792265411542e4f" + integrity sha512-gEP6ekFXLfvRWezSvQoHxV+vhKavuA/Lhz/AifYAIgdJEmKUPqVdnUtdkYwU0Ygn/a11KqbFh8J4TikXIkVxYw== "@nx/nx-win32-x64-msvc@16.5.2": version "16.5.2" resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.2.tgz#6ae96b6a90924daba81350863da4f9d12884fe8e" integrity sha512-bKSMElhzP37MkzWQ/Y12pQlesZ6TxwOOqwoaK/vHe6ZtxPxvG2+U8tQ21Nw5L3KyrDCnU5MJHGFtQVHHHt5MwA== -"@nx/workspace@16.5.2": - version "16.5.2" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.5.2.tgz#7d8b84550c51bc3bebc2e6e701fd41a5995fcbca" - integrity sha512-j+EUQW0q2AtYmd1lWxnVJzzGHWbHbdjkV4b6VYG839CaK0+mWZ/t4EYzpGn7m4WU8rmyxh9YwU8uAl2nvc1JaQ== +"@nx/nx-win32-x64-msvc@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.5.3.tgz#574b81c46f5af0f2d374297b20168a98d79af5a2" + integrity sha512-QTpDoqxQq7wSuErkCgQoFegaUZ3D9lgmpS20zexlHm43SwS/MXtqRm9i5XNoJPTx19rpJ7gqaOm6+eOkOYLETg== + +"@nx/workspace@16.5.3": + version "16.5.3" + resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.5.3.tgz#a297c588b25b3a3d3108316cb85754f7b021c207" + integrity sha512-nviDIJdNJ1K9K8g6Ug+NqHBHILm/J5Uqr4sPTOvNAfkUpqS6gN2aKUJ09iXIwA+/cu+3hrVjIyNhvQ3xHfMCBg== dependencies: - "@nrwl/workspace" "16.5.2" - "@nx/devkit" "16.5.2" + "@nrwl/workspace" "16.5.3" + "@nx/devkit" "16.5.3" "@parcel/watcher" "2.0.4" chalk "^4.1.0" chokidar "^3.5.1" @@ -3174,7 +3181,7 @@ ignore "^5.0.4" minimatch "3.0.5" npm-run-path "^4.0.1" - nx "16.5.2" + nx "16.5.3" open "^8.4.0" rxjs "^7.8.0" tmp "~0.2.1" @@ -3458,17 +3465,17 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.59.5": - version "3.59.5" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.59.5.tgz#38034d4c38b5ddd7d1c7f04233ce1b2209b7ae1f" - integrity sha512-1IpV7LufrI1EoVO8hYsb3t6L8L+yp40Sa0OaOV2CIu1zx4e6ZeVNaVIEXFgMXBKdGXkAh21MnCaIzlDNpG6ZQw== +"@rushstack/node-core-library@3.59.6": + version "3.59.6" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.59.6.tgz#1dd2534a872549d463950a62b97d40fe3a6bdcf6" + integrity sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg== dependencies: colors "~1.2.1" fs-extra "~7.0.1" import-lazy "~4.0.0" jju "~1.4.0" resolve "~1.22.1" - semver "~7.3.0" + semver "~7.5.4" z-schema "~5.0.2" "@rushstack/rig-package@0.4.0": @@ -3696,89 +3703,102 @@ "@svgr/plugin-svgo" "^6.2.0" "@swc/core-android-arm-eabi@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" "@swc/core-android-arm64@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-darwin-arm64@1.3.69": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.69.tgz#e22032471244ec80c22bee8efc2100e456bb9488" - integrity sha512-IjZTf12zIPWkV3D7toaLDoJPSkLhQ4fDH8G6/yCJUI27cBFOI3L8LXqptYmISoN5yYdrcnNpdqdapD09JPuNJg== +"@swc/core-darwin-arm64@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.70.tgz#056ac6899e22cb7f7be21388d4d938ca5123a72b" + integrity sha512-31+mcl0dgdRHvZRjhLOK9V6B+qJ7nxDZYINr9pBlqGWxknz37Vld5KK19Kpr79r0dXUZvaaelLjCnJk9dA2PcQ== -"@swc/core-darwin-x64@1.3.69": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.69.tgz#4c2034ba409b9e061b9e8ad56a762b8bb7815f18" - integrity sha512-/wBO0Rn5oS5dJI/L9kJRkPAdksVwl5H9nleW/NM3A40N98VV8T7h/i1nO051mxIjq0R6qXVGOWFbBoLrPYucJg== +"@swc/core-darwin-x64@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.70.tgz#3945814de6fadbee5b46cb2a3422353acb420c5c" + integrity sha512-GMFJ65E18zQC80t0os+TZvI+8lbRuitncWVge/RXmXbVLPRcdykP4EJ87cqzcG5Ah0z18/E0T+ixD6jHRisrYQ== "@swc/core-freebsd-x64@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-linux-arm-gnueabihf@1.3.69": - version "1.0.0" +"@swc/core-linux-arm-gnueabihf@1.3.70": + version "0.0.0" + uid "" "@swc/core-linux-arm-gnueabihf@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-linux-arm64-gnu@1.3.69": - version "1.0.0" +"@swc/core-linux-arm64-gnu@1.3.70": + version "0.0.0" + uid "" "@swc/core-linux-arm64-gnu@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-linux-arm64-musl@1.3.69": - version "1.0.0" +"@swc/core-linux-arm64-musl@1.3.70": + version "0.0.0" + uid "" "@swc/core-linux-arm64-musl@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-linux-x64-gnu@1.3.69": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.69.tgz#6879057d28f261b051fac52daca6c256f3a7fb7d" - integrity sha512-b+DUlVxYox3BwD3PyTwhLvqtu6TYZtW+S6O0FnttH11o4skHN0XyJ/cUZSI0X2biSmfDsizRDUt1PWPFM+F7SA== +"@swc/core-linux-x64-gnu@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.70.tgz#774351532b154ed36a5c6d14b647e7a8ab510028" + integrity sha512-/nCly+V4xfMVwfEUoLLAukxUSot/RcSzsf6GdsGTjFcrp5sZIntAjokYRytm3VT1c2TK321AfBorsi9R5w8Y7Q== -"@swc/core-linux-x64-musl@1.3.69": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.69.tgz#bf4f9a74156524211472bb713d34f0bb7265669f" - integrity sha512-QXjsI+f8n9XPZHUvmGgkABpzN4M9kdSbhqBOZmv3o0AsDGNCA4uVowQqgZoPFAqlJTpwHeDmrv5sQ13HN+LOGw== +"@swc/core-linux-x64-musl@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.70.tgz#c0b1b4ad5f4ef187eaa093589a4933ecb6836546" + integrity sha512-HoOsPJbt361KGKaivAK0qIiYARkhzlxeAfvF5NlnKxkIMOZpQ46Lwj3tR0VWohKbrhS+cYKFlVuDi5XnDkx0XA== -"@swc/core-win32-arm64-msvc@1.3.69": - version "1.0.0" +"@swc/core-win32-arm64-msvc@1.3.70": + version "0.0.0" + uid "" "@swc/core-win32-arm64-msvc@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-win32-ia32-msvc@1.3.69": - version "1.0.0" +"@swc/core-win32-ia32-msvc@1.3.70": + version "0.0.0" + uid "" "@swc/core-win32-ia32-msvc@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" -"@swc/core-win32-x64-msvc@1.3.69": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.69.tgz#304e1050d59bae21215a15839b05668d48a92837" - integrity sha512-ieBscU0gUgKjaseFI07tAaGqHvKyweNknPeSYEZOasVZUczhD6fK2GRnVREhv2RB2qdKC/VGFBsgRDMgzq1VLw== +"@swc/core-win32-x64-msvc@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.70.tgz#5b3acddb96fdf60df089b837061915cb4be94eaa" + integrity sha512-LE8lW46+TQBzVkn2mHBlk8DIElPIZ2dO5P8AbJiARNBAnlqQWu67l9gWM89UiZ2l33J2cI37pHzON3tKnT8f9g== "@swc/core@^1.3.68": - version "1.3.69" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.69.tgz#b4a41e84de11832c233fbe714c6e412d8404bab0" - integrity sha512-Khc/DE9D5+2tYTHgAIp5DZARbs8kldWg3b0Jp6l8FQLjelcLFmlQWSwKhVZrgv4oIbgZydIp8jInsvTalMHqnQ== + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.70.tgz#f5ddc6fe6add7a99f5b94d2214ad0d8527d11479" + integrity sha512-LWVWlEDLlOD25PvA2NEz41UzdwXnlDyBiZbe69s3zM0DfCPwZXLUm79uSqH9ItsOjTrXSL5/1+XUL6C/BZwChA== optionalDependencies: - "@swc/core-darwin-arm64" "1.3.69" - "@swc/core-darwin-x64" "1.3.69" - "@swc/core-linux-arm-gnueabihf" "1.3.69" - "@swc/core-linux-arm64-gnu" "1.3.69" - "@swc/core-linux-arm64-musl" "1.3.69" - "@swc/core-linux-x64-gnu" "1.3.69" - "@swc/core-linux-x64-musl" "1.3.69" - "@swc/core-win32-arm64-msvc" "1.3.69" - "@swc/core-win32-ia32-msvc" "1.3.69" - "@swc/core-win32-x64-msvc" "1.3.69" + "@swc/core-darwin-arm64" "1.3.70" + "@swc/core-darwin-x64" "1.3.70" + "@swc/core-linux-arm-gnueabihf" "1.3.70" + "@swc/core-linux-arm64-gnu" "1.3.70" + "@swc/core-linux-arm64-musl" "1.3.70" + "@swc/core-linux-x64-gnu" "1.3.70" + "@swc/core-linux-x64-musl" "1.3.70" + "@swc/core-win32-arm64-msvc" "1.3.70" + "@swc/core-win32-ia32-msvc" "1.3.70" + "@swc/core-win32-x64-msvc" "1.3.70" "@swc/jest@^0.2.26": - version "0.2.26" - resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.26.tgz#6ef2d6d31869e3aaddc132603bc21f2e4c57cc5d" - integrity sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A== + version "0.2.27" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.27.tgz#f6cbd0b6f95cf689c3344c63fc379fa680cdbf52" + integrity sha512-Xt8EJ6Wy0NYVL8KDPcDMsuUSzyV2UAByamyy28x2iDZCJw2eVz3acedCGBYxxlPR/DNr6QbA35OSymuXhC9QVA== dependencies: "@jest/create-cache-key-function" "^27.4.2" jsonc-parser "^3.2.0" @@ -3914,10 +3934,12 @@ "@types/ms" "*" "@types/eslint-scope@^3.7.3": - version "1.0.0" + version "0.0.0" + uid "" "@types/eslint-scope@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" "@types/eslint-visitor-keys@*": version "3.3.0" @@ -3927,16 +3949,20 @@ eslint-visitor-keys "*" "@types/eslint@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" "@types/estree@0.0.39": - version "1.0.0" + version "0.0.0" + uid "" "@types/estree@^1.0.0": - version "1.0.0" + version "0.0.0" + uid "" "@types/estree@link:./tools/dummypkg": - version "1.0.0" + version "0.0.0" + uid "" "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": version "4.17.28" @@ -4058,16 +4084,16 @@ integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A== "@types/marked@*", "@types/marked@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-5.0.0.tgz#3235b9133054e6586eedabfb77aa7d4a4bafbfcf" - integrity sha512-YcZe50jhltsCq7rc9MNZC/4QB/OnA2Pd6hrOSTOFajtabN+38slqgDDCeE/0F83SjkKBQcsZUj7VLWR0H5cKRA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-5.0.1.tgz#15acd796d722b91bf00738c8c8539aaf5034f0c6" + integrity sha512-Y3pAUzHKh605fN6fvASsz5FDSWbZcs/65Q6xYRmnIP9ZIYz27T4IOmXfH9gWJV1dpi7f1e7z7nBGUTx/a0ptpA== "@types/mdast@^3.0.0": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.11.tgz#dc130f7e7d9306124286f6d6cee40cf4d14a3dc0" - integrity sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw== + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.12.tgz#beeb511b977c875a5b0cc92eab6fcac2f0895514" + integrity sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg== dependencies: - "@types/unist" "*" + "@types/unist" "^2" "@types/mime@^1": version "1.3.2" @@ -4254,10 +4280,10 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" - integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +"@types/unist@*", "@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.7.tgz#5b06ad6894b236a1d2bd6b2f07850ca5c59cf4d6" + integrity sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g== "@types/ws@^8.5.1": version "8.5.3" @@ -6123,18 +6149,18 @@ cspell-dictionary@6.31.1: fast-equals "^4.0.3" gensequence "^5.0.2" -cspell-gitignore@6.31.1: - version "6.31.1" - resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-6.31.1.tgz#3000c4c6c740c04d6178c62a9b83111d5fc96779" - integrity sha512-PAcmjN6X89Z8qgjem6HYb+VmvVtKuc+fWs4sk21+jv2MiLk23Bkp+8slSaIDVR//58fxJkMx17PHyo2cDO/69A== +cspell-gitignore@6.31.2: + version "6.31.2" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-6.31.2.tgz#c297f0c094a96ea1ba8849fd17fb1a7feb274318" + integrity sha512-B1i8aiXCIbb/08u0K3xnDyXtg0qD+lb5B2itOOXi7KXlPkKvIuN4hWyXxhVDweWyYWEzyXD5wBpPrqICVrStHQ== dependencies: - cspell-glob "6.31.1" + cspell-glob "6.31.2" find-up "^5.0.0" -cspell-glob@6.31.1: - version "6.31.1" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-6.31.1.tgz#525db68469790f3d0c856fcdef7616dfbecfe1d2" - integrity sha512-ygEmr5hgE4QtO5+L3/ihfMKBhPipbapfS22ilksFSChKMc15Regds0z+z/1ZBoe+OFAPneQfIuBxMwQ/fB00GQ== +cspell-glob@6.31.2: + version "6.31.2" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-6.31.2.tgz#877d914420e38aa3b375066f425e5a33514cc5e2" + integrity sha512-ceTjHM4HaBgvG5S3oiB+PTPYq58EQYG6MmYpycDHzpR5I2H1NurK9lxWHfANmLbi0DsHn58tIZNDMUnnQj19Jw== dependencies: micromatch "^4.0.5" @@ -6146,20 +6172,20 @@ cspell-grammar@6.31.1: "@cspell/cspell-pipe" "6.31.1" "@cspell/cspell-types" "6.31.1" -cspell-io@6.31.1: - version "6.31.1" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-6.31.1.tgz#5f26437e6e5d525a73c708bf524da50a180f3c2c" - integrity sha512-deZcpvTYY/NmLfOdOtzcm+nDvJZozKmj4TY3pPpX0HquPX0A/w42bFRT/zZNmRslFl8vvrCZZUog7SOc6ha3uA== +cspell-io@6.31.2: + version "6.31.2" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-6.31.2.tgz#5b1059779b8417510df077781a82cbe2b5c7463b" + integrity sha512-Lp7LsF/f35LaOneROb/9mWiprShz2ONxjYFAt3bYP7gIxq41lWi8QhO+SN6spoqPp/wQXjSqJ7MuTZsemxPRnA== dependencies: "@cspell/cspell-service-bus" "6.31.1" node-fetch "^2.6.9" -cspell-lib@6.31.1: - version "6.31.1" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-6.31.1.tgz#716fe73302086d384e756ece917d50dafa6cfda4" - integrity sha512-KgSiulbLExY+z2jGwkO77+aAkyugsPAw7y07j3hTQLpd+0esPCZqrmbo2ItnkvkDNd/c34PqQCr7/044/rz8gw== +cspell-lib@6.31.2: + version "6.31.2" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-6.31.2.tgz#46e1f89876e5a5c055bc2493562c2c6d7ebff8fb" + integrity sha512-LqaB2ZfVfQHKL5aZzYoKU6/UxxAtWeXAYwpC9l+satXmajYyXtAh4kWmuW+y7kKRH2jA79rJQS3QE6ToeSqgQQ== dependencies: - "@cspell/cspell-bundled-dicts" "6.31.1" + "@cspell/cspell-bundled-dicts" "6.31.2" "@cspell/cspell-pipe" "6.31.1" "@cspell/cspell-types" "6.31.1" "@cspell/strong-weak-map" "6.31.1" @@ -6168,9 +6194,9 @@ cspell-lib@6.31.1: configstore "^5.0.1" cosmiconfig "8.0.0" cspell-dictionary "6.31.1" - cspell-glob "6.31.1" + cspell-glob "6.31.2" cspell-grammar "6.31.1" - cspell-io "6.31.1" + cspell-io "6.31.2" cspell-trie-lib "6.31.1" fast-equals "^4.0.3" find-up "^5.0.0" @@ -6191,18 +6217,19 @@ cspell-trie-lib@6.31.1: gensequence "^5.0.2" cspell@^6.31.1: - version "6.31.1" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-6.31.1.tgz#78a1b3d32c8f6f232fb1a00b2df8a8e8d72cf6fe" - integrity sha512-gyCtpkOpwI/TGibbtIgMBFnAUUp2hnYdvW/9Ky4RcneHtLH0+V/jUEbZD8HbRKz0GVZ6mhKWbNRSEyP9p3Cejw== + version "6.31.2" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-6.31.2.tgz#c334ac34353fe446d82c27fe348bb17b4b3e9f7f" + integrity sha512-HJcQ8jqL/1N3Mj5dufFnIZCX3ACuRoFTSVY6h3Bo5wBqd2iiJTyeQ1SY9Zymlxtb2KyJ6jQRiFmkWeFx2HVs7w== dependencies: "@cspell/cspell-pipe" "6.31.1" + "@cspell/cspell-types" "6.31.1" "@cspell/dynamic-import" "6.31.1" chalk "^4.1.2" commander "^10.0.0" - cspell-gitignore "6.31.1" - cspell-glob "6.31.1" - cspell-io "6.31.1" - cspell-lib "6.31.1" + cspell-gitignore "6.31.2" + cspell-glob "6.31.2" + cspell-io "6.31.2" + cspell-lib "6.31.2" fast-glob "^3.2.12" fast-json-stable-stringify "^2.1.0" file-entry-cache "^6.0.1" @@ -6217,10 +6244,10 @@ css-declaration-sorter@^6.3.0: resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== -css-functions-list@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.1.0.tgz#cf5b09f835ad91a00e5959bcfc627cd498e1321b" - integrity sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w== +css-functions-list@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.0.tgz#8290b7d064bf483f48d6559c10e98dc4d1ad19ee" + integrity sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg== css-loader@^6.7.1: version "6.7.1" @@ -7007,32 +7034,32 @@ esbuild@~0.17.6: "@esbuild/win32-x64" "0.17.19" esbuild@~0.18.0: - version "0.18.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.13.tgz#59160add6c3420947fe008238140ed3480baf817" - integrity sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw== + version "0.18.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.15.tgz#5b5c1a22e608afd5675f82ad466c4d2cfd723f85" + integrity sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ== optionalDependencies: - "@esbuild/android-arm" "0.18.13" - "@esbuild/android-arm64" "0.18.13" - "@esbuild/android-x64" "0.18.13" - "@esbuild/darwin-arm64" "0.18.13" - "@esbuild/darwin-x64" "0.18.13" - "@esbuild/freebsd-arm64" "0.18.13" - "@esbuild/freebsd-x64" "0.18.13" - "@esbuild/linux-arm" "0.18.13" - "@esbuild/linux-arm64" "0.18.13" - "@esbuild/linux-ia32" "0.18.13" - "@esbuild/linux-loong64" "0.18.13" - "@esbuild/linux-mips64el" "0.18.13" - "@esbuild/linux-ppc64" "0.18.13" - "@esbuild/linux-riscv64" "0.18.13" - "@esbuild/linux-s390x" "0.18.13" - "@esbuild/linux-x64" "0.18.13" - "@esbuild/netbsd-x64" "0.18.13" - "@esbuild/openbsd-x64" "0.18.13" - "@esbuild/sunos-x64" "0.18.13" - "@esbuild/win32-arm64" "0.18.13" - "@esbuild/win32-ia32" "0.18.13" - "@esbuild/win32-x64" "0.18.13" + "@esbuild/android-arm" "0.18.15" + "@esbuild/android-arm64" "0.18.15" + "@esbuild/android-x64" "0.18.15" + "@esbuild/darwin-arm64" "0.18.15" + "@esbuild/darwin-x64" "0.18.15" + "@esbuild/freebsd-arm64" "0.18.15" + "@esbuild/freebsd-x64" "0.18.15" + "@esbuild/linux-arm" "0.18.15" + "@esbuild/linux-arm64" "0.18.15" + "@esbuild/linux-ia32" "0.18.15" + "@esbuild/linux-loong64" "0.18.15" + "@esbuild/linux-mips64el" "0.18.15" + "@esbuild/linux-ppc64" "0.18.15" + "@esbuild/linux-riscv64" "0.18.15" + "@esbuild/linux-s390x" "0.18.15" + "@esbuild/linux-x64" "0.18.15" + "@esbuild/netbsd-x64" "0.18.15" + "@esbuild/openbsd-x64" "0.18.15" + "@esbuild/sunos-x64" "0.18.15" + "@esbuild/win32-arm64" "0.18.15" + "@esbuild/win32-ia32" "0.18.15" + "@esbuild/win32-x64" "0.18.15" escalade@^3.1.1: version "3.1.1" @@ -7098,9 +7125,9 @@ eslint-plugin-eslint-comments@^3.2.0: ignore "^5.0.5" eslint-plugin-eslint-plugin@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.0.tgz#040e08aa057d187418acae9d7c336b156ba1db07" - integrity sha512-HOzgLRSZJdEZpLaXbA3qd/4Sfa09W6NTzDBqWd5zeQNc1wnsGfGYGE2Rr8nVDeckyFT5u7GlU+lYrXF89UyECg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.1.tgz#1de9f0511b0300bf85b3ddb29e9f7653fa684bf0" + integrity sha512-4MGDsG505Ot2TSDSYxFL0cpDo4Y+t6hKB8cfZw9Jx484VjXWDfiYC/A6cccWFtWoOOC0j+wGgQIIb11cdIAMBg== dependencies: eslint-utils "^3.0.0" estraverse "^5.3.0" @@ -9964,15 +9991,15 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" -lerna@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.1.3.tgz#9aef15620b54038b1e4c5ea620c6b9b7590f26a4" - integrity sha512-LMs9HU0z5fNFMNOyDVinJcf04QaScReJ8Q2pqxO+nPOmbvNsBwykBgMTWLboL1rI1CCR0/WLdMnvObvR52MtTw== +lerna@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-7.1.4.tgz#0778732f4c77ead71a20ba1e9b0a77edc75cb383" + integrity sha512-/cabvmTTkmayyALIZx7OpHRex72i8xSOkiJchEkrKxAZHoLNaGSwqwKkj+x6WtmchhWl/gLlqwQXGRuxrJKiBw== dependencies: - "@lerna/child-process" "7.1.3" - "@lerna/create" "7.1.3" + "@lerna/child-process" "7.1.4" + "@lerna/create" "7.1.4" "@npmcli/run-script" "6.0.2" - "@nx/devkit" ">=16.1.3 < 17" + "@nx/devkit" ">=16.5.1 < 17" "@octokit/plugin-enterprise-rest" "6.0.1" "@octokit/rest" "19.0.11" byte-size "8.1.1" @@ -10006,6 +10033,7 @@ lerna@7.1.3: libnpmaccess "7.0.2" libnpmpublish "7.3.0" load-json-file "6.2.0" + lodash "^4.17.21" make-dir "3.1.0" minimatch "3.0.5" multimatch "5.0.0" @@ -10014,7 +10042,7 @@ lerna@7.1.3: npm-packlist "5.1.1" npm-registry-fetch "^14.0.5" npmlog "^6.0.2" - nx ">=16.1.3 < 17" + nx ">=16.5.1 < 17" p-map "4.0.0" p-map-series "2.1.0" p-pipe "3.1.0" @@ -11297,12 +11325,12 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nx-cloud@16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/nx-cloud/-/nx-cloud-16.1.0.tgz#77a57ed50311de7a2124bbd2ac2128e08e938b03" - integrity sha512-2K5OuJ4MEDrn2solje2X+a3UxSCdfR5PIscCRQbBANyvJfl3hGJSTxz0n5xeJJX4cKcQlfAxDQFRH6DHNdTGPQ== +nx-cloud@16.1.1: + version "16.1.1" + resolved "https://registry.yarnpkg.com/nx-cloud/-/nx-cloud-16.1.1.tgz#103ae0f13f5eb05d6ddd6d9bfcafc56cf295a59a" + integrity sha512-Rq7ynvkYzAJ67N3pDqU6cMqwvWP7WXJGP4EFjLxgUrRHNCccqDPggeAqePodfk3nZEUrZB8F5QBKZuuw1DR3oA== dependencies: - "@nrwl/nx-cloud" "16.1.0" + "@nrwl/nx-cloud" "16.1.1" axios "1.1.3" chalk "^4.1.0" dotenv "~10.0.0" @@ -11313,12 +11341,12 @@ nx-cloud@16.1.0: tar "6.1.11" yargs-parser ">=21.1.1" -nx@16.5.1, "nx@>=16.1.3 < 17": - version "16.5.1" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.1.tgz#fc0d19090d8faae5f431f9fec199adf95881150c" - integrity sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g== +nx@16.5.2, "nx@>=16.5.1 < 17": + version "16.5.2" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.2.tgz#a271513abe73324fdf2924277d5f273d807a6f0e" + integrity sha512-3XAkVBhXuoFgD7r0lASOh2589XSmBUjioevZb13lDjKDN/FHFWedwMZWtmmbzxBGO3EAWjl+3owBS1RIPm1UHw== dependencies: - "@nrwl/tao" "16.5.1" + "@nrwl/tao" "16.5.2" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -11353,23 +11381,23 @@ nx@16.5.1, "nx@>=16.1.3 < 17": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.5.1" - "@nx/nx-darwin-x64" "16.5.1" - "@nx/nx-freebsd-x64" "16.5.1" - "@nx/nx-linux-arm-gnueabihf" "16.5.1" - "@nx/nx-linux-arm64-gnu" "16.5.1" - "@nx/nx-linux-arm64-musl" "16.5.1" - "@nx/nx-linux-x64-gnu" "16.5.1" - "@nx/nx-linux-x64-musl" "16.5.1" - "@nx/nx-win32-arm64-msvc" "16.5.1" - "@nx/nx-win32-x64-msvc" "16.5.1" - -nx@16.5.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.2.tgz#a271513abe73324fdf2924277d5f273d807a6f0e" - integrity sha512-3XAkVBhXuoFgD7r0lASOh2589XSmBUjioevZb13lDjKDN/FHFWedwMZWtmmbzxBGO3EAWjl+3owBS1RIPm1UHw== + "@nx/nx-darwin-arm64" "16.5.2" + "@nx/nx-darwin-x64" "16.5.2" + "@nx/nx-freebsd-x64" "16.5.2" + "@nx/nx-linux-arm-gnueabihf" "16.5.2" + "@nx/nx-linux-arm64-gnu" "16.5.2" + "@nx/nx-linux-arm64-musl" "16.5.2" + "@nx/nx-linux-x64-gnu" "16.5.2" + "@nx/nx-linux-x64-musl" "16.5.2" + "@nx/nx-win32-arm64-msvc" "16.5.2" + "@nx/nx-win32-x64-msvc" "16.5.2" + +nx@16.5.3: + version "16.5.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.5.3.tgz#6f90dba8c5cd17dedeea9e922487bafbcfe632ad" + integrity sha512-VxhOijTT3evTsKEa2qsBqSroaFj/tSvRKOc1K7MPlhokB5wLEedehzbwICCjIkicPHLImiKExjPs0l290DJLwA== dependencies: - "@nrwl/tao" "16.5.2" + "@nrwl/tao" "16.5.3" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -11404,16 +11432,16 @@ nx@16.5.2: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.5.2" - "@nx/nx-darwin-x64" "16.5.2" - "@nx/nx-freebsd-x64" "16.5.2" - "@nx/nx-linux-arm-gnueabihf" "16.5.2" - "@nx/nx-linux-arm64-gnu" "16.5.2" - "@nx/nx-linux-arm64-musl" "16.5.2" - "@nx/nx-linux-x64-gnu" "16.5.2" - "@nx/nx-linux-x64-musl" "16.5.2" - "@nx/nx-win32-arm64-msvc" "16.5.2" - "@nx/nx-win32-x64-msvc" "16.5.2" + "@nx/nx-darwin-arm64" "16.5.3" + "@nx/nx-darwin-x64" "16.5.3" + "@nx/nx-freebsd-x64" "16.5.3" + "@nx/nx-linux-arm-gnueabihf" "16.5.3" + "@nx/nx-linux-arm64-gnu" "16.5.3" + "@nx/nx-linux-arm64-musl" "16.5.3" + "@nx/nx-linux-x64-gnu" "16.5.3" + "@nx/nx-linux-x64-musl" "16.5.3" + "@nx/nx-win32-arm64-msvc" "16.5.3" + "@nx/nx-win32-x64-msvc" "16.5.3" object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -12308,10 +12336,10 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.7: - version "8.4.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.25.tgz#4a133f5e379eda7f61e906c3b1aaa9b81292726f" - integrity sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw== +postcss@^8.3.11, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.25, postcss@^8.4.7: + version "8.4.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -13386,20 +13414,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@~7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@~7.3.0: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -14098,9 +14119,9 @@ stylelint-order@^6.0.3: postcss-sorting "^8.0.2" stylelint@^15.10.1: - version "15.10.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.10.1.tgz#93f189958687e330c106b010cbec0c41dcae506d" - integrity sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ== + version "15.10.2" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.10.2.tgz#0ee5a8371d3a2e1ff27fefd48309d3ddef7c3405" + integrity sha512-UxqSb3hB74g4DTO45QhUHkJMjKKU//lNUAOWyvPBVPZbCknJ5HjOWWZo+UDuhHa9FLeVdHBZXxu43eXkjyIPWg== dependencies: "@csstools/css-parser-algorithms" "^2.3.0" "@csstools/css-tokenizer" "^2.1.1" @@ -14109,7 +14130,7 @@ stylelint@^15.10.1: balanced-match "^2.0.0" colord "^2.9.3" cosmiconfig "^8.2.0" - css-functions-list "^3.1.0" + css-functions-list "^3.2.0" css-tree "^2.3.1" debug "^4.3.4" fast-glob "^3.3.0" @@ -14129,7 +14150,7 @@ stylelint@^15.10.1: micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.24" + postcss "^8.4.25" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" postcss-selector-parser "^6.0.13" @@ -15179,9 +15200,9 @@ webpack-sources@^3.2.2, webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.73.0, webpack@^5.88.1: - version "5.88.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.1.tgz#21eba01e81bd5edff1968aea726e2fbfd557d3f8" - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== + version "5.88.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" + integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0"