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.
Files changed (56) hide show
  1. package/README.md +1 -0
  2. package/lib/meta.d.ts +1 -1
  3. package/lib/meta.js +1 -1
  4. package/lib/rules/@typescript-eslint/no-unnecessary-condition.js +2 -1
  5. package/lib/rules/block-lang.js +2 -1
  6. package/lib/rules/comment-directive.js +3 -2
  7. package/lib/rules/first-attribute-linebreak.js +2 -1
  8. package/lib/rules/html-quotes.js +2 -1
  9. package/lib/rules/html-self-closing.js +2 -3
  10. package/lib/rules/indent-helpers/index.js +3 -2
  11. package/lib/rules/infinite-reactive-loop.js +4 -3
  12. package/lib/rules/max-attributes-per-line.js +2 -1
  13. package/lib/rules/mustache-spacing.js +2 -1
  14. package/lib/rules/no-dupe-else-if-blocks.js +2 -1
  15. package/lib/rules/no-dupe-on-directives.js +2 -1
  16. package/lib/rules/no-dupe-use-directives.js +2 -1
  17. package/lib/rules/no-dynamic-slot-name.js +2 -1
  18. package/lib/rules/no-extra-reactive-curlies.js +2 -1
  19. package/lib/rules/no-immutable-reactive-statements.js +2 -1
  20. package/lib/rules/no-inline-styles.d.ts +2 -0
  21. package/lib/rules/no-inline-styles.js +52 -0
  22. package/lib/rules/no-reactive-functions.js +2 -1
  23. package/lib/rules/no-reactive-literals.js +2 -1
  24. package/lib/rules/no-reactive-reassign.js +2 -1
  25. package/lib/rules/no-trailing-spaces.js +2 -1
  26. package/lib/rules/no-unused-class-name.js +4 -2
  27. package/lib/rules/no-unused-svelte-ignore.js +3 -2
  28. package/lib/rules/no-useless-mustaches.js +2 -1
  29. package/lib/rules/prefer-class-directive.js +2 -1
  30. package/lib/rules/prefer-destructured-store-props.js +3 -2
  31. package/lib/rules/prefer-style-directive.js +2 -1
  32. package/lib/rules/reference-helpers/svelte-store.js +2 -1
  33. package/lib/rules/require-event-dispatcher-types.js +2 -1
  34. package/lib/rules/require-store-reactive-access.js +2 -1
  35. package/lib/rules/shorthand-attribute.js +2 -1
  36. package/lib/rules/shorthand-directive.js +2 -1
  37. package/lib/rules/sort-attributes.js +2 -1
  38. package/lib/rules/system.js +2 -1
  39. package/lib/rules/valid-compile.js +2 -1
  40. package/lib/shared/svelte-compile-warns/extract-leading-comments.js +2 -1
  41. package/lib/shared/svelte-compile-warns/ignore-comment.js +2 -1
  42. package/lib/shared/svelte-compile-warns/index.js +12 -11
  43. package/lib/shared/svelte-compile-warns/transform/babel.js +2 -1
  44. package/lib/shared/svelte-compile-warns/transform/less.js +2 -1
  45. package/lib/shared/svelte-compile-warns/transform/postcss.js +3 -2
  46. package/lib/shared/svelte-compile-warns/transform/stylus.js +2 -1
  47. package/lib/shared/svelte-compile-warns/transform/typescript.js +3 -1
  48. package/lib/utils/ast-utils.js +3 -2
  49. package/lib/utils/compat.d.ts +5 -0
  50. package/lib/utils/compat.js +20 -0
  51. package/lib/utils/css-utils/style-attribute.js +5 -4
  52. package/lib/utils/load-module.js +5 -4
  53. package/lib/utils/rules.js +2 -0
  54. package/lib/utils/svelte-kit.js +4 -3
  55. package/lib/utils/ts-utils/index.js +4 -2
  56. 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.34.1";
2
+ export declare const version: "2.35.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.34.1';
5
+ exports.version = '2.35.0';
@@ -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 = context.getSourceCode();
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
@@ -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)(context.getFilename());
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 = context.getSourceCode();
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 = context.getSourceCode();
33
+ const sourceCode = (0, compat_1.getSourceCode)(context);
33
34
  function report(firstAttribute, location) {
34
35
  context.report({
35
36
  node: firstAttribute,
@@ -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 = context.getSourceCode();
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 (!context.getFilename().endsWith('.svelte'))
69
+ if (!(0, compat_1.getFilename)(context).endsWith('.svelte'))
69
70
  return {};
70
71
  const options = parseOptions(context.options[0] || {}, defaultOptions);
71
- const sourceCode = context.getSourceCode();
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(context.getSourceCode().scopeManager.globalScope);
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(context.getSourceCode().scopeManager.globalScope);
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 = context.getSourceCode().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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode().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,2 @@
1
+ declare const _default: import("../types").RuleModule;
2
+ export default _default;
@@ -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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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
- if (!context.parserServices.isSvelte) {
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 = context.parserServices.getStyleContext();
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
- if (!context.parserServices.isSvelte) {
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode().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
- : context.getSourceCode().getText(node.property).replace(/\s+/g, ' ')
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 = context.getSourceCode();
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(context.getSourceCode().scopeManager.globalScope);
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(context.getSourceCode().scopeManager.globalScope);
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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);
@@ -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)(context.getFilename());
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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, context.getSourceCode().text, context);
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 = context.getSourceCode();
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 = context.getSourceCode();
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 = context.getSourceCode();
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(context.getSourceCode().ast)
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 = context.getSourceCode();
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
- if (context.parserServices.esTreeNodeToTSNodeMap)
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 = context.getSourceCode();
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: context.getCwd?.() ?? process.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 = `${context.getFilename()}.less`;
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 = `${context.getFilename()}.css`;
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: context.getCwd?.() ?? process.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 = `${context.getFilename()}.stylus`;
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 || ts.ScriptTarget.ESNext,
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
@@ -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 = context.getSourceCode().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 context.getSourceCode().getText(node);
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 = context.getSourceCode();
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.getSourceCode();
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.getSourceCode().getLocFromIndex(range[0]),
258
- end: ctx.context.getSourceCode().getLocFromIndex(range[1])
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
  }
@@ -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 = context.getSourceCode().ast;
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 = context.getCwd?.() ?? process.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
- context.getFilename(),
30
- context.getPhysicalFilename?.(),
30
+ (0, compat_1.getFilename)(context),
31
+ (0, compat_1.getPhysicalFilename)(context),
31
32
  typeof __filename !== 'undefined' ? __filename : ''
32
33
  ]) {
33
34
  if (relativeTo) {
@@ -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,
@@ -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(context.getFilename()))
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 = context.getFilename();
18
- const projectRootDir = getProjectRootDir(context.getFilename()) ?? '';
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 { program, esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap } = context.parserServices;
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 = context.parserServices.hasFullTypeInformation ?? true;
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.34.1",
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.60.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",