@@ -62,7 +62,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
62
62
// or
63
63
// const ErrorMap = Map<string, Error>
64
64
// ^^^^^^^^^^^^^^^^^^
65
- const typeArguments = node . typeArguments ?? node . typeParameters ;
65
+ const typeArguments =
66
+ node . typeArguments ??
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
68
+ ( node as any ) . typeParameters ;
66
69
if ( typeArguments ) {
67
70
const firstToken = sourceCode . getFirstToken ( node ) ;
68
71
offsets . setOffsetToken ( sourceCode . getFirstToken ( typeArguments ) , 1 , firstToken ) ;
@@ -254,20 +257,34 @@ export function defineVisitor(context: IndentContext): NodeListener {
254
257
// {[key in foo]: bar}
255
258
const leftBraceToken = sourceCode . getFirstToken ( node ) ;
256
259
257
- const leftBracketToken = sourceCode . getTokenBefore ( node . typeParameter ) ! ;
258
- const rightBracketToken = sourceCode . getTokenAfter ( node . nameType || node . typeParameter ) ! ;
260
+ const leftBracketToken = sourceCode . getTokenBefore ( node . key || node . typeParameter ) ! ;
261
+ const rightBracketToken = sourceCode . getTokenAfter (
262
+ node . nameType || node . constraint || node . typeParameter
263
+ ) ! ;
259
264
offsets . setOffsetToken (
260
265
[ ...sourceCode . getTokensBetween ( leftBraceToken , leftBracketToken ) , leftBracketToken ] ,
261
266
1 ,
262
267
leftBraceToken
263
268
) ;
264
269
offsets . setOffsetElementList (
265
- [ node . typeParameter , node . nameType ] ,
270
+ [ node . key , node . constraint , node . typeParameter , node . nameType ] ,
266
271
leftBracketToken ,
267
272
rightBracketToken ,
268
273
1
269
274
) ;
270
275
276
+ if ( node . key && node . constraint ) {
277
+ const firstToken = sourceCode . getFirstToken ( node . key ) ;
278
+ offsets . setOffsetToken (
279
+ [
280
+ ...sourceCode . getTokensBetween ( firstToken , node . constraint ) ,
281
+ sourceCode . getFirstToken ( node . constraint )
282
+ ] ,
283
+ 1 ,
284
+ firstToken
285
+ ) ;
286
+ }
287
+
271
288
const rightBraceToken = sourceCode . getLastToken ( node ) ;
272
289
if ( node . typeAnnotation ) {
273
290
const typeAnnotationToken = sourceCode . getFirstToken ( node . typeAnnotation ) ;
@@ -402,7 +419,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
402
419
TSClassImplements ( node : TSESTree . TSClassImplements | TSESTree . TSInterfaceHeritage ) {
403
420
// class C implements T {}
404
421
// ^
405
- const typeArguments = node . typeArguments ?? node . typeParameters ;
422
+ const typeArguments =
423
+ node . typeArguments ??
424
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
425
+ ( node as any ) . typeParameters ;
406
426
if ( typeArguments ) {
407
427
offsets . setOffsetToken (
408
428
sourceCode . getFirstToken ( typeArguments ) ,
@@ -427,6 +447,14 @@ export function defineVisitor(context: IndentContext): NodeListener {
427
447
const leftBraceToken = sourceCode . getTokenAfter ( idTokens . lastToken ) ! ;
428
448
const rightBraceToken = sourceCode . getLastToken ( node ) ;
429
449
offsets . setOffsetToken ( leftBraceToken , 0 , firstToken ) ;
450
+ if ( node . members )
451
+ offsets . setOffsetElementList ( node . members , leftBraceToken , rightBraceToken , 1 ) ;
452
+ } ,
453
+ TSEnumBody ( node : TSESTree . TSEnumBody ) {
454
+ // enum E {...}
455
+ // ^^^^^
456
+ const leftBraceToken = sourceCode . getFirstToken ( node ) ;
457
+ const rightBraceToken = sourceCode . getLastToken ( node ) ;
430
458
offsets . setOffsetElementList ( node . members , leftBraceToken , rightBraceToken , 1 ) ;
431
459
} ,
432
460
TSModuleDeclaration ( node : TSESTree . TSModuleDeclaration ) {
@@ -677,7 +705,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
677
705
} ,
678
706
TSImportType ( node : TSESTree . TSImportType ) {
679
707
// import('foo').B
680
- const typeArguments = node . typeArguments ?? node . typeParameters ;
708
+ const typeArguments =
709
+ node . typeArguments ??
710
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
711
+ ( node as any ) . typeParameters ;
681
712
const firstToken = sourceCode . getFirstToken ( node ) ;
682
713
const leftParenToken = sourceCode . getTokenAfter ( firstToken , {
683
714
filter : isOpeningParenToken ,
@@ -1057,7 +1088,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
1057
1088
sourceCode . getFirstToken ( node . id || node )
1058
1089
) ;
1059
1090
}
1060
- const superTypeArguments = node . superTypeArguments ?? node . superTypeParameters ;
1091
+ const superTypeArguments =
1092
+ node . superTypeArguments ??
1093
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
1094
+ ( node as any ) . superTypeParameters ;
1061
1095
if ( superTypeArguments != null && node . superClass != null ) {
1062
1096
offsets . setOffsetToken (
1063
1097
sourceCode . getFirstToken ( superTypeArguments ) ,
0 commit comments