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" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy