From f92e66a42e09f4a9519d900cbb0d6959fb2b08d8 Mon Sep 17 00:00:00 2001
From: Bryan Mishkin <698306+bmish@users.noreply.github.com>
Date: Tue, 16 Aug 2022 14:40:30 -0400
Subject: [PATCH 01/35] Switch to lightbulb emoji to denote rule suggestions
(#5473)
docs: switch to lightbulb emoji to denote rule suggestions
---
packages/website/src/components/RulesTable/index.tsx | 6 +++---
packages/website/src/theme/MDXComponents/RuleAttributes.tsx | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/website/src/components/RulesTable/index.tsx b/packages/website/src/components/RulesTable/index.tsx
index 6629637a44b4..05bf38f3e387 100644
--- a/packages/website/src/components/RulesTable/index.tsx
+++ b/packages/website/src/components/RulesTable/index.tsx
@@ -36,7 +36,7 @@ function RuleRow({ rule }: { rule: RulesMeta[number] }): JSX.Element | null {
{rule.fixable ? '🔧\n' : '\n'}
- {rule.hasSuggestions ? '🛠' : ''}
+ {rule.hasSuggestions ? '💡' : ''}
|
{rule.docs.requiresTypeChecking ? '💭' : ''}
@@ -168,7 +168,7 @@ export default function RulesTable({
Rule |
✅{'\n'}🔒 |
- 🔧{'\n'}🛠 |
+ 🔧{'\n'}💡 |
💭 |
diff --git a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
index 74726a63fc37..f02fe0486485 100644
--- a/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
+++ b/packages/website/src/theme/MDXComponents/RuleAttributes.tsx
@@ -55,7 +55,7 @@ export function RuleAttributes({ name }: { name: string }): JSX.Element | null {
- 🛠 Suggestion Fixer
+ 💡 Suggestion Fixer
From 864dbcfccba274fe1b26eac8aeeaf2a2355b5969 Mon Sep 17 00:00:00 2001
From: YeonJuan
Date: Wed, 17 Aug 2022 04:25:21 +0900
Subject: [PATCH 02/35] fix(eslint-plugin): [no-useless-constructor] handle
parameter decorator (#5450)
* fix(eslint-plugin): [no-useless-constructor] handle parameter decorator
* Update packages/eslint-plugin/src/rules/no-useless-constructor.ts
Co-authored-by: Josh Goldberg
---
.../src/rules/no-useless-constructor.ts | 6 ++++--
.../tests/rules/no-useless-constructor.test.ts | 14 ++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/packages/eslint-plugin/src/rules/no-useless-constructor.ts b/packages/eslint-plugin/src/rules/no-useless-constructor.ts
index 10e55cfbe0eb..3f0b15c9efd6 100644
--- a/packages/eslint-plugin/src/rules/no-useless-constructor.ts
+++ b/packages/eslint-plugin/src/rules/no-useless-constructor.ts
@@ -31,13 +31,15 @@ function checkAccessibility(node: TSESTree.MethodDefinition): boolean {
}
/**
- * Check if method is not unless due to typescript parameter properties
+ * Check if method is not useless due to typescript parameter properties and decorators
*/
function checkParams(node: TSESTree.MethodDefinition): boolean {
return (
!node.value.params ||
!node.value.params.some(
- param => param.type === AST_NODE_TYPES.TSParameterProperty,
+ param =>
+ param.type === AST_NODE_TYPES.TSParameterProperty ||
+ param.decorators?.length,
)
);
}
diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts
index 7cedb9151e3e..ea27557d3db2 100644
--- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts
+++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts
@@ -206,6 +206,20 @@ class A extends B {
`
class A {
constructor(foo);
+}
+ `,
+ `
+class A extends Object {
+ constructor(@Foo foo: string) {
+ super(foo);
+ }
+}
+ `,
+ `
+class A extends Object {
+ constructor(foo: string, @Bar() bar) {
+ super(foo, bar);
+ }
}
`,
],
From 3ced62fb8474ed377c1336ac3e855f0270ce9beb Mon Sep 17 00:00:00 2001
From: Bartosz <2940958+burtek@users.noreply.github.com>
Date: Wed, 17 Aug 2022 11:00:38 +0200
Subject: [PATCH 03/35] fix(ast-spec): NewExpression argument can be
SpreadElement now (#5422)
---
packages/ast-spec/src/expression/NewExpression/spec.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/ast-spec/src/expression/NewExpression/spec.ts b/packages/ast-spec/src/expression/NewExpression/spec.ts
index bb75ae3f4b8f..1ee93ef507dd 100644
--- a/packages/ast-spec/src/expression/NewExpression/spec.ts
+++ b/packages/ast-spec/src/expression/NewExpression/spec.ts
@@ -1,12 +1,12 @@
import type { AST_NODE_TYPES } from '../../ast-node-types';
import type { BaseNode } from '../../base/BaseNode';
import type { TSTypeParameterInstantiation } from '../../special/TSTypeParameterInstantiation/spec';
-import type { Expression } from '../../unions/Expression';
+import type { CallExpressionArgument } from '../../unions/CallExpressionArgument';
import type { LeftHandSideExpression } from '../../unions/LeftHandSideExpression';
export interface NewExpression extends BaseNode {
type: AST_NODE_TYPES.NewExpression;
callee: LeftHandSideExpression;
- arguments: Expression[];
+ arguments: CallExpressionArgument[];
typeParameters?: TSTypeParameterInstantiation;
}
From 78745c2092064446837b5683892001030a8bb4e2 Mon Sep 17 00:00:00 2001
From: fnx
Date: Wed, 17 Aug 2022 11:04:05 +0200
Subject: [PATCH 04/35] fix(scope-manager): visit static blocks (#5489)
---
.../src/referencer/ClassVisitor.ts | 8 +++
.../src/scope/ClassStaticBlockScope.ts | 2 +-
.../class/declaration/static-block.ts | 3 +
.../class/declaration/static-block.ts.shot | 72 +++++++++++++++++++
4 files changed, 84 insertions(+), 1 deletion(-)
create mode 100644 packages/scope-manager/tests/fixtures/class/declaration/static-block.ts
create mode 100644 packages/scope-manager/tests/fixtures/class/declaration/static-block.ts.shot
diff --git a/packages/scope-manager/src/referencer/ClassVisitor.ts b/packages/scope-manager/src/referencer/ClassVisitor.ts
index 92dab53ca90a..47e0bdef41cd 100644
--- a/packages/scope-manager/src/referencer/ClassVisitor.ts
+++ b/packages/scope-manager/src/referencer/ClassVisitor.ts
@@ -322,6 +322,10 @@ class ClassVisitor extends Visitor {
this.visitType(node);
}
+ protected visitStaticBlock(node: TSESTree.StaticBlock): void {
+ this.#referencer.scopeManager.nestClassStaticBlockScope(node);
+ }
+
/////////////////////
// Visit selectors //
/////////////////////
@@ -359,6 +363,10 @@ class ClassVisitor extends Visitor {
protected PrivateIdentifier(): void {
// intentionally skip
}
+
+ protected StaticBlock(node: TSESTree.StaticBlock): void {
+ this.visitStaticBlock(node);
+ }
}
/**
diff --git a/packages/scope-manager/src/scope/ClassStaticBlockScope.ts b/packages/scope-manager/src/scope/ClassStaticBlockScope.ts
index 40a5d54b37cf..2bb3915e966c 100644
--- a/packages/scope-manager/src/scope/ClassStaticBlockScope.ts
+++ b/packages/scope-manager/src/scope/ClassStaticBlockScope.ts
@@ -6,7 +6,7 @@ import { ScopeManager } from '../ScopeManager';
class ClassStaticBlockScope extends ScopeBase<
ScopeType.classStaticBlock,
- TSESTree.Expression,
+ TSESTree.StaticBlock,
Scope
> {
constructor(
diff --git a/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts b/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts
new file mode 100644
index 000000000000..93b92f6cf1f1
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts
@@ -0,0 +1,3 @@
+class A {
+ static {}
+}
diff --git a/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts.shot b/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts.shot
new file mode 100644
index 000000000000..b49013a55755
--- /dev/null
+++ b/packages/scope-manager/tests/fixtures/class/declaration/static-block.ts.shot
@@ -0,0 +1,72 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`class declaration static-block 1`] = `
+ScopeManager {
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2 {
+ defs: Array [
+ ClassNameDefinition$1 {
+ name: Identifier<"A">,
+ node: ClassDeclaration$1,
+ },
+ ],
+ name: "A",
+ references: Array [],
+ isValueVariable: true,
+ isTypeVariable: true,
+ },
+ Variable$3 {
+ defs: Array [
+ ClassNameDefinition$2 {
+ name: Identifier<"A">,
+ node: ClassDeclaration$1,
+ },
+ ],
+ name: "A",
+ references: Array [],
+ isValueVariable: true,
+ isTypeVariable: true,
+ },
+ ],
+ scopes: Array [
+ GlobalScope$1 {
+ block: Program$2,
+ isStrict: false,
+ references: Array [],
+ set: Map {
+ "const" => ImplicitGlobalConstTypeVariable,
+ "A" => Variable$2,
+ },
+ type: "global",
+ upper: null,
+ variables: Array [
+ ImplicitGlobalConstTypeVariable,
+ Variable$2,
+ ],
+ },
+ ClassScope$2 {
+ block: ClassDeclaration$1,
+ isStrict: true,
+ references: Array [],
+ set: Map {
+ "A" => Variable$3,
+ },
+ type: "class",
+ upper: GlobalScope$1,
+ variables: Array [
+ Variable$3,
+ ],
+ },
+ ClassStaticBlockScope$3 {
+ block: StaticBlock$3,
+ isStrict: true,
+ references: Array [],
+ set: Map {},
+ type: "class-static-block",
+ upper: ClassScope$2,
+ variables: Array [],
+ },
+ ],
+}
+`;
From 68e288fee40511c0621b6a4a01d7744cc1acc7a0 Mon Sep 17 00:00:00 2001
From: Josh Goldberg
Date: Wed, 17 Aug 2022 05:04:26 -0400
Subject: [PATCH 05/35] chore(website): simplify sponsor displays to just
minimums (#5476)
---
packages/website/data/sponsors.json | 140 ++++--------------
.../FinancialContributors/Sponsor.tsx | 10 +-
.../FinancialContributors/Sponsors/index.tsx | 3 -
.../Sponsors/styles.module.css | 27 +++-
.../FinancialContributors/index.tsx | 30 ++--
.../FinancialContributors/styles.module.css | 21 ++-
tools/generate-sponsors.ts | 49 ++----
7 files changed, 101 insertions(+), 179 deletions(-)
diff --git a/packages/website/data/sponsors.json b/packages/website/data/sponsors.json
index 30bdac33d5d3..a416ca02959a 100644
--- a/packages/website/data/sponsors.json
+++ b/packages/website/data/sponsors.json
@@ -12,7 +12,7 @@
"image": "https://images.opencollective.com/nx/0efbe42/logo.png",
"name": "Nx (by Nrwl)",
"tier": "sponsor",
- "totalDonations": 450000,
+ "totalDonations": 475000,
"website": "https://nx.dev"
},
{
@@ -20,7 +20,7 @@
"image": "https://images.opencollective.com/eslint/96b09dc/logo.png",
"name": "ESLint",
"tier": "sponsor",
- "totalDonations": 155000,
+ "totalDonations": 170000,
"website": "https://eslint.org/"
},
{
@@ -28,7 +28,7 @@
"image": "https://images.opencollective.com/airbnb/d327d66/logo.png",
"name": "Airbnb",
"tier": "sponsor",
- "totalDonations": 120800,
+ "totalDonations": 125800,
"website": "https://www.airbnb.com/"
},
{
@@ -44,14 +44,14 @@
"image": "https://images.opencollective.com/n8n/dca2f0c/logo.png",
"name": "n8n.io - n8n GmbH",
"tier": "sponsor",
- "totalDonations": 95000,
+ "totalDonations": 100000,
"website": "https://n8n.io"
},
{
"id": "EY Doberman",
"image": "https://images.opencollective.com/ey-doberman/b269462/logo.png",
"name": "EY Doberman",
- "tier": "sponsor",
+ "tier": "supporter",
"totalDonations": 80400,
"website": "https://doberman.co"
},
@@ -59,24 +59,17 @@
"id": "GitBook",
"image": "https://images.opencollective.com/gitbook/d35a8e7/logo.png",
"name": "GitBook",
- "tier": "sponsor",
- "totalDonations": 70000,
+ "tier": "supporter",
+ "totalDonations": 80000,
"website": "https://www.gitbook.com"
},
{
"id": "Codecademy",
"image": "https://images.opencollective.com/codecademy/d56a48d/logo.png",
"name": "Codecademy",
- "tier": "sponsor",
- "totalDonations": 60000,
- "website": "https://codecademy.com"
- },
- {
- "id": "GitHub",
- "image": "https://images.opencollective.com/guest-f9980024/avatar.png",
- "name": "GitHub",
"tier": "supporter",
- "totalDonations": 56674
+ "totalDonations": 70000,
+ "website": "https://codecademy.com"
},
{
"id": "Future Processing",
@@ -98,7 +91,7 @@
"id": "Whitebox",
"image": "https://images.opencollective.com/whiteboxinc/ef0d11d/logo.png",
"name": "Whitebox",
- "tier": "supporter",
+ "tier": "contributor",
"totalDonations": 40000,
"website": "https://whitebox.com"
},
@@ -106,7 +99,7 @@
"id": "Monito",
"image": "https://images.opencollective.com/monito/50fc878/logo.png",
"name": "Monito",
- "tier": "supporter",
+ "tier": "contributor",
"totalDonations": 30000,
"website": "https://www.monito.com"
},
@@ -114,32 +107,33 @@
"id": "revo.js",
"image": "https://images.opencollective.com/revojsro/82623a7/logo.png",
"name": "revo.js",
- "tier": "supporter",
+ "tier": "contributor",
"totalDonations": 23000,
"website": "https://revojs.ro"
},
+ {
+ "id": "STORIS",
+ "image": "https://images.opencollective.com/storis/dfb0e13/logo.png",
+ "name": "STORIS",
+ "tier": "contributor",
+ "totalDonations": 22500,
+ "website": "https://www.storis.com/"
+ },
{
"id": "Ian MacLeod",
"image": "https://images.opencollective.com/nevir/35c52ef/avatar.png",
"name": "Ian MacLeod",
- "tier": "supporter",
+ "tier": "contributor",
"totalDonations": 22000,
"website": "https://twitter.com/nevir"
},
{
- "id": "STORIS",
- "image": "https://images.opencollective.com/storis/dfb0e13/logo.png",
- "name": "STORIS",
- "tier": "supporter",
- "totalDonations": 21000,
- "website": "https://www.storis.com/"
- },
- {
- "id": "Michael Ranciglio",
- "image": "https://images.opencollective.com/michael-ranciglio/avatar.png",
- "name": "Michael Ranciglio",
- "tier": "supporter",
- "totalDonations": 16500
+ "id": "Sourcegraph",
+ "image": "https://images.opencollective.com/sourcegraph/8587b83/logo.png",
+ "name": "Sourcegraph",
+ "tier": "contributor",
+ "totalDonations": 20000,
+ "website": "https://about.sourcegraph.com"
},
{
"id": "Joe Alden",
@@ -154,7 +148,7 @@
"image": "https://images.opencollective.com/blacksheepcode/976d69a/avatar.png",
"name": "David Johnston",
"tier": "contributor",
- "totalDonations": 13000,
+ "totalDonations": 13500,
"website": "https://blacksheepcode.com"
},
{
@@ -173,21 +167,6 @@
"totalDonations": 10000,
"website": "https://www.theguardian.com/"
},
- {
- "id": "Yuta Fukazawa",
- "image": "https://images.opencollective.com/yuta-fukazawa/a337601/avatar.png",
- "name": "Yuta Fukazawa",
- "tier": "contributor",
- "totalDonations": 10000
- },
- {
- "id": "Sourcegraph",
- "image": "https://images.opencollective.com/sourcegraph/8587b83/logo.png",
- "name": "Sourcegraph",
- "tier": "sponsor",
- "totalDonations": 10000,
- "website": "https://about.sourcegraph.com"
- },
{
"id": "Laserhub",
"image": "https://images.opencollective.com/laserhub/bae6275/logo.png",
@@ -195,68 +174,5 @@
"tier": "contributor",
"totalDonations": 10000,
"website": "https://laserhub.com/"
- },
- {
- "id": "Tripwire, Inc.",
- "image": "https://images.opencollective.com/tripwire/7599e30/logo.png",
- "name": "Tripwire, Inc.",
- "tier": "contributor",
- "totalDonations": 8500,
- "website": "https://tripwire.com"
- },
- {
- "id": "Evil Martians",
- "image": "https://images.opencollective.com/evilmartians/707ab4d/logo.png",
- "name": "Evil Martians",
- "tier": "contributor",
- "totalDonations": 8000,
- "website": "https://evilmartians.com/"
- },
- {
- "id": "Balsa",
- "image": "https://images.opencollective.com/balsa/77de498/logo.png",
- "name": "Balsa",
- "tier": "contributor",
- "totalDonations": 8000,
- "website": "https://balsa.com"
- },
- {
- "id": "Jeffrey Rennie",
- "image": "https://images.opencollective.com/jeffrey-rennie/avatar.png",
- "name": "Jeffrey Rennie",
- "tier": "contributor",
- "totalDonations": 7500
- },
- {
- "id": "Pete Gonzalez",
- "image": "https://images.opencollective.com/octogonz/513f01a/avatar.png",
- "name": "Pete Gonzalez",
- "tier": "contributor",
- "totalDonations": 5000,
- "website": "https://github.com/octogonz"
- },
- {
- "id": "Niklas Fiekas",
- "image": "https://images.opencollective.com/niklas-fiekas/ffec4a8/avatar.png",
- "name": "Niklas Fiekas",
- "tier": "contributor",
- "totalDonations": 5000,
- "website": "https://backscattering.de"
- },
- {
- "id": "Corellium",
- "image": "https://images.opencollective.com/corellium/aa8c228/logo.png",
- "name": "Corellium",
- "tier": "contributor",
- "totalDonations": 4800,
- "website": "https://www.corellium.com"
- },
- {
- "id": "Alexey Berezin",
- "image": "https://images.opencollective.com/beraliv/034d971/avatar.png",
- "name": "Alexey Berezin",
- "tier": "contributor",
- "totalDonations": 1500,
- "website": "https://beraliv.dev"
}
]
diff --git a/packages/website/src/components/FinancialContributors/Sponsor.tsx b/packages/website/src/components/FinancialContributors/Sponsor.tsx
index f43b0d3d81ee..4872233a6c92 100644
--- a/packages/website/src/components/FinancialContributors/Sponsor.tsx
+++ b/packages/website/src/components/FinancialContributors/Sponsor.tsx
@@ -1,18 +1,14 @@
import React from 'react';
import { SponsorData, SponsorIncludeOptions } from './types';
+import styles from './styles.module.css';
interface SponsorProps {
- className?: string;
include?: SponsorIncludeOptions;
sponsor: SponsorData;
}
-export function Sponsor({
- className,
- include = {},
- sponsor,
-}: SponsorProps): JSX.Element {
+export function Sponsor({ include = {}, sponsor }: SponsorProps): JSX.Element {
let children = ;
if (include.name) {
@@ -27,7 +23,7 @@ export function Sponsor({
if (include.link) {
children = (
{title}
- {description}
|