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 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.35.0";
2
+ export declare const version: "2.36.0-next.0";
package/lib/meta.js CHANGED
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.name = void 0;
4
4
  exports.name = 'eslint-plugin-svelte';
5
- exports.version = '2.35.0';
5
+ exports.version = '2.36.0-next.0';
@@ -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(node.typeParameters || node.callee, {
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 (node.typeParameters) {
120
- offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, firstToken);
120
+ if (typeArguments) {
121
+ offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, firstToken);
121
122
  }
122
- for (const optionalToken of sourceCode.getTokensBetween(sourceCode.getLastToken(node.typeParameters || node.callee), leftParenToken, { filter: isOptionalToken, includeComments: false })) {
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 (node.typeParameters) {
539
- offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, calleeTokens.firstToken);
540
+ if (typeArguments) {
541
+ offsets.setOffsetToken(sourceCode.getFirstToken(typeArguments), 1, calleeTokens.firstToken);
540
542
  }
541
- const leftParenBefore = node.typeParameters || calleeTokens.lastToken;
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
- if (node.typeParameters) {
31
+ const typeArguments = node.typeArguments ?? node.typeParameters;
32
+ if (typeArguments) {
32
33
  const firstToken = sourceCode.getFirstToken(node);
33
- offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, firstToken);
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
- if (node.typeParameters) {
255
- offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, sourceCode.getFirstToken(node));
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 (node.typeParameters) {
456
- offsets.setOffsetToken(sourceCode.getFirstToken(node.typeParameters), 1, firstToken);
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
- if (node.superTypeParameters != null && node.superClass != null) {
714
- offsets.setOffsetToken(sourceCode.getFirstToken(node.superTypeParameters), 1, sourceCode.getFirstToken(node.superClass));
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 = ['missing-declaration', 'dynamic-slot-name'];
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)) {
@@ -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.35.0",
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.33.0 <1.0.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.61.0",
136
- "svelte": "^4.0.0",
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": "^4.0.0",
142
+ "vite": "^5.0.0",
143
143
  "vite-plugin-svelte-md": "^0.1.7",
144
144
  "yaml": "^2.1.1"
145
145
  },