@@ -10,7 +10,8 @@ const {
10
10
isOpeningBraceToken,
11
11
isNotClosingParenToken,
12
12
isClosingBracketToken,
13
- isOpeningBracketToken
13
+ isOpeningBracketToken,
14
+ isNotOpeningBraceToken
14
15
} = require ( 'eslint-utils' )
15
16
16
17
/**
@@ -27,7 +28,7 @@ const {
27
28
* @typedef {import('@typescript-eslint/types').TSESTree.TSConstructSignatureDeclaration } TSConstructSignatureDeclaration
28
29
* @typedef {import('@typescript-eslint/types').TSESTree.TSImportEqualsDeclaration } TSImportEqualsDeclaration
29
30
* @typedef {import('@typescript-eslint/types').TSESTree.TSAbstractMethodDefinition } TSAbstractMethodDefinition
30
- * @typedef {import('@typescript-eslint/types').TSESTree.TSAbstractClassProperty } TSAbstractClassProperty
31
+ * @typedef {import('@typescript-eslint/types').TSESTree.TSAbstractPropertyDefinition } TSAbstractPropertyDefinition
31
32
* @typedef {import('@typescript-eslint/types').TSESTree.TSEnumMember } TSEnumMember
32
33
* @typedef {import('@typescript-eslint/types').TSESTree.TSPropertySignature } TSPropertySignature
33
34
* @typedef {import('@typescript-eslint/types').TSESTree.TSIndexSignature } TSIndexSignature
@@ -50,12 +51,13 @@ const {
50
51
* @typedef {import('@typescript-eslint/types').TSESTree.TSOptionalType } TSOptionalType
51
52
* @typedef {import('@typescript-eslint/types').TSESTree.TSNonNullExpression } TSNonNullExpression
52
53
* @typedef {import('@typescript-eslint/types').TSESTree.JSXChild } JSXChild
54
+ * @typedef {import('@typescript-eslint/types').TSESTree.TypeNode } TypeNode
53
55
*
54
56
*/
55
57
/**
56
- * Perhaps this node will be deprecated in the future.
57
- * It was present in @typescript-eslint/[email protected] .
58
- * @typedef {import('@typescript-eslint/types').TSESTree.ClassProperty } ClassProperty
58
+ * Deprecated in @typescript-eslint/parser v5
59
+ * @typedef { import(' @typescript-eslint/types').TSESTree.PropertyDefinition } ClassProperty
60
+ * @typedef {import('@typescript-eslint/types').TSESTree.TSAbstractPropertyDefinition } TSAbstractClassProperty
59
61
*/
60
62
61
63
module . exports = {
@@ -203,6 +205,7 @@ function defineVisitor({
203
205
* | TSConstructSignatureDeclaration
204
206
* | TSImportEqualsDeclaration
205
207
* | TSAbstractMethodDefinition
208
+ * | TSAbstractPropertyDefinition
206
209
* | TSAbstractClassProperty
207
210
* | TSEnumMember
208
211
* | ClassProperty
@@ -211,10 +214,80 @@ function defineVisitor({
211
214
* | TSMethodSignature} node
212
215
*/
213
216
[ 'TSTypeAliasDeclaration, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSImportEqualsDeclaration,' +
214
- 'TSAbstractMethodDefinition, TSAbstractClassProperty, TSEnumMember, ClassProperty,' +
215
- 'TSPropertySignature, TSIndexSignature, TSMethodSignature' ] ( node ) {
217
+ 'TSAbstractMethodDefinition, TSAbstractPropertyDefinition, TSEnumMember,' +
218
+ 'TSPropertySignature, TSIndexSignature, TSMethodSignature,' +
219
+ // Deprecated in @typescript -eslint/parser v5
220
+ 'ClassProperty, TSAbstractClassProperty' ] ( node ) {
216
221
processSemicolons ( node )
217
222
} ,
223
+ /**
224
+ * @param {TSESTreeNode } node
225
+ */
226
+ // eslint-disable-next-line complexity -- ignore
227
+ '*[type=/^TS/]' ( node ) {
228
+ if (
229
+ node . type !== 'TSAnyKeyword' &&
230
+ node . type !== 'TSArrayType' &&
231
+ node . type !== 'TSBigIntKeyword' &&
232
+ node . type !== 'TSBooleanKeyword' &&
233
+ node . type !== 'TSConditionalType' &&
234
+ node . type !== 'TSConstructorType' &&
235
+ node . type !== 'TSFunctionType' &&
236
+ node . type !== 'TSImportType' &&
237
+ node . type !== 'TSIndexedAccessType' &&
238
+ node . type !== 'TSInferType' &&
239
+ node . type !== 'TSIntersectionType' &&
240
+ node . type !== 'TSIntrinsicKeyword' &&
241
+ node . type !== 'TSLiteralType' &&
242
+ node . type !== 'TSMappedType' &&
243
+ node . type !== 'TSNamedTupleMember' &&
244
+ node . type !== 'TSNeverKeyword' &&
245
+ node . type !== 'TSNullKeyword' &&
246
+ node . type !== 'TSNumberKeyword' &&
247
+ node . type !== 'TSObjectKeyword' &&
248
+ node . type !== 'TSOptionalType' &&
249
+ node . type !== 'TSRestType' &&
250
+ node . type !== 'TSStringKeyword' &&
251
+ node . type !== 'TSSymbolKeyword' &&
252
+ node . type !== 'TSTemplateLiteralType' &&
253
+ node . type !== 'TSThisType' &&
254
+ node . type !== 'TSTupleType' &&
255
+ node . type !== 'TSTypeLiteral' &&
256
+ node . type !== 'TSTypeOperator' &&
257
+ node . type !== 'TSTypePredicate' &&
258
+ node . type !== 'TSTypeQuery' &&
259
+ node . type !== 'TSTypeReference' &&
260
+ node . type !== 'TSUndefinedKeyword' &&
261
+ node . type !== 'TSUnionType' &&
262
+ node . type !== 'TSUnknownKeyword' &&
263
+ node . type !== 'TSVoidKeyword'
264
+ ) {
265
+ return
266
+ }
267
+ /** @type {TypeNode } */
268
+ const typeNode = node
269
+ if ( /** @type {any } */ ( typeNode . parent ) . type === 'TSParenthesizedType' ) {
270
+ return
271
+ }
272
+ // Process parentheses.
273
+ let leftToken = tokenStore . getTokenBefore ( node )
274
+ let rightToken = tokenStore . getTokenAfter ( node )
275
+ let firstToken = tokenStore . getFirstToken ( node )
276
+
277
+ while (
278
+ leftToken &&
279
+ rightToken &&
280
+ isOpeningParenToken ( leftToken ) &&
281
+ isClosingParenToken ( rightToken )
282
+ ) {
283
+ setOffset ( firstToken , 1 , leftToken )
284
+ setOffset ( rightToken , 0 , leftToken )
285
+
286
+ firstToken = leftToken
287
+ leftToken = tokenStore . getTokenBefore ( leftToken )
288
+ rightToken = tokenStore . getTokenAfter ( rightToken )
289
+ }
290
+ } ,
218
291
/**
219
292
* Process type annotation
220
293
*
@@ -535,15 +608,6 @@ function defineVisitor({
535
608
setOffset ( typeTokens . firstToken , offset , firstToken )
536
609
}
537
610
} ,
538
- TSParenthesizedType ( node ) {
539
- // (T)
540
- processNodeList (
541
- [ node . typeAnnotation ] ,
542
- tokenStore . getFirstToken ( node ) ,
543
- tokenStore . getLastToken ( node ) ,
544
- 1
545
- )
546
- } ,
547
611
TSMappedType ( node ) {
548
612
// {[key in foo]: bar}
549
613
const leftBraceToken = tokenStore . getFirstToken ( node )
@@ -1026,12 +1090,12 @@ function defineVisitor({
1026
1090
* // ^^^^^^^
1027
1091
* ```
1028
1092
*
1029
- * @param {TSAbstractMethodDefinition | TSAbstractClassProperty | TSEnumMember | ClassProperty } node
1093
+ * @param {TSAbstractMethodDefinition | TSAbstractPropertyDefinition | TSEnumMember | TSAbstractClassProperty | ClassProperty } node
1030
1094
*
1031
1095
*/
1032
- 'TSAbstractMethodDefinition, TSAbstractClassProperty , TSEnumMember, ClassProperty' (
1033
- node
1034
- ) {
1096
+ [ 'TSAbstractMethodDefinition, TSAbstractPropertyDefinition , TSEnumMember,' +
1097
+ // Deprecated in @typescript -eslint/parser v5
1098
+ 'ClassProperty, TSAbstractClassProperty' ] ( node ) {
1035
1099
const { keyNode, valueNode } =
1036
1100
node . type === 'TSEnumMember'
1037
1101
? { keyNode : node . id , valueNode : node . initializer }
@@ -1275,6 +1339,31 @@ function defineVisitor({
1275
1339
setOffset ( atToken , 0 , tokenStore . getFirstToken ( decorators [ 0 ] ) )
1276
1340
}
1277
1341
} ,
1342
+ StaticBlock ( node ) {
1343
+ const firstToken = tokenStore . getFirstToken ( node )
1344
+ let next = tokenStore . getTokenAfter ( firstToken )
1345
+ while ( next && isNotOpeningBraceToken ( next ) ) {
1346
+ setOffset ( next , 0 , firstToken )
1347
+ next = tokenStore . getTokenAfter ( next )
1348
+ }
1349
+ setOffset ( next , 0 , firstToken )
1350
+ processNodeList ( node . body , next , tokenStore . getLastToken ( node ) , 1 )
1351
+ } ,
1352
+
1353
+ // ----------------------------------------------------------------------
1354
+ // DEPRECATED NODES
1355
+ // ----------------------------------------------------------------------
1356
+ /** @param {any } node */
1357
+ TSParenthesizedType ( node ) {
1358
+ // Deprecated in @typescript -eslint/parser v5
1359
+ // (T)
1360
+ processNodeList (
1361
+ [ node . typeAnnotation ] ,
1362
+ tokenStore . getFirstToken ( node ) ,
1363
+ tokenStore . getLastToken ( node ) ,
1364
+ 1
1365
+ )
1366
+ } ,
1278
1367
// ----------------------------------------------------------------------
1279
1368
// SINGLE TOKEN NODES
1280
1369
// ----------------------------------------------------------------------
0 commit comments