@@ -5,22 +5,6 @@ import { AST_NODE_TYPES, AST_TOKEN_TYPES, TSESTree } from './ts-estree';
5
5
6
6
const SyntaxKind = ts . SyntaxKind ;
7
7
8
- const ASSIGNMENT_OPERATORS : ts . AssignmentOperator [ ] = [
9
- SyntaxKind . EqualsToken ,
10
- SyntaxKind . PlusEqualsToken ,
11
- SyntaxKind . MinusEqualsToken ,
12
- SyntaxKind . AsteriskEqualsToken ,
13
- SyntaxKind . AsteriskAsteriskEqualsToken ,
14
- SyntaxKind . SlashEqualsToken ,
15
- SyntaxKind . PercentEqualsToken ,
16
- SyntaxKind . LessThanLessThanEqualsToken ,
17
- SyntaxKind . GreaterThanGreaterThanEqualsToken ,
18
- SyntaxKind . GreaterThanGreaterThanGreaterThanEqualsToken ,
19
- SyntaxKind . AmpersandEqualsToken ,
20
- SyntaxKind . BarEqualsToken ,
21
- SyntaxKind . CaretEqualsToken ,
22
- ] ;
23
-
24
8
const LOGICAL_OPERATORS : (
25
9
| ts . LogicalOperator
26
10
| ts . SyntaxKind . QuestionQuestionToken
@@ -30,71 +14,71 @@ const LOGICAL_OPERATORS: (
30
14
SyntaxKind . QuestionQuestionToken ,
31
15
] ;
32
16
33
- const TOKEN_TO_TEXT = {
34
- [ SyntaxKind . OpenBraceToken ] : '{' ,
35
- [ SyntaxKind . CloseBraceToken ] : '}' ,
36
- [ SyntaxKind . OpenParenToken ] : '(' ,
37
- [ SyntaxKind . CloseParenToken ] : ')' ,
38
- [ SyntaxKind . OpenBracketToken ] : '[' ,
39
- [ SyntaxKind . CloseBracketToken ] : ']' ,
40
- [ SyntaxKind . DotToken ] : '.' ,
41
- [ SyntaxKind . DotDotDotToken ] : '...' ,
42
- [ SyntaxKind . SemicolonToken ] : ';' ,
43
- [ SyntaxKind . CommaToken ] : ',' ,
44
- [ SyntaxKind . LessThanToken ] : '<' ,
45
- [ SyntaxKind . GreaterThanToken ] : '>' ,
46
- [ SyntaxKind . LessThanEqualsToken ] : '<=' ,
47
- [ SyntaxKind . GreaterThanEqualsToken ] : '>=' ,
48
- [ SyntaxKind . EqualsEqualsToken ] : '==' ,
49
- [ SyntaxKind . ExclamationEqualsToken ] : '!=' ,
50
- [ SyntaxKind . EqualsEqualsEqualsToken ] : '===' ,
51
- [ SyntaxKind . InstanceOfKeyword ] : 'instanceof' ,
52
- [ SyntaxKind . ExclamationEqualsEqualsToken ] : '!==' ,
53
- [ SyntaxKind . EqualsGreaterThanToken ] : '=>' ,
54
- [ SyntaxKind . PlusToken ] : '+' ,
55
- [ SyntaxKind . MinusToken ] : '-' ,
56
- [ SyntaxKind . AsteriskToken ] : '*' ,
57
- [ SyntaxKind . AsteriskAsteriskToken ] : '**' ,
58
- [ SyntaxKind . SlashToken ] : '/' ,
59
- [ SyntaxKind . PercentToken ] : '%' ,
60
- [ SyntaxKind . PlusPlusToken ] : '++' ,
61
- [ SyntaxKind . MinusMinusToken ] : '--' ,
62
- [ SyntaxKind . LessThanLessThanToken ] : '<<' ,
63
- [ SyntaxKind . LessThanSlashToken ] : '</' ,
64
- [ SyntaxKind . GreaterThanGreaterThanToken ] : '>>' ,
65
- [ SyntaxKind . GreaterThanGreaterThanGreaterThanToken ] : '>>>' ,
66
- [ SyntaxKind . AmpersandToken ] : '&' ,
67
- [ SyntaxKind . BarToken ] : '|' ,
68
- [ SyntaxKind . CaretToken ] : '^' ,
69
- [ SyntaxKind . ExclamationToken ] : '!' ,
70
- [ SyntaxKind . TildeToken ] : '~' ,
71
- [ SyntaxKind . AmpersandAmpersandToken ] : '&&' ,
72
- [ SyntaxKind . BarBarToken ] : '||' ,
73
- [ SyntaxKind . QuestionToken ] : '?' ,
74
- [ SyntaxKind . ColonToken ] : ':' ,
75
- [ SyntaxKind . EqualsToken ] : '=' ,
76
- [ SyntaxKind . PlusEqualsToken ] : '+=' ,
77
- [ SyntaxKind . MinusEqualsToken ] : '-=' ,
78
- [ SyntaxKind . AsteriskEqualsToken ] : '*=' ,
79
- [ SyntaxKind . AsteriskAsteriskEqualsToken ] : '**=' ,
80
- [ SyntaxKind . SlashEqualsToken ] : '/=' ,
81
- [ SyntaxKind . PercentEqualsToken ] : '%=' ,
82
- [ SyntaxKind . LessThanLessThanEqualsToken ] : '<<=' ,
83
- [ SyntaxKind . GreaterThanGreaterThanEqualsToken ] : '>>=' ,
84
- [ SyntaxKind . GreaterThanGreaterThanGreaterThanEqualsToken ] : '>>>=' ,
85
- [ SyntaxKind . AmpersandEqualsToken ] : '&=' ,
86
- [ SyntaxKind . BarEqualsToken ] : '|=' ,
87
- [ SyntaxKind . CaretEqualsToken ] : '^=' ,
88
- [ SyntaxKind . AtToken ] : '@' ,
89
- [ SyntaxKind . InKeyword ] : 'in' ,
90
- [ SyntaxKind . UniqueKeyword ] : 'unique' ,
91
- [ SyntaxKind . KeyOfKeyword ] : 'keyof' ,
92
- [ SyntaxKind . NewKeyword ] : 'new' ,
93
- [ SyntaxKind . ImportKeyword ] : 'import' ,
94
- [ SyntaxKind . ReadonlyKeyword ] : 'readonly' ,
95
- [ SyntaxKind . QuestionQuestionToken ] : '??' ,
96
- [ SyntaxKind . QuestionDotToken ] : '?.' ,
97
- } as const ;
17
+ interface TokenToText {
18
+ [ SyntaxKind . OpenBraceToken ] : '{' ;
19
+ [ SyntaxKind . CloseBraceToken ] : '}' ;
20
+ [ SyntaxKind . OpenParenToken ] : '(' ;
21
+ [ SyntaxKind . CloseParenToken ] : ')' ;
22
+ [ SyntaxKind . OpenBracketToken ] : '[' ;
23
+ [ SyntaxKind . CloseBracketToken ] : ']' ;
24
+ [ SyntaxKind . DotToken ] : '.' ;
25
+ [ SyntaxKind . DotDotDotToken ] : '...' ;
26
+ [ SyntaxKind . SemicolonToken ] : ';' ;
27
+ [ SyntaxKind . CommaToken ] : ',' ;
28
+ [ SyntaxKind . LessThanToken ] : '<' ;
29
+ [ SyntaxKind . GreaterThanToken ] : '>' ;
30
+ [ SyntaxKind . LessThanEqualsToken ] : '<=' ;
31
+ [ SyntaxKind . GreaterThanEqualsToken ] : '>=' ;
32
+ [ SyntaxKind . EqualsEqualsToken ] : '==' ;
33
+ [ SyntaxKind . ExclamationEqualsToken ] : '!=' ;
34
+ [ SyntaxKind . EqualsEqualsEqualsToken ] : '===' ;
35
+ [ SyntaxKind . InstanceOfKeyword ] : 'instanceof' ;
36
+ [ SyntaxKind . ExclamationEqualsEqualsToken ] : '!==' ;
37
+ [ SyntaxKind . EqualsGreaterThanToken ] : '=>' ;
38
+ [ SyntaxKind . PlusToken ] : '+' ;
39
+ [ SyntaxKind . MinusToken ] : '-' ;
40
+ [ SyntaxKind . AsteriskToken ] : '*' ;
41
+ [ SyntaxKind . AsteriskAsteriskToken ] : '**' ;
42
+ [ SyntaxKind . SlashToken ] : '/' ;
43
+ [ SyntaxKind . PercentToken ] : '%' ;
44
+ [ SyntaxKind . PlusPlusToken ] : '++' ;
45
+ [ SyntaxKind . MinusMinusToken ] : '--' ;
46
+ [ SyntaxKind . LessThanLessThanToken ] : '<<' ;
47
+ [ SyntaxKind . LessThanSlashToken ] : '</' ;
48
+ [ SyntaxKind . GreaterThanGreaterThanToken ] : '>>' ;
49
+ [ SyntaxKind . GreaterThanGreaterThanGreaterThanToken ] : '>>>' ;
50
+ [ SyntaxKind . AmpersandToken ] : '&' ;
51
+ [ SyntaxKind . BarToken ] : '|' ;
52
+ [ SyntaxKind . CaretToken ] : '^' ;
53
+ [ SyntaxKind . ExclamationToken ] : '!' ;
54
+ [ SyntaxKind . TildeToken ] : '~' ;
55
+ [ SyntaxKind . AmpersandAmpersandToken ] : '&&' ;
56
+ [ SyntaxKind . BarBarToken ] : '||' ;
57
+ [ SyntaxKind . QuestionToken ] : '?' ;
58
+ [ SyntaxKind . ColonToken ] : ':' ;
59
+ [ SyntaxKind . EqualsToken ] : '=' ;
60
+ [ SyntaxKind . PlusEqualsToken ] : '+=' ;
61
+ [ SyntaxKind . MinusEqualsToken ] : '-=' ;
62
+ [ SyntaxKind . AsteriskEqualsToken ] : '*=' ;
63
+ [ SyntaxKind . AsteriskAsteriskEqualsToken ] : '**=' ;
64
+ [ SyntaxKind . SlashEqualsToken ] : '/=' ;
65
+ [ SyntaxKind . PercentEqualsToken ] : '%=' ;
66
+ [ SyntaxKind . LessThanLessThanEqualsToken ] : '<<=' ;
67
+ [ SyntaxKind . GreaterThanGreaterThanEqualsToken ] : '>>=' ;
68
+ [ SyntaxKind . GreaterThanGreaterThanGreaterThanEqualsToken ] : '>>>=' ;
69
+ [ SyntaxKind . AmpersandEqualsToken ] : '&=' ;
70
+ [ SyntaxKind . BarEqualsToken ] : '|=' ;
71
+ [ SyntaxKind . CaretEqualsToken ] : '^=' ;
72
+ [ SyntaxKind . AtToken ] : '@' ;
73
+ [ SyntaxKind . InKeyword ] : 'in' ;
74
+ [ SyntaxKind . UniqueKeyword ] : 'unique' ;
75
+ [ SyntaxKind . KeyOfKeyword ] : 'keyof' ;
76
+ [ SyntaxKind . NewKeyword ] : 'new' ;
77
+ [ SyntaxKind . ImportKeyword ] : 'import' ;
78
+ [ SyntaxKind . ReadonlyKeyword ] : 'readonly' ;
79
+ [ SyntaxKind . QuestionQuestionToken ] : '??' ;
80
+ [ SyntaxKind . QuestionDotToken ] : '?.' ;
81
+ }
98
82
99
83
/**
100
84
* Returns true if the given ts.Token is the assignment operator
@@ -104,7 +88,10 @@ const TOKEN_TO_TEXT = {
104
88
export function isAssignmentOperator < T extends ts . SyntaxKind > (
105
89
operator : ts . Token < T > ,
106
90
) : boolean {
107
- return ( ASSIGNMENT_OPERATORS as ts . SyntaxKind [ ] ) . includes ( operator . kind ) ;
91
+ return (
92
+ operator . kind >= SyntaxKind . FirstAssignment &&
93
+ operator . kind <= SyntaxKind . LastAssignment
94
+ ) ;
108
95
}
109
96
110
97
/**
@@ -125,9 +112,10 @@ export function isLogicalOperator<T extends ts.SyntaxKind>(
125
112
*/
126
113
export function getTextForTokenKind < T extends ts . SyntaxKind > (
127
114
kind : T ,
128
- ) : T extends keyof typeof TOKEN_TO_TEXT ? typeof TOKEN_TO_TEXT [ T ] : undefined {
129
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
- return kind in TOKEN_TO_TEXT ? ( TOKEN_TO_TEXT as any ) [ kind ] : undefined ;
115
+ ) : T extends keyof TokenToText ? TokenToText [ T ] : string | undefined {
116
+ return ts . tokenToString ( kind ) as T extends keyof TokenToText
117
+ ? TokenToText [ T ]
118
+ : string | undefined ;
131
119
}
132
120
133
121
/**
0 commit comments