eslint-plugin-svelte 2.35.0 → 2.36.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/lib/meta.d.ts +1 -1
- package/lib/meta.js +1 -1
- package/lib/rules/indent-helpers/commons.js +1 -0
- package/lib/rules/indent-helpers/es.js +9 -7
- package/lib/rules/indent-helpers/ts.js +12 -8
- package/lib/rules/require-event-dispatcher-types.js +1 -1
- package/lib/rules/valid-compile.js +5 -1
- package/lib/types-for-node.d.ts +4 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -25,11 +25,17 @@ It provides many unique check rules using the AST generated by [svelte-eslint-pa
|
|
|
25
25
|
|
|
26
26
|
### ❗ Attention
|
|
27
27
|
|
|
28
|
+
#### Cannot be used with eslint-plugin-svelte3
|
|
29
|
+
|
|
28
30
|
The [svelte-eslint-parser] and the `eslint-plugin-svelte` can not be used with the [eslint-plugin-svelte3].
|
|
29
31
|
|
|
30
32
|
[svelte-eslint-parser]: https://github.com/sveltejs/svelte-eslint-parser
|
|
31
33
|
[eslint-plugin-svelte3]: https://github.com/sveltejs/eslint-plugin-svelte3
|
|
32
34
|
|
|
35
|
+
#### Experimental support for Svelte v5
|
|
36
|
+
|
|
37
|
+
We are working on support for Svelte v5, but it is still an experimental feature. Please note that rules and features related to Svelte v5 may be changed or removed in minor versions without notice.
|
|
38
|
+
|
|
33
39
|
<!--DOCS_IGNORE_START-->
|
|
34
40
|
|
|
35
41
|
## Migration Guide
|
package/lib/meta.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const name: "eslint-plugin-svelte";
|
|
2
|
-
export declare const version: "2.
|
|
2
|
+
export declare const version: "2.36.0-next.0";
|
package/lib/meta.js
CHANGED
|
@@ -41,6 +41,7 @@ function isBeginningOfElement(node) {
|
|
|
41
41
|
node.parent.type === 'SvelteElseBlock' ||
|
|
42
42
|
node.parent.type === 'SvelteIfBlock' ||
|
|
43
43
|
node.parent.type === 'SvelteKeyBlock' ||
|
|
44
|
+
node.parent.type === 'SvelteSnippetBlock' ||
|
|
44
45
|
node.parent.type === 'SvelteStyleElement') {
|
|
45
46
|
return node.parent.children[0] === node;
|
|
46
47
|
}
|
|
@@ -110,16 +110,17 @@ function defineVisitor(context) {
|
|
|
110
110
|
visitor.BreakStatement(node);
|
|
111
111
|
},
|
|
112
112
|
CallExpression(node) {
|
|
113
|
+
const typeArguments = node.typeArguments ?? node.typeParameters;
|
|
113
114
|
const firstToken = sourceCode.getFirstToken(node);
|
|
114
|
-
const leftParenToken = sourceCode.getTokenAfter(
|
|
115
|
+
const leftParenToken = sourceCode.getTokenAfter(typeArguments || node.callee, {
|
|
115
116
|
filter: eslint_utils_1.isOpeningParenToken,
|
|
116
117
|
includeComments: false
|
|
117
118
|
});
|
|
118
119
|
const rightParenToken = sourceCode.getLastToken(node);
|
|
119
|
-
if (
|
|
120
|
-
offsets.setOffsetToken(sourceCode.getFirstToken(
|
|
120
|
+
if (typeArguments) {
|
|
121
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, firstToken);
|
|
121
122
|
}
|
|
122
|
-
for (const optionalToken of sourceCode.getTokensBetween(sourceCode.getLastToken(
|
|
123
|
+
for (const optionalToken of sourceCode.getTokensBetween(sourceCode.getLastToken(typeArguments || node.callee), leftParenToken, { filter: isOptionalToken, includeComments: false })) {
|
|
123
124
|
offsets.setOffsetToken(optionalToken, 1, firstToken);
|
|
124
125
|
}
|
|
125
126
|
offsets.setOffsetToken(leftParenToken, 1, firstToken);
|
|
@@ -532,13 +533,14 @@ function defineVisitor(context) {
|
|
|
532
533
|
visitor.MethodDefinition(node);
|
|
533
534
|
},
|
|
534
535
|
NewExpression(node) {
|
|
536
|
+
const typeArguments = node.typeArguments ?? node.typeParameters;
|
|
535
537
|
const newToken = sourceCode.getFirstToken(node);
|
|
536
538
|
const calleeTokens = (0, commons_1.getFirstAndLastTokens)(sourceCode, node.callee);
|
|
537
539
|
offsets.setOffsetToken(calleeTokens.firstToken, 1, newToken);
|
|
538
|
-
if (
|
|
539
|
-
offsets.setOffsetToken(sourceCode.getFirstToken(
|
|
540
|
+
if (typeArguments) {
|
|
541
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, calleeTokens.firstToken);
|
|
540
542
|
}
|
|
541
|
-
const leftParenBefore =
|
|
543
|
+
const leftParenBefore = typeArguments || calleeTokens.lastToken;
|
|
542
544
|
if (node.arguments.length || leftParenBefore.range[1] < node.range[1]) {
|
|
543
545
|
const rightParenToken = sourceCode.getLastToken(node);
|
|
544
546
|
const leftParenToken = sourceCode.getTokenAfter(leftParenBefore);
|
|
@@ -28,9 +28,10 @@ function defineVisitor(context) {
|
|
|
28
28
|
visitor.TSAsExpression(node);
|
|
29
29
|
},
|
|
30
30
|
TSTypeReference(node) {
|
|
31
|
-
|
|
31
|
+
const typeArguments = node.typeArguments ?? node.typeParameters;
|
|
32
|
+
if (typeArguments) {
|
|
32
33
|
const firstToken = sourceCode.getFirstToken(node);
|
|
33
|
-
offsets.setOffsetToken(sourceCode.getFirstToken(
|
|
34
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, firstToken);
|
|
34
35
|
}
|
|
35
36
|
},
|
|
36
37
|
TSInstantiationExpression(node) {
|
|
@@ -251,8 +252,9 @@ function defineVisitor(context) {
|
|
|
251
252
|
offsets.setOffsetElementList(node.body, sourceCode.getFirstToken(node), sourceCode.getLastToken(node), 1);
|
|
252
253
|
},
|
|
253
254
|
TSClassImplements(node) {
|
|
254
|
-
|
|
255
|
-
|
|
255
|
+
const typeArguments = node.typeArguments ?? node.typeParameters;
|
|
256
|
+
if (typeArguments) {
|
|
257
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, sourceCode.getFirstToken(node));
|
|
256
258
|
}
|
|
257
259
|
},
|
|
258
260
|
TSInterfaceHeritage(node) {
|
|
@@ -434,6 +436,7 @@ function defineVisitor(context) {
|
|
|
434
436
|
offsets.setOffsetToken(expressionToken, 1, firstToken);
|
|
435
437
|
},
|
|
436
438
|
TSImportType(node) {
|
|
439
|
+
const typeArguments = node.typeArguments ?? node.typeParameters;
|
|
437
440
|
const firstToken = sourceCode.getFirstToken(node);
|
|
438
441
|
const leftParenToken = sourceCode.getTokenAfter(firstToken, {
|
|
439
442
|
filter: eslint_utils_1.isOpeningParenToken,
|
|
@@ -452,8 +455,8 @@ function defineVisitor(context) {
|
|
|
452
455
|
const propertyToken = sourceCode.getTokenAfter(dotToken);
|
|
453
456
|
offsets.setOffsetToken([dotToken, propertyToken], 1, firstToken);
|
|
454
457
|
}
|
|
455
|
-
if (
|
|
456
|
-
offsets.setOffsetToken(sourceCode.getFirstToken(
|
|
458
|
+
if (typeArguments) {
|
|
459
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, firstToken);
|
|
457
460
|
}
|
|
458
461
|
},
|
|
459
462
|
TSParameterProperty(node) {
|
|
@@ -710,8 +713,9 @@ function defineVisitor(context) {
|
|
|
710
713
|
if (node.typeParameters != null) {
|
|
711
714
|
offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, sourceCode.getFirstToken(node.id || node));
|
|
712
715
|
}
|
|
713
|
-
|
|
714
|
-
|
|
716
|
+
const superTypeArguments = node.superTypeArguments ?? node.superTypeParameters;
|
|
717
|
+
if (superTypeArguments != null && node.superClass != null) {
|
|
718
|
+
offsets.setOffsetToken(sourceCode.getFirstToken(superTypeArguments), 1, sourceCode.getFirstToken(node.superClass));
|
|
715
719
|
}
|
|
716
720
|
if (node.implements != null && node.implements.length) {
|
|
717
721
|
const classToken = sourceCode.getFirstToken(node);
|
|
@@ -40,7 +40,7 @@ exports.default = (0, utils_1.createRule)('require-event-dispatcher-types', {
|
|
|
40
40
|
}
|
|
41
41
|
})) {
|
|
42
42
|
const node = n;
|
|
43
|
-
if (node.typeParameters === undefined) {
|
|
43
|
+
if ((node.typeArguments ?? node.typeParameters) === undefined) {
|
|
44
44
|
context.report({ node, messageId: 'missingTypeParameter' });
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -27,7 +27,11 @@ exports.default = (0, utils_1.createRule)('valid-compile', {
|
|
|
27
27
|
return {};
|
|
28
28
|
}
|
|
29
29
|
const ignoreWarnings = Boolean(context.options[0]?.ignoreWarnings);
|
|
30
|
-
const ignores = [
|
|
30
|
+
const ignores = [
|
|
31
|
+
'missing-declaration',
|
|
32
|
+
'dynamic-slot-name',
|
|
33
|
+
'invalid-slot-name'
|
|
34
|
+
];
|
|
31
35
|
function report(warnings) {
|
|
32
36
|
for (const warn of warnings) {
|
|
33
37
|
if (warn.code && ignores.includes(warn.code)) {
|
package/lib/types-for-node.d.ts
CHANGED
|
@@ -187,6 +187,7 @@ export type ASTNodeListener = {
|
|
|
187
187
|
SvelteMustacheTag?: (node: AST.SvelteMustacheTag & ASTNodeWithParent) => void;
|
|
188
188
|
SvelteDebugTag?: (node: AST.SvelteDebugTag & ASTNodeWithParent) => void;
|
|
189
189
|
SvelteConstTag?: (node: AST.SvelteConstTag & ASTNodeWithParent) => void;
|
|
190
|
+
SvelteRenderTag?: (node: AST.SvelteRenderTag & ASTNodeWithParent) => void;
|
|
190
191
|
SvelteIfBlock?: (node: AST.SvelteIfBlock & ASTNodeWithParent) => void;
|
|
191
192
|
SvelteElseBlock?: (node: AST.SvelteElseBlock & ASTNodeWithParent) => void;
|
|
192
193
|
SvelteEachBlock?: (node: AST.SvelteEachBlock & ASTNodeWithParent) => void;
|
|
@@ -195,6 +196,7 @@ export type ASTNodeListener = {
|
|
|
195
196
|
SvelteAwaitThenBlock?: (node: AST.SvelteAwaitThenBlock & ASTNodeWithParent) => void;
|
|
196
197
|
SvelteAwaitCatchBlock?: (node: AST.SvelteAwaitCatchBlock & ASTNodeWithParent) => void;
|
|
197
198
|
SvelteKeyBlock?: (node: AST.SvelteKeyBlock & ASTNodeWithParent) => void;
|
|
199
|
+
SvelteSnippetBlock?: (node: AST.SvelteSnippetBlock & ASTNodeWithParent) => void;
|
|
198
200
|
SvelteAttribute?: (node: AST.SvelteAttribute & ASTNodeWithParent) => void;
|
|
199
201
|
SvelteShorthandAttribute?: (node: AST.SvelteShorthandAttribute & ASTNodeWithParent) => void;
|
|
200
202
|
SvelteSpreadAttribute?: (node: AST.SvelteSpreadAttribute & ASTNodeWithParent) => void;
|
|
@@ -378,6 +380,7 @@ export type SvelteNodeListener = {
|
|
|
378
380
|
SvelteMustacheTag?: (node: AST.SvelteMustacheTag & ASTNodeWithParent) => void;
|
|
379
381
|
SvelteDebugTag?: (node: AST.SvelteDebugTag & ASTNodeWithParent) => void;
|
|
380
382
|
SvelteConstTag?: (node: AST.SvelteConstTag & ASTNodeWithParent) => void;
|
|
383
|
+
SvelteRenderTag?: (node: AST.SvelteRenderTag & ASTNodeWithParent) => void;
|
|
381
384
|
SvelteIfBlock?: (node: AST.SvelteIfBlock & ASTNodeWithParent) => void;
|
|
382
385
|
SvelteElseBlock?: (node: AST.SvelteElseBlock & ASTNodeWithParent) => void;
|
|
383
386
|
SvelteEachBlock?: (node: AST.SvelteEachBlock & ASTNodeWithParent) => void;
|
|
@@ -386,6 +389,7 @@ export type SvelteNodeListener = {
|
|
|
386
389
|
SvelteAwaitThenBlock?: (node: AST.SvelteAwaitThenBlock & ASTNodeWithParent) => void;
|
|
387
390
|
SvelteAwaitCatchBlock?: (node: AST.SvelteAwaitCatchBlock & ASTNodeWithParent) => void;
|
|
388
391
|
SvelteKeyBlock?: (node: AST.SvelteKeyBlock & ASTNodeWithParent) => void;
|
|
392
|
+
SvelteSnippetBlock?: (node: AST.SvelteSnippetBlock & ASTNodeWithParent) => void;
|
|
389
393
|
SvelteAttribute?: (node: AST.SvelteAttribute & ASTNodeWithParent) => void;
|
|
390
394
|
SvelteShorthandAttribute?: (node: AST.SvelteShorthandAttribute & ASTNodeWithParent) => void;
|
|
391
395
|
SvelteSpreadAttribute?: (node: AST.SvelteSpreadAttribute & ASTNodeWithParent) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-svelte",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.36.0-next.0",
|
|
4
4
|
"description": "ESLint plugin for Svelte using AST",
|
|
5
5
|
"repository": "git+https://github.com/sveltejs/eslint-plugin-svelte.git",
|
|
6
6
|
"homepage": "https://sveltejs.github.io/eslint-plugin-svelte",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
],
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"eslint": "^7.0.0 || ^8.0.0-0",
|
|
30
|
-
"svelte": "^3.37.0 || ^4.0.0"
|
|
30
|
+
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.8"
|
|
31
31
|
},
|
|
32
32
|
"peerDependenciesMeta": {
|
|
33
33
|
"svelte": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"postcss-safe-parser": "^6.0.0",
|
|
47
47
|
"postcss-selector-parser": "^6.0.11",
|
|
48
48
|
"semver": "^7.5.3",
|
|
49
|
-
"svelte-eslint-parser": ">=0.
|
|
49
|
+
"svelte-eslint-parser": ">=0.34.0-next.2 <1.0.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@1stg/browserslist-config": "^1.2.3",
|
|
@@ -132,14 +132,14 @@
|
|
|
132
132
|
"source-map-js": "^1.0.2",
|
|
133
133
|
"stylelint": "^15.0.0",
|
|
134
134
|
"stylelint-config-standard": "^34.0.0",
|
|
135
|
-
"stylus": "^0.
|
|
136
|
-
"svelte": "^
|
|
135
|
+
"stylus": "^0.62.0",
|
|
136
|
+
"svelte": "^5.0.0-next.8",
|
|
137
137
|
"svelte-adapter-ghpages": "0.1.0",
|
|
138
138
|
"svelte-i18n": "^4.0.0",
|
|
139
139
|
"tslib": "^2.5.0",
|
|
140
140
|
"type-coverage": "^2.22.0",
|
|
141
141
|
"typescript": "~5.1.0",
|
|
142
|
-
"vite": "^
|
|
142
|
+
"vite": "^5.0.0",
|
|
143
143
|
"vite-plugin-svelte-md": "^0.1.7",
|
|
144
144
|
"yaml": "^2.1.1"
|
|
145
145
|
},
|