eslint-plugin-svelte 2.34.1 → 2.35.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 +1 -0
- package/lib/meta.d.ts +1 -1
- package/lib/meta.js +1 -1
- package/lib/rules/@typescript-eslint/no-unnecessary-condition.js +2 -1
- package/lib/rules/block-lang.js +2 -1
- package/lib/rules/comment-directive.js +3 -2
- package/lib/rules/first-attribute-linebreak.js +2 -1
- package/lib/rules/html-quotes.js +2 -1
- package/lib/rules/html-self-closing.js +2 -3
- package/lib/rules/indent-helpers/index.js +3 -2
- package/lib/rules/infinite-reactive-loop.js +4 -3
- package/lib/rules/max-attributes-per-line.js +2 -1
- package/lib/rules/mustache-spacing.js +2 -1
- package/lib/rules/no-dupe-else-if-blocks.js +2 -1
- package/lib/rules/no-dupe-on-directives.js +2 -1
- package/lib/rules/no-dupe-use-directives.js +2 -1
- package/lib/rules/no-dynamic-slot-name.js +2 -1
- package/lib/rules/no-extra-reactive-curlies.js +2 -1
- package/lib/rules/no-immutable-reactive-statements.js +2 -1
- package/lib/rules/no-inline-styles.d.ts +2 -0
- package/lib/rules/no-inline-styles.js +52 -0
- package/lib/rules/no-reactive-functions.js +2 -1
- package/lib/rules/no-reactive-literals.js +2 -1
- package/lib/rules/no-reactive-reassign.js +2 -1
- package/lib/rules/no-trailing-spaces.js +2 -1
- package/lib/rules/no-unused-class-name.js +4 -2
- package/lib/rules/no-unused-svelte-ignore.js +3 -2
- package/lib/rules/no-useless-mustaches.js +2 -1
- package/lib/rules/prefer-class-directive.js +2 -1
- package/lib/rules/prefer-destructured-store-props.js +3 -2
- package/lib/rules/prefer-style-directive.js +2 -1
- package/lib/rules/reference-helpers/svelte-store.js +2 -1
- package/lib/rules/require-event-dispatcher-types.js +2 -1
- package/lib/rules/require-store-reactive-access.js +2 -1
- package/lib/rules/shorthand-attribute.js +2 -1
- package/lib/rules/shorthand-directive.js +2 -1
- package/lib/rules/sort-attributes.js +2 -1
- package/lib/rules/system.js +2 -1
- package/lib/rules/valid-compile.js +2 -1
- package/lib/shared/svelte-compile-warns/extract-leading-comments.js +2 -1
- package/lib/shared/svelte-compile-warns/ignore-comment.js +2 -1
- package/lib/shared/svelte-compile-warns/index.js +12 -11
- package/lib/shared/svelte-compile-warns/transform/babel.js +2 -1
- package/lib/shared/svelte-compile-warns/transform/less.js +2 -1
- package/lib/shared/svelte-compile-warns/transform/postcss.js +3 -2
- package/lib/shared/svelte-compile-warns/transform/stylus.js +2 -1
- package/lib/shared/svelte-compile-warns/transform/typescript.js +3 -1
- package/lib/utils/ast-utils.js +3 -2
- package/lib/utils/compat.d.ts +5 -0
- package/lib/utils/compat.js +20 -0
- package/lib/utils/css-utils/style-attribute.js +5 -4
- package/lib/utils/load-module.js +5 -4
- package/lib/utils/rules.js +2 -0
- package/lib/utils/svelte-kit.js +4 -3
- package/lib/utils/ts-utils/index.js +4 -2
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -342,6 +342,7 @@ These rules relate to better ways of doing things to help you avoid problems:
|
|
|
342
342
|
| [svelte/no-at-debug-tags](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-at-debug-tags/) | disallow the use of `{@debug}` | :star: |
|
|
343
343
|
| [svelte/no-ignored-unsubscribe](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-ignored-unsubscribe/) | disallow ignoring the unsubscribe method returned by the `subscribe()` on Svelte stores. | |
|
|
344
344
|
| [svelte/no-immutable-reactive-statements](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-immutable-reactive-statements/) | disallow reactive statements that don't reference reactive values. | |
|
|
345
|
+
| [svelte/no-inline-styles](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-inline-styles/) | disallow attributes and directives that produce inline styles | |
|
|
345
346
|
| [svelte/no-reactive-functions](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-reactive-functions/) | it's not necessary to define functions in reactive statements | :bulb: |
|
|
346
347
|
| [svelte/no-reactive-literals](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-reactive-literals/) | don't assign literal values in reactive statements | :bulb: |
|
|
347
348
|
| [svelte/no-unused-class-name](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unused-class-name/) | disallow the use of a class in the template without a corresponding style | |
|
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.35.0";
|
package/lib/meta.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../../utils");
|
|
4
4
|
const ts_utils_1 = require("../../utils/ts-utils");
|
|
5
|
+
const compat_1 = require("../../utils/compat");
|
|
5
6
|
function unionTypeParts(type) {
|
|
6
7
|
return [...iterate(type)];
|
|
7
8
|
function* iterate(t) {
|
|
@@ -87,7 +88,7 @@ exports.default = (0, utils_1.createRule)('@typescript-eslint/no-unnecessary-con
|
|
|
87
88
|
}
|
|
88
89
|
const { service, ts } = tools;
|
|
89
90
|
const checker = service.program.getTypeChecker();
|
|
90
|
-
const sourceCode =
|
|
91
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
91
92
|
const compilerOptions = service.program.getCompilerOptions();
|
|
92
93
|
const isStrictNullChecks = compilerOptions.strict
|
|
93
94
|
? compilerOptions.strictNullChecks !== false
|
package/lib/rules/block-lang.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('block-lang', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -55,7 +56,7 @@ exports.default = (0, utils_1.createRule)('block-lang', {
|
|
|
55
56
|
type: 'suggestion'
|
|
56
57
|
},
|
|
57
58
|
create(context) {
|
|
58
|
-
if (!context.parserServices.isSvelte) {
|
|
59
|
+
if (!(0, compat_1.getSourceCode)(context).parserServices.isSvelte) {
|
|
59
60
|
return {};
|
|
60
61
|
}
|
|
61
62
|
const enforceScriptPresent = context.options[0]?.enforceScriptPresent ?? false;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const shared_1 = require("../shared");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
const COMMENT_DIRECTIVE_B = /^\s*(eslint-(?:en|dis)able)(?:\s+|$)/;
|
|
6
7
|
const COMMENT_DIRECTIVE_L = /^\s*(eslint-disable(?:-next)?-line)(?:\s+|$)/;
|
|
7
8
|
const ALL_RULES = () => true;
|
|
@@ -35,7 +36,7 @@ exports.default = (0, utils_1.createRule)('comment-directive', {
|
|
|
35
36
|
type: 'problem'
|
|
36
37
|
},
|
|
37
38
|
create(context) {
|
|
38
|
-
const shared = (0, shared_1.getShared)(
|
|
39
|
+
const shared = (0, shared_1.getShared)((0, compat_1.getFilename)(context));
|
|
39
40
|
if (!shared)
|
|
40
41
|
return {};
|
|
41
42
|
const options = context.options[0] || {};
|
|
@@ -44,7 +45,7 @@ exports.default = (0, utils_1.createRule)('comment-directive', {
|
|
|
44
45
|
ruleId: 'svelte/comment-directive',
|
|
45
46
|
reportUnusedDisableDirectives
|
|
46
47
|
});
|
|
47
|
-
const sourceCode =
|
|
48
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
48
49
|
function parse(pattern, comment) {
|
|
49
50
|
const text = stripDirectiveComment(comment.value);
|
|
50
51
|
const match = pattern.exec(text);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
exports.default = (0, utils_1.createRule)('first-attribute-linebreak', {
|
|
5
6
|
meta: {
|
|
6
7
|
docs: {
|
|
@@ -29,7 +30,7 @@ exports.default = (0, utils_1.createRule)('first-attribute-linebreak', {
|
|
|
29
30
|
create(context) {
|
|
30
31
|
const multiline = context.options[0]?.multiline || 'below';
|
|
31
32
|
const singleline = context.options[0]?.singleline || 'beside';
|
|
32
|
-
const sourceCode =
|
|
33
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
33
34
|
function report(firstAttribute, location) {
|
|
34
35
|
context.report({
|
|
35
36
|
node: firstAttribute,
|
package/lib/rules/html-quotes.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
5
|
const ast_utils_2 = require("../utils/ast-utils");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
const QUOTE_CHARS = {
|
|
7
8
|
double: '"',
|
|
8
9
|
single: "'"
|
|
@@ -46,7 +47,7 @@ exports.default = (0, utils_1.createRule)('html-quotes', {
|
|
|
46
47
|
type: 'layout'
|
|
47
48
|
},
|
|
48
49
|
create(context) {
|
|
49
|
-
const sourceCode =
|
|
50
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
50
51
|
const preferQuote = context.options[0]?.prefer ?? 'double';
|
|
51
52
|
const dynamicQuote = context.options[0]?.dynamic?.quoted ? preferQuote : 'unquoted';
|
|
52
53
|
const avoidInvalidUnquotedInHTML = Boolean(context.options[0]?.dynamic?.avoidInvalidUnquotedInHTML);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
const TYPE_MESSAGES = {
|
|
6
7
|
normal: 'HTML elements',
|
|
7
8
|
void: 'HTML void elements',
|
|
@@ -108,9 +109,7 @@ exports.default = (0, utils_1.createRule)('html-self-closing', {
|
|
|
108
109
|
context.report({
|
|
109
110
|
node,
|
|
110
111
|
loc: {
|
|
111
|
-
start: context
|
|
112
|
-
.getSourceCode()
|
|
113
|
-
.getLocFromIndex(node.startTag.range[1] - (node.startTag.selfClosing ? 2 : 1)),
|
|
112
|
+
start: (0, compat_1.getSourceCode)(context).getLocFromIndex(node.startTag.range[1] - (node.startTag.selfClosing ? 2 : 1)),
|
|
114
113
|
end: node.loc.end
|
|
115
114
|
},
|
|
116
115
|
messageId: shouldBeClosed ? 'requireClosing' : 'disallowClosing',
|
|
@@ -30,6 +30,7 @@ const TS = __importStar(require("./ts"));
|
|
|
30
30
|
const ast_1 = require("./ast");
|
|
31
31
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
32
32
|
const offset_context_1 = require("./offset-context");
|
|
33
|
+
const compat_1 = require("../../utils/compat");
|
|
33
34
|
function parseOptions(options, defaultOptions) {
|
|
34
35
|
const ret = {
|
|
35
36
|
indentChar: ' ',
|
|
@@ -65,10 +66,10 @@ function parseOptions(options, defaultOptions) {
|
|
|
65
66
|
return ret;
|
|
66
67
|
}
|
|
67
68
|
function defineVisitor(context, defaultOptions) {
|
|
68
|
-
if (!
|
|
69
|
+
if (!(0, compat_1.getFilename)(context).endsWith('.svelte'))
|
|
69
70
|
return {};
|
|
70
71
|
const options = parseOptions(context.options[0] || {}, defaultOptions);
|
|
71
|
-
const sourceCode =
|
|
72
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
72
73
|
const offsets = new offset_context_1.OffsetContext({ sourceCode, options });
|
|
73
74
|
function getIndentText({ line, column }) {
|
|
74
75
|
return sourceCode.lines[line - 1].slice(0, column);
|
|
@@ -4,8 +4,9 @@ const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
6
6
|
const svelte_eslint_parser_1 = require("svelte-eslint-parser");
|
|
7
|
+
const compat_1 = require("../utils/compat");
|
|
7
8
|
function extractTickReferences(context) {
|
|
8
|
-
const referenceTracker = new eslint_utils_1.ReferenceTracker(
|
|
9
|
+
const referenceTracker = new eslint_utils_1.ReferenceTracker((0, compat_1.getSourceCode)(context).scopeManager.globalScope);
|
|
9
10
|
const a = referenceTracker.iterateEsmReferences({
|
|
10
11
|
svelte: {
|
|
11
12
|
[eslint_utils_1.ReferenceTracker.ESM]: true,
|
|
@@ -22,7 +23,7 @@ function extractTickReferences(context) {
|
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
25
|
function extractTaskReferences(context) {
|
|
25
|
-
const referenceTracker = new eslint_utils_1.ReferenceTracker(
|
|
26
|
+
const referenceTracker = new eslint_utils_1.ReferenceTracker((0, compat_1.getSourceCode)(context).scopeManager.globalScope);
|
|
26
27
|
const a = referenceTracker.iterateGlobalReferences({
|
|
27
28
|
setTimeout: { [eslint_utils_1.ReferenceTracker.CALL]: true },
|
|
28
29
|
setInterval: { [eslint_utils_1.ReferenceTracker.CALL]: true },
|
|
@@ -81,7 +82,7 @@ function isPromiseThenOrCatchBody(node) {
|
|
|
81
82
|
return ['then', 'catch'].includes(property.name);
|
|
82
83
|
}
|
|
83
84
|
function getReactiveVariableReferences(context) {
|
|
84
|
-
const scopeManager =
|
|
85
|
+
const scopeManager = (0, compat_1.getSourceCode)(context).scopeManager;
|
|
85
86
|
const toplevelScope = scopeManager.globalScope?.childScopes.find((scope) => scope.type === 'module') ||
|
|
86
87
|
scopeManager.globalScope;
|
|
87
88
|
if (!toplevelScope) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
function isSingleLine(node) {
|
|
5
6
|
return node.loc.start.line === node.loc.end.line;
|
|
6
7
|
}
|
|
@@ -49,7 +50,7 @@ exports.default = (0, utils_1.createRule)('max-attributes-per-line', {
|
|
|
49
50
|
create(context) {
|
|
50
51
|
const multilineMaximum = context.options[0]?.multiline ?? 1;
|
|
51
52
|
const singlelineMaximum = context.options[0]?.singleline ?? 1;
|
|
52
|
-
const sourceCode =
|
|
53
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
53
54
|
function report(attribute) {
|
|
54
55
|
if (!attribute) {
|
|
55
56
|
return;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
const VALUE_SCHEMA = { enum: ['never', 'always'] };
|
|
7
8
|
function parseOptions(options) {
|
|
8
9
|
return {
|
|
@@ -55,7 +56,7 @@ exports.default = (0, utils_1.createRule)('mustache-spacing', {
|
|
|
55
56
|
},
|
|
56
57
|
create(context) {
|
|
57
58
|
const options = parseOptions(context.options[0]);
|
|
58
|
-
const sourceCode =
|
|
59
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
59
60
|
function verifyBraces(openingBrace, closingBrace, openingOption, closingOption, hasExpression) {
|
|
60
61
|
const firstToken = sourceCode.getTokenAfter(openingBrace, {
|
|
61
62
|
includeComments: true
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
function splitByLogicalOperator(operator, node) {
|
|
6
7
|
if (node.type === 'LogicalExpression' && node.operator === operator) {
|
|
7
8
|
return [
|
|
@@ -44,7 +45,7 @@ exports.default = (0, utils_1.createRule)('no-dupe-else-if-blocks', {
|
|
|
44
45
|
type: 'problem'
|
|
45
46
|
},
|
|
46
47
|
create(context) {
|
|
47
|
-
const sourceCode =
|
|
48
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
48
49
|
function equal(a, b) {
|
|
49
50
|
if (a.type !== b.type) {
|
|
50
51
|
return false;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('no-dupe-on-directives', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -16,7 +17,7 @@ exports.default = (0, utils_1.createRule)('no-dupe-on-directives', {
|
|
|
16
17
|
type: 'problem'
|
|
17
18
|
},
|
|
18
19
|
create(context) {
|
|
19
|
-
const sourceCode =
|
|
20
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
20
21
|
const directiveDataMap = new Map();
|
|
21
22
|
return {
|
|
22
23
|
SvelteDirective(node) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('no-dupe-use-directives', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -16,7 +17,7 @@ exports.default = (0, utils_1.createRule)('no-dupe-use-directives', {
|
|
|
16
17
|
type: 'problem'
|
|
17
18
|
},
|
|
18
19
|
create(context) {
|
|
19
|
-
const sourceCode =
|
|
20
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
20
21
|
const directiveDataMap = new Map();
|
|
21
22
|
return {
|
|
22
23
|
SvelteDirective(node) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('no-dynamic-slot-name', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -18,7 +19,7 @@ exports.default = (0, utils_1.createRule)('no-dynamic-slot-name', {
|
|
|
18
19
|
type: 'problem'
|
|
19
20
|
},
|
|
20
21
|
create(context) {
|
|
21
|
-
const sourceCode =
|
|
22
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
22
23
|
return {
|
|
23
24
|
"SvelteElement[name.name='slot'] > SvelteStartTag.startTag > SvelteAttribute[key.name='name']"(node) {
|
|
24
25
|
if (node.value.length === 0) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
exports.default = (0, utils_1.createRule)('no-extra-reactive-curlies', {
|
|
5
6
|
meta: {
|
|
6
7
|
docs: {
|
|
@@ -20,7 +21,7 @@ exports.default = (0, utils_1.createRule)('no-extra-reactive-curlies', {
|
|
|
20
21
|
create(context) {
|
|
21
22
|
return {
|
|
22
23
|
[`SvelteReactiveStatement > BlockStatement[body.length=1]`]: (node) => {
|
|
23
|
-
const source =
|
|
24
|
+
const source = (0, compat_1.getSourceCode)(context);
|
|
24
25
|
return context.report({
|
|
25
26
|
node,
|
|
26
27
|
loc: node.loc,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('no-immutable-reactive-statements', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -16,7 +17,7 @@ exports.default = (0, utils_1.createRule)('no-immutable-reactive-statements', {
|
|
|
16
17
|
type: 'suggestion'
|
|
17
18
|
},
|
|
18
19
|
create(context) {
|
|
19
|
-
const scopeManager =
|
|
20
|
+
const scopeManager = (0, compat_1.getSourceCode)(context).scopeManager;
|
|
20
21
|
const globalScope = scopeManager.globalScope;
|
|
21
22
|
const toplevelScope = globalScope?.childScopes.find((scope) => scope.type === 'module') || globalScope;
|
|
22
23
|
if (!globalScope || !toplevelScope) {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../utils");
|
|
4
|
+
exports.default = (0, utils_1.createRule)('no-inline-styles', {
|
|
5
|
+
meta: {
|
|
6
|
+
docs: {
|
|
7
|
+
description: 'disallow attributes and directives that produce inline styles',
|
|
8
|
+
category: 'Best Practices',
|
|
9
|
+
recommended: false
|
|
10
|
+
},
|
|
11
|
+
schema: [
|
|
12
|
+
{
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
allowTransitions: {
|
|
16
|
+
type: 'boolean'
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
additionalProperties: false
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
messages: {
|
|
23
|
+
hasStyleAttribute: 'Found disallowed style attribute.',
|
|
24
|
+
hasStyleDirective: 'Found disallowed style directive.',
|
|
25
|
+
hasTransition: 'Found disallowed transition.'
|
|
26
|
+
},
|
|
27
|
+
type: 'suggestion'
|
|
28
|
+
},
|
|
29
|
+
create(context) {
|
|
30
|
+
const allowTransitions = context.options[0]?.allowTransitions ?? false;
|
|
31
|
+
return {
|
|
32
|
+
SvelteElement(node) {
|
|
33
|
+
if (node.kind !== 'html') {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const attribute of node.startTag.attributes) {
|
|
37
|
+
if (attribute.type === 'SvelteStyleDirective') {
|
|
38
|
+
context.report({ loc: attribute.loc, messageId: 'hasStyleDirective' });
|
|
39
|
+
}
|
|
40
|
+
if (attribute.type === 'SvelteAttribute' && attribute.key.name === 'style') {
|
|
41
|
+
context.report({ loc: attribute.loc, messageId: 'hasStyleAttribute' });
|
|
42
|
+
}
|
|
43
|
+
if (!allowTransitions &&
|
|
44
|
+
attribute.type === 'SvelteDirective' &&
|
|
45
|
+
attribute.kind === 'Transition') {
|
|
46
|
+
context.report({ loc: attribute.loc, messageId: 'hasTransition' });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
exports.default = (0, utils_1.createRule)('no-reactive-functions', {
|
|
5
6
|
meta: {
|
|
6
7
|
docs: {
|
|
@@ -23,7 +24,7 @@ exports.default = (0, utils_1.createRule)('no-reactive-functions', {
|
|
|
23
24
|
if (!parent) {
|
|
24
25
|
return false;
|
|
25
26
|
}
|
|
26
|
-
const source =
|
|
27
|
+
const source = (0, compat_1.getSourceCode)(context);
|
|
27
28
|
return context.report({
|
|
28
29
|
node: parent,
|
|
29
30
|
loc: parent.loc,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
exports.default = (0, utils_1.createRule)('no-reactive-literals', {
|
|
5
6
|
meta: {
|
|
6
7
|
docs: {
|
|
@@ -27,7 +28,7 @@ exports.default = (0, utils_1.createRule)('no-reactive-literals', {
|
|
|
27
28
|
if (!parent) {
|
|
28
29
|
return false;
|
|
29
30
|
}
|
|
30
|
-
const source =
|
|
31
|
+
const source = (0, compat_1.getSourceCode)(context);
|
|
31
32
|
return context.report({
|
|
32
33
|
node: parent,
|
|
33
34
|
loc: parent.loc,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('no-reactive-reassign', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -28,7 +29,7 @@ exports.default = (0, utils_1.createRule)('no-reactive-reassign', {
|
|
|
28
29
|
},
|
|
29
30
|
create(context) {
|
|
30
31
|
const props = context.options[0]?.props !== false;
|
|
31
|
-
const sourceCode =
|
|
32
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
32
33
|
const scopeManager = sourceCode.scopeManager;
|
|
33
34
|
const globalScope = scopeManager.globalScope;
|
|
34
35
|
const toplevelScope = globalScope?.childScopes.find((scope) => scope.type === 'module') || globalScope;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
exports.default = (0, utils_1.createRule)('no-trailing-spaces', {
|
|
5
6
|
meta: {
|
|
6
7
|
type: 'layout',
|
|
@@ -30,7 +31,7 @@ exports.default = (0, utils_1.createRule)('no-trailing-spaces', {
|
|
|
30
31
|
const options = context.options[0];
|
|
31
32
|
const skipBlankLines = options?.skipBlankLines || false;
|
|
32
33
|
const ignoreComments = options?.ignoreComments || false;
|
|
33
|
-
const sourceCode =
|
|
34
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
34
35
|
const ignoreLineNumbers = new Set();
|
|
35
36
|
if (ignoreComments) {
|
|
36
37
|
for (const { type, loc } of sourceCode.getAllComments()) {
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
7
|
const postcss_selector_parser_1 = __importDefault(require("postcss-selector-parser"));
|
|
8
|
+
const compat_1 = require("../utils/compat");
|
|
8
9
|
exports.default = (0, utils_1.createRule)('no-unused-class-name', {
|
|
9
10
|
meta: {
|
|
10
11
|
docs: {
|
|
@@ -30,7 +31,8 @@ exports.default = (0, utils_1.createRule)('no-unused-class-name', {
|
|
|
30
31
|
type: 'suggestion'
|
|
31
32
|
},
|
|
32
33
|
create(context) {
|
|
33
|
-
|
|
34
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
35
|
+
if (!sourceCode.parserServices.isSvelte) {
|
|
34
36
|
return {};
|
|
35
37
|
}
|
|
36
38
|
const allowedClassNames = context.options[0]?.allowedClassNames ?? [];
|
|
@@ -46,7 +48,7 @@ exports.default = (0, utils_1.createRule)('no-unused-class-name', {
|
|
|
46
48
|
}
|
|
47
49
|
},
|
|
48
50
|
'Program:exit'() {
|
|
49
|
-
const styleContext =
|
|
51
|
+
const styleContext = sourceCode.parserServices.getStyleContext();
|
|
50
52
|
if (['parse-error', 'unknown-lang'].includes(styleContext.status)) {
|
|
51
53
|
return;
|
|
52
54
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const svelte_compile_warns_1 = require("../shared/svelte-compile-warns");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const ignore_comment_1 = require("../shared/svelte-compile-warns/ignore-comment");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
exports.default = (0, utils_1.createRule)('no-unused-svelte-ignore', {
|
|
7
8
|
meta: {
|
|
8
9
|
docs: {
|
|
@@ -18,10 +19,10 @@ exports.default = (0, utils_1.createRule)('no-unused-svelte-ignore', {
|
|
|
18
19
|
type: 'suggestion'
|
|
19
20
|
},
|
|
20
21
|
create(context) {
|
|
21
|
-
|
|
22
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
23
|
+
if (!sourceCode.parserServices.isSvelte) {
|
|
22
24
|
return {};
|
|
23
25
|
}
|
|
24
|
-
const sourceCode = context.getSourceCode();
|
|
25
26
|
const ignoreComments = [];
|
|
26
27
|
for (const item of (0, ignore_comment_1.getSvelteIgnoreItems)(context)) {
|
|
27
28
|
if (item.code == null) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
|
+
const compat_1 = require("../utils/compat");
|
|
4
5
|
function stripQuotes(text) {
|
|
5
6
|
if ((text.startsWith('"') || text.startsWith("'") || text.startsWith('`')) &&
|
|
6
7
|
text.endsWith(text[0])) {
|
|
@@ -39,7 +40,7 @@ exports.default = (0, utils_1.createRule)('no-useless-mustaches', {
|
|
|
39
40
|
const opts = context.options[0] || {};
|
|
40
41
|
const ignoreIncludesComment = Boolean(opts.ignoreIncludesComment);
|
|
41
42
|
const ignoreStringEscape = Boolean(opts.ignoreStringEscape);
|
|
42
|
-
const sourceCode =
|
|
43
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
43
44
|
function verify(node) {
|
|
44
45
|
if (node.kind === 'raw') {
|
|
45
46
|
return;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('prefer-class-directive', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -18,7 +19,7 @@ exports.default = (0, utils_1.createRule)('prefer-class-directive', {
|
|
|
18
19
|
type: 'suggestion'
|
|
19
20
|
},
|
|
20
21
|
create(context) {
|
|
21
|
-
const sourceCode =
|
|
22
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
22
23
|
function parseConditionalExpression(node) {
|
|
23
24
|
const result = new Map();
|
|
24
25
|
if (!processItems({
|
|
@@ -4,6 +4,7 @@ const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
|
4
4
|
const esutils_1 = require("esutils");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
7
|
+
const compat_1 = require("../utils/compat");
|
|
7
8
|
exports.default = (0, utils_1.createRule)('prefer-destructured-store-props', {
|
|
8
9
|
meta: {
|
|
9
10
|
docs: {
|
|
@@ -69,7 +70,7 @@ exports.default = (0, utils_1.createRule)('prefer-destructured-store-props', {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
function hasTopLevelVariable(name) {
|
|
72
|
-
const scopeManager =
|
|
73
|
+
const scopeManager = (0, compat_1.getSourceCode)(context).scopeManager;
|
|
73
74
|
if (scopeManager.globalScope?.set.has(name)) {
|
|
74
75
|
return true;
|
|
75
76
|
}
|
|
@@ -168,7 +169,7 @@ exports.default = (0, utils_1.createRule)('prefer-destructured-store-props', {
|
|
|
168
169
|
store,
|
|
169
170
|
property: !node.computed
|
|
170
171
|
? node.property.name
|
|
171
|
-
:
|
|
172
|
+
: (0, compat_1.getSourceCode)(context).getText(node.property).replace(/\s+/g, ' ')
|
|
172
173
|
},
|
|
173
174
|
suggest
|
|
174
175
|
});
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const css_utils_1 = require("../utils/css-utils");
|
|
5
5
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
function isStringLiteral(node) {
|
|
7
8
|
return node.type === 'Literal' && typeof node.value === 'string';
|
|
8
9
|
}
|
|
@@ -22,7 +23,7 @@ exports.default = (0, utils_1.createRule)('prefer-style-directive', {
|
|
|
22
23
|
type: 'suggestion'
|
|
23
24
|
},
|
|
24
25
|
create(context) {
|
|
25
|
-
const sourceCode =
|
|
26
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
26
27
|
function processStyleValue(node, root) {
|
|
27
28
|
for (const child of root.nodes) {
|
|
28
29
|
if (child.type === 'decl') {
|
|
@@ -4,8 +4,9 @@ exports.createStoreChecker = exports.extractStoreReferences = void 0;
|
|
|
4
4
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
5
5
|
const ts_utils_1 = require("../../utils/ts-utils");
|
|
6
6
|
const ast_utils_1 = require("../../utils/ast-utils");
|
|
7
|
+
const compat_1 = require("../../utils/compat");
|
|
7
8
|
function* extractStoreReferences(context, storeNames = ['writable', 'readable', 'derived']) {
|
|
8
|
-
const referenceTracker = new eslint_utils_1.ReferenceTracker(
|
|
9
|
+
const referenceTracker = new eslint_utils_1.ReferenceTracker((0, compat_1.getSourceCode)(context).scopeManager.globalScope);
|
|
9
10
|
for (const { node, path } of referenceTracker.iterateEsmReferences({
|
|
10
11
|
'svelte/store': {
|
|
11
12
|
[eslint_utils_1.ReferenceTracker.ESM]: true,
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
exports.default = (0, utils_1.createRule)('require-event-dispatcher-types', {
|
|
7
8
|
meta: {
|
|
8
9
|
docs: {
|
|
@@ -29,7 +30,7 @@ exports.default = (0, utils_1.createRule)('require-event-dispatcher-types', {
|
|
|
29
30
|
if (!isTs) {
|
|
30
31
|
return;
|
|
31
32
|
}
|
|
32
|
-
const referenceTracker = new eslint_utils_1.ReferenceTracker(
|
|
33
|
+
const referenceTracker = new eslint_utils_1.ReferenceTracker((0, compat_1.getSourceCode)(context).scopeManager.globalScope);
|
|
33
34
|
for (const { node: n } of referenceTracker.iterateEsmReferences({
|
|
34
35
|
svelte: {
|
|
35
36
|
[eslint_utils_1.ReferenceTracker.ESM]: true,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const svelte_store_1 = require("./reference-helpers/svelte-store");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('require-store-reactive-access', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -17,7 +18,7 @@ exports.default = (0, utils_1.createRule)('require-store-reactive-access', {
|
|
|
17
18
|
type: 'problem'
|
|
18
19
|
},
|
|
19
20
|
create(context) {
|
|
20
|
-
if (!context.parserServices.isSvelte) {
|
|
21
|
+
if (!(0, compat_1.getSourceCode)(context).parserServices.isSvelte) {
|
|
21
22
|
return {};
|
|
22
23
|
}
|
|
23
24
|
const isStore = (0, svelte_store_1.createStoreChecker)(context);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('shorthand-attribute', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -27,7 +28,7 @@ exports.default = (0, utils_1.createRule)('shorthand-attribute', {
|
|
|
27
28
|
type: 'layout'
|
|
28
29
|
},
|
|
29
30
|
create(context) {
|
|
30
|
-
const sourceCode =
|
|
31
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
31
32
|
const always = context.options[0]?.prefer !== 'never';
|
|
32
33
|
return always
|
|
33
34
|
? {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('shorthand-directive', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -27,7 +28,7 @@ exports.default = (0, utils_1.createRule)('shorthand-directive', {
|
|
|
27
28
|
type: 'layout'
|
|
28
29
|
},
|
|
29
30
|
create(context) {
|
|
30
|
-
const sourceCode =
|
|
31
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
31
32
|
const always = context.options[0]?.prefer !== 'never';
|
|
32
33
|
function reportForAlways(node) {
|
|
33
34
|
context.report({
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
5
5
|
const regexp_1 = require("../utils/regexp");
|
|
6
|
+
const compat_1 = require("../utils/compat");
|
|
6
7
|
const DEFAULT_ORDER = [
|
|
7
8
|
'this',
|
|
8
9
|
'bind:this',
|
|
@@ -194,7 +195,7 @@ exports.default = (0, utils_1.createRule)('sort-attributes', {
|
|
|
194
195
|
const attributes = node.parent.attributes;
|
|
195
196
|
const previousNodes = attributes.slice(attributes.indexOf(previousNode), attributes.indexOf(node));
|
|
196
197
|
const moveNodes = [node, ...previousNodes];
|
|
197
|
-
const sourceCode =
|
|
198
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
198
199
|
return moveNodes.map((moveNode, index) => {
|
|
199
200
|
const text = sourceCode.getText(moveNode);
|
|
200
201
|
return fixer.replaceText(previousNodes[index] || node, text);
|
package/lib/rules/system.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const shared_1 = require("../shared");
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
const regexp_1 = require("../utils/regexp");
|
|
6
7
|
exports.default = (0, utils_1.createRule)('system', {
|
|
7
8
|
meta: {
|
|
@@ -15,7 +16,7 @@ exports.default = (0, utils_1.createRule)('system', {
|
|
|
15
16
|
type: 'problem'
|
|
16
17
|
},
|
|
17
18
|
create(context) {
|
|
18
|
-
const shared = (0, shared_1.getShared)(
|
|
19
|
+
const shared = (0, shared_1.getShared)((0, compat_1.getFilename)(context));
|
|
19
20
|
if (!shared)
|
|
20
21
|
return {};
|
|
21
22
|
const directives = shared.newCommentDirectives({
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const svelte_compile_warns_1 = require("../shared/svelte-compile-warns");
|
|
5
|
+
const compat_1 = require("../utils/compat");
|
|
5
6
|
exports.default = (0, utils_1.createRule)('valid-compile', {
|
|
6
7
|
meta: {
|
|
7
8
|
docs: {
|
|
@@ -22,7 +23,7 @@ exports.default = (0, utils_1.createRule)('valid-compile', {
|
|
|
22
23
|
type: 'problem'
|
|
23
24
|
},
|
|
24
25
|
create(context) {
|
|
25
|
-
if (!context.parserServices.isSvelte) {
|
|
26
|
+
if (!(0, compat_1.getSourceCode)(context).parserServices.isSvelte) {
|
|
26
27
|
return {};
|
|
27
28
|
}
|
|
28
29
|
const ignoreWarnings = Boolean(context.options[0]?.ignoreWarnings);
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractLeadingComments = void 0;
|
|
4
4
|
const eslint_utils_1 = require("@eslint-community/eslint-utils");
|
|
5
|
+
const compat_1 = require("../../utils/compat");
|
|
5
6
|
function extractLeadingComments(context, node) {
|
|
6
|
-
const sourceCode =
|
|
7
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
7
8
|
const beforeToken = sourceCode.getTokenBefore(node, {
|
|
8
9
|
includeComments: false,
|
|
9
10
|
filter(token) {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSvelteIgnoreItems = void 0;
|
|
4
|
+
const compat_1 = require("../../utils/compat");
|
|
4
5
|
const SVELTE_IGNORE_PATTERN = /^\s*svelte-ignore/m;
|
|
5
6
|
function getSvelteIgnoreItems(context) {
|
|
6
|
-
const sourceCode =
|
|
7
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
7
8
|
const ignoreComments = [];
|
|
8
9
|
for (const comment of sourceCode.getAllComments()) {
|
|
9
10
|
const ignores = extractSvelteIgnore(comment.value, comment.range[0] + 2, comment);
|
|
@@ -42,6 +42,7 @@ const ast_utils_1 = require("../../utils/ast-utils");
|
|
|
42
42
|
const path_1 = __importDefault(require("path"));
|
|
43
43
|
const fs_1 = __importDefault(require("fs"));
|
|
44
44
|
const semver_1 = __importDefault(require("semver"));
|
|
45
|
+
const compat_1 = require("../../utils/compat");
|
|
45
46
|
const STYLE_TRANSFORMS = {
|
|
46
47
|
postcss: postcss_1.transform,
|
|
47
48
|
pcss: postcss_1.transform,
|
|
@@ -58,7 +59,7 @@ const CSS_WARN_CODES = new Set([
|
|
|
58
59
|
]);
|
|
59
60
|
const cacheAll = new WeakMap();
|
|
60
61
|
function getSvelteCompileWarnings(context) {
|
|
61
|
-
const sourceCode =
|
|
62
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
62
63
|
const cache = cacheAll.get(sourceCode.ast);
|
|
63
64
|
if (cache) {
|
|
64
65
|
return cache;
|
|
@@ -69,14 +70,14 @@ function getSvelteCompileWarnings(context) {
|
|
|
69
70
|
}
|
|
70
71
|
exports.getSvelteCompileWarnings = getSvelteCompileWarnings;
|
|
71
72
|
function getSvelteCompileWarningsWithoutCache(context) {
|
|
72
|
-
const sourceCode =
|
|
73
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
73
74
|
const styleElementsWithNotCSS = [...extractStyleElementsWithLangOtherThanCSS(context)];
|
|
74
75
|
const stripStyleElements = [];
|
|
75
76
|
const transformResults = [];
|
|
76
77
|
for (const style of styleElementsWithNotCSS) {
|
|
77
78
|
const transform = STYLE_TRANSFORMS[style.lang];
|
|
78
79
|
if (transform) {
|
|
79
|
-
const result = transform(style.node,
|
|
80
|
+
const result = transform(style.node, (0, compat_1.getSourceCode)(context).text, context);
|
|
80
81
|
if (result) {
|
|
81
82
|
transformResults.push(result);
|
|
82
83
|
continue;
|
|
@@ -237,7 +238,7 @@ function getSvelteCompileWarningsWithoutCache(context) {
|
|
|
237
238
|
};
|
|
238
239
|
}
|
|
239
240
|
function* extractStyleElementsWithLangOtherThanCSS(context) {
|
|
240
|
-
const sourceCode =
|
|
241
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
241
242
|
const root = sourceCode.ast;
|
|
242
243
|
for (const node of root.body) {
|
|
243
244
|
if (node.type === 'SvelteStyleElement') {
|
|
@@ -249,7 +250,7 @@ function* extractStyleElementsWithLangOtherThanCSS(context) {
|
|
|
249
250
|
}
|
|
250
251
|
}
|
|
251
252
|
function buildStrippedText(context, ignoreComments, stripStyleTokens) {
|
|
252
|
-
const sourceCode =
|
|
253
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
253
254
|
const baseText = sourceCode.text;
|
|
254
255
|
const stripTokens = new Set([...ignoreComments.map((item) => item.token), ...stripStyleTokens]);
|
|
255
256
|
if (!stripTokens.size) {
|
|
@@ -274,7 +275,7 @@ function* transformScripts(context, text) {
|
|
|
274
275
|
: isUseBabel(context)
|
|
275
276
|
? babel_1.transform
|
|
276
277
|
: null;
|
|
277
|
-
const sourceCode =
|
|
278
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
278
279
|
if (transform) {
|
|
279
280
|
const root = sourceCode.ast;
|
|
280
281
|
for (const node of root.body) {
|
|
@@ -304,7 +305,7 @@ function getWarningsFromCode(code, context) {
|
|
|
304
305
|
generate: false,
|
|
305
306
|
...(semver_1.default.satisfies(compiler.VERSION, '>=4.0.0-0')
|
|
306
307
|
? { customElement: true }
|
|
307
|
-
: hasTagOption(
|
|
308
|
+
: hasTagOption((0, compat_1.getSourceCode)(context).ast)
|
|
308
309
|
? { customElement: true }
|
|
309
310
|
: {})
|
|
310
311
|
});
|
|
@@ -331,7 +332,7 @@ function processIgnore(warnings, kind, stripStyleElements, ignoreComments, conte
|
|
|
331
332
|
unusedIgnores: ignoreComments
|
|
332
333
|
};
|
|
333
334
|
}
|
|
334
|
-
const sourceCode =
|
|
335
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
335
336
|
const unusedIgnores = new Set(ignoreComments);
|
|
336
337
|
const remainingWarning = new Set(warnings);
|
|
337
338
|
for (const warning of warnings) {
|
|
@@ -432,9 +433,9 @@ function processIgnore(warnings, kind, stripStyleElements, ignoreComments, conte
|
|
|
432
433
|
}
|
|
433
434
|
}
|
|
434
435
|
function isUseTypeScript(context) {
|
|
435
|
-
|
|
436
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
437
|
+
if (sourceCode.parserServices.esTreeNodeToTSNodeMap)
|
|
436
438
|
return true;
|
|
437
|
-
const sourceCode = context.getSourceCode();
|
|
438
439
|
const root = sourceCode.ast;
|
|
439
440
|
for (const node of root.body) {
|
|
440
441
|
if (node.type === 'SvelteScriptElement') {
|
|
@@ -451,7 +452,7 @@ function isUseBabel(context) {
|
|
|
451
452
|
if (!parser) {
|
|
452
453
|
return false;
|
|
453
454
|
}
|
|
454
|
-
const sourceCode =
|
|
455
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
455
456
|
const root = sourceCode.ast;
|
|
456
457
|
let scriptLang = 'js';
|
|
457
458
|
for (const node of root.body) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasBabel = exports.transform = void 0;
|
|
4
4
|
const load_module_1 = require("../../../utils/load-module");
|
|
5
|
+
const compat_1 = require("../../../utils/compat");
|
|
5
6
|
function transform(node, text, context) {
|
|
6
7
|
const babel = loadBabel(context);
|
|
7
8
|
if (!babel) {
|
|
@@ -22,7 +23,7 @@ function transform(node, text, context) {
|
|
|
22
23
|
minified: false,
|
|
23
24
|
ast: false,
|
|
24
25
|
code: true,
|
|
25
|
-
cwd:
|
|
26
|
+
cwd: (0, compat_1.getCwd)(context)
|
|
26
27
|
});
|
|
27
28
|
if (!output) {
|
|
28
29
|
return null;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transform = void 0;
|
|
4
4
|
const load_module_1 = require("../../../utils/load-module");
|
|
5
|
+
const compat_1 = require("../../../utils/compat");
|
|
5
6
|
function transform(node, text, context) {
|
|
6
7
|
const less = loadLess(context);
|
|
7
8
|
if (!less) {
|
|
@@ -15,7 +16,7 @@ function transform(node, text, context) {
|
|
|
15
16
|
inputRange = [node.startTag.range[1], node.range[1]];
|
|
16
17
|
}
|
|
17
18
|
const code = text.slice(...inputRange);
|
|
18
|
-
const filename = `${
|
|
19
|
+
const filename = `${(0, compat_1.getFilename)(context)}.less`;
|
|
19
20
|
try {
|
|
20
21
|
let output;
|
|
21
22
|
less.render(code, {
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.transform = void 0;
|
|
7
7
|
const postcss_1 = __importDefault(require("postcss"));
|
|
8
8
|
const postcss_load_config_1 = __importDefault(require("postcss-load-config"));
|
|
9
|
+
const compat_1 = require("../../../utils/compat");
|
|
9
10
|
function transform(node, text, context) {
|
|
10
11
|
const postcssConfig = context.settings?.svelte?.compileOptions?.postcss;
|
|
11
12
|
if (postcssConfig === false) {
|
|
@@ -19,11 +20,11 @@ function transform(node, text, context) {
|
|
|
19
20
|
inputRange = [node.startTag.range[1], node.range[1]];
|
|
20
21
|
}
|
|
21
22
|
const code = text.slice(...inputRange);
|
|
22
|
-
const filename = `${
|
|
23
|
+
const filename = `${(0, compat_1.getFilename)(context)}.css`;
|
|
23
24
|
try {
|
|
24
25
|
const configFilePath = postcssConfig?.configFilePath;
|
|
25
26
|
const config = postcss_load_config_1.default.sync({
|
|
26
|
-
cwd:
|
|
27
|
+
cwd: (0, compat_1.getCwd)(context),
|
|
27
28
|
from: filename
|
|
28
29
|
}, typeof configFilePath === 'string' ? configFilePath : undefined);
|
|
29
30
|
const result = (0, postcss_1.default)(config.plugins).process(code, {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.transform = void 0;
|
|
4
4
|
const load_module_1 = require("../../../utils/load-module");
|
|
5
|
+
const compat_1 = require("../../../utils/compat");
|
|
5
6
|
function transform(node, text, context) {
|
|
6
7
|
const stylus = loadStylus(context);
|
|
7
8
|
if (!stylus) {
|
|
@@ -15,7 +16,7 @@ function transform(node, text, context) {
|
|
|
15
16
|
inputRange = [node.startTag.range[1], node.range[1]];
|
|
16
17
|
}
|
|
17
18
|
const code = text.slice(...inputRange);
|
|
18
|
-
const filename = `${
|
|
19
|
+
const filename = `${(0, compat_1.getFilename)(context)}.stylus`;
|
|
19
20
|
try {
|
|
20
21
|
let output;
|
|
21
22
|
const style = stylus(code, {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasTypeScript = exports.transform = void 0;
|
|
4
4
|
const load_module_1 = require("../../../utils/load-module");
|
|
5
|
+
const compat_1 = require("../../../utils/compat");
|
|
5
6
|
function transform(node, text, context) {
|
|
6
7
|
const ts = loadTs(context);
|
|
7
8
|
if (!ts) {
|
|
@@ -19,7 +20,8 @@ function transform(node, text, context) {
|
|
|
19
20
|
const output = ts.transpileModule(code, {
|
|
20
21
|
reportDiagnostics: false,
|
|
21
22
|
compilerOptions: {
|
|
22
|
-
target: context.parserServices.program?.getCompilerOptions()?.target ||
|
|
23
|
+
target: (0, compat_1.getSourceCode)(context).parserServices.program?.getCompilerOptions()?.target ||
|
|
24
|
+
ts.ScriptTarget.ESNext,
|
|
23
25
|
module: ts.ModuleKind.ESNext,
|
|
24
26
|
importsNotUsedAsValues: ts.ImportsNotUsedAsValues.Preserve,
|
|
25
27
|
sourceMap: true
|
package/lib/utils/ast-utils.js
CHANGED
|
@@ -29,6 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.isExpressionIdentifier = exports.isVoidHtmlElement = exports.getNodeName = exports.getDirectiveName = exports.getAttributeKeyText = exports.getMustacheTokens = exports.getAttributeValueQuoteAndRange = exports.getParent = exports.getScope = exports.iterateIdentifiers = exports.findVariable = exports.getLangValue = exports.getStaticAttributeValue = exports.findBindDirective = exports.findShorthandAttribute = exports.findAttribute = exports.isHTMLElementLike = exports.needParentheses = exports.getStringIfConstant = exports.equalTokens = void 0;
|
|
30
30
|
const eslintUtils = __importStar(require("@eslint-community/eslint-utils"));
|
|
31
31
|
const void_elements_1 = __importDefault(require("./void-elements"));
|
|
32
|
+
const compat_1 = require("./compat");
|
|
32
33
|
function equalTokens(left, right, sourceCode) {
|
|
33
34
|
const tokensL = sourceCode.getTokens(left);
|
|
34
35
|
const tokensR = sourceCode.getTokens(right);
|
|
@@ -214,7 +215,7 @@ function* iterateIdentifiers(node) {
|
|
|
214
215
|
}
|
|
215
216
|
exports.iterateIdentifiers = iterateIdentifiers;
|
|
216
217
|
function getScope(context, currentNode) {
|
|
217
|
-
const scopeManager =
|
|
218
|
+
const scopeManager = (0, compat_1.getSourceCode)(context).scopeManager;
|
|
218
219
|
let node = currentNode;
|
|
219
220
|
for (; node; node = node.parent || null) {
|
|
220
221
|
const scope = scopeManager.acquire(node, false);
|
|
@@ -425,5 +426,5 @@ function getSimpleNameFromNode(node, context) {
|
|
|
425
426
|
if (!context) {
|
|
426
427
|
throw new Error('Rule context is required');
|
|
427
428
|
}
|
|
428
|
-
return
|
|
429
|
+
return (0, compat_1.getSourceCode)(context).getText(node);
|
|
429
430
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RuleContext, SourceCode } from '../types';
|
|
2
|
+
export declare function getSourceCode(context: RuleContext): SourceCode;
|
|
3
|
+
export declare function getFilename(context: RuleContext): string;
|
|
4
|
+
export declare function getPhysicalFilename(context: RuleContext): string;
|
|
5
|
+
export declare function getCwd(context: RuleContext): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCwd = exports.getPhysicalFilename = exports.getFilename = exports.getSourceCode = void 0;
|
|
4
|
+
const eslint_compat_utils_1 = require("eslint-compat-utils");
|
|
5
|
+
function getSourceCode(context) {
|
|
6
|
+
return (0, eslint_compat_utils_1.getSourceCode)(context);
|
|
7
|
+
}
|
|
8
|
+
exports.getSourceCode = getSourceCode;
|
|
9
|
+
function getFilename(context) {
|
|
10
|
+
return (0, eslint_compat_utils_1.getFilename)(context);
|
|
11
|
+
}
|
|
12
|
+
exports.getFilename = getFilename;
|
|
13
|
+
function getPhysicalFilename(context) {
|
|
14
|
+
return (0, eslint_compat_utils_1.getPhysicalFilename)(context);
|
|
15
|
+
}
|
|
16
|
+
exports.getPhysicalFilename = getPhysicalFilename;
|
|
17
|
+
function getCwd(context) {
|
|
18
|
+
return (0, eslint_compat_utils_1.getCwd)(context);
|
|
19
|
+
}
|
|
20
|
+
exports.getCwd = getCwd;
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.parseStyleAttributeValue = void 0;
|
|
7
7
|
const template_safe_parser_1 = __importDefault(require("./template-safe-parser"));
|
|
8
8
|
const postcss_1 = require("postcss");
|
|
9
|
+
const compat_1 = require("../compat");
|
|
9
10
|
function safeParseCss(css) {
|
|
10
11
|
try {
|
|
11
12
|
const input = new postcss_1.Input(css);
|
|
@@ -27,7 +28,7 @@ function parseStyleAttributeValue(node, context) {
|
|
|
27
28
|
return null;
|
|
28
29
|
}
|
|
29
30
|
const startOffset = node.value[0].range[0];
|
|
30
|
-
const sourceCode =
|
|
31
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
31
32
|
const cssCode = node.value.map((value) => sourceCode.getText(value)).join('');
|
|
32
33
|
const root = safeParseCss(cssCode);
|
|
33
34
|
if (!root) {
|
|
@@ -123,7 +124,7 @@ function convertRoot(root, interpolations, getRange, ctx) {
|
|
|
123
124
|
if (inlineStyles.has(node)) {
|
|
124
125
|
return inlineStyles.get(node) || null;
|
|
125
126
|
}
|
|
126
|
-
const sourceCode = ctx.context
|
|
127
|
+
const sourceCode = (0, compat_1.getSourceCode)(ctx.context);
|
|
127
128
|
inlineStyles.set(node, null);
|
|
128
129
|
let converted;
|
|
129
130
|
if (isStringLiteral(node)) {
|
|
@@ -254,7 +255,7 @@ function convertRange(node, ctx) {
|
|
|
254
255
|
}
|
|
255
256
|
function toLoc(range, ctx) {
|
|
256
257
|
return {
|
|
257
|
-
start: ctx.context
|
|
258
|
-
end: ctx.context
|
|
258
|
+
start: (0, compat_1.getSourceCode)(ctx.context).getLocFromIndex(range[0]),
|
|
259
|
+
end: (0, compat_1.getSourceCode)(ctx.context).getLocFromIndex(range[1])
|
|
259
260
|
};
|
|
260
261
|
}
|
package/lib/utils/load-module.js
CHANGED
|
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.loadModulesForBrowser = exports.loadModule = void 0;
|
|
7
7
|
const module_1 = __importDefault(require("module"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const compat_1 = require("./compat");
|
|
9
10
|
const cache = new WeakMap();
|
|
10
11
|
const cache4b = new Map();
|
|
11
12
|
function loadModule(context, name) {
|
|
12
|
-
const key =
|
|
13
|
+
const key = (0, compat_1.getSourceCode)(context).ast;
|
|
13
14
|
let modules = cache.get(key);
|
|
14
15
|
if (!modules) {
|
|
15
16
|
modules = {};
|
|
@@ -19,15 +20,15 @@ function loadModule(context, name) {
|
|
|
19
20
|
if (mod)
|
|
20
21
|
return mod;
|
|
21
22
|
try {
|
|
22
|
-
const cwd =
|
|
23
|
+
const cwd = (0, compat_1.getCwd)(context);
|
|
23
24
|
const relativeTo = path_1.default.join(cwd, '__placeholder__.js');
|
|
24
25
|
return (modules[name] = module_1.default.createRequire(relativeTo)(name));
|
|
25
26
|
}
|
|
26
27
|
catch {
|
|
27
28
|
}
|
|
28
29
|
for (const relativeTo of [
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
(0, compat_1.getFilename)(context),
|
|
31
|
+
(0, compat_1.getPhysicalFilename)(context),
|
|
31
32
|
typeof __filename !== 'undefined' ? __filename : ''
|
|
32
33
|
]) {
|
|
33
34
|
if (relativeTo) {
|
package/lib/utils/rules.js
CHANGED
|
@@ -31,6 +31,7 @@ const no_export_load_in_svelte_module_in_kit_pages_1 = __importDefault(require("
|
|
|
31
31
|
const no_extra_reactive_curlies_1 = __importDefault(require("../rules/no-extra-reactive-curlies"));
|
|
32
32
|
const no_ignored_unsubscribe_1 = __importDefault(require("../rules/no-ignored-unsubscribe"));
|
|
33
33
|
const no_immutable_reactive_statements_1 = __importDefault(require("../rules/no-immutable-reactive-statements"));
|
|
34
|
+
const no_inline_styles_1 = __importDefault(require("../rules/no-inline-styles"));
|
|
34
35
|
const no_inner_declarations_1 = __importDefault(require("../rules/no-inner-declarations"));
|
|
35
36
|
const no_not_function_handler_1 = __importDefault(require("../rules/no-not-function-handler"));
|
|
36
37
|
const no_object_in_text_mustaches_1 = __importDefault(require("../rules/no-object-in-text-mustaches"));
|
|
@@ -92,6 +93,7 @@ exports.rules = [
|
|
|
92
93
|
no_extra_reactive_curlies_1.default,
|
|
93
94
|
no_ignored_unsubscribe_1.default,
|
|
94
95
|
no_immutable_reactive_statements_1.default,
|
|
96
|
+
no_inline_styles_1.default,
|
|
95
97
|
no_inner_declarations_1.default,
|
|
96
98
|
no_not_function_handler_1.default,
|
|
97
99
|
no_object_in_text_mustaches_1.default,
|
package/lib/utils/svelte-kit.js
CHANGED
|
@@ -7,15 +7,16 @@ exports.isKitPageComponent = void 0;
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const get_package_json_1 = require("./get-package-json");
|
|
10
|
+
const compat_1 = require("./compat");
|
|
10
11
|
const isRunOnBrowser = !fs_1.default.readFileSync;
|
|
11
12
|
function isKitPageComponent(context) {
|
|
12
13
|
if (isRunOnBrowser)
|
|
13
14
|
return true;
|
|
14
|
-
if (!hasSvelteKit(
|
|
15
|
+
if (!hasSvelteKit((0, compat_1.getFilename)(context)))
|
|
15
16
|
return false;
|
|
16
17
|
const routes = context.settings?.svelte?.kit?.files?.routes?.replace(/^\//, '') ?? 'src/routes';
|
|
17
|
-
const filePath =
|
|
18
|
-
const projectRootDir = getProjectRootDir(
|
|
18
|
+
const filePath = (0, compat_1.getFilename)(context);
|
|
19
|
+
const projectRootDir = getProjectRootDir((0, compat_1.getFilename)(context)) ?? '';
|
|
19
20
|
const fileName = path_1.default.basename(filePath);
|
|
20
21
|
return (filePath.startsWith(path_1.default.join(projectRootDir, routes)) &&
|
|
21
22
|
Boolean(/^\+.+\.svelte$/.test(fileName)));
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTypeOfPropertyOfType = exports.getTypeName = exports.getConstrainedTypeAtLocation = exports.getCallSignaturesOfType = exports.isPossiblyFalsyType = exports.isNullType = exports.isVoidType = exports.isUndefinedType = exports.isNeverType = exports.isUnknownType = exports.isAnyType = exports.isTupleType = exports.isTupleObjectType = exports.isReferenceObjectType = exports.isObjectType = exports.isBooleanLiteralType = exports.isNullableType = exports.isNullishType = exports.isFalsyType = exports.isTruthyLiteral = exports.getTypeScript = exports.getTypeScriptTools = void 0;
|
|
4
4
|
const load_module_1 = require("../load-module");
|
|
5
|
+
const compat_1 = require("../compat");
|
|
5
6
|
function getTypeScriptTools(context) {
|
|
6
7
|
const ts = getTypeScript(context);
|
|
7
8
|
if (!ts) {
|
|
8
9
|
return null;
|
|
9
10
|
}
|
|
10
|
-
const
|
|
11
|
+
const sourceCode = (0, compat_1.getSourceCode)(context);
|
|
12
|
+
const { program, esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap } = sourceCode.parserServices;
|
|
11
13
|
if (!program || !esTreeNodeToTSNodeMap || !tsNodeToESTreeNodeMap) {
|
|
12
14
|
return null;
|
|
13
15
|
}
|
|
14
|
-
const hasFullTypeInformation =
|
|
16
|
+
const hasFullTypeInformation = sourceCode.parserServices.hasFullTypeInformation ?? true;
|
|
15
17
|
if (!hasFullTypeInformation) {
|
|
16
18
|
return null;
|
|
17
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-svelte",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.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",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"@eslint-community/eslint-utils": "^4.2.0",
|
|
39
39
|
"@jridgewell/sourcemap-codec": "^1.4.14",
|
|
40
40
|
"debug": "^4.3.1",
|
|
41
|
+
"eslint-compat-utils": "^0.1.2",
|
|
41
42
|
"esutils": "^2.0.3",
|
|
42
43
|
"known-css-properties": "^0.29.0",
|
|
43
44
|
"postcss": "^8.4.5",
|
|
@@ -131,7 +132,7 @@
|
|
|
131
132
|
"source-map-js": "^1.0.2",
|
|
132
133
|
"stylelint": "^15.0.0",
|
|
133
134
|
"stylelint-config-standard": "^34.0.0",
|
|
134
|
-
"stylus": "^0.
|
|
135
|
+
"stylus": "^0.61.0",
|
|
135
136
|
"svelte": "^4.0.0",
|
|
136
137
|
"svelte-adapter-ghpages": "0.1.0",
|
|
137
138
|
"svelte-i18n": "^4.0.0",
|