diff --git a/.changeset/thick-items-retire.md b/.changeset/thick-items-retire.md new file mode 100644 index 000000000..534550cd2 --- /dev/null +++ b/.changeset/thick-items-retire.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-svelte": major +--- + +feat!: change the plugin to an ESM-only package diff --git a/.env-cmdrc.js b/.env-cmdrc.js deleted file mode 100644 index 3261880a7..000000000 --- a/.env-cmdrc.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -module.exports = { - version: { - IN_VERSION_SCRIPT: 'true' - }, - 'version-ci': { - IN_VERSION_CI_SCRIPT: 'true' - }, - debug: { - DEBUG: 'eslint-plugin-svelte*' - }, - 'update-fixtures': { - UPDATE_FIXTURES: 'true' - }, - sveltekit: { - NODE_OPTIONS: `--import ./svelte-kit-import.mjs ${ - // eslint-disable-next-line no-process-env -- ignore - process.env.NODE_OPTIONS || '' - }` - } -}; diff --git a/.env-cmdrc.json b/.env-cmdrc.json new file mode 100644 index 000000000..b860db924 --- /dev/null +++ b/.env-cmdrc.json @@ -0,0 +1,14 @@ +{ + "version": { + "IN_VERSION_SCRIPT": "true" + }, + "version-ci": { + "IN_VERSION_CI_SCRIPT": "true" + }, + "debug": { + "DEBUG": "eslint-plugin-svelte*" + }, + "update-fixtures": { + "UPDATE_FIXTURES": "true" + } +} diff --git a/README.md b/README.md index 2ec47c7fa..a959eda16 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ It provides many unique check rules by using the template AST. You can check on the [Online DEMO](https://eslint-online-playground.netlify.app/#eslint-plugin-svelte%20with%20typescript). +> [!NOTE] +> This document is in development.\ +> Please refer to the document for the version you are using.\ +> For example, +> and + **_We are working on experimental support for Svelte v5, but may break with new versions of Svelte v5._** [![NPM license](https://img.shields.io/npm/l/eslint-plugin-svelte.svg)](https://www.npmjs.com/package/eslint-plugin-svelte) @@ -68,8 +74,6 @@ npm install --save-dev eslint eslint-plugin-svelte svelte ### Configuration -#### New Config (`eslint.config.js`) - Use `eslint.config.js` file to configure rules. See also: . Example **eslint.config.js**: @@ -79,7 +83,7 @@ import eslintPluginSvelte from 'eslint-plugin-svelte'; export default [ // add more generic rule sets here, such as: // js.configs.recommended, - ...eslintPluginSvelte.configs['flat/recommended'], + ...eslintPluginSvelte.configs.recommended, { rules: { // override/add rules settings here, such as: @@ -91,129 +95,67 @@ export default [ This plugin provides configs: -- `eslintPluginSvelte.configs['flat/base']` ... Configuration to enable correct Svelte parsing. -- `eslintPluginSvelte.configs['flat/recommended']` ... Above, plus rules to prevent errors or unintended behavior. -- `eslintPluginSvelte.configs['flat/prettier']` ... Turns off rules that may conflict with [Prettier](https://prettier.io/) (You still need to configure prettier to work with svelte yourself, for example by using [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte).). -- `eslintPluginSvelte.configs['flat/all']` ... All rules. This configuration is not recommended for production use because it changes with every minor and major version of `eslint-plugin-svelte`. Use it at your own risk. +- `eslintPluginSvelte.configs.base` ... Configuration to enable correct Svelte parsing. +- `eslintPluginSvelte.configs.recommended` ... Above, plus rules to prevent errors or unintended behavior. +- `eslintPluginSvelte.configs.prettier` ... Turns off rules that may conflict with [Prettier](https://prettier.io/) (You still need to configure prettier to work with svelte yourself, for example by using [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte).). +- `eslintPluginSvelte.configs.all` ... All rules. This configuration is not recommended for production use because it changes with every minor and major version of `eslint-plugin-svelte`. Use it at your own risk. See [the rule list](https://sveltejs.github.io/eslint-plugin-svelte/rules/) to get the `rules` that this plugin provides. -#### Legacy Config (`.eslintrc`) - -Use `.eslintrc.*` file to configure rules. See also: . - -Example **.eslintrc.js**: - -```js -module.exports = { - extends: [ - // add more generic rule sets here, such as: - // 'eslint:recommended', - 'plugin:svelte/recommended' - ], - rules: { - // override/add rules settings here, such as: - // 'svelte/rule-name': 'error' - } -}; -``` - -This plugin provides configs: - -- `plugin:svelte/base` ... Configuration to enable correct Svelte parsing. -- `plugin:svelte/recommended` ... Above, plus rules to prevent errors or unintended behavior. -- `plugin:svelte/prettier` ... Turns off rules that may conflict with [Prettier](https://prettier.io/) (You still need to configure prettier to work with svelte yourself, for example by using [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte).). -- `plugin:svelte/all` ... All rules. This configuration is not recommended for production use because it changes with every minor and major version of `eslint-plugin-svelte`. Use it at your own risk. - -See [the rule list](https://sveltejs.github.io/eslint-plugin-svelte/rules/) to get the `rules` that this plugin provides. - -::: warning ❗ Attention - -The `eslint-plugin-svelte` can not be used with the [eslint-plugin-svelte3]. -If you are using [eslint-plugin-svelte3] you need to remove it. - -```diff - "plugins": [ -- "svelte3" - ] -``` - -::: - #### Parser Configuration If you have specified a parser, you need to configure a parser for `.svelte`. -For example, if you are using the `"@babel/eslint-parser"`, configure it as follows: - -```js -module.exports = { - // ... - extends: ['plugin:svelte/recommended'], - // ... - parser: '@babel/eslint-parser', - // Add an `overrides` section to add a parser configuration for svelte. - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser' - } - // ... - ] - // ... -}; -``` - For example, if you are using the `"@typescript-eslint/parser"`, and if you want to use TypeScript in `{@html a+b}`; - - const linter = new LegacyESLint({ - plugins: { - svelte: plugin as never - }, - baseConfig: { - parserOptions: { - ecmaVersion: 2020 - }, - extends: ['plugin:svelte/all'] - }, - useEslintrc: false - }); - const result = await linter.lintText(code, { filePath: 'test.svelte' }); - const messages = result[0].messages; - - assert.deepStrictEqual( - messages.map((m) => ({ ruleId: m.ruleId, line: m.line, message: m.message })), - [ - { - ruleId: 'svelte/no-at-html-tags', - message: '`{@html}` can lead to XSS attack.', - line: 1 - } - ] - ); - }); it('`all` config should work. ', async () => { if (semver.satisfies(ESLint.version, '<8.0.0')) return; const code = `{@html a+b}`; diff --git a/packages/eslint-plugin-svelte/tests/src/configs/base.ts b/packages/eslint-plugin-svelte/tests/src/configs/base.ts index 5bdc838d5..ac070c0fc 100644 --- a/packages/eslint-plugin-svelte/tests/src/configs/base.ts +++ b/packages/eslint-plugin-svelte/tests/src/configs/base.ts @@ -1,44 +1,9 @@ import assert from 'assert'; import semver from 'semver'; -import plugin from '../../../src/index'; -import { LegacyESLint, ESLint } from '../../utils/eslint-compat'; +import plugin from '../../../src/index.js'; +import { ESLint } from '../../utils/eslint-compat.js'; describe('`base` config', () => { - it('legacy `base` config should work. ', async () => { - const code = ` - -{@html a+b} -{@html a+b}`; - - const linter = new LegacyESLint({ - plugins: { - svelte: plugin as never - }, - baseConfig: { - parserOptions: { - ecmaVersion: 2020 - }, - extends: ['plugin:svelte/base'], - rules: { - 'svelte/no-at-html-tags': 'error' - } - }, - useEslintrc: false - }); - const result = await linter.lintText(code, { filePath: 'test.svelte' }); - const messages = result[0].messages; - - assert.deepStrictEqual( - messages.map((m) => ({ ruleId: m.ruleId, line: m.line, message: m.message })), - [ - { - ruleId: 'svelte/no-at-html-tags', - message: '`{@html}` can lead to XSS attack.', - line: 4 - } - ] - ); - }); it('`base` config should work. ', async () => { if (semver.satisfies(ESLint.version, '<8.0.0')) return; const code = ` diff --git a/packages/eslint-plugin-svelte/tests/src/configs/recommended.ts b/packages/eslint-plugin-svelte/tests/src/configs/recommended.ts index afb028fa8..c284e275d 100644 --- a/packages/eslint-plugin-svelte/tests/src/configs/recommended.ts +++ b/packages/eslint-plugin-svelte/tests/src/configs/recommended.ts @@ -1,38 +1,9 @@ import assert from 'assert'; import semver from 'semver'; -import plugin from '../../../src/index'; -import { LegacyESLint, ESLint } from '../../utils/eslint-compat'; +import plugin from '../../../src/index.js'; +import { ESLint } from '../../utils/eslint-compat.js'; describe('`recommended` config', () => { - it('legacy `recommended` config should work. ', async () => { - const code = `{@html a+b}`; - - const linter = new LegacyESLint({ - plugins: { - svelte: plugin as never - }, - baseConfig: { - parserOptions: { - ecmaVersion: 2020 - }, - extends: ['plugin:svelte/recommended'] - }, - useEslintrc: false - }); - const result = await linter.lintText(code, { filePath: 'test.svelte' }); - const messages = result[0].messages; - - assert.deepStrictEqual( - messages.map((m) => ({ ruleId: m.ruleId, line: m.line, message: m.message })), - [ - { - ruleId: 'svelte/no-at-html-tags', - message: '`{@html}` can lead to XSS attack.', - line: 1 - } - ] - ); - }); it('`recommended` config should work. ', async () => { if (semver.satisfies(ESLint.version, '<8.0.0')) return; const code = `{@html a+b}`; diff --git a/packages/eslint-plugin-svelte/tests/src/integration/no-unused-vars.ts b/packages/eslint-plugin-svelte/tests/src/integration/no-unused-vars.ts index d84a0bb9a..95031e5c4 100644 --- a/packages/eslint-plugin-svelte/tests/src/integration/no-unused-vars.ts +++ b/packages/eslint-plugin-svelte/tests/src/integration/no-unused-vars.ts @@ -1,12 +1,13 @@ import type { Rule } from 'eslint'; -import { getCoreRule } from '../../../src/utils/eslint-core'; -import { RuleTester } from '../../utils/eslint-compat'; +import { getCoreRule } from '../../../src/utils/eslint-core.js'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import * as parser from 'svelte-eslint-parser'; describe('Integration test for no-unused-vars', () => { const ruleNoUnusedVars = getCoreRule('no-unused-vars') as unknown as Rule.RuleModule; const tester = new RuleTester({ languageOptions: { - parser: require('svelte-eslint-parser'), + parser: parser, ecmaVersion: 2020, sourceType: 'module' } diff --git a/packages/eslint-plugin-svelte/tests/src/meta.ts b/packages/eslint-plugin-svelte/tests/src/meta.ts index 8cb39bf5d..0710aa00a 100644 --- a/packages/eslint-plugin-svelte/tests/src/meta.ts +++ b/packages/eslint-plugin-svelte/tests/src/meta.ts @@ -1,5 +1,5 @@ import assert from 'assert'; -import plugin from '../../src'; +import plugin from '../../src/index.js'; import { version } from '../../package.json'; const expectedMeta = { name: 'eslint-plugin-svelte', diff --git a/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/no-unnecessary-condition.ts b/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/no-unnecessary-condition.ts index 3ebabcea4..c61fc0888 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/no-unnecessary-condition.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/no-unnecessary-condition.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../../utils/eslint-compat'; -import rule from '../../../../src/rules/@typescript-eslint/no-unnecessary-condition'; -import { loadTestCases, RULES_PROJECT } from '../../../utils/utils'; +import { RuleTester } from '../../../utils/eslint-compat.js'; +import rule from '../../../../src/rules/@typescript-eslint/no-unnecessary-condition.js'; +import { loadTestCases, RULES_PROJECT } from '../../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/original-tests/no-unnecessary-condition.ts b/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/original-tests/no-unnecessary-condition.ts index 2d92bcb05..39cf721c2 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/original-tests/no-unnecessary-condition.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/@typescript-eslint/original-tests/no-unnecessary-condition.ts @@ -2,10 +2,13 @@ // https://github.com/typescript-eslint/typescript-eslint/blob/78467fc1bde9bd2db1e08b3d19f151f4adaff8a9/packages/eslint-plugin/tests/rules/no-unnecessary-condition.test.ts /* eslint func-style: off, eslint-plugin/consistent-output: off -- respect original */ import * as path from 'path'; -import { RuleTester } from '../../../../utils/eslint-compat'; +import { RuleTester } from '../../../../utils/eslint-compat.js'; import type * as eslint from 'eslint'; +import * as typescriptParser from '@typescript-eslint/parser'; -import rule from '../../../../../src/rules/@typescript-eslint/no-unnecessary-condition'; +import rule from '../../../../../src/rules/@typescript-eslint/no-unnecessary-condition.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); function getFixturesRootDir(): string { return path.join(__dirname, 'fixtures'); @@ -15,7 +18,7 @@ const rootPath = getFixturesRootDir(); const ruleTester = new RuleTester({ languageOptions: { - parser: require('@typescript-eslint/parser'), + parser: typescriptParser, parserOptions: { tsconfigRootDir: rootPath, project: './tsconfig.json', diff --git a/packages/eslint-plugin-svelte/tests/src/rules/block-lang.ts b/packages/eslint-plugin-svelte/tests/src/rules/block-lang.ts index fb32f4901..848e0bcb5 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/block-lang.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/block-lang.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/block-lang'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/block-lang.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/button-has-type.ts b/packages/eslint-plugin-svelte/tests/src/rules/button-has-type.ts index 099d8aea6..998ed1c8c 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/button-has-type.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/button-has-type.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/button-has-type'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/button-has-type.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/comment-directive.ts b/packages/eslint-plugin-svelte/tests/src/rules/comment-directive.ts index 91c17de43..65efc02bb 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/comment-directive.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/comment-directive.ts @@ -1,6 +1,7 @@ import assert from 'assert'; -import plugin from '../../../src/index'; -import { ESLint } from '../../utils/eslint-compat'; +import plugin from '../../../src/index.js'; +import { ESLint } from '../../utils/eslint-compat.js'; +import * as svelteParser from 'svelte-eslint-parser'; // ----------------------------------------------------------------------------- // Tests @@ -8,13 +9,13 @@ import { ESLint } from '../../utils/eslint-compat'; // Initialize linter. const linter = new ESLint({ + // @ts-expect-error -- Type error? baseConfig: { languageOptions: { - parser: require('svelte-eslint-parser'), + parser: svelteParser, ecmaVersion: 2020 }, plugins: { - // @ts-expect-error -- Type error for eslint v9 svelte: plugin }, rules: { @@ -26,7 +27,6 @@ const linter = new ESLint({ processor: 'svelte/svelte', files: ['**'] }, - // @ts-expect-error -- Type error for eslint v9 overrideConfigFile: true }); @@ -352,13 +352,13 @@ describe('comment-directive', () => { describe('reportUnusedDisableDirectives', () => { const linter = new ESLint({ + // @ts-expect-error -- Type error? baseConfig: { languageOptions: { - parser: require('svelte-eslint-parser'), + parser: svelteParser, ecmaVersion: 2020 }, plugins: { - // @ts-expect-error -- Type error for eslint v9 svelte: plugin }, rules: { @@ -370,7 +370,6 @@ describe('comment-directive', () => { files: ['**'], processor: 'svelte/svelte' }, - // @ts-expect-error -- Type error for eslint v9 overrideConfigFile: true }); it('report unused ', async () => { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/derived-has-same-inputs-outputs.ts b/packages/eslint-plugin-svelte/tests/src/rules/derived-has-same-inputs-outputs.ts index 59b67718f..5fac10c7a 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/derived-has-same-inputs-outputs.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/derived-has-same-inputs-outputs.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/derived-has-same-inputs-outputs'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/derived-has-same-inputs-outputs.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-slot-types.ts b/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-slot-types.ts index 6c4bdab9d..bd9e9d0b5 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-slot-types.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-slot-types.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/experimental-require-slot-types'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/experimental-require-slot-types.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-strict-events.ts b/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-strict-events.ts index 83ac9d1f4..fc79393da 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-strict-events.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/experimental-require-strict-events.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/experimental-require-strict-events'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/experimental-require-strict-events.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/first-attribute-linebreak.ts b/packages/eslint-plugin-svelte/tests/src/rules/first-attribute-linebreak.ts index ca40292a1..475ce2617 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/first-attribute-linebreak.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/first-attribute-linebreak.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/first-attribute-linebreak'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/first-attribute-linebreak.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-new-line.ts b/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-new-line.ts index dfeba140c..3ed74ff41 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-new-line.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-new-line.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/html-closing-bracket-new-line'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/html-closing-bracket-new-line.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { @@ -9,4 +9,8 @@ const tester = new RuleTester({ } }); -tester.run('html-closing-bracket-new-line', rule as any, loadTestCases('html-closing-bracket-new-line')); +tester.run( + 'html-closing-bracket-new-line', + rule as any, + loadTestCases('html-closing-bracket-new-line') +); diff --git a/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-spacing.ts b/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-spacing.ts index 743815046..d80930d7f 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-spacing.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/html-closing-bracket-spacing.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/html-closing-bracket-spacing'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/html-closing-bracket-spacing.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/html-quotes.ts b/packages/eslint-plugin-svelte/tests/src/rules/html-quotes.ts index b85d60d6d..e58c57e49 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/html-quotes.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/html-quotes.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/html-quotes'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/html-quotes.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/html-self-closing.ts b/packages/eslint-plugin-svelte/tests/src/rules/html-self-closing.ts index f6990dfca..a71a62af0 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/html-self-closing.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/html-self-closing.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/html-self-closing'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/html-self-closing.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/indent.ts b/packages/eslint-plugin-svelte/tests/src/rules/indent.ts index 755121a08..f1df1cea5 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/indent.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/indent.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/indent'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/indent.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/infinite-reactive-loop.ts b/packages/eslint-plugin-svelte/tests/src/rules/infinite-reactive-loop.ts index 14872ef54..c19874112 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/infinite-reactive-loop.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/infinite-reactive-loop.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/infinite-reactive-loop'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/infinite-reactive-loop.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/max-attributes-per-line.ts b/packages/eslint-plugin-svelte/tests/src/rules/max-attributes-per-line.ts index 683d7fd66..c40a909ed 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/max-attributes-per-line.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/max-attributes-per-line.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/max-attributes-per-line'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/max-attributes-per-line.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/mustache-spacing.ts b/packages/eslint-plugin-svelte/tests/src/rules/mustache-spacing.ts index 51d6941ca..24fd9a776 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/mustache-spacing.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/mustache-spacing.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/mustache-spacing'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/mustache-spacing.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-at-debug-tags.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-at-debug-tags.ts index c7530044a..400bbabd3 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-at-debug-tags.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-at-debug-tags.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-at-debug-tags'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-at-debug-tags.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-at-html-tags.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-at-html-tags.ts index 308df8458..fc30b0053 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-at-html-tags.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-at-html-tags.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-at-html-tags'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-at-html-tags.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-deprecated-raw-special-elements.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-deprecated-raw-special-elements.ts index dbe2fe152..172cc28fd 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-deprecated-raw-special-elements.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-deprecated-raw-special-elements.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-deprecated-raw-special-elements'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-deprecated-raw-special-elements.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { @@ -9,4 +9,8 @@ const tester = new RuleTester({ } }); -tester.run('no-deprecated-raw-special-elements', rule as any, loadTestCases('no-deprecated-raw-special-elements')); +tester.run( + 'no-deprecated-raw-special-elements', + rule as any, + loadTestCases('no-deprecated-raw-special-elements') +); diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dom-manipulating.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dom-manipulating.ts index 9b307ad75..af3fac4c2 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dom-manipulating.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dom-manipulating.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dom-manipulating'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dom-manipulating.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-else-if-blocks.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-else-if-blocks.ts index df69710d0..eae136571 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-else-if-blocks.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-else-if-blocks.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dupe-else-if-blocks'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dupe-else-if-blocks.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-on-directives.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-on-directives.ts index cd6ccf632..6b7676e3c 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-on-directives.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-on-directives.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dupe-on-directives'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dupe-on-directives.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-style-properties.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-style-properties.ts index 7a7b1ae1c..c0dbaf901 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-style-properties.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-style-properties.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dupe-style-properties'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dupe-style-properties.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-use-directives.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-use-directives.ts index 047371778..41de350eb 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-use-directives.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dupe-use-directives.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dupe-use-directives'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dupe-use-directives.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-dynamic-slot-name.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-dynamic-slot-name.ts index 0612e657f..dfe6d0842 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-dynamic-slot-name.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-dynamic-slot-name.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-dynamic-slot-name'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-dynamic-slot-name.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-export-load-in-svelte-module-in-kit-pages.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-export-load-in-svelte-module-in-kit-pages.ts index a5ff796d5..074149043 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-export-load-in-svelte-module-in-kit-pages.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-export-load-in-svelte-module-in-kit-pages.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-export-load-in-svelte-module-in-kit-pages'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-export-load-in-svelte-module-in-kit-pages.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-extra-reactive-curlies.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-extra-reactive-curlies.ts index ea5278c7c..0763445b3 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-extra-reactive-curlies.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-extra-reactive-curlies.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-extra-reactive-curlies'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-extra-reactive-curlies.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-goto-without-base.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-goto-without-base.ts index 1fadf4174..953427e61 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-goto-without-base.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-goto-without-base.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-goto-without-base'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-goto-without-base.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-ignored-unsubscribe.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-ignored-unsubscribe.ts index 8334d44f6..2428fd58d 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-ignored-unsubscribe.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-ignored-unsubscribe.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-ignored-unsubscribe'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-ignored-unsubscribe.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-immutable-reactive-statements.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-immutable-reactive-statements.ts index e6fbe3fed..97c3abd2d 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-immutable-reactive-statements.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-immutable-reactive-statements.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-immutable-reactive-statements'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-immutable-reactive-statements.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-inline-styles.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-inline-styles.ts index 19f8356c3..c9e1381b0 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-inline-styles.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-inline-styles.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-inline-styles'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-inline-styles.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-inner-declarations.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-inner-declarations.ts index 19d2f80be..8eea888c8 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-inner-declarations.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-inner-declarations.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-inner-declarations'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-inner-declarations.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-inspect.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-inspect.ts index cfaa54919..a906e48bc 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-inspect.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-inspect.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-inspect'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-inspect.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-not-function-handler.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-not-function-handler.ts index e6d44c17a..79bce0da8 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-not-function-handler.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-not-function-handler.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-not-function-handler'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-not-function-handler.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-object-in-text-mustaches.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-object-in-text-mustaches.ts index afb2f7bfd..2d91de785 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-object-in-text-mustaches.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-object-in-text-mustaches.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-object-in-text-mustaches'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-object-in-text-mustaches.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-functions.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-functions.ts index 8b2e0b494..3db0c26ee 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-functions.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-functions.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-reactive-functions'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-reactive-functions.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-literals.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-literals.ts index 509ccf425..96e60f44e 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-literals.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-literals.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-reactive-literals'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-reactive-literals.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-reassign.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-reassign.ts index c03f73e09..2b010ae0d 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-reassign.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-reactive-reassign.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-reactive-reassign'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-reactive-reassign.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-restricted-html-elements.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-restricted-html-elements.ts index f6853fc72..fc180efe3 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-restricted-html-elements.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-restricted-html-elements.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-restricted-html-elements'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-restricted-html-elements.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-shorthand-style-property-overrides.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-shorthand-style-property-overrides.ts index c6c81ef4d..9f1d5f3db 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-shorthand-style-property-overrides.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-shorthand-style-property-overrides.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-shorthand-style-property-overrides'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-shorthand-style-property-overrides.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-spaces-around-equal-signs-in-attribute.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-spaces-around-equal-signs-in-attribute.ts index 02a77c373..28ac5baa2 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-spaces-around-equal-signs-in-attribute.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-spaces-around-equal-signs-in-attribute.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-spaces-around-equal-signs-in-attribute'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-spaces-around-equal-signs-in-attribute.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-store-async.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-store-async.ts index 9798939ed..7f0893892 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-store-async.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-store-async.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-store-async'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-store-async.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-svelte-internal.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-svelte-internal.ts index 3f4e67863..aa4126324 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-svelte-internal.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-svelte-internal.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-svelte-internal'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-svelte-internal.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-target-blank.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-target-blank.ts index fad79e8d9..f9eef9080 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-target-blank.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-target-blank.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-target-blank'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-target-blank.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-trailing-spaces.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-trailing-spaces.ts index f4ff8e22b..77edf03fc 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-trailing-spaces.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-trailing-spaces.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-trailing-spaces'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-trailing-spaces.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-unknown-style-directive-property.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-unknown-style-directive-property.ts index 933ca725e..d4fa7c8c8 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-unknown-style-directive-property.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-unknown-style-directive-property.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-unknown-style-directive-property'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-unknown-style-directive-property.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-unused-class-name.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-unused-class-name.ts index 74d300c49..fcf766c33 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-unused-class-name.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-unused-class-name.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-unused-class-name'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-unused-class-name.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-unused-svelte-ignore.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-unused-svelte-ignore.ts index 3dd84174d..f5d8cf3b9 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-unused-svelte-ignore.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-unused-svelte-ignore.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-unused-svelte-ignore'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-unused-svelte-ignore.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/no-useless-mustaches.ts b/packages/eslint-plugin-svelte/tests/src/rules/no-useless-mustaches.ts index 43d694d3d..8d4bea2db 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/no-useless-mustaches.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/no-useless-mustaches.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/no-useless-mustaches'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/no-useless-mustaches.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/prefer-class-directive.ts b/packages/eslint-plugin-svelte/tests/src/rules/prefer-class-directive.ts index 04396297e..330bb7384 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/prefer-class-directive.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/prefer-class-directive.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/prefer-class-directive'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/prefer-class-directive.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/prefer-destructured-store-props.ts b/packages/eslint-plugin-svelte/tests/src/rules/prefer-destructured-store-props.ts index 9c48dd52f..a466c0d5d 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/prefer-destructured-store-props.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/prefer-destructured-store-props.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/prefer-destructured-store-props'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/prefer-destructured-store-props.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/prefer-style-directive.ts b/packages/eslint-plugin-svelte/tests/src/rules/prefer-style-directive.ts index c6a8fea60..298759b05 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/prefer-style-directive.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/prefer-style-directive.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/prefer-style-directive'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/prefer-style-directive.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-each-key.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-each-key.ts index 05c10009d..0339379ed 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-each-key.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-each-key.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-each-key'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-each-key.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-event-dispatcher-types.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-event-dispatcher-types.ts index 7e11ea5c5..8cb676d3e 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-event-dispatcher-types.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-event-dispatcher-types.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-event-dispatcher-types'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-event-dispatcher-types.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-optimized-style-attribute.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-optimized-style-attribute.ts index 6edd26be4..fdf3fb307 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-optimized-style-attribute.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-optimized-style-attribute.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-optimized-style-attribute'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-optimized-style-attribute.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-store-callbacks-use-set-param.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-store-callbacks-use-set-param.ts index f79c1eeee..91c1ed5fe 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-store-callbacks-use-set-param.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-store-callbacks-use-set-param.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-store-callbacks-use-set-param'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-store-callbacks-use-set-param.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-store-reactive-access.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-store-reactive-access.ts index be250ac63..b9fc9cd7c 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-store-reactive-access.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-store-reactive-access.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-store-reactive-access'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-store-reactive-access.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/require-stores-init.ts b/packages/eslint-plugin-svelte/tests/src/rules/require-stores-init.ts index ee31ee1dc..532a637b7 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/require-stores-init.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/require-stores-init.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/require-stores-init'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/require-stores-init.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/shorthand-attribute.ts b/packages/eslint-plugin-svelte/tests/src/rules/shorthand-attribute.ts index 62507651b..2eddd05ef 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/shorthand-attribute.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/shorthand-attribute.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/shorthand-attribute'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/shorthand-attribute.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/shorthand-directive.ts b/packages/eslint-plugin-svelte/tests/src/rules/shorthand-directive.ts index 580c99731..5816f6d8a 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/shorthand-directive.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/shorthand-directive.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/shorthand-directive'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/shorthand-directive.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/sort-attributes.ts b/packages/eslint-plugin-svelte/tests/src/rules/sort-attributes.ts index 5b07319e5..f780ee80c 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/sort-attributes.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/sort-attributes.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/sort-attributes'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/sort-attributes.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/spaced-html-comment.ts b/packages/eslint-plugin-svelte/tests/src/rules/spaced-html-comment.ts index a4a724627..d3c66ddd2 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/spaced-html-comment.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/spaced-html-comment.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/spaced-html-comment'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/spaced-html-comment.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/valid-compile.ts b/packages/eslint-plugin-svelte/tests/src/rules/valid-compile.ts index 0a6be1c0c..f2325da17 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/valid-compile.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/valid-compile.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/valid-compile'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/valid-compile.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/valid-each-key.ts b/packages/eslint-plugin-svelte/tests/src/rules/valid-each-key.ts index 2a2c4ae5e..7c4a2f1d0 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/valid-each-key.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/valid-each-key.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/valid-each-key'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/valid-each-key.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/rules/valid-prop-names-in-kit-pages.ts b/packages/eslint-plugin-svelte/tests/src/rules/valid-prop-names-in-kit-pages.ts index 63c36cb7a..f7d602d8d 100644 --- a/packages/eslint-plugin-svelte/tests/src/rules/valid-prop-names-in-kit-pages.ts +++ b/packages/eslint-plugin-svelte/tests/src/rules/valid-prop-names-in-kit-pages.ts @@ -1,6 +1,6 @@ -import { RuleTester } from '../../utils/eslint-compat'; -import rule from '../../../src/rules/valid-prop-names-in-kit-pages'; -import { loadTestCases } from '../../utils/utils'; +import { RuleTester } from '../../utils/eslint-compat.js'; +import rule from '../../../src/rules/valid-prop-names-in-kit-pages.js'; +import { loadTestCases } from '../../utils/utils.js'; const tester = new RuleTester({ languageOptions: { diff --git a/packages/eslint-plugin-svelte/tests/src/settings/ignore-warnings.ts b/packages/eslint-plugin-svelte/tests/src/settings/ignore-warnings.ts index 23dcabd75..e6223dcb6 100644 --- a/packages/eslint-plugin-svelte/tests/src/settings/ignore-warnings.ts +++ b/packages/eslint-plugin-svelte/tests/src/settings/ignore-warnings.ts @@ -1,6 +1,7 @@ import assert from 'assert'; -import plugin from '../../../src/index'; -import { ESLint } from '../../utils/eslint-compat'; +import plugin from '../../../src/index.js'; +import { ESLint } from '../../utils/eslint-compat.js'; +import * as svelteParser from 'svelte-eslint-parser'; describe('ignore-warnings', () => { it('disable rules if ignoreWarnings: [ruleName]', async () => { @@ -18,11 +19,10 @@ describe('ignore-warnings', () => { baseConfig: { files: ['**'], languageOptions: { - parser: require('svelte-eslint-parser'), + parser: svelteParser, ecmaVersion: 2020 }, plugins: { - // @ts-expect-error -- Type error for eslint v9 svelte: plugin as never }, rules: { @@ -39,7 +39,6 @@ describe('ignore-warnings', () => { }, processor: 'svelte/svelte' }, - // @ts-expect-error -- Type error for eslint v9 overrideConfigFile: true }); const result = await linter.lintText(code, { filePath: 'test.svelte' }); @@ -86,11 +85,10 @@ describe('ignore-warnings', () => { baseConfig: { files: ['**'], languageOptions: { - parser: require('svelte-eslint-parser'), + parser: svelteParser, ecmaVersion: 2020 }, plugins: { - // @ts-expect-error -- Type error for eslint v9 svelte: plugin as never }, rules: { @@ -107,7 +105,6 @@ describe('ignore-warnings', () => { }, processor: 'svelte/svelte' }, - // @ts-expect-error -- Type error for eslint v9 overrideConfigFile: true }); const result = await linter.lintText(code, { filePath: 'test.svelte' }); @@ -155,11 +152,10 @@ describe('ignore-warnings', () => { baseConfig: { files: ['**'], languageOptions: { - parser: require('svelte-eslint-parser'), + parser: svelteParser, ecmaVersion: 2020 }, plugins: { - // @ts-expect-error -- Type error for eslint v9 svelte: plugin as never }, rules: { @@ -167,7 +163,6 @@ describe('ignore-warnings', () => { }, processor: 'svelte/svelte' }, - // @ts-expect-error -- Type error for eslint v9 overrideConfigFile: true }); const result = await linter.lintText(code, { filePath: 'test.svelte' }); diff --git a/packages/eslint-plugin-svelte/tests/utils/utils.ts b/packages/eslint-plugin-svelte/tests/utils/utils.ts index 91663b2d3..7cb97eda5 100644 --- a/packages/eslint-plugin-svelte/tests/utils/utils.ts +++ b/packages/eslint-plugin-svelte/tests/utils/utils.ts @@ -2,12 +2,18 @@ import fs from 'fs'; import path from 'path'; import type { RuleTester } from 'eslint'; import type { Linter as LinterType } from 'eslint'; -import plugin from '../../src/index'; -import { applyFixes } from './source-code-fixer'; +import plugin from '../../src/index.js'; +import { applyFixes } from './source-code-fixer.js'; import { parse as parseYaml, stringify as stringifyYaml } from 'yaml'; import semver from 'semver'; -import { writeAndFormat } from '../../tools/lib/write'; -import { Linter } from './eslint-compat'; +import { writeAndFormat } from '../../tools/lib/write.js'; +import { Linter } from './eslint-compat.js'; +import * as svelteParser from 'svelte-eslint-parser'; +import * as typescriptParser from '@typescript-eslint/parser'; +import Module from 'module'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); +const require = Module.createRequire(import.meta.url); const globals = { console: 'readonly', @@ -215,9 +221,9 @@ function writeFixtures(ruleName: string, inputFile: string, { force }: { force?: const parser = path.extname(inputFile) === '.svelte' - ? require('svelte-eslint-parser') + ? svelteParser : path.extname(inputFile) === '.ts' - ? require('@typescript-eslint/parser') + ? typescriptParser : undefined; const { code, filename, options, ...verifyConfig } = config; const resolvedParser = verifyConfig.languageOptions?.parser ?? parser; @@ -293,18 +299,21 @@ function getConfig(ruleName: string, inputFile: string) { inputFile.replace(/input\.[a-z]+$/u, 'config.json'), path.join(path.dirname(inputFile), '_config.json'), inputFile.replace(/input\.[a-z]+$/u, 'config.js'), - path.join(path.dirname(inputFile), '_config.js') + path.join(path.dirname(inputFile), '_config.js'), + inputFile.replace(/input\.[a-z]+$/u, 'config.cjs'), + path.join(path.dirname(inputFile), '_config.cjs') ].find((f) => fs.existsSync(f)); if (configFile) { - config = configFile.endsWith('.js') - ? require(configFile) - : JSON.parse(fs.readFileSync(configFile, 'utf8')); + config = + configFile.endsWith('.js') || configFile.endsWith('.cjs') + ? require(configFile) + : JSON.parse(fs.readFileSync(configFile, 'utf8')); } const parser = path.extname(filename) === '.svelte' - ? require('svelte-eslint-parser') + ? svelteParser : path.extname(inputFile) === '.ts' - ? require('@typescript-eslint/parser') + ? typescriptParser : undefined; const resolvedParser = config?.languageOptions?.parser diff --git a/packages/eslint-plugin-svelte/tools/lib/changesets-util.ts b/packages/eslint-plugin-svelte/tools/lib/changesets-util.ts index 7ddce80c3..a714cde82 100644 --- a/packages/eslint-plugin-svelte/tools/lib/changesets-util.ts +++ b/packages/eslint-plugin-svelte/tools/lib/changesets-util.ts @@ -1,6 +1,8 @@ import getReleasePlan from '@changesets/get-release-plan'; import path from 'path'; +const __dirname = path.dirname(new URL(import.meta.url).pathname); + /** Get new version string from changesets */ export async function getNewVersion(): Promise { const releasePlan = await getReleasePlan(path.resolve(__dirname, '../../../..')); diff --git a/packages/eslint-plugin-svelte/tools/lib/load-rules.ts b/packages/eslint-plugin-svelte/tools/lib/load-rules.ts index 834e97c27..b6ecdeff4 100644 --- a/packages/eslint-plugin-svelte/tools/lib/load-rules.ts +++ b/packages/eslint-plugin-svelte/tools/lib/load-rules.ts @@ -1,17 +1,18 @@ import path from 'path'; import fs from 'fs'; -import type { RuleModule } from '../../src/types'; +import type { RuleModule } from '../../src/types.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); /** * Get the all rules * @returns {Array} The all rules */ -function readRules() { +async function readRules() { const rulesLibRoot = path.resolve(__dirname, '../../src/rules'); const rules: RuleModule[] = []; for (const name of iterateTsFiles()) { - // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports -- ignore - const module = require(path.join(rulesLibRoot, name)); + const module = await import(path.join(rulesLibRoot, name)); const rule: RuleModule = module && module.default; if (!rule || typeof rule.create !== 'function') { continue; @@ -22,7 +23,7 @@ function readRules() { return rules; } -export const rules = readRules(); +export const rules = await readRules(); /** Iterate ts files */ function* iterateTsFiles() { diff --git a/packages/eslint-plugin-svelte/tools/new-rule.ts b/packages/eslint-plugin-svelte/tools/new-rule.ts index e1a93318e..7352ca7cf 100644 --- a/packages/eslint-plugin-svelte/tools/new-rule.ts +++ b/packages/eslint-plugin-svelte/tools/new-rule.ts @@ -1,7 +1,7 @@ import path from 'path'; import fs from 'fs'; import cp from 'child_process'; -import { writeAndFormat } from './lib/write'; +import { writeAndFormat } from './lib/write.js'; const logger = console; // main @@ -16,7 +16,7 @@ void (async ([ruleId, ...args]) => { process.exitCode = 1; return; } - const utilsPath = path.resolve(__dirname, `../src/utils`); + const utilsPath = path.resolve(__dirname, `../src/utils/index.ts`); const testUtilsPath = path.resolve(__dirname, `../tests/utils/utils.ts`); const ruleFile = path.resolve(__dirname, `../src/rules/${ruleId}.ts`); @@ -70,7 +70,7 @@ export default createRule('${ruleId}', { ); await writeAndFormat( testFile, - `import { RuleTester } from '../../utils/eslint-compat'; + `import { RuleTester } from '../../utils/eslint-compat.js'; import rule from '${getModulePath(testFile, ruleFile)}'; import { loadTestCases } from '${getModulePath(testFile, testUtilsPath)}'; @@ -144,7 +144,7 @@ This rule reports ???. /** Get module path */ function getModulePath(from: string, module: string): string { - return path.relative(path.dirname(from), module).replace(/.ts$/u, ''); + return path.relative(path.dirname(from), module).replace(/.ts$/u, '.js'); } /** Argument parsing */ diff --git a/packages/eslint-plugin-svelte/tools/render-rules.ts b/packages/eslint-plugin-svelte/tools/render-rules.ts index 8e8466bd7..31ee0f016 100644 --- a/packages/eslint-plugin-svelte/tools/render-rules.ts +++ b/packages/eslint-plugin-svelte/tools/render-rules.ts @@ -1,5 +1,5 @@ -import type { RuleModule } from '../src/types'; -import { rules } from '../src/utils/rules'; +import type { RuleModule } from '../src/types.js'; +import { rules } from '../src/utils/rules.js'; const categories = [ 'Possible Errors', diff --git a/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts b/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts index 49ececf09..e0c9a420a 100644 --- a/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts +++ b/packages/eslint-plugin-svelte/tools/update-docs-rules-index.ts @@ -1,6 +1,8 @@ import path from 'path'; -import renderRulesTableContent from './render-rules'; -import { writeAndFormat } from './lib/write'; +import renderRulesTableContent from './render-rules.js'; +import { writeAndFormat } from './lib/write.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); // ----------------------------------------------------------------------------- const readmeFilePath = path.resolve(__dirname, '../../../docs/rules.md'); diff --git a/packages/eslint-plugin-svelte/tools/update-docs.ts b/packages/eslint-plugin-svelte/tools/update-docs.ts index 4702f5273..1f0e52e3a 100644 --- a/packages/eslint-plugin-svelte/tools/update-docs.ts +++ b/packages/eslint-plugin-svelte/tools/update-docs.ts @@ -1,9 +1,11 @@ import path from 'path'; import fs from 'fs'; -import { rules } from '../src/utils/rules'; -import type { RuleModule } from '../src/types'; -import { getNewVersion } from './lib/changesets-util'; -import { writeAndFormat } from './lib/write'; +import { rules } from '../src/utils/rules.js'; +import type { RuleModule } from '../src/types.js'; +import { getNewVersion } from './lib/changesets-util.js'; +import { writeAndFormat } from './lib/write.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); function formatItems(items: string[]) { if (items.length <= 2) { diff --git a/packages/eslint-plugin-svelte/tools/update-meta.ts b/packages/eslint-plugin-svelte/tools/update-meta.ts index 88b0e47fd..761ba2d0e 100644 --- a/packages/eslint-plugin-svelte/tools/update-meta.ts +++ b/packages/eslint-plugin-svelte/tools/update-meta.ts @@ -1,8 +1,9 @@ import path from 'path'; import { name, version } from '../package.json'; -import { getNewVersion } from './lib/changesets-util'; -import { writeAndFormat } from './lib/write'; +import { getNewVersion } from './lib/changesets-util.js'; +import { writeAndFormat } from './lib/write.js'; +const __dirname = path.dirname(new URL(import.meta.url).pathname); const META_PATH = path.join(__dirname, '../src/meta.ts'); void main(); diff --git a/packages/eslint-plugin-svelte/tools/update-readme.ts b/packages/eslint-plugin-svelte/tools/update-readme.ts index 4a10e6f90..48e844061 100644 --- a/packages/eslint-plugin-svelte/tools/update-readme.ts +++ b/packages/eslint-plugin-svelte/tools/update-readme.ts @@ -1,7 +1,9 @@ import path from 'path'; import fs from 'fs'; -import renderRulesTableContent from './render-rules'; -import { writeAndFormat } from './lib/write'; +import renderRulesTableContent from './render-rules.js'; +import { writeAndFormat } from './lib/write.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); const insertText = `\n${renderRulesTableContent( (name) => `https://sveltejs.github.io/eslint-plugin-svelte/rules/${name}/` diff --git a/packages/eslint-plugin-svelte/tools/update-rule-types.ts b/packages/eslint-plugin-svelte/tools/update-rule-types.ts index 885acc427..c360a2eb0 100644 --- a/packages/eslint-plugin-svelte/tools/update-rule-types.ts +++ b/packages/eslint-plugin-svelte/tools/update-rule-types.ts @@ -1,6 +1,8 @@ import fs from 'fs'; import path from 'path'; -import plugin from '../src/index'; +import plugin from '../src/index.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); void main(); diff --git a/packages/eslint-plugin-svelte/tools/update-rules.ts b/packages/eslint-plugin-svelte/tools/update-rules.ts index 4d6632e6a..1aa9c7fbb 100644 --- a/packages/eslint-plugin-svelte/tools/update-rules.ts +++ b/packages/eslint-plugin-svelte/tools/update-rules.ts @@ -1,7 +1,9 @@ import path from 'path'; // import eslint from "eslint" -import { rules } from './lib/load-rules'; -import { writeAndFormat } from './lib/write'; +import { rules } from './lib/load-rules.js'; +import { writeAndFormat } from './lib/write.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); /** * Convert text to camelCase @@ -26,11 +28,11 @@ const content = `/* * This file has been automatically generated, * in order to update its content execute "pnpm run update" */ -import type { RuleModule } from "../types" +import type { RuleModule } from "../types.js" ${rules .map( (rule) => - `import ${toIdentifier(rule.meta.docs.ruleName)} from "../rules/${rule.meta.docs.ruleName}"` + `import ${toIdentifier(rule.meta.docs.ruleName)} from "../rules/${rule.meta.docs.ruleName}.js"` ) .join('\n')} diff --git a/packages/eslint-plugin-svelte/tools/update-rulesets.ts b/packages/eslint-plugin-svelte/tools/update-rulesets.ts index e1a21b4b6..1431662af 100644 --- a/packages/eslint-plugin-svelte/tools/update-rulesets.ts +++ b/packages/eslint-plugin-svelte/tools/update-rulesets.ts @@ -1,108 +1,8 @@ import path from 'path'; -import { rules } from './lib/load-rules'; -import { writeAndFormat } from './lib/write'; +import { rules } from './lib/load-rules.js'; +import { writeAndFormat } from './lib/write.js'; -// ------------------ -// Legacy Config -// ------------------ - -const legacyBaseContent = `/* - * IMPORTANT! - * This file has been automatically generated, - * in order to update its content execute "pnpm run update" - */ -import type { Linter } from 'eslint' -const config: Linter.LegacyConfig = { - plugins: ["svelte"], - overrides: [ - { - files: ["*.svelte"], - parser: require.resolve("svelte-eslint-parser"), - rules: { - // ESLint core rules known to cause problems with \`.svelte\`. - "no-inner-declarations": "off", // The AST generated by svelte-eslint-parser will false positives in it rule because the root node of the script is not the \`Program\`. - // "no-irregular-whitespace": "off", - // Self assign is one of way to update reactive value in Svelte. - "no-self-assign": "off", - - // eslint-plugin-svelte rules - ${rules - .filter((rule) => rule.meta.docs.recommended === 'base' && !rule.meta.deprecated) - .map((rule) => { - const conf = rule.meta.docs.default || 'error'; - return `"${rule.meta.docs.ruleId}": "${conf}"`; - }) - .join(',\n ')}, - }, - }, - ], -} -export = config -`; - -const legacyBaseFilePath = path.resolve(__dirname, '../src/configs/base.ts'); - -// Update file. -void writeAndFormat(legacyBaseFilePath, legacyBaseContent); - -const legacyRecommendedContent = `/* - * IMPORTANT! - * This file has been automatically generated, - * in order to update its content execute "pnpm run update" - */ -import type { Linter } from 'eslint' -import path from "node:path" -const base = require.resolve("./base") -const baseExtend = - path.extname(\`\${base}\`) === ".ts" ? "plugin:svelte/base" : base -const config: Linter.LegacyConfig = { - extends: [baseExtend], - rules: { - // eslint-plugin-svelte rules - ${rules - .filter((rule) => rule.meta.docs.recommended && !rule.meta.deprecated) - .map((rule) => { - const conf = rule.meta.docs.default || 'error'; - return `"${rule.meta.docs.ruleId}": "${conf}"`; - }) - .join(',\n ')}, - }, -} -export = config -`; - -const legacyRecommendedFilePath = path.resolve(__dirname, '../src/configs/recommended.ts'); - -// Update file. -void writeAndFormat(legacyRecommendedFilePath, legacyRecommendedContent); - -const legacyPrettierContent = `/* - * IMPORTANT! - * This file has been automatically generated, - * in order to update its content execute "pnpm run update" - */ -import type { Linter } from 'eslint' -import path from "node:path" -const base = require.resolve("./base") -const baseExtend = - path.extname(\`\${base}\`) === ".ts" ? "plugin:svelte/base" : base -const config: Linter.LegacyConfig = { - extends: [baseExtend], - rules: { - // eslint-plugin-svelte rules - ${rules - .filter((rule) => rule.meta.docs.conflictWithPrettier) - .map((rule) => `"${rule.meta.docs.ruleId}": "off"`) - .join(',\n ')}, - }, -} -export = config -`; - -const legacyPrettierFilePath = path.resolve(__dirname, '../src/configs/prettier.ts'); - -// Update file. -void writeAndFormat(legacyPrettierFilePath, legacyPrettierContent); +const __dirname = path.dirname(new URL(import.meta.url).pathname); // ------------------ // Flat Config @@ -114,13 +14,17 @@ const baseContent = `/* * in order to update its content execute "pnpm run update" */ import type { ESLint, Linter } from 'eslint'; +import * as parser from 'svelte-eslint-parser'; +let pluginObject: ESLint.Plugin | null = null; +export function setPluginObject(plugin: ESLint.Plugin): void { + pluginObject = plugin; +} const config: Linter.Config[] = [ { name: 'svelte:base:setup-plugin', plugins: { get svelte(): ESLint.Plugin { - // eslint-disable-next-line @typescript-eslint/no-require-imports -- ignore - return require("../../index") + return pluginObject!; } }, }, @@ -128,8 +32,7 @@ const config: Linter.Config[] = [ name: 'svelte:base:setup-for-svelte', files: ["*.svelte", "**/*.svelte"], languageOptions: { - // eslint-disable-next-line @typescript-eslint/no-require-imports -- ignore - parser: require('svelte-eslint-parser'), + parser: parser, }, rules: { // ESLint core rules known to cause problems with \`.svelte\`. @@ -164,7 +67,7 @@ const recommendedContent = `/* * in order to update its content execute "pnpm run update" */ import type { Linter } from 'eslint'; -import base from "./base" +import base from "./base.js" const config: Linter.Config[] = [ ...base, { @@ -195,7 +98,7 @@ const prettierContent = `/* * in order to update its content execute "pnpm run update" */ import type { Linter } from 'eslint'; -import base from "./base" +import base from "./base.js" const config: Linter.Config[] = [ ...base, { diff --git a/packages/eslint-plugin-svelte/tools/update-types-for-node.ts b/packages/eslint-plugin-svelte/tools/update-types-for-node.ts index 7dcd97196..c2e416a10 100644 --- a/packages/eslint-plugin-svelte/tools/update-types-for-node.ts +++ b/packages/eslint-plugin-svelte/tools/update-types-for-node.ts @@ -1,13 +1,15 @@ import { AST_NODE_TYPES } from '@typescript-eslint/types'; import { parseForESLint } from 'svelte-eslint-parser'; import path from 'path'; -import { writeAndFormat } from './lib/write'; +import { writeAndFormat } from './lib/write.js'; + +const __dirname = path.dirname(new URL(import.meta.url).pathname); // import { fileURLToPath } from "url" // const filename = fileURLToPath(import.meta.url) const dirname = __dirname; // path.dirname(filename) const typesForNodeFilename = path.join(dirname, '../src/types-for-node.ts'); -const estreeFilename = path.join(dirname, '../typings/estree/index.d.ts'); +const estreeFilename = path.join(dirname, '../src/type-defs/estree.d.ts'); const { visitorKeys } = parseForESLint(''); const esNextNodeNames = ['Decorator', 'ImportAttribute', 'StaticBlock']; @@ -30,7 +32,7 @@ const estreeCode = [ // // Replace type information to use "@typescript-eslint/types" instead of "estree". // - +declare module 'estree' { import type { TSESTree } from "@typescript-eslint/types" export type Node = TSESTree.Node @@ -110,5 +112,6 @@ for (const nodeType of svelteNodeNames.filter((k) => !esSvelteNodeNames.includes } typesForNodeCode.push(`}`); +estreeCode.push(`}`); void writeAndFormat(typesForNodeFilename, typesForNodeCode.join('\n')); void writeAndFormat(estreeFilename, estreeCode.join('\n')); diff --git a/packages/eslint-plugin-svelte/tsconfig.json b/packages/eslint-plugin-svelte/tsconfig.json index 79a7555e8..800422509 100644 --- a/packages/eslint-plugin-svelte/tsconfig.json +++ b/packages/eslint-plugin-svelte/tsconfig.json @@ -17,9 +17,6 @@ "baseUrl": ".", "esModuleInterop": true, "outDir": "lib", - "paths": { - "*": ["typings/*"] - }, "skipLibCheck": true, "resolveJsonModule": true }, @@ -30,7 +27,6 @@ "tools/**/*", "vite.config.mts", "docs-svelte-kit/**/*.mts" - // "typings/**/*" ], "exclude": ["lib/**/*", "tests/fixtures/**/*"] } diff --git a/packages/eslint-plugin-svelte/typings/@eslint-community/eslint-utils/index.d.ts b/packages/eslint-plugin-svelte/typings/@eslint-community/eslint-utils/index.d.ts deleted file mode 100644 index 45432fcf7..000000000 --- a/packages/eslint-plugin-svelte/typings/@eslint-community/eslint-utils/index.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -import type { AST } from 'svelte-eslint-parser'; -import type { TSESTree } from '@typescript-eslint/types'; -import type { Scope } from '@typescript-eslint/scope-manager'; -import type { - CALL, - CONSTRUCT, - ESM, - READ, - TraceMap -} from '@eslint-community/eslint-utils/referenceTracker'; -export { ReferenceTracker, TrackedReferences } from '../../../node_modules/@types/eslint-utils'; -type Token = { type: string; value: string }; -export function isArrowToken(token: Token): boolean; -export function isCommaToken(token: Token): boolean; -export function isSemicolonToken(token: Token): boolean; -export function isColonToken(token: Token): boolean; -export function isOpeningParenToken(token: Token): boolean; -export function isClosingParenToken(token: Token): boolean; -export function isOpeningBracketToken(token: Token): boolean; -export function isClosingBracketToken(token: Token): boolean; -export function isOpeningBraceToken(token: Token): boolean; -export function isClosingBraceToken(token: Token): boolean; -export function isCommentToken(token: Token): token is AST.Comment; -export function isNotArrowToken(token: Token): boolean; -export function isNotCommaToken(token: Token): boolean; -export function isNotSemicolonToken(token: Token): boolean; -export function isNotColonToken(token: Token): boolean; -export function isNotOpeningParenToken(token: Token): boolean; -export function isNotClosingParenToken(token: Token): boolean; -export function isNotOpeningBracketToken(token: Token): boolean; -export function isNotClosingBracketToken(token: Token): boolean; -export function isNotOpeningBraceToken(token: Token): boolean; -export function isNotClosingBraceToken(token: Token): boolean; -export function isNotCommentToken(token: Token): boolean; - -export function findVariable( - initialScope: Scope, - nameOrNode: TSESTree.Identifier | string -): Scope.Variable; - -/** - * Get the property name from a MemberExpression node or a Property node. - */ -export function getPropertyName( - node: - | TSESTree.MemberExpression - | TSESTree.MethodDefinition - | TSESTree.Property - | TSESTree.PropertyDefinition, - initialScope?: Scope -): string | null; - -/** - * Get the innermost scope which contains a given location. - */ -export function getInnermostScope(initialScope: Scope, node: TSESTree.Node): Scope; - -export class ReferenceTracker { - public static readonly CALL: typeof CALL; - - public static readonly CONSTRUCT: typeof CONSTRUCT; - - public static readonly ESM: typeof ESM; - - public static readonly READ: typeof READ; - - public constructor(globalScope: Scope, options?: ReferenceTrackerOptions); - - /** - * Iterate the references of CommonJS modules. - */ - public iterateCjsReferences( - traceMap: TraceMap - ): IterableIterator>; - - /** - * Iterate the references of ES modules. - */ - public iterateEsmReferences( - traceMap: TraceMap - ): IterableIterator>; - - /** - * Iterate the references of global variables. - */ - public iterateGlobalReferences( - traceMap: TraceMap - ): IterableIterator>; -} diff --git a/packages/eslint-plugin-svelte/typings/estree/index.d.ts b/packages/eslint-plugin-svelte/typings/estree/index.d.ts deleted file mode 100644 index 286f74999..000000000 --- a/packages/eslint-plugin-svelte/typings/estree/index.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -// IMPORTANT! -// This file has been automatically generated, -// in order to update its content execute "pnpm run update" -// -// Replace type information to use "@typescript-eslint/types" instead of "estree". -// - -import type { TSESTree } from '@typescript-eslint/types'; - -export type Node = TSESTree.Node; -export type Program = TSESTree.Program; -export type Expression = TSESTree.Expression; -export type Statement = TSESTree.Statement; -export type Pattern = TSESTree.DestructuringPattern; -export type AccessorProperty = TSESTree.AccessorProperty; -export type ArrayExpression = TSESTree.ArrayExpression; -export type ArrayPattern = TSESTree.ArrayPattern; -export type ArrowFunctionExpression = TSESTree.ArrowFunctionExpression; -export type AssignmentExpression = TSESTree.AssignmentExpression; -export type AssignmentPattern = TSESTree.AssignmentPattern; -export type AwaitExpression = TSESTree.AwaitExpression; -export type BinaryExpression = TSESTree.BinaryExpression; -export type BlockStatement = TSESTree.BlockStatement; -export type BreakStatement = TSESTree.BreakStatement; -export type CallExpression = TSESTree.CallExpression; -export type CatchClause = TSESTree.CatchClause; -export type ChainExpression = TSESTree.ChainExpression; -export type ClassBody = TSESTree.ClassBody; -export type ClassDeclaration = TSESTree.ClassDeclaration; -export type ClassExpression = TSESTree.ClassExpression; -export type ConditionalExpression = TSESTree.ConditionalExpression; -export type ContinueStatement = TSESTree.ContinueStatement; -export type DebuggerStatement = TSESTree.DebuggerStatement; -export type DoWhileStatement = TSESTree.DoWhileStatement; -export type EmptyStatement = TSESTree.EmptyStatement; -export type ExportAllDeclaration = TSESTree.ExportAllDeclaration; -export type ExportDefaultDeclaration = TSESTree.ExportDefaultDeclaration; -export type ExportNamedDeclaration = TSESTree.ExportNamedDeclaration; -export type ExportSpecifier = TSESTree.ExportSpecifier; -export type ExpressionStatement = TSESTree.ExpressionStatement; -export type ForInStatement = TSESTree.ForInStatement; -export type ForOfStatement = TSESTree.ForOfStatement; -export type ForStatement = TSESTree.ForStatement; -export type FunctionDeclaration = TSESTree.FunctionDeclaration; -export type FunctionExpression = TSESTree.FunctionExpression; -export type Identifier = TSESTree.Identifier; -export type IfStatement = TSESTree.IfStatement; -export type ImportDeclaration = TSESTree.ImportDeclaration; -export type ImportDefaultSpecifier = TSESTree.ImportDefaultSpecifier; -export type ImportExpression = TSESTree.ImportExpression; -export type ImportNamespaceSpecifier = TSESTree.ImportNamespaceSpecifier; -export type ImportSpecifier = TSESTree.ImportSpecifier; -export type LabeledStatement = TSESTree.LabeledStatement; -export type Literal = TSESTree.Literal; -export type LogicalExpression = TSESTree.LogicalExpression; -export type MemberExpression = TSESTree.MemberExpression; -export type MetaProperty = TSESTree.MetaProperty; -export type MethodDefinition = TSESTree.MethodDefinition; -export type NewExpression = TSESTree.NewExpression; -export type ObjectExpression = TSESTree.ObjectExpression; -export type ObjectPattern = TSESTree.ObjectPattern; -export type PrivateIdentifier = TSESTree.PrivateIdentifier; -export type Property = TSESTree.Property; -export type PropertyDefinition = TSESTree.PropertyDefinition; -export type RestElement = TSESTree.RestElement; -export type ReturnStatement = TSESTree.ReturnStatement; -export type SequenceExpression = TSESTree.SequenceExpression; -export type SpreadElement = TSESTree.SpreadElement; -export type Super = TSESTree.Super; -export type SwitchCase = TSESTree.SwitchCase; -export type SwitchStatement = TSESTree.SwitchStatement; -export type TaggedTemplateExpression = TSESTree.TaggedTemplateExpression; -export type TemplateElement = TSESTree.TemplateElement; -export type TemplateLiteral = TSESTree.TemplateLiteral; -export type ThisExpression = TSESTree.ThisExpression; -export type ThrowStatement = TSESTree.ThrowStatement; -export type TryStatement = TSESTree.TryStatement; -export type UnaryExpression = TSESTree.UnaryExpression; -export type UpdateExpression = TSESTree.UpdateExpression; -export type VariableDeclaration = TSESTree.VariableDeclaration; -export type VariableDeclarator = TSESTree.VariableDeclarator; -export type WhileStatement = TSESTree.WhileStatement; -export type WithStatement = TSESTree.WithStatement; -export type YieldExpression = TSESTree.YieldExpression; diff --git a/packages/eslint-plugin-svelte/typings/postcss-safe-parser/lib/safe-parser/index.d.ts b/packages/eslint-plugin-svelte/typings/postcss-safe-parser/lib/safe-parser/index.d.ts deleted file mode 100644 index d8e605e50..000000000 --- a/packages/eslint-plugin-svelte/typings/postcss-safe-parser/lib/safe-parser/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Tokenizer } from 'postcss/lib/tokenize'; -import type { Root, Input } from 'postcss'; - -declare class Parser { - protected input: Input; - - public root: Root; - - protected tokenizer: Tokenizer; - - public constructor(input: Input); - - public parse(): void; - - protected createTokenizer(): void; -} -export default Parser; diff --git a/packages/eslint-plugin-svelte/typings/postcss/lib/tokenize/index.d.ts b/packages/eslint-plugin-svelte/typings/postcss/lib/tokenize/index.d.ts deleted file mode 100644 index 83573b5c4..000000000 --- a/packages/eslint-plugin-svelte/typings/postcss/lib/tokenize/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Input } from 'postcss'; -export type Token = [string, string, number?, number?]; -export type Tokenizer = { - back: (token: Token) => void; - nextToken: (opts?: { ignoreUnclosed?: boolean }) => Token | undefined; - endOfFile: () => boolean; - position: () => number; -}; -export default function tokenizer(input: Input, options?: { ignoreErrors?: boolean }): Tokenizer; diff --git a/prettier.config.js b/prettier.config.cjs similarity index 100% rename from prettier.config.js rename to prettier.config.cjs