From 3e18a319236776798e7b068a27b3d5fab8184230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josh=20Goldberg=20=E2=9C=A8?= Date: Tue, 4 Jul 2023 10:11:27 -0700 Subject: [PATCH 01/11] docs: added announcing-typescript-eslint-v6 blog post (#7156) * docs: added announcing-typescript-eslint-v6 blog post * Mention hasFullTypeInformation * Apply suggestions from code review Co-authored-by: Brad Zacher * Added diff patches * Moved a few points around, and added exports section * Fix for check-spelling --------- Co-authored-by: Brad Zacher --- .cspell.json | 2 + ...13-announcing-typescript-eslint-v6-beta.md | 30 +- ...3-07-09-announcing-typescript-eslint-v6.md | 695 ++++++++++++++++++ 3 files changed, 722 insertions(+), 5 deletions(-) create mode 100644 packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md diff --git a/.cspell.json b/.cspell.json index b8e07af48645..cdd6953ad7f8 100644 --- a/.cspell.json +++ b/.cspell.json @@ -44,6 +44,7 @@ "ambiently", "Armano", "astexplorer", + "Astro", "ASTs", "autofix", "autofixers", @@ -114,6 +115,7 @@ "transpiles", "transpiling", "triaging", + "trpc", "tsconfigs", "tseslint", "tsutils", diff --git a/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md b/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md index c2ef412cace3..a3b7c74da082 100644 --- a/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md +++ b/packages/website/blog/2023-03-13-announcing-typescript-eslint-v6-beta.md @@ -4,12 +4,17 @@ authors: name: Josh Goldberg title: typescript-eslint Maintainer url: https://github.com/JoshuaKGoldberg -description: Describing what an AST (Abstract Syntax Tree) is and why it's useful for ESLint and TypeScript tooling. +description: Announcing the release of typescript-eslint's v6 beta, including its changes and timeline. slug: announcing-typescript-eslint-v6-beta tags: [breaking changes, typescript-eslint, v5, v6] title: Announcing typescript-eslint v6 Beta --- +:::caution Newer Information Available +This blog post is now out of date, as we've released typescript-eslint v6! 🚀 +Please see [Announcing typescript-eslint v6](./2023-07-09-announcing-typescript-eslint-v6.md) for the latest information. +::: + [typescript-eslint](https://typescript-eslint.io) is the tooling that enables standard JavaScript tools such as [ESLint](https://eslint.org) and [Prettier](https://prettier.io) to support TypeScript code. We've been working on a set of breaking changes and general features that we're excited to get in front of users soon. And now, after over two years of development, we're excited to say that typescript-eslint v6 is ready for public beta testing! 🎉 @@ -148,6 +153,11 @@ Miscellaneous changes to all shared configurations include: ### Rule Breaking Changes +:::caution Newer Information Available +This section is now out of date, as we've released typescript-eslint v6! 🚀 +Please see [Announcing typescript-eslint v6 > Rule Breaking Changes](./2023-07-09-announcing-typescript-eslint-v6.md#rule-breaking-changes) for the latest information. +::: + Several rules were changed in significant enough ways to be considered breaking changes: - Previously deprecated rules are deleted ([chore(eslint-plugin): remove deprecated rules for v6](https://github.com/typescript-eslint/typescript-eslint/pull/6112)): @@ -156,10 +166,15 @@ Several rules were changed in significant enough ways to be considered breaking - `@typescript-eslint/no-parameter-properties` - `@typescript-eslint/sort-type-union-intersection-members` - [feat(eslint-plugin): [prefer-nullish-coalescing]: add support for assignment expressions](https://github.com/typescript-eslint/typescript-eslint/pull/5234): Enhances the [`@typescript-eslint/prefer-nullish-coalescing`](https://v6--typescript-eslint.netlify.app/prefer-nullish-coalescing) rule to also check `||=` expressions. -- ⏳ [feat(eslint-plugin): [prefer-optional-chain] use type checking for strict falsiness](https://github.com/typescript-eslint/typescript-eslint/pull/6240): Fixes edge case bugs in the [`@typescript-eslint/prefer-optional-chain`](https://v6--typescript-eslint.netlify.app/prefer-optional-chain) rule around false positives, at the cost of making it require type information. +- [feat(eslint-plugin): [prefer-optional-chain] use type checking for strict falsiness](https://github.com/typescript-eslint/typescript-eslint/pull/6240): Rewrites the [`@typescript-eslint/prefer-optional-chain`](https://v6--typescript-eslint.netlify.app/prefer-optional-chain) rule to fix numerous false positives, at the cost of making it require type information. ### Tooling Breaking Changes +:::caution Newer Information Available +This section is now out of date, as we've released typescript-eslint v6! 🚀 +Please see [Announcing typescript-eslint v6 > Tooling Breaking Changes](./2023-07-09-announcing-typescript-eslint-v6.md#tooling-breaking-changes) for the latest information. +::: + - [feat(typescript-estree): deprecate createDefaultProgram](https://github.com/typescript-eslint/typescript-eslint/pull/5890): Renames `createDefaultProgram` to `deprecated__createDefaultProgram`, with associated `@deprecated` TSDoc tags and warnings. - [feat: drop support for node v12](https://github.com/typescript-eslint/typescript-eslint/pull/5918) - [feat: bump minimum supported TS version to 4.2.4](https://github.com/typescript-eslint/typescript-eslint/pull/5915): this matches [DefinitelyTyped's 2-year support window](https://github.com/DefinitelyTyped/DefinitelyTyped#support-window). @@ -221,7 +236,7 @@ For now, the available wrapper APIs are: We hope these wrapper APIs make it more convenient to write lint rules that rely on the awesome power of TypeScript's type checking. In the future, we may add more wrapper APIs, and may even add internal caching to those APIs to improve performance. -:::note +:::caution Newer Information Available Rules can still retrieve their full backing TypeScript type checker with `services.program.getTypeChecker()`. This can be necessary for TypeScript APIs not wrapped by the parser services. ::: @@ -247,7 +262,7 @@ If you author any ESLint rules that refer to the syntax mentioned by them, these ### Errors on Invalid AST Parsing -:::note +:::caution Newer Information Available These changes only impact API consumers of typescript-eslint that work at parsing level. If the extent of your API usage is writing custom rules, these changes don't impact you. ::: @@ -277,6 +292,11 @@ For more information, see: ### Other Developer-Facing Breaking Changes +:::caution Newer Information Available +This section is now out of date, as we've released typescript-eslint v6! 🚀 +Please see [Announcing typescript-eslint v6 > Other Developer-Facing Breaking Changes](./2023-07-09-announcing-typescript-eslint-v6.md#other-developer-facing-breaking-changes) for the latest information. +::: + - [feat: remove semantically invalid properties from TSEnumDeclaration, TSInterfaceDeclaration and TSModuleDeclaration](https://github.com/typescript-eslint/typescript-eslint/pull/4863): Removes some properties from those AST node types that should generally not have existed to begin with. - [fix(utils): removed TRuleListener generic from the createRule](https://github.com/typescript-eslint/typescript-eslint/pull/5036): Makes `createRule`-created rules more portable in the type system. - [feat(utils): remove (ts-)eslint-scope types](https://github.com/typescript-eslint/typescript-eslint/pull/5256): Removes no-longer-useful `TSESLintScope` types from the `@typescript-eslint/utils` package. Use `@typescript-eslint/scope-manager` directly instead. @@ -284,7 +304,7 @@ For more information, see: - To recap the terminology: - An _argument_ is something you provide to a recipient, such as a type provided explicitly to a call expression. - A _parameter_ is how the recipient receives what you provide, such as a function declaration's generic type parameter. - - [Enhancement: Add test-only console warnings to deprecated AST properties](https://github.com/typescript-eslint/typescript-eslint/issues/6469): The properties will include a `console.log` that triggers only in test environments, to encourage developers to move off of them. +- [Enhancement: Add test-only console warnings to deprecated AST properties](https://github.com/typescript-eslint/typescript-eslint/issues/6469): The properties will include a `console.log` that triggers only in test environments, to encourage developers to move off of them. - [feat(scope-manager): ignore ECMA version](https://github.com/typescript-eslint/typescript-eslint/pull/5889): `@typescript-eslint/scope-manager` no longer includes properties referring to `ecmaVersion`, `isES6`, or other ECMA versioning options. It instead now always assumes ESNext. - [feat: remove partial type-information program](https://github.com/typescript-eslint/typescript-eslint/pull/6066): When user configurations don't provide a `parserOptions.project`, parser services will no longer include a `program` with incomplete type information. `program` will be `null` instead. - [feat: remove experimental-utils](https://github.com/typescript-eslint/typescript-eslint/pull/6468): The `@typescript-eslint/experimental-utils` package has since been renamed to `@typescript-eslint/utils`. 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 new file mode 100644 index 000000000000..f9f327389046 --- /dev/null +++ b/packages/website/blog/2023-07-09-announcing-typescript-eslint-v6.md @@ -0,0 +1,695 @@ +--- +authors: + - image_url: https://www.joshuakgoldberg.com/img/josh.jpg + name: Josh Goldberg + title: typescript-eslint Maintainer + url: https://github.com/JoshuaKGoldberg +description: Announcing the release of typescript-eslint's stable v6 release, including its changes and timeline. +slug: announcing-typescript-eslint-v6 +tags: [breaking changes, typescript-eslint, v5, v6] +title: Announcing typescript-eslint v6 +--- + +[typescript-eslint](https://typescript-eslint.io) is the tooling that enables standard JavaScript tools such as [ESLint](https://eslint.org) and [Prettier](https://prettier.io) to support TypeScript code. +We've been working on a set of breaking changes and general features that we're excited to get in released! 🎉 + +We'd previously blogged about v6 in [Announcing typescript-eslint v6 Beta](./2023-03-13-announcing-typescript-eslint-v6-beta.md). +This blog post contains much of the same information as that one, but updated for changes made since the beta - including a few breaking changes. + + + +> ✨ indicates a change that was not present in the v6 beta. + +## Using v6 + +Whether you're new to linting your TypeScript code or a returning user, please do upgrade to the latest major version of typescript-eslint! +V6 comes with a suite of quality-of-life improvements we think you'll appreciate. + +### As A New User + +If you don't yet use typescript-eslint, you can go through our [configuration steps on the _Getting Started_ docs](/getting-started). +It'll walk you through setting up typescript-eslint in a project. + +### As An Existing User + +If you already use typescript-eslint, you'll need to first replace your package's previous versions of `@typescript-eslint/eslint-plugin` and `@typescript-eslint/parser` with the latest versions: + +```shell +npm i @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest --save-dev +``` + +We highly recommend then basing your ESLint configuration on the reworked typescript-eslint [recommended configurations mentioned later in this post](#configuration-breaking-changes) — especially if it's been a while since you've reworked your linter config. + +## User-Facing Breaking Changes + +These are the changes that users of typescript-eslint -generally, any developer running ESLint on TypeScript code- should pay attention to when upgrading typescript-eslint from v5 to v6. + +### Reworked Configuration Names + +The biggest configuration change in typescript-eslint v6 is that we've reworked the names of our [provided user configuration files](https://typescript-eslint.io/linting/configs). +typescript-eslint v5 provided three recommended configurations: + +- [`recommended`](https://typescript-eslint.io/linting/configs#recommended): Recommended rules for code correctness that you can drop in without additional configuration. +- [`recommended-requiring-type-checking`](https://typescript-eslint.io/linting/configs#recommended-requiring-type-checking): Additional recommended rules that require type information. +- [`strict`](https://typescript-eslint.io/linting/configs#strict): Additional strict rules that can also catch bugs but are more opinionated than recommended rules. + +Those configurations worked well for most projects. +However, some users correctly noted two flaws in that approach: + +- Strict rules that didn't require type checking were lumped in with those that did. +- _Stylistic_ best practices were lumped in with rules that actually find bugs. + +As a result, we've reworked the configurations provided by typescript-eslint into these two groups: + +- Functional rule configurations, for best best practices and code correctness: + - **`recommended`**: Recommended rules that you can drop in without additional configuration. + - **`recommended-type-checked`**: Additional recommended rules that require type information. + - **`strict`**: Additional strict rules that can also catch bugs but are more opinionated than recommended rules _(without type information)_. + - **`strict-type-checked`**: Additional strict rules that do require type information. +- Stylistic rule configurations, for consistent and predictable syntax usage: + - **`stylistic`**: Stylistic rules you can drop in without additional configuration. + - **`stylistic-type-checked`**: Additional stylistic rules that require type information. + +> `recommended-requiring-type-checking` is now an alias for `recommended-type-checked`. +> The alias will be removed in a future major version. + +As of v6, we recommend that projects enable two configs from the above: + +- If you are _not_ using typed linting, enable `stylistic` and either `recommended` or `strict`, depending on how intensely you'd like your lint rules to scrutinize your code. +- If you _are_ using typed linting, enable `stylistic-type-checked` and either `recommended-type-checked` or `strict-type-checked`, depending on how intensely you'd like your lint rules to scrutinize your code. + +For example, a typical project that enables typed linting might have an ESLint configuration file that changes like: + +```js title=".eslintrc.cjs" +module.exports = { + extends: [ + 'eslint:recommended', + // Removed lines start + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + // Removed lines end + // Added lines start + 'plugin:@typescript-eslint/recommended-type-checked', + 'plugin:@typescript-eslint/stylistic-type-checked', + // Added lines end + ], + plugins: ['@typescript-eslint'], + parser: '@typescript-eslint/parser', + parserOptions: { + // Remove this line + project: './tsconfig.json', + // Add this line + project: true, + tsconfigRootDir: __dirname, + }, + root: true, +}; +``` + +See [our _Configurations_ linting docs](/linting/configs) for the updated documentation on configurations provided by typescript-eslint. + +For more information on these changes, see: + +- [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. + +### Updated Configuration Rules + +Every new major version of typescript-eslint comes with changes to which rules are enabled in the preset configurations - and with which options. +Because this release also includes a reworking of the configurations themselves, the list of changes is too large to put in this blog post. +Instead see the table in [Changes to configurations for 6.0.0](https://github.com/typescript-eslint/typescript-eslint/discussions/6014) and [Configs: Last round of "final" changes to configs for v6](https://github.com/typescript-eslint/typescript-eslint/discussions/7130) for a full description of the changes. + +:::tip +If your ESLint configuration contains many `rules` configurations, we suggest the following strategy to start anew: + +1. Remove all your rules configurations +2. Extend from the preset configs that make sense for you +3. Run ESLint on your project +4. In your ESLint configuration, turn off any rules creating errors that don't make sense for your project - with comments explaining why +5. In your ESLint configuration and/or with inline `eslint-disable` comments, turn off any rules creating too many errors for you to fix - with _"TODO"_ comments linking to tracking issues/tickets to re-enable them + +::: + +Miscellaneous changes to all shared configurations include: + +- [fix(eslint-plugin): remove valid-typeof disable in eslint-recommended](https://github.com/typescript-eslint/typescript-eslint/pull/5381): Removes the disabling of ESLint's `valid-typeof` rule from our preset configs. + + + +
+Diff patch from v5's recommended to v6's recommended and stylistic configs + +```diff +{ + '@typescript-eslint/adjacent-overload-signatures': '...', ++ '@typescript-eslint/array-type': '...', + '@typescript-eslint/ban-ts-comment': '...', ++ '@typescript-eslint/ban-tslint-comment': '...', + '@typescript-eslint/ban-types': '...', ++ '@typescript-eslint/class-literal-property-style': '...', ++ '@typescript-eslint/consistent-generic-constructors': '...', ++ '@typescript-eslint/consistent-indexed-object-style': '...', ++ '@typescript-eslint/consistent-type-assertions': '...', ++ '@typescript-eslint/consistent-type-definitions': '...', + 'no-array-constructor': '...', + '@typescript-eslint/no-array-constructor': '...', ++ '@typescript-eslint/no-confusing-non-null-assertion': '...', ++ '@typescript-eslint/no-duplicate-enum-values': '...', + 'no-empty-function': '...', + '@typescript-eslint/no-empty-function': '...', + '@typescript-eslint/no-empty-interface': '...', +- '@typescript-eslint/no-explicit-any': '...', + '@typescript-eslint/no-extra-non-null-assertion': '...', +- 'no-extra-semi': '...', +- '@typescript-eslint/no-extra-semi': '...', + '@typescript-eslint/no-inferrable-types': '...', + 'no-loss-of-precision': '...', + '@typescript-eslint/no-loss-of-precision': '...', + '@typescript-eslint/no-misused-new': '...', + '@typescript-eslint/no-namespace': '...', + '@typescript-eslint/no-non-null-asserted-optional-chain': '...', +- '@typescript-eslint/no-non-null-assertion': '...', + '@typescript-eslint/no-this-alias': '...', + '@typescript-eslint/no-unnecessary-type-constraint': '...', ++ '@typescript-eslint/no-unsafe-declaration-merging': '...', + 'no-unused-vars': '...', + '@typescript-eslint/no-unused-vars': '...', + '@typescript-eslint/no-var-requires': '...', + '@typescript-eslint/prefer-as-const': '...', ++ '@typescript-eslint/prefer-for-of': '...', ++ '@typescript-eslint/prefer-function-type': '...', + '@typescript-eslint/prefer-namespace-keyword': '...', ++ '@typescript-eslint/prefer-optional-chain': '...', ++ '@typescript-eslint/sort-type-constituents': '...', + '@typescript-eslint/triple-slash-reference': '...', +} +``` + +
+ +
+Diff patch from v5's recommended and recommended-type-checked to v6's recommended-type-checked and stylistic-type-checked configs + +```diff +{ + '@typescript-eslint/adjacent-overload-signatures': '...', ++ '@typescript-eslint/array-type': '...', + '@typescript-eslint/await-thenable': '...', + '@typescript-eslint/ban-ts-comment': '...', ++ '@typescript-eslint/ban-tslint-comment': '...', + '@typescript-eslint/ban-types': '...', ++ '@typescript-eslint/class-literal-property-style': '...', ++ '@typescript-eslint/consistent-generic-constructors': '...', ++ '@typescript-eslint/consistent-indexed-object-style': '...', ++ '@typescript-eslint/consistent-type-assertions': '...', ++ '@typescript-eslint/consistent-type-definitions': '...', ++ 'dot-notation': '...', ++ '@typescript-eslint/dot-notation': '...', + 'no-array-constructor': '...', + '@typescript-eslint/no-array-constructor': '...', ++ '@typescript-eslint/no-base-to-string': '...', ++ '@typescript-eslint/no-confusing-non-null-assertion': '...', ++ '@typescript-eslint/no-confusing-void-expression': '...', ++ '@typescript-eslint/no-duplicate-enum-values': '...', ++ '@typescript-eslint/no-duplicate-type-constituents': '...', + 'no-empty-function': '...', + '@typescript-eslint/no-empty-function': '...', + '@typescript-eslint/no-empty-interface': '...', +- '@typescript-eslint/no-explicit-any': '...', + '@typescript-eslint/no-extra-non-null-assertion': '...', +- 'no-extra-semi': '...', +- '@typescript-eslint/no-extra-semi': '...', + '@typescript-eslint/no-floating-promises': '...', + '@typescript-eslint/no-for-in-array': '...', + 'no-implied-eval': '...', + '@typescript-eslint/no-implied-eval': '...', + '@typescript-eslint/no-inferrable-types': '...', + 'no-loss-of-precision': '...', + '@typescript-eslint/no-loss-of-precision': '...', + '@typescript-eslint/no-misused-new': '...', + '@typescript-eslint/no-misused-promises': '...', + '@typescript-eslint/no-namespace': '...', + '@typescript-eslint/no-non-null-asserted-optional-chain': '...', +- '@typescript-eslint/no-non-null-assertion': '...', ++ '@typescript-eslint/no-redundant-type-constituents': '...', + '@typescript-eslint/no-this-alias': '...', + '@typescript-eslint/no-unnecessary-type-assertion': '...', + '@typescript-eslint/no-unnecessary-type-constraint': '...', + '@typescript-eslint/no-unsafe-argument': '...', + '@typescript-eslint/no-unsafe-assignment': '...', + '@typescript-eslint/no-unsafe-call': '...', ++ '@typescript-eslint/no-unsafe-declaration-merging': '...', ++ '@typescript-eslint/no-unsafe-enum-comparison': '...', + '@typescript-eslint/no-unsafe-member-access': '...', + '@typescript-eslint/no-unsafe-return': '...', + 'no-unused-vars': '...', + '@typescript-eslint/no-unused-vars': '...', + '@typescript-eslint/no-var-requires': '...', ++ '@typescript-eslint/non-nullable-type-assertion-style': '...', + '@typescript-eslint/prefer-as-const': '...', ++ '@typescript-eslint/prefer-for-of': '...', ++ '@typescript-eslint/prefer-function-type': '...', + '@typescript-eslint/prefer-namespace-keyword': '...', ++ '@typescript-eslint/prefer-nullish-coalescing': '...', ++ '@typescript-eslint/prefer-optional-chain': '...', ++ '@typescript-eslint/prefer-string-starts-ends-with': '...', + 'require-await': '...', + '@typescript-eslint/require-await': '...', + '@typescript-eslint/restrict-plus-operands': '...', + '@typescript-eslint/restrict-template-expressions': '...', ++ '@typescript-eslint/sort-type-constituents': '...', + '@typescript-eslint/triple-slash-reference': '...', + '@typescript-eslint/unbound-method': '...', +} +``` + +
+ +
+Code that generated those diffs + +```js +const v5Recommended = { + '@typescript-eslint/adjacent-overload-signatures': 'error', + '@typescript-eslint/ban-ts-comment': 'error', + '@typescript-eslint/ban-types': 'error', + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'error', + 'no-empty-function': 'off', + '@typescript-eslint/no-empty-function': 'error', + '@typescript-eslint/no-empty-interface': 'error', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-extra-non-null-assertion': 'error', + 'no-extra-semi': 'off', + '@typescript-eslint/no-extra-semi': 'error', + '@typescript-eslint/no-inferrable-types': 'error', + 'no-loss-of-precision': 'off', + '@typescript-eslint/no-loss-of-precision': 'error', + '@typescript-eslint/no-misused-new': 'error', + '@typescript-eslint/no-namespace': 'error', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', + '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-this-alias': 'error', + '@typescript-eslint/no-unnecessary-type-constraint': 'error', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/no-var-requires': 'error', + '@typescript-eslint/prefer-as-const': 'error', + '@typescript-eslint/prefer-namespace-keyword': 'error', + '@typescript-eslint/triple-slash-reference': 'error', +}; + +const v5RecommendedRequiringTypeChecking = { + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/no-for-in-array': 'error', + 'no-implied-eval': 'off', + '@typescript-eslint/no-implied-eval': 'error', + '@typescript-eslint/no-misused-promises': 'error', + '@typescript-eslint/no-unnecessary-type-assertion': 'error', + '@typescript-eslint/no-unsafe-argument': 'error', + '@typescript-eslint/no-unsafe-assignment': 'error', + '@typescript-eslint/no-unsafe-call': 'error', + '@typescript-eslint/no-unsafe-member-access': 'error', + '@typescript-eslint/no-unsafe-return': 'error', + 'require-await': 'off', + '@typescript-eslint/require-await': 'error', + '@typescript-eslint/restrict-plus-operands': 'error', + '@typescript-eslint/restrict-template-expressions': 'error', + '@typescript-eslint/unbound-method': 'error', +}; + +const v6RecommendedTypeChecked = { + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/ban-ts-comment': 'error', + '@typescript-eslint/ban-types': 'error', + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'error', + '@typescript-eslint/no-base-to-string': 'error', + '@typescript-eslint/no-duplicate-enum-values': 'error', + '@typescript-eslint/no-duplicate-type-constituents': 'error', + '@typescript-eslint/no-extra-non-null-assertion': 'error', + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/no-for-in-array': 'error', + 'no-implied-eval': 'off', + '@typescript-eslint/no-implied-eval': 'error', + 'no-loss-of-precision': 'off', + '@typescript-eslint/no-loss-of-precision': 'error', + '@typescript-eslint/no-misused-new': 'error', + '@typescript-eslint/no-misused-promises': 'error', + '@typescript-eslint/no-namespace': 'error', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', + '@typescript-eslint/no-redundant-type-constituents': 'error', + '@typescript-eslint/no-this-alias': 'error', + '@typescript-eslint/no-unnecessary-type-assertion': 'error', + '@typescript-eslint/no-unnecessary-type-constraint': 'error', + '@typescript-eslint/no-unsafe-argument': 'error', + '@typescript-eslint/no-unsafe-assignment': 'error', + '@typescript-eslint/no-unsafe-call': 'error', + '@typescript-eslint/no-unsafe-declaration-merging': 'error', + '@typescript-eslint/no-unsafe-enum-comparison': 'error', + '@typescript-eslint/no-unsafe-member-access': 'error', + '@typescript-eslint/no-unsafe-return': 'error', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-var-requires': 'error', + '@typescript-eslint/prefer-as-const': 'error', + 'require-await': 'off', + '@typescript-eslint/require-await': 'error', + '@typescript-eslint/restrict-plus-operands': 'error', + '@typescript-eslint/restrict-template-expressions': 'error', + '@typescript-eslint/triple-slash-reference': 'error', + '@typescript-eslint/unbound-method': 'error', +}; + +const v6Recommended = { + '@typescript-eslint/ban-ts-comment': 'error', + '@typescript-eslint/ban-types': 'error', + 'no-array-constructor': 'off', + '@typescript-eslint/no-array-constructor': 'error', + '@typescript-eslint/no-duplicate-enum-values': 'error', + '@typescript-eslint/no-extra-non-null-assertion': 'error', + 'no-loss-of-precision': 'off', + '@typescript-eslint/no-loss-of-precision': 'error', + '@typescript-eslint/no-misused-new': 'error', + '@typescript-eslint/no-namespace': 'error', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', + '@typescript-eslint/no-this-alias': 'error', + '@typescript-eslint/no-unnecessary-type-constraint': 'error', + '@typescript-eslint/no-unsafe-declaration-merging': 'error', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-var-requires': 'error', + '@typescript-eslint/prefer-as-const': 'error', + '@typescript-eslint/triple-slash-reference': 'error', +}; + +const v6Stylistic = { + '@typescript-eslint/adjacent-overload-signatures': 'error', + '@typescript-eslint/array-type': 'error', + '@typescript-eslint/ban-tslint-comment': 'error', + '@typescript-eslint/class-literal-property-style': 'error', + '@typescript-eslint/consistent-generic-constructors': 'error', + '@typescript-eslint/consistent-indexed-object-style': 'error', + '@typescript-eslint/consistent-type-assertions': 'error', + '@typescript-eslint/consistent-type-definitions': 'error', + '@typescript-eslint/no-confusing-non-null-assertion': 'error', + 'no-empty-function': 'off', + '@typescript-eslint/no-empty-function': 'error', + '@typescript-eslint/no-empty-interface': 'error', + '@typescript-eslint/no-inferrable-types': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/prefer-function-type': 'error', + '@typescript-eslint/prefer-namespace-keyword': 'error', + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/sort-type-constituents': 'error', +}; + +const v6StylisticTypeChecked = { + '@typescript-eslint/adjacent-overload-signatures': 'error', + '@typescript-eslint/array-type': 'error', + '@typescript-eslint/ban-tslint-comment': 'error', + '@typescript-eslint/class-literal-property-style': 'error', + '@typescript-eslint/consistent-generic-constructors': 'error', + '@typescript-eslint/consistent-indexed-object-style': 'error', + '@typescript-eslint/consistent-type-assertions': 'error', + '@typescript-eslint/consistent-type-definitions': 'error', + 'dot-notation': 'off', + '@typescript-eslint/dot-notation': 'error', + '@typescript-eslint/no-confusing-non-null-assertion': 'error', + '@typescript-eslint/no-confusing-void-expression': 'error', + 'no-empty-function': 'off', + '@typescript-eslint/no-empty-function': 'error', + '@typescript-eslint/no-empty-interface': 'error', + '@typescript-eslint/no-inferrable-types': 'error', + '@typescript-eslint/non-nullable-type-assertion-style': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/prefer-function-type': 'error', + '@typescript-eslint/prefer-namespace-keyword': 'error', + '@typescript-eslint/prefer-nullish-coalescing': 'error', + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/prefer-string-starts-ends-with': 'error', + '@typescript-eslint/sort-type-constituents': 'error', +}; + +function createDiffPatch(v5, v6) { + const v5Keys = new Set(Object.keys(v5)); + const v6Keys = new Set(Object.keys(v6)); + const output = ['{']; + + for (const key of Array.from(new Set([...v5Keys, ...v6Keys])).sort((a, b) => + trimSlash(a).localeCompare(trimSlash(b)), + )) { + const prefix = v5Keys.has(key) ? (v6Keys.has(key) ? ' ' : '-') : '+'; + + output.push(`${prefix} '${key}': '...',`); + } + + output.push('}'); + + return output.join('\n'); +} + +function trimSlash(text) { + return text.startsWith('@typescript-eslint/') + ? text.slice('@typescript-eslint/'.length) + : text; +} + +console.log('From v5 recommended to v6 recommended & stylistic:'); + +console.log( + createDiffPatch(v5Recommended, { ...v6Recommended, ...v6Stylistic }), +); + +console.log( + '\nFrom v5 recommended & recommended-requiring-type-checking to v6 recommended-type-checked & stylistic-type-checked:', +); + +console.log( + createDiffPatch( + { + ...v5Recommended, + ...v5RecommendedRequiringTypeChecking, + }, + { ...v6RecommendedTypeChecked, ...v6StylisticTypeChecked }, + ), +); +``` + +
+ + + +### Rule Breaking Changes + +Several rules were changed in significant enough ways to be considered breaking changes: + +- Previously deprecated rules are deleted ([chore(eslint-plugin): remove deprecated rules for v6](https://github.com/typescript-eslint/typescript-eslint/pull/6112)): + - `@typescript-eslint/no-duplicate-imports` + - `@typescript-eslint/no-implicit-any-catch` + - `@typescript-eslint/no-parameter-properties` + - `@typescript-eslint/sort-type-union-intersection-members` +- [feat(eslint-plugin): [prefer-nullish-coalescing]: add support for assignment expressions](https://github.com/typescript-eslint/typescript-eslint/pull/5234): Enhances the [`@typescript-eslint/prefer-nullish-coalescing`](https://typescript-eslint.io/prefer-nullish-coalescing) rule to also check `||=` expressions. +- [feat(eslint-plugin): [prefer-optional-chain] use type checking for strict falsiness](https://github.com/typescript-eslint/typescript-eslint/pull/6240): Fixes edge case bugs in the [`@typescript-eslint/prefer-optional-chain`](https://typescript-eslint.io/prefer-optional-chain) rule around false positives, at the cost of making it require type information. +- ✨ [feat(eslint-plugin): [restrict-plus-operands] change checkCompoundAssignments to skipCompoundAssignments](https://github.com/typescript-eslint/typescript-eslint/pull/7027): inverses the logical value of the option and renames it +- ✨ [feat(eslint-plugin): [prefer-optional-chain] handle cases where the first operands are unrelated to the rest of the chain and add type info](https://github.com/typescript-eslint/typescript-eslint/pull/6397): uses type information to make the rule more intelligent about when to flag violations + +### Tooling Breaking Changes + +- [feat(typescript-estree): deprecate createDefaultProgram](https://github.com/typescript-eslint/typescript-eslint/pull/5890): Renames `createDefaultProgram` to `deprecated__createDefaultProgram`, with associated `@deprecated` TSDoc tags and warnings. +- Drop support for Node v12 and v14 + - [feat: drop support for node v12](https://github.com/typescript-eslint/typescript-eslint/pull/5918) + - ✨ [feat: drop support for node v14 and test against node v20](https://github.com/typescript-eslint/typescript-eslint/pull/7022): as Node 14 is now EOL +- [feat: bump minimum supported TS version to 4.2.4](https://github.com/typescript-eslint/typescript-eslint/pull/5915): this matches [DefinitelyTyped's 2-year support window](https://github.com/DefinitelyTyped/DefinitelyTyped#support-window). +- [chore: drop support for ESLint v6](https://github.com/typescript-eslint/typescript-eslint/pull/5972) +- [feat(eslint-plugin): [prefer-readonly-parameter-types] added an optional type allowlist](https://github.com/typescript-eslint/typescript-eslint/pull/4436): changes the public `isTypeReadonlyArrayOrTuple` function's first argument from a `checker: ts.TypeChecker` to a full `program: ts.Program` +- ✨ [feat: add new package `rule-tester`](https://github.com/typescript-eslint/typescript-eslint/pull/6777): creates a new `@typescript-eslint/rule-tester` package for testing rules, and updates our documentation to recommend it + +## Developer-Facing Changes + +typescript-eslint v6 comes with a suite of cleanups and improvements for developers as well. +If you author any ESLint plugins or other tools that interact with TypeScript syntax, then we recommend you try out typescript-eslint v6 soon. +It includes some breaking changes that you may need to accommodate for. + +:::tip +If you're having trouble with the changes, please let us know on [the typescript-eslint Discord](https://discord.gg/FSxKq8Tdyg)! +::: + +### Type Checker Wrapper APIs + +As described in our [ASTs and typescript-eslint](/blog/asts-and-typescript-eslint) post, ESLint rules don't natively work with AST nodes compatible with TypeScript's API. +Retrieving type information for an ESLint AST node in a custom rule requires code somewhat like: + +```ts title="custom-rule-with-v5.ts" +{ + // ... + create() { + const services = util.getParserServices(context); + const checker = services.program.getTypeChecker(); + const tsNode = services.esTreeNodeToTSNodeMap.get(esNode); + const type = checker.getTypeAtLocation(node); + + // ... + } + // ... +} +``` + +How cumbersome, just to call to a single method (`getTypeAtLocation`) on the TypeScript API! + +In typescript-eslint v6, we've added a set of wrapper APIs on the `services: ParserServices` object that act as shortcuts for commonly used TypeScript APIs including `getTypeAtLocation`: + +```ts title="custom-rule-with-v6.ts" +{ + // ... + create() { + const services = util.getParserServices(context); + const type = services.getTypeAtLocation(node); + + // ... + } + // ... +} +``` + +For now, the available wrapper APIs are: + +- `getSymbolAtLocation`: passes an ESTree's equivalent TypeScript node to `checker.getSymbolAtLocation` +- `getTypeAtLocation`: passes an ESTree node's equivalent TypeScript node to `checker.getTypeAtLocation` + +We hope these wrapper APIs make it more convenient to write lint rules that rely on the awesome power of TypeScript's type checking. +In the future, we may add more wrapper APIs, and may even add internal caching to those APIs to improve performance. + +:::note +Rules can still retrieve their full backing TypeScript type checker with `services.program.getTypeChecker()`. +This can be necessary for TypeScript APIs not wrapped by the parser services. +::: + +See [_Custom Rules_](https://typescript-eslint.io/custom-rules) for the updated documentation on creating custom rules with typescript-eslint. + +### AST Breaking Changes + +These PRs changed the AST shapes generated by typescript-eslint when parsing code. +If you author any ESLint rules that refer to the syntax mentioned by them, these are relevant to you. + +- [feat: remove semantically invalid properties from TSEnumDeclaration, TSInterfaceDeclaration and TSModuleDeclaration](https://github.com/typescript-eslint/typescript-eslint/pull/4863): Removes some properties from those AST node types that should generally not have existed to begin with. +- [fix(utils): removed TRuleListener generic from the createRule](https://github.com/typescript-eslint/typescript-eslint/pull/5036): Makes `createRule`-created rules more portable in the type system. +- [feat: made BaseNode.parent non-optional](https://github.com/typescript-eslint/typescript-eslint/pull/5252): makes the `node.parent` property on AST nodes non-optional (`TSESTree.Node` instead of `TSESTree.Node | undefined`). +- [fix: rename typeParameters to typeArguments where needed](https://github.com/typescript-eslint/typescript-eslint/pull/5384): corrects the names of AST properties that were called _parameters_ instead of _arguments_. + - To recap the terminology: + - An _argument_ is something you provide to a recipient, such as a type provided explicitly to a call expression. + - A _parameter_ is how the recipient receives what you provide, such as a function declaration's generic type parameter. +- [fix(ast-spec): correct some incorrect ast types](https://github.com/typescript-eslint/typescript-eslint/pull/6257): applies the following changes to correct erroneous types of AST node properties: + - `ArrayExpressions`'s `elements` property can now include `null` (i.e. is now `(Expression | SpreadElement | null)[]`), for the case of sparse arrays (e.g. `[1, , 3]`). + - `MemberExpression`'s `object` property is now `Expression`, not `LeftHandSideExpression`. + - `ObjectLiteralElement` no longer allows for `MethodDefinition`. +- [fix(typescript-estree): wrap import = declaration in an export node](https://github.com/typescript-eslint/typescript-eslint/pull/5885): Exported `TSImportEqualsDeclaration` nodes are now wrapped in an `ExportNamedDeclaration` node instead of having `.isExport = true` property. +- [fix(ast-spec): remove more invalid properties](https://github.com/typescript-eslint/typescript-eslint/pull/6243): applies the following changes to remove invalid properties from AST nodes: + - `MethodDefinitionBase` no longer has a `typeParameters` property. + - `TSIndexSignature`, `TSMethodSignature`, and `TSPropertySignatureBase` no longer have an `export` property. + - `TSPropertySignatureBase` no longer has an `initializer` property. +- [fix(typescript-estree): account for namespace nesting in AST conversion](https://github.com/typescript-eslint/typescript-eslint/pull/6272): Namespaces with qualified names like `Abc.Def` now use a `TSQualifiedName` node, instead of a nested body structure. +- [feat(typescript-estree): remove optionality from AST boolean properties](https://github.com/typescript-eslint/typescript-eslint/pull/6274): Switches most AST properties marked as `?: boolean` to `: boolean`, as well as some properties marked as `?:` optional to `| undefined`. This results in more predictable AST node object shapes. + +### Errors on Invalid AST Parsing + +:::note +These changes only impact API consumers of typescript-eslint that work at parsing level. +If the extent of your API usage is writing custom rules, these changes don't impact you. +::: + +The `@typescript-eslint/typescript-estree` parser is by default very forgiving of invalid ASTs. +If it encounters invalid syntax, it will still attempt create an AST if possible: even if required properties of nodes don't exist. + +For example, this snippet of TypeScript code creates a `ClassDeclaration` whose `id` is `null`: + +```ts +export class {} +``` + +Invalid parsed ASTs can cause problems for downstream tools expecting AST nodes to adhere to the ESTree spec. +ESLint rules in particular tend to crash when given invalid ASTs. + +`@typescript-eslint/typescript-estree` will now throw an error when it encounters a known invalid AST such as the `export class {}` example. +This is generally the correct behavior for most parsing contexts so downstream tools don't have to work with a potentially invalid AST. + +For consumers that don't want the updated behavior of throwing on invalid ASTs, a new `allowInvalidAST` option exists to disable the throwing behavior. +Keep in mind that with it enabled, ASTs produced by typescript-eslint might not match their TSESTree type definitions. + +For more information, see: + +- The backing issue: [Parsing: strictly enforce the produced AST matches the spec and enforce most "error recovery" parsing errors](https://github.com/typescript-eslint/typescript-eslint/issues/1852) +- The implementing pull request: [feat(typescript-estree): added allowInvalidAST option to throw on invalid tokens](https://github.com/typescript-eslint/typescript-eslint/pull/6247) +- ✨ [fix: fix illegal decorator check](https://github.com/typescript-eslint/typescript-eslint/pull/6723): improves how invalid decorator syntax is parsed and reported on + +### Package Exports + +The v5 `@typescript-eslint/` packages don't use [Node.js package.json exports](https://nodejs.org/api/packages.html#package-entry-points), so anyone can import any file in any package by directly referencing a path within the dist folder. +For example: + +```ts +import * as TSESLint from '@typescript-eslint/utils/dist/ts-eslint'; +``` + +That presents a few issues for developers: + +- It can be unclear which of many potential import paths to use +- TypeScript sometimes suggests importing types or values meant to be private +- Consumers using deep import paths can be broken by internal refactors that rename files + +As of [feat: add package.json exports for public packages](https://github.com/typescript-eslint/typescript-eslint/pull/6458), `@typescript-eslint/*` packages now use `exports` to prevent importing internal file paths. +Developers must now mostly import directly from the package names, e.g.: + +```ts +import * as TSESLint from '@typescript-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. + +### Other Developer-Facing Breaking Changes + +- [feat(utils): remove (ts-)eslint-scope types](https://github.com/typescript-eslint/typescript-eslint/pull/5256): Removes no-longer-useful `TSESLintScope` types from the `@typescript-eslint/utils` package. Use `@typescript-eslint/scope-manager` directly instead. +- [Enhancement: Add test-only console warnings to deprecated AST properties](https://github.com/typescript-eslint/typescript-eslint/issues/6469): The properties will include a `console.log` that triggers only in test environments, to encourage developers to move off of them. +- [feat(scope-manager): ignore ECMA version](https://github.com/typescript-eslint/typescript-eslint/pull/5889): `@typescript-eslint/scope-manager` no longer includes properties referring to `ecmaVersion`, `isES6`, or other ECMA versioning options. It instead now always assumes ESNext. +- [feat: remove partial type-information program](https://github.com/typescript-eslint/typescript-eslint/pull/6066): When user configurations don't provide a `parserOptions.project`, parser services will no longer include a `program` with incomplete type information. `program` will be `null` instead. +- [feat: remove experimental-utils](https://github.com/typescript-eslint/typescript-eslint/pull/6468): The `@typescript-eslint/experimental-utils` package has since been renamed to `@typescript-eslint/utils`. + - As a result, the `errorOnTypeScriptSyntacticAndSemanticIssues` option will no longer be allowed if `parserOptions.project` is not provided. +- [chore(typescript-estree): remove visitor-keys backwards compat export](https://github.com/typescript-eslint/typescript-eslint/pull/6242): `visitorKeys` can now only be imported from `@typescript-eslint/visitor-keys`. Previously it was also re-exported by `@typescript-eslint/utils`. +- ✨ [feat: fork json schema types for better compat with ESLint rule validation](https://github.com/typescript-eslint/typescript-eslint/pull/6963): clarifies the JSON schema types exported for rule options to match ESLint's and remove an unsafe `[string: any]` index +- ✨ [feat(typescript-estree): remove parseWithNodeMaps](https://github.com/typescript-eslint/typescript-eslint/pull/7120): removed a `parseWithNodeMaps` API previously intended only for Prettier that is no longer used by Prettier +- ✨ [Consider keeping parserServices.hasFullTypeInformation for another major version?](https://github.com/typescript-eslint/typescript-eslint/issues/7124): we're removing an old, undocumented `hasFullTypeInformation` property from `parserServices`. + +## Appreciation + +We'd like to extend a sincere _thank you_ to everybody who pitched in to make typescript-eslint v6 possible. + +- Ourselves on the maintenance team: + - [Armano](https://github.com/armano2) + - [Brad Zacher](https://github.com/bradzacher) + - [James Henry](https://github.com/JamesHenry) + - [Josh Goldberg](https://github.com/JoshuaKGoldberg) + - [Joshua Chen](https://github.com/Josh-Cena) +- Community contributors whose PRs were merged into the 6.0.0 release: + + - [Bryan Mishkin](https://github.com/bmish) + - [fisker Cheung](https://github.com/fisker) + - [Juan García](https://github.com/juank1809) + - [Kevin Ball](https://github.com/kball) + - [Marek Dědič](https://github.com/marekdedic) + - [Mateusz Burzyński](https://github.com/Andarist) + +- Community projects that worked with us to try out the reworked preset configs: + - [Astro](https://github.com/withastro/astro/pull/7425) + - [Babel](https://github.com/babel/babel/pull/15716) + - [create-t3-app](https://github.com/t3-oss/create-t3-app/pull/1476) + - [trpc](https://github.com/trpc/trpc/pull/4541) + - [TypeScript](https://github.com/microsoft/TypeScript/pull/54693) + +See the [v6.0.0 milestone](https://github.com/typescript-eslint/typescript-eslint/milestone/8) for the list of issues and associated merged pull requests. + +## Supporting typescript-eslint + +If you enjoyed this blog post and/or or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint). +We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great. +Thanks! 💖 From b1a23a9138c929f2d2ee885a945b0c19d3fbbb04 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:06:39 -0400 Subject: [PATCH 02/11] chore: update sponsors (#7169) Co-authored-by: typescript-eslint[bot] --- packages/website/data/sponsors.json | 46 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json index 3178ef235c04..03ab7f5b766c 100644 --- a/packages/website/data/sponsors.json +++ b/packages/website/data/sponsors.json @@ -10,35 +10,35 @@ "id": "Nx (by Nrwl)", "image": "https://images.opencollective.com/nx/0efbe42/logo.png", "name": "Nx (by Nrwl)", - "totalDonations": 725000, + "totalDonations": 750000, "website": "https://nx.dev" }, { "id": "ESLint", "image": "https://images.opencollective.com/eslint/96b09dc/logo.png", "name": "ESLint", - "totalDonations": 320000, + "totalDonations": 335000, "website": "https://eslint.org/" }, { "id": "Hugging Face", "image": "https://images.opencollective.com/huggingface/5c934ee/logo.png", "name": "Hugging Face", - "totalDonations": 280000, + "totalDonations": 300000, "website": "https://huggingface.co" }, { "id": "Airbnb", "image": "https://images.opencollective.com/airbnb/d327d66/logo.png", "name": "Airbnb", - "totalDonations": 175800, + "totalDonations": 180800, "website": "https://www.airbnb.com/" }, { "id": "Codecademy", "image": "https://images.opencollective.com/codecademy/d56a48d/logo.png", "name": "Codecademy", - "totalDonations": 170000, + "totalDonations": 180000, "website": "https://codecademy.com" }, { @@ -48,6 +48,13 @@ "totalDonations": 150000, "website": "https://www.gitbook.com" }, + { + "id": "Sourcegraph", + "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", + "name": "Sourcegraph", + "totalDonations": 130000, + "website": "https://about.sourcegraph.com" + }, { "id": "n8n.io - n8n GmbH", "image": "https://images.opencollective.com/n8n/dca2f0c/logo.png", @@ -62,13 +69,6 @@ "totalDonations": 120000, "website": "https://blog.coinbase.com/engineering-and-security/home" }, - { - "id": "Sourcegraph", - "image": "https://images.opencollective.com/sourcegraph/67e40ff/logo.png", - "name": "Sourcegraph", - "totalDonations": 120000, - "website": "https://about.sourcegraph.com" - }, { "id": "Sentry", "image": "https://images.opencollective.com/sentry/9620d33/logo.png", @@ -104,6 +104,13 @@ "totalDonations": 54000, "website": "https://www.future-processing.com/" }, + { + "id": "STORIS", + "image": "https://images.opencollective.com/storis/dfb0e13/logo.png", + "name": "STORIS", + "totalDonations": 41000, + "website": "https://www.storis.com/" + }, { "id": "Whitebox", "image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png", @@ -111,13 +118,6 @@ "totalDonations": 40000, "website": "https://whitebox.com" }, - { - "id": "STORIS", - "image": "https://images.opencollective.com/storis/dfb0e13/logo.png", - "name": "STORIS", - "totalDonations": 38500, - "website": "https://www.storis.com/" - }, { "id": "Monito", "image": "https://images.opencollective.com/monito/50fc878/logo.png", @@ -150,7 +150,7 @@ "id": "David Johnston", "image": "https://images.opencollective.com/blacksheepcode/976d69a/avatar.png", "name": "David Johnston", - "totalDonations": 18500, + "totalDonations": 19000, "website": "https://blacksheepcode.com" }, { @@ -185,7 +185,7 @@ "id": "Evil Martians", "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png", "name": "Evil Martians", - "totalDonations": 13500, + "totalDonations": 14000, "website": "https://evilmartians.com/" }, { @@ -199,14 +199,14 @@ "id": "THE PADDING", "image": "https://images.opencollective.com/thepadding/55e79ad/logo.png", "name": "THE PADDING", - "totalDonations": 12000, + "totalDonations": 13000, "website": "https://paddn.com/" }, { "id": "Corellium", "image": "https://images.opencollective.com/corellium/aa8c228/logo.png", "name": "Corellium", - "totalDonations": 11400, + "totalDonations": 12000, "website": "https://www.corellium.com" }, { From 6edaa04565576f0af7e60bc08602bd781c847804 Mon Sep 17 00:00:00 2001 From: Omri Luzon Date: Sun, 9 Jul 2023 00:29:20 +0300 Subject: [PATCH 03/11] feat(eslint-plugin): [prefer-nullish-coalescing] add `ignorePrimitives` option (#6487) * issue-4906 - prefer-nullish-coalescing enhancment * remove comment * add doc * CR: sort keys * CR: import once * CR: remove unncessary "as const" * CR: Fix markdown lint rule * CR: Use binary OR to simplify loop * CR: More positive test cases - Literal types (true, 1, etc.) - Template literals (`hello${string}`) - Bigints (1n) - Combinations of the types (boolean | string | ...), etc. * CR: mixed * CR: remove implied line * CR: Move the note up * prettier fixz * Fix coverage, ts didn't know it has a default so it's not optional * CR1: Remove redundant check * CR2: Remove redundant check for the type-system * Add bigint option * markdown too * Fixed union test and JSON.stringify(ignorePrimitives) * flattening map * flattening map 2 * add examples to docs --- .../docs/rules/prefer-nullish-coalescing.md | 23 + .../src/rules/prefer-nullish-coalescing.ts | 54 ++- .../rules/prefer-nullish-coalescing.test.ts | 456 ++++++++++++++++++ 3 files changed, 525 insertions(+), 8 deletions(-) diff --git a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md index d2fc95f4066a..146e96a19fa3 100644 --- a/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +++ b/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md @@ -131,6 +131,29 @@ a ?? (b && c && d); **_NOTE:_** Errors for this specific case will be presented as suggestions (see below), instead of fixes. This is because it is not always safe to automatically convert `||` to `??` within a mixed logical expression, as we cannot tell the intended precedence of the operator. Note that by design, `??` requires parentheses when used with `&&` or `||` in the same expression. +### `ignorePrimitives` + +If you would like to ignore certain primitive types that can be falsy then you may pass an object containing a boolean value for each primitive: + +- `string: true`, ignores `null` or `undefined` unions with `string` (default: false). +- `number: true`, ignores `null` or `undefined` unions with `number` (default: false). +- `bigint: true`, ignores `null` or `undefined` unions with `bigint` (default: false). +- `boolean: true`, ignores `null` or `undefined` unions with `boolean` (default: false). + +Incorrect code for `ignorePrimitives: { string: true }`, and correct code for `ignorePrimitives: { string: false }`: + +```ts +const foo: string | undefined = 'bar'; +foo || 'a string'; +``` + +Correct code for `ignorePrimitives: { string: true }`: + +```ts +const foo: string | undefined = 'bar'; +foo ?? 'a string'; +``` + ## When Not To Use It If you are not using TypeScript 3.7 (or greater), then you will not be able to use this rule, as the operator is not supported. diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index 14157427efa0..5a1a33d386fb 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -7,10 +7,16 @@ import * as util from '../util'; export type Options = [ { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; ignoreConditionalTests?: boolean; - ignoreTernaryTests?: boolean; ignoreMixedLogicalExpressions?: boolean; - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean; + ignorePrimitives?: { + bigint?: boolean; + boolean?: boolean; + number?: boolean; + string?: boolean; + }; + ignoreTernaryTests?: boolean; }, ]; @@ -44,16 +50,25 @@ export default util.createRule({ { type: 'object', properties: { - ignoreConditionalTests: { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: { type: 'boolean', }, - ignoreTernaryTests: { + ignoreConditionalTests: { type: 'boolean', }, ignoreMixedLogicalExpressions: { type: 'boolean', }, - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: { + ignorePrimitives: { + type: 'object', + properties: { + bigint: { type: 'boolean' }, + boolean: { type: 'boolean' }, + number: { type: 'boolean' }, + string: { type: 'boolean' }, + }, + }, + ignoreTernaryTests: { type: 'boolean', }, }, @@ -63,20 +78,27 @@ export default util.createRule({ }, defaultOptions: [ { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false, ignoreConditionalTests: true, ignoreTernaryTests: true, ignoreMixedLogicalExpressions: true, - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false, + ignorePrimitives: { + bigint: false, + boolean: false, + number: false, + string: false, + }, }, ], create( context, [ { + allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing, ignoreConditionalTests, - ignoreTernaryTests, ignoreMixedLogicalExpressions, - allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing, + ignorePrimitives, + ignoreTernaryTests, }, ], ) { @@ -279,6 +301,22 @@ export default util.createRule({ return; } + const ignorableFlags = [ + ignorePrimitives!.bigint && ts.TypeFlags.BigInt, + ignorePrimitives!.boolean && ts.TypeFlags.BooleanLiteral, + ignorePrimitives!.number && ts.TypeFlags.Number, + ignorePrimitives!.string && ts.TypeFlags.String, + ] + .filter((flag): flag is number => flag !== undefined) + .reduce((previous, flag) => previous | flag, 0); + if ( + (type as ts.UnionOrIntersectionType).types.some(t => + tsutils.isTypeFlagSet(t, ignorableFlags), + ) + ) { + return; + } + const barBarOperator = util.nullThrows( sourceCode.getTokenAfter( node.left, 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 49e50e741a89..a2f91d436aaa 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -20,6 +20,7 @@ const ruleTester = new RuleTester({ const types = ['string', 'number', 'boolean', 'object']; const nullishTypes = ['null', 'undefined', 'null | undefined']; +const ignorablePrimitiveTypes = ['string', 'number', 'boolean', 'bigint']; function typeValidTest( cb: (type: string) => TSESLint.ValidTestCase | string, @@ -206,6 +207,13 @@ a && b || c || d; `, options: [{ ignoreMixedLogicalExpressions: true }], })), + ...ignorablePrimitiveTypes.map>(type => ({ + code: ` +declare const x: ${type} | undefined; +x || y; + `, + options: [{ ignorePrimitives: { [type]: true } }], + })), ], invalid: [ ...nullishTypeInvalidTest((nullish, type) => ({ @@ -751,5 +759,453 @@ declare const c: ${type}; }, ], })), + // default for missing option + { + code: ` +declare const x: string | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { number: true, boolean: true, bigint: true }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: number | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { string: true, boolean: true, bigint: true }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: boolean | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { string: true, number: true, bigint: true }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: bigint | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { string: true, number: true, boolean: true }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + // falsy + { + code: ` +declare const x: '' | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: \`\` | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0 | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: false | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: false, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + // truthy + { + code: ` +declare const x: 'a' | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: \`hello\${'string'}\` | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 1 | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 1n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: true | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: false, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + // Unions of same primitive + { + code: ` +declare const x: 'a' | 'b' | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 'a' | \`b\` | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: false, + number: true, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0 | 1 | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 1 | 2 | 3 | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0n | 1n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 1n | 2n | 3n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: true | false | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: false, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + // Mixed unions + { + code: ` +declare const x: 0 | 1 | 0n | 1n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0 | 1 | 0n | 1n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0 | 1 | 0n | 1n | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: false, + boolean: true, + bigint: false, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: true | false | null | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + string: true, + number: true, + boolean: false, + bigint: true, + }, + }, + ], + errors: [{ messageId: 'preferNullishOverOr' }], + }, + { + code: ` +declare const x: 0 | 'foo' | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + number: true, + string: true, + }, + }, + ], + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +declare const x: 0 | 'foo' | undefined; +x || y; + `, + options: [ + { + ignorePrimitives: { + number: true, + string: false, + }, + }, + ], + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, ], }); From 5a347a5978bc5737412bd12d61eb6058163cf4a0 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 9 Jul 2023 05:58:25 +0800 Subject: [PATCH 04/11] fix(eslint-plugin): [prefer-includes] escape special characters (#7161) fix: escape special characters #7145 --- .../src/rules/prefer-includes.ts | 33 +++++++++++++++---- .../tests/rules/prefer-includes.test.ts | 27 +++++++++++++++ 2 files changed, 54 insertions(+), 6 deletions(-) diff --git a/packages/eslint-plugin/src/rules/prefer-includes.ts b/packages/eslint-plugin/src/rules/prefer-includes.ts index e0b5719a5108..94ec93a2609f 100644 --- a/packages/eslint-plugin/src/rules/prefer-includes.ts +++ b/packages/eslint-plugin/src/rules/prefer-includes.ts @@ -124,6 +124,27 @@ export default createRule({ ); } + function escapeString(str: string): string { + const EscapeMap = { + '\0': '\\0', + "'": "\\'", + '\\': '\\\\', + '\n': '\\n', + '\r': '\\r', + '\v': '\\v', + '\t': '\\t', + '\f': '\\f', + // "\b" cause unexpected replacements + // '\b': '\\b', + }; + const replaceRegex = new RegExp(Object.values(EscapeMap).join('|'), 'g'); + + return str.replace( + replaceRegex, + char => EscapeMap[char as keyof typeof EscapeMap], + ); + } + function checkArrayIndexOf( node: TSESTree.MemberExpression, allowFixing: boolean, @@ -202,12 +223,11 @@ export default createRule({ }, // /bar/.test(foo) - 'CallExpression > MemberExpression.callee[property.name="test"][computed=false]'( - node: TSESTree.MemberExpression, + 'CallExpression[arguments.length=1] > MemberExpression.callee[property.name="test"][computed=false]'( + node: TSESTree.MemberExpression & { parent: TSESTree.CallExpression }, ): void { - const callNode = node.parent as TSESTree.CallExpression; - const text = - callNode.arguments.length === 1 ? parseRegExp(node.object) : null; + const callNode = node.parent; + const text = parseRegExp(node.object); if (text == null) { return; } @@ -237,13 +257,14 @@ export default createRule({ argNode.type !== AST_NODE_TYPES.CallExpression; yield fixer.removeRange([callNode.range[0], argNode.range[0]]); + yield fixer.removeRange([argNode.range[1], callNode.range[1]]); if (needsParen) { yield fixer.insertTextBefore(argNode, '('); yield fixer.insertTextAfter(argNode, ')'); } yield fixer.insertTextAfter( argNode, - `${node.optional ? '?.' : '.'}includes('${text}'`, + `${node.optional ? '?.' : '.'}includes('${escapeString(text)}')`, ); }, }); diff --git a/packages/eslint-plugin/tests/rules/prefer-includes.test.ts b/packages/eslint-plugin/tests/rules/prefer-includes.test.ts index 6b37be5c59f0..cca4472c3395 100644 --- a/packages/eslint-plugin/tests/rules/prefer-includes.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-includes.test.ts @@ -234,6 +234,33 @@ ruleTester.run('prefer-includes', rule, { `, errors: [{ messageId: 'preferStringIncludes' }], }, + // test SequenceExpression + { + code: ` + function f(a: string): void { + /bar/.test((1 + 1, a)); + } + `, + output: ` + function f(a: string): void { + (1 + 1, a).includes('bar'); + } + `, + errors: [{ messageId: 'preferStringIncludes' }], + }, + { + code: ` + function f(a: string): void { + /\\0'\\\\\\n\\r\\v\\t\\f/.test(a); + } + `, + output: ` + function f(a: string): void { + a.includes('\\0\\'\\\\\\n\\r\\v\\t\\f'); + } + `, + errors: [{ messageId: 'preferStringIncludes' }], + }, { code: ` const pattern = new RegExp('bar'); From 24bdacc7e5df40c92031a1bd7e9815d66a35b31d Mon Sep 17 00:00:00 2001 From: SHIMA RYUHEI <65934663+islandryu@users.noreply.github.com> Date: Sun, 9 Jul 2023 07:02:52 +0900 Subject: [PATCH 05/11] fix(eslint-plugin): [comma-spacing] allow no space after trailing comma in objects and arrays (#6938) * feat(eslint-plugin):[comma-spacing]allow no space after trailing comma in objects and arrays * feat(eslint-plugin):[comma-spacing]add test cases --- .../eslint-plugin/src/rules/comma-spacing.ts | 10 ++++ .../tests/rules/comma-spacing.test.ts | 49 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/packages/eslint-plugin/src/rules/comma-spacing.ts b/packages/eslint-plugin/src/rules/comma-spacing.ts index a1ebcc181f28..19133a2039f0 100644 --- a/packages/eslint-plugin/src/rules/comma-spacing.ts +++ b/packages/eslint-plugin/src/rules/comma-spacing.ts @@ -3,6 +3,8 @@ import { AST_TOKEN_TYPES } from '@typescript-eslint/utils'; import { createRule, + isClosingBraceToken, + isClosingBracketToken, isClosingParenToken, isCommaToken, isTokenOnSameLine, @@ -135,6 +137,14 @@ export default createRule({ return; } + if ( + spaceAfter && + nextToken && + (isClosingBraceToken(nextToken) || isClosingBracketToken(nextToken)) + ) { + return; + } + if (!spaceAfter && nextToken && nextToken.type === AST_TOKEN_TYPES.Line) { return; } diff --git a/packages/eslint-plugin/tests/rules/comma-spacing.test.ts b/packages/eslint-plugin/tests/rules/comma-spacing.test.ts index 37eb6e2e3adc..0adc181072ce 100644 --- a/packages/eslint-plugin/tests/rules/comma-spacing.test.ts +++ b/packages/eslint-plugin/tests/rules/comma-spacing.test.ts @@ -282,6 +282,55 @@ ruleTester.run('comma-spacing', rule, { 'interface Foo{}', 'interface A<> {}', 'let foo,', + 'const arr = [,];', + 'const arr = [ ,];', + 'const arr = [ , ];', + 'const arr = [1,];', + 'const arr = [ , 2];', + 'const arr = [,,];', + 'const arr = [ ,,];', + 'const arr = [, ,];', + 'const arr = [,, ];', + 'const arr = [ , ,];', + 'const arr = [ ,, ];', + 'const arr = [ , , ];', + 'const arr = [,, 3];', + 'const arr = [1, 2, 3,];', + 'const arr = [1, 2, 3, ];', + "const obj = {'foo':'bar', 'baz':'qur', };", + "const obj = {'foo':'bar', 'baz':'qur',};", + { code: 'const arr = [ ,];', options: [{ before: true, after: false }] }, + { code: 'const arr = [, ];', options: [{ before: true, after: false }] }, + { code: 'const arr = [ , ];', options: [{ before: true, after: false }] }, + { code: 'const arr = [ ,,];', options: [{ before: true, after: false }] }, + { code: 'const arr = [, ,];', options: [{ before: true, after: false }] }, + { code: 'const arr = [,, ];', options: [{ before: true, after: false }] }, + { code: 'const arr = [ , ,];', options: [{ before: true, after: false }] }, + { code: 'const arr = [ ,, ];', options: [{ before: true, after: false }] }, + { code: 'const arr = [, , ];', options: [{ before: true, after: false }] }, + { code: 'const arr = [ , , ];', options: [{ before: true, after: false }] }, + { + code: 'const arr = [ , , ];', + options: [{ before: false, after: false }], + }, + { code: 'const [a, b,] = [1, 2];', parserOptions: { ecmaVersion: 6 } }, + { + code: 'Hello, world', + options: [{ before: true, after: false }], + parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true } }, + }, + { code: '[a, /**/ , ]', options: [{ before: false, after: true }] }, + { code: '[a , /**/, ]', options: [{ before: true, after: true }] }, + { + code: '[a, /**/ , ] = foo', + options: [{ before: false, after: true }], + parserOptions: { ecmaVersion: 6 }, + }, + { + code: '[a , /**/, ] = foo', + options: [{ before: true, after: true }], + parserOptions: { ecmaVersion: 6 }, + }, ], invalid: [ From f82847556b0189fbbd00ab04f283701dd6208364 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jul 2023 18:17:53 -0400 Subject: [PATCH 06/11] chore(deps): update dependency @types/debug to v4.1.8 (#7072) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 71aafa4d5ca5..abedc1572edf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4042,9 +4042,9 @@ "@types/node" "*" "@types/debug@*", "@types/debug@^4.1.7": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" + integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== dependencies: "@types/ms" "*" From 2289d05f3e946af3cfeea5a38dd02a3ca0fe1642 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" <53356952+typescript-eslint[bot]@users.noreply.github.com> Date: Sat, 8 Jul 2023 18:18:18 -0400 Subject: [PATCH 07/11] chore: update contributors (#7152) Co-authored-by: typescript-eslint[bot] --- CONTRIBUTORS.md | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index b4c66749d3be..a7ae6f2d0680 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -15,65 +15,55 @@ Thanks goes to these wonderful people:
Michaël De Boey

Reyad Attiyat
+
SUZUKI Sosuke

Gareth Jones

Joshua Chen
-
Patricio Trevino
+
Patricio Trevino

YeonJuan

Nicholas C. Zakas

Jed Fox

Rafael Santana
-
Ben Lichtman
+
Ben Lichtman

Nikita

Taeheon Kim

Scott O'Hara

Retsam
-
Kai Cataldo
+
Kai Cataldo

Rasmus Eneman

Rebecca Stevens

Toru Nagashima

Yosuke Ota
-
JounQin
+
JounQin

Lucas Azzola

Omri Luzon

Simen Bekkhus

Danny Fritz
-
Ika
+
Ika

Mackie Underdown

Sviatoslav Zaytsev

Bryan Mishkin

Kanitkorn Sujautra
-
SHIMA RYUHEI
+
SHIMA RYUHEI
+
Zzzen

Anix
-
Cparros
-
ldrick
-
kmin-jeong
+
Pete Gonzalez

Gavin Barron
-
Kevin Partington
-
Shahar "Dawn" Or
-
koooge
-
thomas michael wallace
-
Juan García
+
Sylvia Favello
- -
Daniel Cassidy
-
Dimitri Mitropoulos
-
James Garbutt
-
Jonathan Delgado
-
Tadhg McDonald-Jensen
From 895b10607f45b9afae105bb392c8737415dfdd2a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Jul 2023 18:29:04 -0400 Subject: [PATCH 08/11] chore(deps): update dependency eslint-plugin-unicorn to v46.0.1 (#7023) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 531 ++++++------------------------------------------------ 1 file changed, 51 insertions(+), 480 deletions(-) diff --git a/yarn.lock b/yarn.lock index abedc1572edf..93a882b385c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -186,7 +186,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== @@ -268,7 +268,7 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== @@ -279,20 +279,7 @@ lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-class-features-plugin@^7.21.0": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" integrity sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw== @@ -307,15 +294,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" semver "^6.3.0" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-create-regexp-features-plugin@^7.20.5": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" integrity sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g== @@ -324,7 +303,7 @@ regexpu-core "^5.3.1" semver "^6.3.0" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": +"@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== @@ -348,7 +327,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== @@ -363,13 +342,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - "@babel/helper-member-expression-to-functions@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" @@ -384,7 +356,7 @@ dependencies: "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== @@ -410,17 +382,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== - -"@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== @@ -430,18 +397,7 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" integrity sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg== @@ -453,20 +409,13 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" -"@babel/helper-simple-access@^7.18.6", "@babel/helper-simple-access@^7.21.5": +"@babel/helper-simple-access@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: "@babel/types" "^7.21.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== - dependencies: - "@babel/types" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" @@ -536,15 +485,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" @@ -554,16 +494,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" @@ -582,15 +512,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-proposal-class-static-block@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" @@ -635,14 +556,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" @@ -676,17 +589,6 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-proposal-object-rest-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" @@ -706,15 +608,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" @@ -732,16 +625,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" @@ -809,13 +692,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-import-assertions@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" @@ -907,27 +783,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-typescript@^7.3.3": +"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-arrow-functions@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" @@ -935,15 +797,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.21.5" -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" @@ -960,13 +813,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" @@ -974,21 +820,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - "@babel/plugin-transform-classes@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" @@ -1004,13 +835,6 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-computed-properties@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" @@ -1019,13 +843,6 @@ "@babel/helper-plugin-utils" "^7.21.5" "@babel/template" "^7.20.7" -"@babel/plugin-transform-destructuring@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-destructuring@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" @@ -1056,13 +873,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-for-of@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" @@ -1093,15 +903,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" @@ -1110,16 +911,6 @@ "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-commonjs@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" @@ -1129,17 +920,6 @@ "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-simple-access" "^7.21.5" -"@babel/plugin-transform-modules-systemjs@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" - integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" @@ -1158,14 +938,6 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" @@ -1189,14 +961,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== @@ -1250,14 +1015,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - "@babel/plugin-transform-regenerator@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" @@ -1273,7 +1030,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.15.0": +"@babel/plugin-transform-runtime@^7.15.0", "@babel/plugin-transform-runtime@^7.18.6": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa" integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA== @@ -1285,18 +1042,6 @@ babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" -"@babel/plugin-transform-runtime@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" - integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" - semver "^6.3.0" - "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" @@ -1304,14 +1049,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-transform-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" @@ -1350,13 +1087,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-typescript" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-transform-unicode-escapes@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" @@ -1372,88 +1102,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.18.6": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" - integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== - dependencies: - "@babel/compat-data" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.19.0" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.13" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.0" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.3" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-env@^7.15.0": +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.18.6": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg== @@ -1612,7 +1261,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.3", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== @@ -4995,7 +4644,7 @@ axe-core@^4.6.2, axe-core@^4.7.0: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== -axios@1.1.3: +axios@1.1.3, axios@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== @@ -5011,15 +4660,6 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" -axios@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331" - integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axobject-query@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" @@ -5111,7 +4751,7 @@ babel-plugin-macros@^2.8.0: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.3: +babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== @@ -5120,14 +4760,6 @@ babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" @@ -5136,13 +4768,6 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" @@ -6109,7 +5734,7 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.21.0, core-js-compat@^3.25.1: +core-js-compat@^3.25.1: version "3.25.4" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.4.tgz#730a255d4a47a937513abf1672bf278dc24dcebf" integrity sha512-gCEcIEEqCR6230WroNunK/653CWKhqyCKJ9b+uESqOt/WFJA8B4lTnnQFdpYY5vmBcwJAA90Bo5vXs+CVsf6iA== @@ -7261,9 +6886,9 @@ eslint-plugin-simple-import-sort@^10.0.0: integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw== eslint-plugin-unicorn@^46.0.0: - version "46.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-46.0.0.tgz#b5cdcc9465fd6e46ab7968b87dd4a43adc8d6031" - integrity sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA== + version "46.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-46.0.1.tgz#222ff65b30b2d9ed6f90de908ceb6a05dd0514d9" + integrity sha512-setGhMTiLAddg1asdwjZ3hekIN5zLznNa5zll7pBPwFOka6greCKDQydfqy4fqyUhndi74wpDzClSQMEcmOaew== dependencies: "@babel/helper-validator-identifier" "^7.19.1" "@eslint-community/eslint-utils" "^4.1.2" @@ -7311,9 +6936,9 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== eslint@*, eslint@^8.15.0: version "8.39.0" @@ -9029,9 +8654,9 @@ is-buffer@^2.0.0: integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-builtin-module@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" - integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== dependencies: builtin-modules "^3.3.0" @@ -9055,9 +8680,9 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: has "^1.0.3" @@ -9886,7 +9511,7 @@ jsesc@^3.0.2: jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.0: version "3.0.0" @@ -11541,16 +11166,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.9, open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -open@~8.4.0: +open@^8.0.9, open@^8.4.0, open@~8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -12861,13 +12477,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -12885,13 +12494,6 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" @@ -12900,9 +12502,9 @@ regenerator-transform@^0.15.1: "@babel/runtime" "^7.8.4" regexp-tree@^0.1.24, regexp-tree@~0.1.1: - version "0.1.24" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" - integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== + version "0.1.27" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" + integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== regexp.prototype.flags@^1.4.3: version "1.4.3" @@ -12913,18 +12515,6 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - regexpu-core@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" @@ -12951,18 +12541,6 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== - dependencies: - jsesc "~0.5.0" - regjsparser@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" @@ -13115,16 +12693,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.2, resolve@~1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.12.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.2, resolve@~1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -13391,7 +12960,14 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -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.3.0: +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: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + 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== @@ -13755,9 +13331,9 @@ space-separated-tokens@^1.0.0: integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -13776,9 +13352,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== spdy-transport@^3.0.0: version "3.0.0" @@ -14579,11 +14155,6 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" From 4437d18015dfa7ed0fd77e736a1ddedb638eeb31 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 9 Jul 2023 06:29:50 +0800 Subject: [PATCH 09/11] docs: be more explicit about what restrict-template-expressions restricts (#7009) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: be more explicit about what restrict-template-expressions restricts * Update packages/eslint-plugin/docs/rules/restrict-template-expressions.md Co-authored-by: Joshua Chen * stringification is totally a word --------- Co-authored-by: Josh Goldberg ✨ Co-authored-by: Josh Goldberg --- .cspell.json | 1 + .../rules/restrict-template-expressions.md | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.cspell.json b/.cspell.json index cdd6953ad7f8..d89e5dbaf3d9 100644 --- a/.cspell.json +++ b/.cspell.json @@ -109,6 +109,7 @@ "rulesets", "serializers", "Sourcegraph", + "stringification", "superset", "thenables", "transpiled", diff --git a/packages/eslint-plugin/docs/rules/restrict-template-expressions.md b/packages/eslint-plugin/docs/rules/restrict-template-expressions.md index d7afae0ee264..eeb7c4881609 100644 --- a/packages/eslint-plugin/docs/rules/restrict-template-expressions.md +++ b/packages/eslint-plugin/docs/rules/restrict-template-expressions.md @@ -6,9 +6,19 @@ description: 'Enforce template literal expressions to be of `string` type.' > > See **https://typescript-eslint.io/rules/restrict-template-expressions** for documentation. -JavaScript will call `toString()` on an object when it is converted to a string, such as when `+` adding to a string or in `${}` template literals. -The default Object `.toString()` returns `"[object Object]"`, which is often not what was intended. -This rule reports on values used in a template literal string that aren't primitives and don't define a more useful `.toString()` method. +JavaScript automatically [converts an object to a string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion) in a string context, such as when concatenating it with a string using `+` or embedding it in a template literal using `${}`. +The default `toString()` method of objects returns `"[object Object]"`, which is often not what was intended. +This rule reports on values used in a template literal string that aren't strings, numbers, or BigInts, optionally allowing other data types that provide useful stringification results. + +:::note + +This rule intentionally does not allow objects with a custom `toString()` method to be used in template literals, because the stringification result may not be user-friendly. + +For example, arrays have a custom [`toString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) method, which only calls `join()` internally, which joins the array elements with commas. This means that (1) array elements are not necessarily stringified to useful results (2) the commas don't have spaces after them, making the result not user-friendly. The best way to format arrays is to use [`Intl.ListFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat), which even supports adding the "and" conjunction where necessary. +You must explicitly call `object.toString()` if you want to use this object in a template literal. +The [`no-base-to-string`](./no-base-to-string.md) rule can be used to guard this case against producing `"[object Object]"` by accident. + +::: ## Examples @@ -47,6 +57,8 @@ const msg1 = `arg = ${arg}`; const msg2 = `arg = ${arg || 'zero'}`; ``` +This option controls both numbers and BigInts. + ### `allowBoolean` Examples of additional **correct** code for this rule with `{ allowBoolean: true }`: From a8c824a1e84453f93cd2b464fc102bc878c1aff3 Mon Sep 17 00:00:00 2001 From: Melandra Date: Sun, 9 Jul 2023 21:59:39 +0200 Subject: [PATCH 10/11] fix(eslint-plugin): replace auto-fix of class literal property style rule with suggestion (#7054) * Complete sentence documenting turning on parserOptions.project * fix: replace auto-fix with suggestion * test: adapt tests to expect suggestion rather than output from auto-fix * fix: add return type * Revert "Complete sentence documenting turning on parserOptions.project" This reverts commit a05601f98f7432580136df291a90bfef89635165. * Replace text with suggestion * Replace both suggestion messages * Formatting * yarn format --------- Co-authored-by: Josh Goldberg --- .../src/rules/class-literal-property-style.ts | 70 +++-- .../class-literal-property-style.test.ts | 244 ++++++++++++------ 2 files changed, 205 insertions(+), 109 deletions(-) diff --git a/packages/eslint-plugin/src/rules/class-literal-property-style.ts b/packages/eslint-plugin/src/rules/class-literal-property-style.ts index ed49b144e478..d1eb4ae44703 100644 --- a/packages/eslint-plugin/src/rules/class-literal-property-style.ts +++ b/packages/eslint-plugin/src/rules/class-literal-property-style.ts @@ -1,10 +1,14 @@ -import type { TSESTree } from '@typescript-eslint/utils'; +import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; import { AST_NODE_TYPES } from '@typescript-eslint/utils'; import * as util from '../util'; type Options = ['fields' | 'getters']; -type MessageIds = 'preferFieldStyle' | 'preferGetterStyle'; +type MessageIds = + | 'preferFieldStyle' + | 'preferFieldStyleSuggestion' + | 'preferGetterStyle' + | 'preferGetterStyleSuggestion'; interface NodeWithModifiers { accessibility?: TSESTree.Accessibility; @@ -45,10 +49,12 @@ export default util.createRule({ 'Enforce that literals on classes are exposed in a consistent style', recommended: 'strict', }, - fixable: 'code', + hasSuggestions: true, messages: { preferFieldStyle: 'Literals should be exposed using readonly fields.', + preferFieldStyleSuggestion: 'Replace the literals with readonly fields.', preferGetterStyle: 'Literals should be exposed using getters.', + preferGetterStyleSuggestion: 'Replace the literals with getters.', }, schema: [{ enum: ['fields', 'getters'] }], }, @@ -80,18 +86,23 @@ export default util.createRule({ context.report({ node: node.key, messageId: 'preferFieldStyle', - fix(fixer) { - const sourceCode = context.getSourceCode(); - const name = sourceCode.getText(node.key); - - let text = ''; - - text += printNodeModifiers(node, 'readonly'); - text += node.computed ? `[${name}]` : name; - text += ` = ${sourceCode.getText(argument)};`; - - return fixer.replaceText(node, text); - }, + suggest: [ + { + messageId: 'preferFieldStyleSuggestion', + fix(fixer): TSESLint.RuleFix { + const sourceCode = context.getSourceCode(); + const name = sourceCode.getText(node.key); + + let text = ''; + + text += printNodeModifiers(node, 'readonly'); + text += node.computed ? `[${name}]` : name; + text += ` = ${sourceCode.getText(argument)};`; + + return fixer.replaceText(node, text); + }, + }, + ], }); }, }), @@ -110,18 +121,23 @@ export default util.createRule({ context.report({ node: node.key, messageId: 'preferGetterStyle', - fix(fixer) { - const sourceCode = context.getSourceCode(); - const name = sourceCode.getText(node.key); - - let text = ''; - - text += printNodeModifiers(node, 'get'); - text += node.computed ? `[${name}]` : name; - text += `() { return ${sourceCode.getText(value)}; }`; - - return fixer.replaceText(node, text); - }, + suggest: [ + { + messageId: 'preferGetterStyleSuggestion', + fix(fixer): TSESLint.RuleFix { + const sourceCode = context.getSourceCode(); + const name = sourceCode.getText(node.key); + + let text = ''; + + text += printNodeModifiers(node, 'get'); + text += node.computed ? `[${name}]` : name; + text += `() { return ${sourceCode.getText(value)}; }`; + + return fixer.replaceText(node, text); + }, + }, + ], }); }, }), diff --git a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts index af0aa203df7d..a0715bc24d2f 100644 --- a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts +++ b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts @@ -185,11 +185,6 @@ class Mx { get p1() { return 'hello world'; } -} - `, - output: ` -class Mx { - readonly p1 = 'hello world'; } `, errors: [ @@ -197,6 +192,16 @@ class Mx { messageId: 'preferFieldStyle', column: 7, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + readonly p1 = 'hello world'; +} + `, + }, + ], }, ], }, @@ -206,11 +211,6 @@ class Mx { get p1() { return \`hello world\`; } -} - `, - output: ` -class Mx { - readonly p1 = \`hello world\`; } `, errors: [ @@ -218,6 +218,16 @@ class Mx { messageId: 'preferFieldStyle', column: 7, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + readonly p1 = \`hello world\`; +} + `, + }, + ], }, ], }, @@ -227,11 +237,6 @@ class Mx { static get p1() { return 'hello world'; } -} - `, - output: ` -class Mx { - static readonly p1 = 'hello world'; } `, errors: [ @@ -239,6 +244,16 @@ class Mx { messageId: 'preferFieldStyle', column: 14, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + static readonly p1 = 'hello world'; +} + `, + }, + ], }, ], }, @@ -248,11 +263,6 @@ class Mx { public static get foo() { return 1; } -} - `, - output: ` -class Mx { - public static readonly foo = 1; } `, errors: [ @@ -260,6 +270,16 @@ class Mx { messageId: 'preferFieldStyle', column: 21, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + public static readonly foo = 1; +} + `, + }, + ], }, ], }, @@ -269,11 +289,6 @@ class Mx { public get [myValue]() { return 'a literal value'; } -} - `, - output: ` -class Mx { - public readonly [myValue] = 'a literal value'; } `, errors: [ @@ -281,6 +296,16 @@ class Mx { messageId: 'preferFieldStyle', column: 15, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + public readonly [myValue] = 'a literal value'; +} + `, + }, + ], }, ], }, @@ -290,11 +315,6 @@ class Mx { public get [myValue]() { return 12345n; } -} - `, - output: ` -class Mx { - public readonly [myValue] = 12345n; } `, errors: [ @@ -302,6 +322,16 @@ class Mx { messageId: 'preferFieldStyle', column: 15, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + public readonly [myValue] = 12345n; +} + `, + }, + ], }, ], }, @@ -309,11 +339,6 @@ class Mx { code: ` class Mx { public readonly [myValue] = 'a literal value'; -} - `, - output: ` -class Mx { - public get [myValue]() { return 'a literal value'; } } `, errors: [ @@ -321,6 +346,16 @@ class Mx { messageId: 'preferGetterStyle', column: 20, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + public get [myValue]() { return 'a literal value'; } +} + `, + }, + ], }, ], options: ['getters'], @@ -329,11 +364,6 @@ class Mx { code: ` class Mx { readonly p1 = 'hello world'; -} - `, - output: ` -class Mx { - get p1() { return 'hello world'; } } `, errors: [ @@ -341,6 +371,16 @@ class Mx { messageId: 'preferGetterStyle', column: 12, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + get p1() { return 'hello world'; } +} + `, + }, + ], }, ], options: ['getters'], @@ -349,11 +389,6 @@ class Mx { code: ` class Mx { readonly p1 = \`hello world\`; -} - `, - output: ` -class Mx { - get p1() { return \`hello world\`; } } `, errors: [ @@ -361,6 +396,16 @@ class Mx { messageId: 'preferGetterStyle', column: 12, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + get p1() { return \`hello world\`; } +} + `, + }, + ], }, ], options: ['getters'], @@ -369,11 +414,6 @@ class Mx { code: ` class Mx { static readonly p1 = 'hello world'; -} - `, - output: ` -class Mx { - static get p1() { return 'hello world'; } } `, errors: [ @@ -381,6 +421,16 @@ class Mx { messageId: 'preferGetterStyle', column: 19, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + static get p1() { return 'hello world'; } +} + `, + }, + ], }, ], options: ['getters'], @@ -391,11 +441,6 @@ class Mx { protected get p1() { return 'hello world'; } -} - `, - output: ` -class Mx { - protected readonly p1 = 'hello world'; } `, errors: [ @@ -403,6 +448,16 @@ class Mx { messageId: 'preferFieldStyle', column: 17, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + protected readonly p1 = 'hello world'; +} + `, + }, + ], }, ], options: ['fields'], @@ -411,11 +466,6 @@ class Mx { code: ` class Mx { protected readonly p1 = 'hello world'; -} - `, - output: ` -class Mx { - protected get p1() { return 'hello world'; } } `, errors: [ @@ -423,6 +473,16 @@ class Mx { messageId: 'preferGetterStyle', column: 22, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + protected get p1() { return 'hello world'; } +} + `, + }, + ], }, ], options: ['getters'], @@ -433,11 +493,6 @@ class Mx { public static get p1() { return 'hello world'; } -} - `, - output: ` -class Mx { - public static readonly p1 = 'hello world'; } `, errors: [ @@ -445,6 +500,16 @@ class Mx { messageId: 'preferFieldStyle', column: 21, line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` +class Mx { + public static readonly p1 = 'hello world'; +} + `, + }, + ], }, ], }, @@ -452,11 +517,6 @@ class Mx { code: ` class Mx { public static readonly p1 = 'hello world'; -} - `, - output: ` -class Mx { - public static get p1() { return 'hello world'; } } `, errors: [ @@ -464,6 +524,16 @@ class Mx { messageId: 'preferGetterStyle', column: 26, line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` +class Mx { + public static get p1() { return 'hello world'; } +} + `, + }, + ], }, ], options: ['getters'], @@ -483,7 +553,15 @@ class Mx { } } `, - output: ` + errors: [ + { + messageId: 'preferFieldStyle', + column: 14, + line: 3, + suggestions: [ + { + messageId: 'preferFieldStyleSuggestion', + output: ` class Mx { public readonly myValue = gql\` { @@ -495,11 +573,8 @@ class Mx { \`; } `, - errors: [ - { - messageId: 'preferFieldStyle', - column: 14, - line: 3, + }, + ], }, ], }, @@ -516,7 +591,15 @@ class Mx { \`; } `, - output: ` + errors: [ + { + messageId: 'preferGetterStyle', + column: 19, + line: 3, + suggestions: [ + { + messageId: 'preferGetterStyleSuggestion', + output: ` class Mx { public get myValue() { return gql\` { @@ -528,11 +611,8 @@ class Mx { \`; } } `, - errors: [ - { - messageId: 'preferGetterStyle', - column: 19, - line: 3, + }, + ], }, ], options: ['getters'], From cba0d113bba1bbcee69149c954dc6bd4c658c714 Mon Sep 17 00:00:00 2001 From: "typescript-eslint[bot]" Date: Mon, 10 Jul 2023 17:17:54 +0000 Subject: [PATCH 11/11] chore: publish v5.62.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ lerna.json | 2 +- packages/ast-spec/CHANGELOG.md | 10 ++++++++++ packages/ast-spec/package.json | 2 +- packages/eslint-plugin-internal/CHANGELOG.md | 10 ++++++++++ packages/eslint-plugin-internal/package.json | 8 ++++---- packages/eslint-plugin-tslint/CHANGELOG.md | 10 ++++++++++ packages/eslint-plugin-tslint/package.json | 6 +++--- packages/eslint-plugin/CHANGELOG.md | 20 ++++++++++++++++++++ packages/eslint-plugin/package.json | 8 ++++---- packages/experimental-utils/CHANGELOG.md | 10 ++++++++++ packages/experimental-utils/package.json | 4 ++-- packages/parser/CHANGELOG.md | 10 ++++++++++ packages/parser/package.json | 8 ++++---- packages/scope-manager/CHANGELOG.md | 10 ++++++++++ packages/scope-manager/package.json | 8 ++++---- packages/type-utils/CHANGELOG.md | 10 ++++++++++ packages/type-utils/package.json | 8 ++++---- packages/types/CHANGELOG.md | 10 ++++++++++ packages/types/package.json | 2 +- packages/typescript-estree/CHANGELOG.md | 10 ++++++++++ packages/typescript-estree/package.json | 6 +++--- packages/utils/CHANGELOG.md | 10 ++++++++++ packages/utils/package.json | 10 +++++----- packages/visitor-keys/CHANGELOG.md | 10 ++++++++++ packages/visitor-keys/package.json | 4 ++-- packages/website-eslint/CHANGELOG.md | 10 ++++++++++ packages/website-eslint/package.json | 16 ++++++++-------- packages/website/CHANGELOG.md | 10 ++++++++++ packages/website/package.json | 8 ++++---- 30 files changed, 220 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84a0db9e7122..5f1f89e0979d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + + +### Bug Fixes + +* **eslint-plugin:** [comma-spacing] allow no space after trailing comma in objects and arrays ([#6938](https://github.com/typescript-eslint/typescript-eslint/issues/6938)) ([24bdacc](https://github.com/typescript-eslint/typescript-eslint/commit/24bdacc7e5df40c92031a1bd7e9815d66a35b31d)) +* **eslint-plugin:** [prefer-includes] escape special characters ([#7161](https://github.com/typescript-eslint/typescript-eslint/issues/7161)) ([5a347a5](https://github.com/typescript-eslint/typescript-eslint/commit/5a347a5978bc5737412bd12d61eb6058163cf4a0)), closes [#7145](https://github.com/typescript-eslint/typescript-eslint/issues/7145) +* **eslint-plugin:** replace auto-fix of class literal property style rule with suggestion ([#7054](https://github.com/typescript-eslint/typescript-eslint/issues/7054)) ([a8c824a](https://github.com/typescript-eslint/typescript-eslint/commit/a8c824a1e84453f93cd2b464fc102bc878c1aff3)) + + +### Features + +* **eslint-plugin:** [prefer-nullish-coalescing] add `ignorePrimitives` option ([#6487](https://github.com/typescript-eslint/typescript-eslint/issues/6487)) ([6edaa04](https://github.com/typescript-eslint/typescript-eslint/commit/6edaa04565576f0af7e60bc08602bd781c847804)) + +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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/lerna.json b/lerna.json index 7b2154c88bcf..4b285a4b3c2a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "5.61.0", + "version": "5.62.0", "npmClient": "yarn", "stream": true, "command": { diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index bd095f9ba6be..5f211b61bf85 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index a119885892d2..bad01bbfcd0c 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "5.61.0", + "version": "5.62.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 a00facaa19d9..3de59391a01a 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **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 8bfc70c6bcfa..da875517f322 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": "5.61.0", + "version": "5.62.0", "private": true, "main": "dist/index.js", "scripts": { @@ -14,9 +14,9 @@ }, "dependencies": { "@types/prettier": "*", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/type-utils": "5.61.0", - "@typescript-eslint/utils": "5.61.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "prettier": "*" } } diff --git a/packages/eslint-plugin-tslint/CHANGELOG.md b/packages/eslint-plugin-tslint/CHANGELOG.md index 929225f47fc8..11b5e536c4e0 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/eslint-plugin-tslint/package.json b/packages/eslint-plugin-tslint/package.json index ac1a59d8a31d..2789a2bc89e8 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": "5.61.0", + "version": "5.62.0", "main": "dist/index.js", "typings": "src/index.ts", "description": "ESLint plugin that wraps a TSLint configuration and lints the whole source using TSLint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.61.0" + "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", @@ -46,6 +46,6 @@ "typescript": "*" }, "devDependencies": { - "@typescript-eslint/parser": "5.61.0" + "@typescript-eslint/parser": "5.62.0" } } diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 62aea3a99f69..ce7b0da5208b 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + + +### Bug Fixes + +* **eslint-plugin:** [comma-spacing] allow no space after trailing comma in objects and arrays ([#6938](https://github.com/typescript-eslint/typescript-eslint/issues/6938)) ([24bdacc](https://github.com/typescript-eslint/typescript-eslint/commit/24bdacc7e5df40c92031a1bd7e9815d66a35b31d)) +* **eslint-plugin:** [prefer-includes] escape special characters ([#7161](https://github.com/typescript-eslint/typescript-eslint/issues/7161)) ([5a347a5](https://github.com/typescript-eslint/typescript-eslint/commit/5a347a5978bc5737412bd12d61eb6058163cf4a0)), closes [#7145](https://github.com/typescript-eslint/typescript-eslint/issues/7145) +* **eslint-plugin:** replace auto-fix of class literal property style rule with suggestion ([#7054](https://github.com/typescript-eslint/typescript-eslint/issues/7054)) ([a8c824a](https://github.com/typescript-eslint/typescript-eslint/commit/a8c824a1e84453f93cd2b464fc102bc878c1aff3)) + + +### Features + +* **eslint-plugin:** [prefer-nullish-coalescing] add `ignorePrimitives` option ([#6487](https://github.com/typescript-eslint/typescript-eslint/issues/6487)) ([6edaa04](https://github.com/typescript-eslint/typescript-eslint/commit/6edaa04565576f0af7e60bc08602bd781c847804)) + +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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 43c0c16f5fc3..615dde088802 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "5.61.0", + "version": "5.62.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -45,9 +45,9 @@ }, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/type-utils": "5.61.0", - "@typescript-eslint/utils": "5.61.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.0", diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 5ceb3e6e54b7..5ce4a255e686 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**Note:** Version bump only for package @typescript-eslint/experimental-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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **Note:** Version bump only for package @typescript-eslint/experimental-utils diff --git a/packages/experimental-utils/package.json b/packages/experimental-utils/package.json index 14585845e8a2..7bf1201049da 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "5.61.0", + "version": "5.62.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -38,7 +38,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/utils": "5.61.0" + "@typescript-eslint/utils": "5.62.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 917a2c1ef45b..b4dcdb9cd160 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 9b2202b3ca84..67a0cae4d0cc 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "5.61.0", + "version": "5.62.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -45,9 +45,9 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index c5d2e7ac603b..ec8c4c099c17 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 4e12bdf55cb2..355e9ca85fe7 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "5.61.0", + "version": "5.62.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -38,12 +38,12 @@ "typecheck": "nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "devDependencies": { "@types/glob": "*", - "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/typescript-estree": "5.62.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index f3b880234180..01bdb01e7bf2 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **Note:** Version bump only for package @typescript-eslint/type-utils diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index f371908c4551..dbd56d4bba22 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "5.61.0", + "version": "5.62.0", "description": "Type utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -39,13 +39,13 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/typescript-estree": "5.61.0", - "@typescript-eslint/utils": "5.61.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.61.0", + "@typescript-eslint/parser": "5.62.0", "typescript": "*" }, "peerDependencies": { diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 77ff49f22c87..1c7070a2178e 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 75e4c7d15523..07d318938de3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "5.61.0", + "version": "5.62.0", "description": "Types for the TypeScript-ESTree AST spec", "keywords": [ "eslint", diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md index 3c2b62545521..f5e68afd9e1a 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**Note:** Version bump only for package @typescript-eslint/typescript-estree + +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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index fa94bfd5135e..f857da88e547 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "5.61.0", + "version": "5.62.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -42,8 +42,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index a9743a05b3f4..99cba0af9458 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **Note:** Version bump only for package @typescript-eslint/utils diff --git a/packages/utils/package.json b/packages/utils/package.json index bed1f5ffaa32..297b66272a96 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "5.61.0", + "version": "5.62.0", "description": "Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -42,9 +42,9 @@ "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -52,7 +52,7 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "5.61.0", + "@typescript-eslint/parser": "5.62.0", "typescript": "*" }, "funding": { diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 5766ea04c91e..c9f9dc5d5cbb 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **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 653d9fc9e05f..0f7875fe5dd8 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "5.61.0", + "version": "5.62.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "devDependencies": { diff --git a/packages/website-eslint/CHANGELOG.md b/packages/website-eslint/CHANGELOG.md index 9a83ec6c2042..534f97337ef4 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) **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 833aabc70a09..abd2c802f228 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/website-eslint", - "version": "5.61.0", + "version": "5.62.0", "private": true, "description": "ESLint which works in browsers.", "engines": { @@ -16,8 +16,8 @@ "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore" }, "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/utils": "5.61.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/utils": "5.62.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^23.0.0", @@ -25,11 +25,11 @@ "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-terser": "^0.4.0", "@rollup/pluginutils": "^5.0.0", - "@typescript-eslint/eslint-plugin": "5.61.0", - "@typescript-eslint/parser": "5.61.0", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "eslint": "*", "esquery": "*", "rollup": "^2.75.4", diff --git a/packages/website/CHANGELOG.md b/packages/website/CHANGELOG.md index 54ef13d50acc..e8902d3fe8cb 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. +# [5.62.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.61.0...v5.62.0) (2023-07-10) + +**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. + + + + + # [5.61.0](https://github.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) (2023-07-03) diff --git a/packages/website/package.json b/packages/website/package.json index 8fac14064c4d..752dcccb6eaf 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "website", - "version": "5.61.0", + "version": "5.62.0", "private": true, "scripts": { "build": "docusaurus build", @@ -21,8 +21,8 @@ "@docusaurus/remark-plugin-npm2yarn": "~2.4.0", "@docusaurus/theme-common": "~2.4.0", "@mdx-js/react": "1.6.22", - "@typescript-eslint/parser": "5.61.0", - "@typescript-eslint/website-eslint": "5.61.0", + "@typescript-eslint/parser": "5.62.0", + "@typescript-eslint/website-eslint": "5.62.0", "clsx": "^1.1.1", "eslint": "*", "json-schema": "^0.4.0", @@ -49,7 +49,7 @@ "@types/react": "^18.0.9", "@types/react-helmet": "^6.1.5", "@types/react-router-dom": "^5.3.3", - "@typescript-eslint/eslint-plugin": "5.61.0", + "@typescript-eslint/eslint-plugin": "5.62.0", "copy-webpack-plugin": "^11.0.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.29.4",