diff --git a/.github/ISSUE_TEMPLATE/eslint-plugin-tslint.md b/.github/ISSUE_TEMPLATE/eslint-plugin-tslint.md index e999830e4f18..4018c1d0123c 100644 --- a/.github/ISSUE_TEMPLATE/eslint-plugin-tslint.md +++ b/.github/ISSUE_TEMPLATE/eslint-plugin-tslint.md @@ -14,15 +14,24 @@ The more relevant information you can include, the faster we can find the issue --> +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have updated to the latest version of the packages. +- [ ] I have [read the FAQ](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md) and my problem is not listed. + **Repro** ```JSON @@ -50,8 +59,18 @@ Also include your tslint config, if you're using a separate file. **Expected Result** + + **Actual Result** + + **Additional Info** - +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have updated to the latest version of the packages. +- [ ] I have [read the FAQ](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md) and my problem is not listed. **Repro** ```JSON @@ -50,10 +51,24 @@ The more irrelevant code/config you give, the harder it is for us to investigate // your repro code case ``` + + **Expected Result** + + **Actual Result** + + **Additional Info** +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have updated to the latest version of the packages. +- [ ] I have [read the FAQ](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md) and my problem is not listed. + **Repro** ```JSON @@ -40,10 +50,24 @@ The more irrelevant code/config you give, the harder it is for us to investigate // your repro code case ``` + + **Expected Result** + + **Actual Result** + + **Additional Info** +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have updated to the latest version of the packages. +- [ ] I have [read the FAQ](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md) and my problem is not listed. + **Repro** -```JSON -{ - "rules": { - "@typescript-eslint/": [""] - }, - "parserOptions": { - "...": "something" - } -} -``` +Please consider creating an isolated reproduction repo to make it easy for the volunteer maintainers debug your issue. +--> ```TS // your repro code case @@ -42,8 +41,18 @@ The more irrelevant code/config you give, the harder it is for us to investigate **Expected Result** + + **Actual Result** + + **Additional Info** +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have updated to the latest version of the packages. +- [ ] I have [read the FAQ](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md) and my problem is not listed. + **Repro** -```JSON -{ - "rules": { - "@typescript-eslint/": [""] - }, - "parserOptions": { - "...": "something" - } -} +```TS +// the code you're trying to parse ``` ```TS -// your repro code case +// the code you're using to do the parse of the aforementioned code ``` **Expected Result** + + **Actual Result** + + **Additional Info** + + +```ts +try { + // ... +} catch (e: unknown) { + // ... +} +``` + + + +## Options + +The rule accepts an options object with the following properties: + +```ts +type Options = { + // if false, disallow specifying `: any` as the error type as well. See also `no-explicit-any` + allowExplicitAny: boolean; +}; + +const defaults = { + allowExplicitAny: false, +}; +``` + +### `allowExplicitAny` + +The follow is is **_not_** considered a warning with `{ allowExplicitAny: true }` + + + + +```ts +try { + // ... +} catch (e: any) { + // ... +} +``` + + + +## When Not To Use It + +If you are not using TypeScript 4.0 (or greater), then you will not be able to use this rule, annotations on catch clauses is not supported. + +## Further Reading + +- [TypeScript 4.0 Beta Release Notes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-0-beta/#unknown-on-catch) diff --git a/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md b/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md index 95ee927b22e2..fdb2a8a18f08 100644 --- a/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md +++ b/packages/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md @@ -11,8 +11,12 @@ Examples of **incorrect** code for this rule: /* eslint @typescript-eslint/no-non-null-asserted-optional-chain: "error" */ foo?.bar!; -foo?.bar!.baz; foo?.bar()!; + +// Prior to TS3.9, foo?.bar!.baz meant (foo?.bar).baz - i.e. the non-null assertion is applied to the entire chain so far. +// For TS3.9 and greater, the non-null assertion is only applied to the property itself, so it's safe. +// The following is incorrect code if you're using less than TS3.9 +foo?.bar!.baz; foo?.bar!(); foo?.bar!().baz; ``` @@ -27,6 +31,11 @@ foo?.bar; foo?.bar(); foo?.bar(); foo?.bar().baz; + +// The following is correct code if you're using TS3.9 or greater +foo?.bar!.baz; +foo?.bar!(); +foo?.bar!().baz; ``` ## When Not To Use It diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 37850ffcafb9..b80ea9569366 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "3.9.1", + "version": "3.10.0", "description": "TypeScript plugin for ESLint", "keywords": [ "eslint", @@ -42,7 +42,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/experimental-utils": "3.9.1", + "@typescript-eslint/experimental-utils": "3.10.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index 8361bde29b2c..c0105c354c2d 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -58,6 +58,7 @@ export = { '@typescript-eslint/no-extraneous-class': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-for-in-array': 'error', + '@typescript-eslint/no-implicit-any-catch': 'error', '@typescript-eslint/no-implied-eval': 'error', '@typescript-eslint/no-inferrable-types': 'error', 'no-invalid-this': 'off', diff --git a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts index 49fdfc1d5a08..5671e36dbdd2 100644 --- a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts +++ b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts @@ -427,7 +427,11 @@ export default util.createRule({ const isConstructor = node.parent?.type === AST_NODE_TYPES.MethodDefinition && node.parent.kind === 'constructor'; - if (!isConstructor && !node.returnType) { + const isSetAccessor = + (node.parent?.type === AST_NODE_TYPES.TSAbstractMethodDefinition || + node.parent?.type === AST_NODE_TYPES.MethodDefinition) && + node.parent.kind === 'set'; + if (!isConstructor && !isSetAccessor && !node.returnType) { context.report({ node, messageId: 'missingReturnType', diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 85d0642fc791..63acccee914d 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -31,6 +31,7 @@ import noDynamicDelete from './no-dynamic-delete'; import noEmptyFunction from './no-empty-function'; import noEmptyInterface from './no-empty-interface'; import noExplicitAny from './no-explicit-any'; +import noImplicitAnyCatch from './no-implicit-any-catch'; import noExtraneousClass from './no-extraneous-class'; import noExtraNonNullAssertion from './no-extra-non-null-assertion'; import noExtraParens from './no-extra-parens'; @@ -133,6 +134,7 @@ export default { 'no-empty-function': noEmptyFunction, 'no-empty-interface': noEmptyInterface, 'no-explicit-any': noExplicitAny, + 'no-implicit-any-catch': noImplicitAnyCatch, 'no-extra-non-null-assertion': noExtraNonNullAssertion, 'no-extra-parens': noExtraParens, 'no-extra-semi': noExtraSemi, diff --git a/packages/eslint-plugin/src/rules/no-implicit-any-catch.ts b/packages/eslint-plugin/src/rules/no-implicit-any-catch.ts new file mode 100644 index 000000000000..aed526f8ab01 --- /dev/null +++ b/packages/eslint-plugin/src/rules/no-implicit-any-catch.ts @@ -0,0 +1,95 @@ +import * as util from '../util'; +import { + TSESLint, + AST_NODE_TYPES, +} from '@typescript-eslint/experimental-utils'; + +export type Options = [ + { + allowExplicitAny: boolean; + }, +]; +export type MessageIds = + | 'implicitAnyInCatch' + | 'explicitAnyInCatch' + | 'suggestExplicitUnknown'; + +export default util.createRule({ + name: 'no-implicit-any-catch', + meta: { + type: 'suggestion', + docs: { + description: 'Disallow usage of the implicit `any` type in catch clauses', + category: 'Best Practices', + recommended: false, + suggestion: true, + }, + fixable: 'code', + messages: { + implicitAnyInCatch: 'Implicit any in catch clause', + explicitAnyInCatch: 'Explicit any in catch clause', + suggestExplicitUnknown: + 'Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.', + }, + schema: [ + { + type: 'object', + additionalProperties: false, + properties: { + allowExplicitAny: { + type: 'boolean', + }, + }, + }, + ], + }, + defaultOptions: [ + { + allowExplicitAny: false, + }, + ], + create(context, [{ allowExplicitAny }]) { + return { + CatchClause(node): void { + if (!node.param) { + return; // ignore catch without variable + } + + if (!node.param.typeAnnotation) { + context.report({ + node, + messageId: 'implicitAnyInCatch', + suggest: [ + { + messageId: 'suggestExplicitUnknown', + fix(fixer): TSESLint.RuleFix { + return fixer.insertTextAfter(node.param!, ': unknown'); + }, + }, + ], + }); + } else if ( + !allowExplicitAny && + node.param.typeAnnotation.typeAnnotation.type === + AST_NODE_TYPES.TSAnyKeyword + ) { + context.report({ + node, + messageId: 'explicitAnyInCatch', + suggest: [ + { + messageId: 'suggestExplicitUnknown', + fix(fixer): TSESLint.RuleFix { + return fixer.replaceText( + node.param!.typeAnnotation!, + ': unknown', + ); + }, + }, + ], + }); + } + }, + }; + }, +}); diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts index 22fec531779b..29f9aa4442d2 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-condition.ts @@ -166,6 +166,14 @@ export default createRule({ * if the type of the node is always true or always false, it's not necessary. */ function checkNode(node: TSESTree.Expression): void { + // Check if the node is Unary Negation expression and handle it + if ( + node.type === AST_NODE_TYPES.UnaryExpression && + node.operator === '!' + ) { + return checkIfUnaryNegationExpressionIsNecessaryConditional(node); + } + // Since typescript array index signature types don't represent the // possibility of out-of-bounds access, if we're indexing into an array // just skip the check, to avoid false positives @@ -213,6 +221,30 @@ export default createRule({ } } + /** + * If it is Unary Negation Expression, check the argument for alwaysTruthy / alwaysFalsy + */ + function checkIfUnaryNegationExpressionIsNecessaryConditional( + node: TSESTree.UnaryExpression, + ): void { + if (isArrayIndexExpression(node.argument)) { + return; + } + const type = getNodeType(node.argument); + const messageId = isTypeFlagSet(type, ts.TypeFlags.Never) + ? 'never' + : isPossiblyTruthy(type) + ? 'alwaysFalsy' + : isPossiblyFalsy(type) + ? 'alwaysTruthy' + : undefined; + + if (messageId) { + context.report({ node, messageId }); + } + return; + } + function checkNodeForNullish(node: TSESTree.Expression): void { // Since typescript array index signature types don't represent the // possibility of out-of-bounds access, if we're indexing into an array diff --git a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts index 114b26aed0f1..c79cc34a314a 100644 --- a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts @@ -646,6 +646,16 @@ type Buz = () => (n: number) => string; export const buz: Buz = () => n => String(n); `, + ` +export abstract class Foo { + abstract set value(element: T); +} + `, + ` +export declare class Foo { + set time(seconds: number); +} + `, ], invalid: [ { diff --git a/packages/eslint-plugin/tests/rules/no-implicit-any-catch.test.ts b/packages/eslint-plugin/tests/rules/no-implicit-any-catch.test.ts new file mode 100644 index 000000000000..f8113555086e --- /dev/null +++ b/packages/eslint-plugin/tests/rules/no-implicit-any-catch.test.ts @@ -0,0 +1,78 @@ +/* eslint-disable eslint-comments/no-use */ +// TODO - prettier currently removes the type annotations, re-enable this once prettier is updated +/* eslint "@typescript-eslint/internal/plugin-test-formatting": ["error", { formatWithPrettier: false }] */ +/* eslint-enable eslint-comments/no-use */ + +import rule from '../../src/rules/no-implicit-any-catch'; +import { RuleTester } from '../RuleTester'; + +const ruleTester = new RuleTester({ + parser: '@typescript-eslint/parser', +}); + +ruleTester.run('no-implicit-any-catch', rule, { + valid: [ + ` +try { +} catch (e1: unknown) {} + `, + { + code: ` +try { +} catch (e2: any) {} + `, + options: [{ allowExplicitAny: true }], + }, + ], + invalid: [ + { + code: ` +try { +} catch (e3) {} + `.trim(), + errors: [ + { + line: 2, + column: 3, + messageId: 'implicitAnyInCatch', + endLine: 2, + endColumn: 16, + suggestions: [ + { + messageId: 'suggestExplicitUnknown', + output: ` +try { +} catch (e3: unknown) {} + `.trim(), + }, + ], + }, + ], + }, + { + code: ` +try { +} catch (e4: any) {} + `.trim(), + options: [{ allowExplicitAny: false }], + errors: [ + { + line: 2, + column: 3, + messageId: 'explicitAnyInCatch', + endLine: 2, + endColumn: 21, + suggestions: [ + { + messageId: 'suggestExplicitUnknown', + output: ` +try { +} catch (e4: unknown) {} + `.trim(), + }, + ], + }, + ], + }, + ], +}); diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts index 55b7a0e7fb1c..3a9d0fb450bc 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts @@ -445,7 +445,26 @@ declare const key: Key; foo?.[key]?.trim(); `, - // https://github.com/typescript-eslint/typescript-eslint/issues/2384 + ` +let latencies: number[][] = []; + +function recordData(): void { + if (!latencies[0]) latencies[0] = []; + latencies[0].push(4); +} + +recordData(); + `, + ` +let latencies: number[][] = []; + +function recordData(): void { + if (latencies[0]) latencies[0] = []; + latencies[0].push(4); +} + +recordData(); + `, ` function test(testVal?: boolean) { if (testVal ?? true) { @@ -458,6 +477,34 @@ function test(testVal?: boolean) { // Ensure that it's checking in all the right places { code: ` +const a = null; +if (!a) { +} + `, + errors: [ruleError(3, 5, 'alwaysTruthy')], + }, + { + code: ` +const a = true; +if (!a) { +} + `, + errors: [ruleError(3, 5, 'alwaysFalsy')], + }, + { + code: ` +function sayHi(): void { + console.log('Hi!'); +} + +let speech: never = sayHi(); +if (!speech) { +} + `, + errors: [ruleError(7, 5, 'never')], + }, + { + code: ` const b1 = true; declare const b2: boolean; const t1 = b1 && b2; diff --git a/packages/experimental-utils/CHANGELOG.md b/packages/experimental-utils/CHANGELOG.md index 566dc64e45b9..266cf9ce4b61 100644 --- a/packages/experimental-utils/CHANGELOG.md +++ b/packages/experimental-utils/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/experimental-utils + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **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 1483c8e0b893..5e7aa294fa16 100644 --- a/packages/experimental-utils/package.json +++ b/packages/experimental-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/experimental-utils", - "version": "3.9.1", + "version": "3.10.0", "description": "(Experimental) Utilities for working with TypeScript + ESLint together", "keywords": [ "eslint", @@ -40,8 +40,8 @@ }, "dependencies": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.9.1", - "@typescript-eslint/typescript-estree": "3.9.1", + "@typescript-eslint/types": "3.10.0", + "@typescript-eslint/typescript-estree": "3.10.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 944c79cc4480..bf9cb88fc0ee 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/parser + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/parser diff --git a/packages/parser/package.json b/packages/parser/package.json index 157a930e97c8..b3b92a64d583 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "3.9.1", + "version": "3.10.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -44,14 +44,14 @@ }, "dependencies": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.9.1", - "@typescript-eslint/types": "3.9.1", - "@typescript-eslint/typescript-estree": "3.9.1", + "@typescript-eslint/experimental-utils": "3.10.0", + "@typescript-eslint/types": "3.10.0", + "@typescript-eslint/typescript-estree": "3.10.0", "eslint-visitor-keys": "^1.1.0" }, "devDependencies": { "@types/glob": "^7.1.1", - "@typescript-eslint/shared-fixtures": "3.9.1", + "@typescript-eslint/shared-fixtures": "3.10.0", "glob": "*" }, "peerDependenciesMeta": { diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 2178a78859aa..54589536057b 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/scope-manager + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/scope-manager diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index b04e16cf444b..f6b84d9cd229 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "3.9.1", + "version": "3.10.0", "description": "TypeScript scope analyser for ESLint", "keywords": [ "eslint", @@ -39,11 +39,11 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@typescript-eslint/types": "3.9.1", - "@typescript-eslint/visitor-keys": "3.9.1" + "@typescript-eslint/types": "3.10.0", + "@typescript-eslint/visitor-keys": "3.10.0" }, "devDependencies": { - "@typescript-eslint/typescript-estree": "3.9.1", + "@typescript-eslint/typescript-estree": "3.10.0", "glob": "*", "jest-specific-snapshot": "*", "make-dir": "*", diff --git a/packages/shared-fixtures/CHANGELOG.md b/packages/shared-fixtures/CHANGELOG.md index 2c5f6a6c06e9..4175ca136b55 100644 --- a/packages/shared-fixtures/CHANGELOG.md +++ b/packages/shared-fixtures/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/shared-fixtures + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/shared-fixtures diff --git a/packages/shared-fixtures/package.json b/packages/shared-fixtures/package.json index bfe1348f747c..e774df2ced17 100644 --- a/packages/shared-fixtures/package.json +++ b/packages/shared-fixtures/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/shared-fixtures", - "version": "3.9.1", + "version": "3.10.0", "private": true, "scripts": { "build": "tsc -b tsconfig.build.json", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 7c62fe2546f6..04bba8223beb 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/types + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/types diff --git a/packages/types/package.json b/packages/types/package.json index 37dc7eb53b83..874a2054a3cf 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "3.9.1", + "version": "3.10.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 47b93a15f52e..dda22fd04cca 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + + +### Bug Fixes + +* **typescript-estree:** ts.NamedTupleMember workaround for ; export type TSNode = diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index d37050a50072..134f54ea42f1 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [3.10.0](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.1...v3.10.0) (2020-08-24) + +**Note:** Version bump only for package @typescript-eslint/visitor-keys + + + + + ## [3.9.1](https://github.com/typescript-eslint/typescript-eslint/compare/v3.9.0...v3.9.1) (2020-08-17) **Note:** Version bump only for package @typescript-eslint/visitor-keys diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index bfc565763949..35213fd281e7 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "3.9.1", + "version": "3.10.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "keywords": [ "eslint", @@ -39,7 +39,7 @@ "eslint-visitor-keys": "^1.1.0" }, "devDependencies": { - "@typescript-eslint/types": "3.9.1" + "@typescript-eslint/types": "3.10.0" }, "funding": { "type": "opencollective", diff --git a/yarn.lock b/yarn.lock index 2f7721577ec9..dcf997873689 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8610,10 +8610,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@*, typescript@4.0.0-beta, "typescript@>=3.3.1 <4.0.0 || 4.0.0-beta", typescript@^3.8.0-dev.20200111: - version "4.0.0-beta" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-beta.tgz#a6a65e430562131de69496a3ef5484346bc0cdd2" - integrity sha512-d3s/CogGtB2uPZ2Z8ts6eoUxxyB9PH3R27/UrzvpthuOvpCg4FWWnBbBiqJ0K4eu6eTlgmLiqQkh2dquReJweA== +typescript@*, typescript@4.0.2, "typescript@>=3.3.1 <4.1.0", typescript@^3.8.0-dev.20200111: + version "4.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" + integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6"