Skip to content

Commit c8cb229

Browse files
committed
feat: support for tseslint v8 to svelte/indent rule
1 parent 74c3d17 commit c8cb229

File tree

3 files changed

+54
-10
lines changed

3 files changed

+54
-10
lines changed

packages/eslint-plugin-svelte/src/rules/indent-helpers/es.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
195195
visitor.BreakStatement(node);
196196
},
197197
CallExpression(node: TSESTree.CallExpression) {
198-
const typeArguments = node.typeArguments ?? node.typeParameters;
198+
const typeArguments =
199+
node.typeArguments ??
200+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
201+
(node as any).typeParameters;
199202
const firstToken = sourceCode.getFirstToken(node);
200203
const leftParenToken = sourceCode.getTokenAfter(typeArguments || node.callee, {
201204
filter: isOpeningParenToken,
@@ -706,7 +709,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
706709
visitor.MethodDefinition(node);
707710
},
708711
NewExpression(node: TSESTree.NewExpression) {
709-
const typeArguments = node.typeArguments ?? node.typeParameters;
712+
const typeArguments =
713+
node.typeArguments ??
714+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
715+
(node as any).typeParameters;
710716
const newToken = sourceCode.getFirstToken(node);
711717
const calleeTokens = getFirstAndLastTokens(sourceCode, node.callee);
712718
offsets.setOffsetToken(calleeTokens.firstToken, 1, newToken);

packages/eslint-plugin-svelte/src/rules/indent-helpers/ts.ts

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
6262
// or
6363
// const ErrorMap = Map<string, Error>
6464
// ^^^^^^^^^^^^^^^^^^
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;
6669
if (typeArguments) {
6770
const firstToken = sourceCode.getFirstToken(node);
6871
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, firstToken);
@@ -254,20 +257,34 @@ export function defineVisitor(context: IndentContext): NodeListener {
254257
// {[key in foo]: bar}
255258
const leftBraceToken = sourceCode.getFirstToken(node);
256259

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+
)!;
259264
offsets.setOffsetToken(
260265
[...sourceCode.getTokensBetween(leftBraceToken, leftBracketToken), leftBracketToken],
261266
1,
262267
leftBraceToken
263268
);
264269
offsets.setOffsetElementList(
265-
[node.typeParameter, node.nameType],
270+
[node.key, node.constraint, node.typeParameter, node.nameType],
266271
leftBracketToken,
267272
rightBracketToken,
268273
1
269274
);
270275

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+
271288
const rightBraceToken = sourceCode.getLastToken(node);
272289
if (node.typeAnnotation) {
273290
const typeAnnotationToken = sourceCode.getFirstToken(node.typeAnnotation);
@@ -402,7 +419,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
402419
TSClassImplements(node: TSESTree.TSClassImplements | TSESTree.TSInterfaceHeritage) {
403420
// class C implements T {}
404421
// ^
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;
406426
if (typeArguments) {
407427
offsets.setOffsetToken(
408428
sourceCode.getFirstToken(typeArguments),
@@ -427,6 +447,14 @@ export function defineVisitor(context: IndentContext): NodeListener {
427447
const leftBraceToken = sourceCode.getTokenAfter(idTokens.lastToken)!;
428448
const rightBraceToken = sourceCode.getLastToken(node);
429449
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);
430458
offsets.setOffsetElementList(node.members, leftBraceToken, rightBraceToken, 1);
431459
},
432460
TSModuleDeclaration(node: TSESTree.TSModuleDeclaration) {
@@ -677,7 +705,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
677705
},
678706
TSImportType(node: TSESTree.TSImportType) {
679707
// 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;
681712
const firstToken = sourceCode.getFirstToken(node);
682713
const leftParenToken = sourceCode.getTokenAfter(firstToken, {
683714
filter: isOpeningParenToken,
@@ -1057,7 +1088,10 @@ export function defineVisitor(context: IndentContext): NodeListener {
10571088
sourceCode.getFirstToken(node.id || node)
10581089
);
10591090
}
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;
10611095
if (superTypeArguments != null && node.superClass != null) {
10621096
offsets.setOffsetToken(
10631097
sourceCode.getFirstToken(superTypeArguments),

packages/eslint-plugin-svelte/src/rules/require-event-dispatcher-types.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ export default createRule('require-event-dispatcher-types', {
4242
}
4343
})) {
4444
const node = n as TSESTree.CallExpression;
45-
if ((node.typeArguments ?? node.typeParameters) === undefined) {
45+
if (
46+
(node.typeArguments ??
47+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Support old typescript-eslint
48+
(node as any).typeParameters) === undefined
49+
) {
4650
context.report({ node, messageId: 'missingTypeParameter' });
4751
}
4852
}

0 commit comments

Comments
 (0)