Skip to content

Commit 5883947

Browse files
committed
Supports ES2022
1 parent 7e5f2e9 commit 5883947

File tree

5 files changed

+117
-19
lines changed

5 files changed

+117
-19
lines changed

.vscode/settings.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@
99
"vue"
1010
],
1111
"typescript.tsdk": "node_modules/typescript/lib",
12-
"vetur.validation.script": false
12+
"vetur.validation.script": false,
13+
"[typescript]": {
14+
"editor.formatOnSave": true,
15+
"editor.defaultFormatter": "esbenp.prettier-vscode"
16+
},
1317
}

lib/rules/require-slots-as-functions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ module.exports = {
3434
/**
3535
* Verify the given node
3636
* @param {MemberExpression | Identifier | ChainExpression} node The node to verify
37-
* @param {Expression} reportNode The node to report
37+
* @param {Expression | PrivateIdentifier} reportNode The node to report
3838
*/
3939
function verify(node, reportNode) {
4040
const parent = node.parent
@@ -83,7 +83,7 @@ module.exports = {
8383
/**
8484
* Verify the references of the given node.
8585
* @param {Identifier} node The node to verify
86-
* @param {Expression} reportNode The node to report
86+
* @param {Expression | PrivateIdentifier} reportNode The node to report
8787
*/
8888
function verifyReferences(node, reportNode) {
8989
const variable = findVariable(context.getScope(), node)

lib/utils/index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,23 +1798,24 @@ function skipChainExpression(node) {
17981798
*/
17991799
function getStaticPropertyName(node) {
18001800
if (node.type === 'Property' || node.type === 'MethodDefinition') {
1801-
const key = node.key
1802-
18031801
if (!node.computed) {
1802+
const key = node.key
18041803
if (key.type === 'Identifier') {
18051804
return key.name
18061805
}
18071806
}
1807+
const key = node.key
18081808
// @ts-expect-error
18091809
return getStringLiteralValue(key)
18101810
} else if (node.type === 'MemberExpression') {
1811-
const property = node.property
18121811
if (!node.computed) {
1812+
const property = node.property
18131813
if (property.type === 'Identifier') {
18141814
return property.name
18151815
}
18161816
return null
18171817
}
1818+
const property = node.property
18181819
// @ts-expect-error
18191820
return getStringLiteralValue(property)
18201821
}

typings/eslint-plugin-vue/global.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ declare global {
7171
// ---- ES Nodes ----
7272

7373
type Identifier = VAST.Identifier
74+
type PrivateIdentifier = VAST.PrivateIdentifier
7475
type Literal = VAST.Literal
7576
type Program = VAST.Program
7677
type SwitchCase = VAST.SwitchCase
@@ -135,6 +136,7 @@ declare global {
135136
type AssignmentPattern = VAST.AssignmentPattern
136137
type ClassBody = VAST.ClassBody
137138
type MethodDefinition = VAST.MethodDefinition
139+
type PropertyDefinition = VAST.PropertyDefinition
138140
type ModuleDeclaration = VAST.ModuleDeclaration
139141
type ImportDeclaration = VAST.ImportDeclaration
140142
type ExportNamedDeclaration = VAST.ExportNamedDeclaration

typings/eslint-plugin-vue/util-types/ast/es-ast.ts

Lines changed: 104 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import * as TS from './ts-ast'
99
import * as JSX from './jsx-ast'
1010

1111
export type ESNode =
12+
| PrivateIdentifier
1213
| Identifier
1314
| Literal
1415
| Program
@@ -25,6 +26,7 @@ export type ESNode =
2526
| Pattern
2627
| ClassBody
2728
| MethodDefinition
29+
| PropertyDefinition
2830
| ModuleDeclaration
2931
| ModuleSpecifier
3032

@@ -185,16 +187,61 @@ export interface ClassDeclaration extends HasParentNode {
185187
}
186188
export interface ClassBody extends HasParentNode {
187189
type: 'ClassBody'
188-
body: MethodDefinition[]
190+
body: (MethodDefinition | PropertyDefinition)[]
189191
}
190-
export interface MethodDefinition extends HasParentNode {
192+
interface BaseMethodDefinition extends HasParentNode {
191193
type: 'MethodDefinition'
194+
// computed: boolean
195+
static: boolean
196+
// key: Expression
197+
value: FunctionExpression
198+
parent: ClassBody
199+
}
200+
export interface MethodDefinitionNonComputedName extends BaseMethodDefinition {
201+
kind: 'constructor' | 'method' | 'get' | 'set'
202+
computed: false
203+
key: Identifier | Literal
204+
}
205+
export interface MethodDefinitionComputedName extends BaseMethodDefinition {
192206
kind: 'constructor' | 'method' | 'get' | 'set'
193-
computed: boolean
207+
computed: true
208+
key: Expression
209+
}
210+
export interface MethodDefinitionPrivate extends BaseMethodDefinition {
211+
kind: 'constructor'
212+
computed: false
213+
key: PrivateIdentifier
214+
}
215+
export type MethodDefinition =
216+
| MethodDefinitionNonComputedName
217+
| MethodDefinitionComputedName
218+
| MethodDefinitionPrivate
219+
interface BasePropertyDefinition extends HasParentNode {
220+
type: 'PropertyDefinition'
221+
// key: Expression | PrivateIdentifier
222+
value: Expression | null
223+
// computed: boolean
194224
static: boolean
225+
parent: ClassBody
226+
}
227+
export interface PropertyDefinitionNonComputedName
228+
extends BasePropertyDefinition {
229+
computed: false
230+
key: Identifier | Literal
231+
}
232+
export interface PropertyDefinitionComputedName extends BasePropertyDefinition {
233+
computed: true
195234
key: Expression
196-
value: FunctionExpression
197235
}
236+
export interface PropertyDefinitionPrivate extends BasePropertyDefinition {
237+
computed: false
238+
key: PrivateIdentifier
239+
}
240+
export type PropertyDefinition =
241+
| PropertyDefinitionNonComputedName
242+
| PropertyDefinitionComputedName
243+
| PropertyDefinitionPrivate
244+
198245
export type ModuleDeclaration =
199246
| ImportDeclaration
200247
| ExportNamedDeclaration
@@ -284,6 +331,10 @@ export interface Identifier extends HasParentNode {
284331
type: 'Identifier'
285332
name: string
286333
}
334+
export interface PrivateIdentifier extends HasParentNode {
335+
type: 'PrivateIdentifier'
336+
name: string
337+
}
287338
export interface Literal extends HasParentNode {
288339
type: 'Literal'
289340
value: string | boolean | null | number | RegExp | BigInt
@@ -304,16 +355,25 @@ export interface ObjectExpression extends HasParentNode {
304355
type: 'ObjectExpression'
305356
properties: (Property | SpreadElement)[]
306357
}
307-
export interface Property extends HasParentNode {
358+
interface BaseProperty extends HasParentNode {
308359
type: 'Property'
309360
kind: 'init' | 'get' | 'set'
310361
method: boolean
311362
shorthand: boolean
312-
computed: boolean
313-
key: Expression
363+
// computed: boolean
364+
// key: Expression
314365
value: Expression
315366
parent: ObjectExpression
316367
}
368+
export interface PropertyNonComputedName extends BaseProperty {
369+
computed: false
370+
key: Identifier | Literal
371+
}
372+
export interface PropertyComputedName extends BaseProperty {
373+
computed: true
374+
key: Expression
375+
}
376+
export type Property = PropertyNonComputedName | PropertyComputedName
317377
export interface FunctionExpression extends HasParentNode {
318378
type: 'FunctionExpression'
319379
async: boolean
@@ -444,13 +504,32 @@ export interface NewExpression extends HasParentNode {
444504
callee: Expression
445505
arguments: (Expression | SpreadElement)[]
446506
}
447-
export interface MemberExpression extends HasParentNode {
507+
interface BaseMemberExpression extends HasParentNode {
448508
type: 'MemberExpression'
449-
computed: boolean
509+
// computed: boolean
510+
// object: Expression | Super
511+
// property: Expression
512+
optional: boolean
513+
}
514+
export interface MemberExpressionNonComputedName extends BaseMemberExpression {
515+
computed: false
516+
object: Expression | Super
517+
property: Identifier
518+
}
519+
export interface MemberExpressionComputedName extends BaseMemberExpression {
520+
computed: true
450521
object: Expression | Super
451522
property: Expression
452-
optional: boolean
453523
}
524+
export interface MemberExpressionPrivate extends BaseMemberExpression {
525+
computed: false
526+
object: Expression
527+
property: PrivateIdentifier
528+
}
529+
export type MemberExpression =
530+
| MemberExpressionNonComputedName
531+
| MemberExpressionComputedName
532+
| MemberExpressionPrivate
454533
export interface ChainExpression extends HasParentNode {
455534
type: 'ChainExpression'
456535
expression: ChainElement
@@ -506,16 +585,28 @@ export interface ObjectPattern extends HasParentNode {
506585
type: 'ObjectPattern'
507586
properties: (AssignmentProperty | RestElement)[]
508587
}
509-
export interface AssignmentProperty extends HasParentNode {
588+
interface BaseAssignmentProperty extends HasParentNode {
510589
type: 'Property'
511590
kind: 'init'
512591
method: false
513592
shorthand: boolean
514-
computed: boolean
515-
key: Expression
593+
// computed: boolean
594+
// key: Expression
516595
value: Pattern
517596
parent: ObjectPattern
518597
}
598+
export interface AssignmentPropertyNonComputedName
599+
extends BaseAssignmentProperty {
600+
computed: false
601+
key: Identifier | Literal
602+
}
603+
export interface AssignmentPropertyComputedName extends BaseAssignmentProperty {
604+
computed: true
605+
key: Expression
606+
}
607+
export type AssignmentProperty =
608+
| AssignmentPropertyNonComputedName
609+
| AssignmentPropertyComputedName
519610
export interface ArrayPattern extends HasParentNode {
520611
type: 'ArrayPattern'
521612
elements: Pattern[]

0 commit comments

Comments
 (0)