diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 2353241cd..000000000 --- a/.eslintignore +++ /dev/null @@ -1,12 +0,0 @@ -/.nyc_output -/coverage -/node_modules -/tests/fixtures -/tests/integrations/eslint-plugin-import - -!.vitepress -/docs/.vitepress/dist -/docs/.vitepress/build-system/shim/eslint.mjs -/docs/.vitepress/build-system/shim/assert.mjs -/docs/.vitepress/.temp -/docs/.vitepress/cache diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index e7f17d88b..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,181 +0,0 @@ -'use strict' - -module.exports = { - root: true, - parserOptions: { - ecmaVersion: 'latest' - }, - env: { - es6: true, - node: true, - mocha: true - }, - extends: [ - 'plugin:eslint-plugin/recommended', - 'prettier', - 'plugin:node-dependencies/recommended', - 'plugin:jsonc/recommended-with-jsonc', - 'plugin:unicorn/recommended' - ], - plugins: ['eslint-plugin', 'prettier', 'unicorn'], - rules: { - 'accessor-pairs': 2, - camelcase: [2, { properties: 'never' }], - 'constructor-super': 2, - eqeqeq: [2, 'allow-null'], - 'handle-callback-err': [2, '^(err|error)$'], - 'jsx-quotes': [2, 'prefer-single'], - 'new-cap': [2, { newIsCap: true, capIsNew: false }], - 'new-parens': 2, - 'no-array-constructor': 2, - 'no-caller': 2, - 'no-class-assign': 2, - 'no-cond-assign': 2, - 'no-const-assign': 2, - 'no-control-regex': 2, - 'no-delete-var': 2, - 'no-dupe-args': 2, - 'no-dupe-class-members': 2, - 'no-dupe-keys': 2, - 'no-duplicate-case': 2, - 'no-empty-character-class': 2, - 'no-empty-pattern': 2, - 'no-eval': 2, - 'no-ex-assign': 2, - 'no-extend-native': 2, - 'no-extra-bind': 2, - 'no-extra-boolean-cast': 2, - 'no-extra-parens': [2, 'functions'], - 'no-fallthrough': 2, - 'no-floating-decimal': 2, - 'no-func-assign': 2, - 'no-implied-eval': 2, - 'no-inner-declarations': [2, 'functions'], - 'no-invalid-regexp': 2, - 'no-irregular-whitespace': 2, - 'no-iterator': 2, - 'no-label-var': 2, - 'no-labels': [2, { allowLoop: false, allowSwitch: false }], - 'no-lone-blocks': 2, - 'no-multi-spaces': [2, { ignoreEOLComments: true }], - 'no-multi-str': 2, - 'no-native-reassign': 2, - 'no-negated-in-lhs': 2, - 'no-new-object': 2, - 'no-new-require': 2, - 'no-new-symbol': 2, - 'no-new-wrappers': 2, - 'no-obj-calls': 2, - 'no-octal': 2, - 'no-octal-escape': 2, - 'no-path-concat': 2, - 'no-proto': 2, - 'no-redeclare': 2, - 'no-regex-spaces': 2, - 'no-return-assign': [2, 'except-parens'], - 'no-self-assign': 2, - 'no-self-compare': 2, - 'no-sequences': 2, - 'no-shadow-restricted-names': 2, - 'no-sparse-arrays': 2, - 'no-this-before-super': 2, - 'no-throw-literal': 2, - 'no-undef': 2, - 'no-undef-init': 2, - 'no-unexpected-multiline': 2, - 'no-unmodified-loop-condition': 2, - 'no-unneeded-ternary': [2, { defaultAssignment: false }], - 'no-unreachable': 2, - 'no-unsafe-finally': 2, - 'no-unused-vars': [2, { vars: 'all', args: 'none' }], - 'no-useless-call': 2, - 'no-useless-computed-key': 2, - 'no-useless-constructor': 2, - 'no-useless-escape': 0, - 'no-with': 2, - 'one-var': [2, { initialized: 'never' }], - 'use-isnan': 2, - 'valid-typeof': 2, - 'wrap-iife': [2, 'any'], - yoda: [2, 'never'], - 'prefer-const': 2, - - 'prettier/prettier': 'error', - 'eslint-plugin/report-message-format': ['error', "^[A-Z`'{].*\\.$"], - 'eslint-plugin/prefer-placeholders': 'error', - 'eslint-plugin/consistent-output': 'error', - - 'no-debugger': 'error', - 'no-console': 'error', - 'no-alert': 'error', - 'no-void': 'error', - - 'no-warning-comments': 'warn', - 'no-var': 'error', - 'prefer-template': 'error', - 'object-shorthand': 'error', - 'prefer-rest-params': 'error', - 'prefer-arrow-callback': 'error', - 'prefer-spread': 'error', - - 'dot-notation': 'error', - 'arrow-body-style': 'error', - - 'unicorn/consistent-function-scoping': [ - 'error', - { checkArrowFunctions: false } - ], - 'unicorn/filename-case': 'off', - 'unicorn/no-null': 'off', - 'unicorn/no-array-callback-reference': 'off', // doesn't work well with TypeScript's custom type guards - 'unicorn/no-negated-condition': 'off', // remove when there are few pull requests (ref: #2146) - 'unicorn/no-useless-undefined': 'off', - 'unicorn/prefer-optional-catch-binding': 'off', // not supported by current ESLint parser version - 'unicorn/prefer-module': 'off', - 'unicorn/prevent-abbreviations': 'off', - 'unicorn/prefer-at': 'off', // turn off to prevent make breaking changes (ref: #2146) - 'unicorn/prefer-node-protocol': 'off', // turn off to prevent make breaking changes (ref: #2146) - 'unicorn/prefer-string-replace-all': 'off', // turn off to prevent make breaking changes (ref: #2146) - 'unicorn/prefer-ternary': 'off', // remove when there are few pull requests (ref: #2146) - 'unicorn/prefer-top-level-await': 'off', // turn off to prevent make breaking changes (ref: #2146) - 'unicorn/switch-case-braces': 'off', // remove when there are few pull requests (ref: #2146) - - 'require-eslint-community': ['error'] - }, - overrides: [ - { - files: ['./**/*.vue'], - parser: require.resolve('vue-eslint-parser'), - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module' - } - }, - { - files: ['lib/rules/*.js'], - rules: { - 'eslint-plugin/no-deprecated-context-methods': 'error', - 'eslint-plugin/no-only-tests': 'error', - 'eslint-plugin/prefer-object-rule': 'error', - 'eslint-plugin/require-meta-docs-description': 'error', - 'eslint-plugin/require-meta-docs-url': [ - 'error', - { - pattern: `https://eslint.vuejs.org/rules/{{name}}.html` - } - ], - 'eslint-plugin/require-meta-has-suggestions': 'error', - 'eslint-plugin/require-meta-schema': 'error', - 'eslint-plugin/require-meta-type': 'error', - 'no-invalid-meta': 'error', - 'no-invalid-meta-docs-categories': 'error' - } - }, - { - files: ['*.json'], - rules: { - 'prettier/prettier': 'off' - } - } - ] -} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..78cecffeb --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,221 @@ +'use strict' + +const globals = require('globals') +const { FlatCompat } = require('@eslint/eslintrc') + +const eslintrc = new FlatCompat({ + baseDirectory: __dirname +}) + +module.exports = [ + { + ignores: [ + '.nyc_output', + 'coverage', + 'node_modules', + 'tests/fixtures', + 'tests/integrations/eslint-plugin-import', + + '!.vitepress', + 'docs/.vitepress/dist', + 'docs/.vitepress/build-system/shim/eslint.mjs', + 'docs/.vitepress/build-system/shim/assert.mjs', + 'docs/.vitepress/build-system/shim/path.mjs', + 'docs/.vitepress/.temp', + 'docs/.vitepress/cache' + ] + }, + ...eslintrc.plugins('eslint-plugin', 'prettier', 'unicorn'), + ...eslintrc.extends( + 'plugin:eslint-plugin/recommended', + 'prettier', + 'plugin:node-dependencies/recommended', + 'plugin:jsonc/recommended-with-jsonc', + 'plugin:unicorn/recommended' + ), + { + plugins: { + internal: { + rules: { + 'no-invalid-meta': require('./eslint-internal-rules/no-invalid-meta'), + 'no-invalid-meta-docs-categories': require('./eslint-internal-rules/no-invalid-meta-docs-categories'), + 'require-eslint-community': require('./eslint-internal-rules/require-eslint-community') + } + } + } + }, + + { + files: ['**/*.js'], + languageOptions: { + ecmaVersion: 'latest', + globals: { + ...globals.es6, + ...globals.node, + ...globals.mocha + } + }, + rules: { + 'accessor-pairs': 2, + camelcase: [2, { properties: 'never' }], + 'constructor-super': 2, + eqeqeq: [2, 'allow-null'], + 'handle-callback-err': [2, '^(err|error)$'], + 'jsx-quotes': [2, 'prefer-single'], + 'new-cap': [2, { newIsCap: true, capIsNew: false }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 2, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { allowLoop: false, allowSwitch: false }], + 'no-lone-blocks': 2, + 'no-multi-spaces': [2, { ignoreEOLComments: true }], + 'no-multi-str': 2, + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { defaultAssignment: false }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { vars: 'all', args: 'none' }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-with': 2, + 'one-var': [2, { initialized: 'never' }], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + yoda: [2, 'never'], + 'prefer-const': 2, + + 'prettier/prettier': 'error', + 'eslint-plugin/report-message-format': ['error', "^[A-Z`'{].*\\.$"], + 'eslint-plugin/prefer-placeholders': 'error', + 'eslint-plugin/consistent-output': 'error', + + 'no-debugger': 'error', + 'no-console': 'error', + 'no-alert': 'error', + 'no-void': 'error', + + 'no-warning-comments': 'warn', + 'no-var': 'error', + 'prefer-template': 'error', + 'object-shorthand': 'error', + 'prefer-rest-params': 'error', + 'prefer-arrow-callback': 'error', + 'prefer-spread': 'error', + + 'dot-notation': 'error', + 'arrow-body-style': 'error', + + 'unicorn/consistent-function-scoping': [ + 'error', + { checkArrowFunctions: false } + ], + 'unicorn/filename-case': 'off', + 'unicorn/no-null': 'off', + 'unicorn/no-array-callback-reference': 'off', // doesn't work well with TypeScript's custom type guards + 'unicorn/no-negated-condition': 'off', // remove when there are few pull requests (ref: #2146) + 'unicorn/no-useless-undefined': 'off', + 'unicorn/prefer-optional-catch-binding': 'off', // not supported by current ESLint parser version + 'unicorn/prefer-module': 'off', + 'unicorn/prevent-abbreviations': 'off', + 'unicorn/prefer-at': 'off', // turn off to prevent make breaking changes (ref: #2146) + 'unicorn/prefer-node-protocol': 'off', // turn off to prevent make breaking changes (ref: #2146) + 'unicorn/prefer-string-replace-all': 'off', // turn off to prevent make breaking changes (ref: #2146) + 'unicorn/prefer-ternary': 'off', // remove when there are few pull requests (ref: #2146) + 'unicorn/prefer-top-level-await': 'off', // turn off to prevent make breaking changes (ref: #2146) + 'unicorn/switch-case-braces': 'off', // remove when there are few pull requests (ref: #2146) + + 'internal/require-eslint-community': ['error'] + } + }, + { + files: ['./**/*.vue'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parser: require('vue-eslint-parser') + // parserOptions: { + // ecmaVersion: 'latest', + // sourceType: 'module' + // } + } + }, + { + files: ['lib/rules/*.js'], + rules: { + 'eslint-plugin/no-deprecated-context-methods': 'error', + 'eslint-plugin/no-only-tests': 'error', + 'eslint-plugin/prefer-object-rule': 'error', + 'eslint-plugin/require-meta-docs-description': 'error', + 'eslint-plugin/require-meta-docs-url': [ + 'error', + { + pattern: `https://eslint.vuejs.org/rules/{{name}}.html` + } + ], + 'eslint-plugin/require-meta-has-suggestions': 'error', + 'eslint-plugin/require-meta-schema': 'error', + 'eslint-plugin/require-meta-type': 'error', + 'internal/no-invalid-meta': 'error', + 'internal/no-invalid-meta-docs-categories': 'error' + } + }, + { + files: ['**/*.json'], + rules: { + 'prettier/prettier': 'off' + } + } +] diff --git a/lib/rules/array-bracket-newline.js b/lib/rules/array-bracket-newline.js index c667fc7e3..f4612db5d 100644 --- a/lib/rules/array-bracket-newline.js +++ b/lib/rules/array-bracket-newline.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('array-bracket-newline', { skipDynamicArguments: true }) diff --git a/lib/rules/array-bracket-spacing.js b/lib/rules/array-bracket-spacing.js index 0541d0585..d32b00065 100644 --- a/lib/rules/array-bracket-spacing.js +++ b/lib/rules/array-bracket-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('array-bracket-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/array-element-newline.js b/lib/rules/array-element-newline.js index 251d72de9..645ecc170 100644 --- a/lib/rules/array-element-newline.js +++ b/lib/rules/array-element-newline.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('array-element-newline', { skipDynamicArguments: true }) diff --git a/lib/rules/arrow-spacing.js b/lib/rules/arrow-spacing.js index f31ab3c3d..a64d4967a 100644 --- a/lib/rules/arrow-spacing.js +++ b/lib/rules/arrow-spacing.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('arrow-spacing') diff --git a/lib/rules/block-spacing.js b/lib/rules/block-spacing.js index 0634f2b6a..f234d5e94 100644 --- a/lib/rules/block-spacing.js +++ b/lib/rules/block-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('block-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/brace-style.js b/lib/rules/brace-style.js index 5dad2c29d..1672b936a 100644 --- a/lib/rules/brace-style.js +++ b/lib/rules/brace-style.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('brace-style', { skipDynamicArguments: true }) diff --git a/lib/rules/camelcase.js b/lib/rules/camelcase.js index 4b0898fe6..a37da86b0 100644 --- a/lib/rules/camelcase.js +++ b/lib/rules/camelcase.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('camelcase') diff --git a/lib/rules/comma-dangle.js b/lib/rules/comma-dangle.js index 6fb48b79d..c338d6782 100644 --- a/lib/rules/comma-dangle.js +++ b/lib/rules/comma-dangle.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('comma-dangle') diff --git a/lib/rules/comma-spacing.js b/lib/rules/comma-spacing.js index 6bad7e4b7..0b5b7490f 100644 --- a/lib/rules/comma-spacing.js +++ b/lib/rules/comma-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('comma-spacing', { skipDynamicArguments: true, skipDynamicArgumentsReport: true, diff --git a/lib/rules/comma-style.js b/lib/rules/comma-style.js index 960e6d6df..9263e4fc6 100644 --- a/lib/rules/comma-style.js +++ b/lib/rules/comma-style.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('comma-style', { create(_context, { coreHandlers }) { return { diff --git a/lib/rules/dot-location.js b/lib/rules/dot-location.js index 08f96127b..be002b6e6 100644 --- a/lib/rules/dot-location.js +++ b/lib/rules/dot-location.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('dot-location') diff --git a/lib/rules/dot-notation.js b/lib/rules/dot-notation.js index bd72bd828..e7a2b0f3c 100644 --- a/lib/rules/dot-notation.js +++ b/lib/rules/dot-notation.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('dot-notation', { applyDocument: true }) diff --git a/lib/rules/eqeqeq.js b/lib/rules/eqeqeq.js index d918b4d80..29d889046 100644 --- a/lib/rules/eqeqeq.js +++ b/lib/rules/eqeqeq.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('eqeqeq', { applyDocument: true }) diff --git a/lib/rules/func-call-spacing.js b/lib/rules/func-call-spacing.js index 2054376c0..1a4554df1 100644 --- a/lib/rules/func-call-spacing.js +++ b/lib/rules/func-call-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('func-call-spacing', { skipDynamicArguments: true, applyDocument: true diff --git a/lib/rules/key-spacing.js b/lib/rules/key-spacing.js index a949c18a0..3dfe4c9ae 100644 --- a/lib/rules/key-spacing.js +++ b/lib/rules/key-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('key-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/keyword-spacing.js b/lib/rules/keyword-spacing.js index af1b28487..c1ce130f9 100644 --- a/lib/rules/keyword-spacing.js +++ b/lib/rules/keyword-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('keyword-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/multiline-ternary.js b/lib/rules/multiline-ternary.js index 58415eb29..08e99fd23 100644 --- a/lib/rules/multiline-ternary.js +++ b/lib/rules/multiline-ternary.js @@ -6,7 +6,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('multiline-ternary', { skipDynamicArguments: true, applyDocument: true diff --git a/lib/rules/no-console.js b/lib/rules/no-console.js index 5c5e8b5e0..39698f2e2 100644 --- a/lib/rules/no-console.js +++ b/lib/rules/no-console.js @@ -6,7 +6,7 @@ const utils = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = utils.wrapCoreRule('no-console', { skipCoreHandlers: true, create(context) { diff --git a/lib/rules/no-constant-condition.js b/lib/rules/no-constant-condition.js index a6b62431b..e485f5dfd 100644 --- a/lib/rules/no-constant-condition.js +++ b/lib/rules/no-constant-condition.js @@ -7,7 +7,7 @@ const { wrapCoreRule } = require('../utils') const conditionalDirectiveNames = new Set(['v-show', 'v-if', 'v-else-if']) -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-constant-condition', { create(_context, { coreHandlers }) { return { diff --git a/lib/rules/no-empty-pattern.js b/lib/rules/no-empty-pattern.js index 91c7472de..200a278d9 100644 --- a/lib/rules/no-empty-pattern.js +++ b/lib/rules/no-empty-pattern.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-empty-pattern') diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index bf1ff1e46..43a933927 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -7,7 +7,7 @@ const { isParenthesized } = require('@eslint-community/eslint-utils') const { wrapCoreRule } = require('../utils') const { getStyleVariablesContext } = require('../utils/style-variables') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-extra-parens', { skipDynamicArguments: true, applyDocument: true, diff --git a/lib/rules/no-loss-of-precision.js b/lib/rules/no-loss-of-precision.js index 5d18cb6b7..f426acc58 100644 --- a/lib/rules/no-loss-of-precision.js +++ b/lib/rules/no-loss-of-precision.js @@ -6,7 +6,7 @@ const utils = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = utils.wrapCoreRule('no-loss-of-precision', { applyDocument: true }) diff --git a/lib/rules/no-restricted-syntax.js b/lib/rules/no-restricted-syntax.js index 19feb14ef..2b3e594f8 100644 --- a/lib/rules/no-restricted-syntax.js +++ b/lib/rules/no-restricted-syntax.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-restricted-syntax', { applyDocument: true }) diff --git a/lib/rules/no-sparse-arrays.js b/lib/rules/no-sparse-arrays.js index 48f7390e8..d6e91db51 100644 --- a/lib/rules/no-sparse-arrays.js +++ b/lib/rules/no-sparse-arrays.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-sparse-arrays') diff --git a/lib/rules/no-useless-concat.js b/lib/rules/no-useless-concat.js index f2c51b908..88191ae02 100644 --- a/lib/rules/no-useless-concat.js +++ b/lib/rules/no-useless-concat.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('no-useless-concat', { applyDocument: true }) diff --git a/lib/rules/object-curly-newline.js b/lib/rules/object-curly-newline.js index 5aa994117..ce180dcd7 100644 --- a/lib/rules/object-curly-newline.js +++ b/lib/rules/object-curly-newline.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('object-curly-newline', { skipDynamicArguments: true }) diff --git a/lib/rules/object-curly-spacing.js b/lib/rules/object-curly-spacing.js index b7c669c4f..6a1ee2214 100644 --- a/lib/rules/object-curly-spacing.js +++ b/lib/rules/object-curly-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('object-curly-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/object-property-newline.js b/lib/rules/object-property-newline.js index dacd82441..1e077bf64 100644 --- a/lib/rules/object-property-newline.js +++ b/lib/rules/object-property-newline.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('object-property-newline', { skipDynamicArguments: true }) diff --git a/lib/rules/object-shorthand.js b/lib/rules/object-shorthand.js index 79a3c8a32..d58b8b6ad 100644 --- a/lib/rules/object-shorthand.js +++ b/lib/rules/object-shorthand.js @@ -6,7 +6,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('object-shorthand', { skipDynamicArguments: true }) diff --git a/lib/rules/operator-linebreak.js b/lib/rules/operator-linebreak.js index ad92aa74f..db752efb9 100644 --- a/lib/rules/operator-linebreak.js +++ b/lib/rules/operator-linebreak.js @@ -5,5 +5,5 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('operator-linebreak') diff --git a/lib/rules/prefer-template.js b/lib/rules/prefer-template.js index 6fac1a059..e9e50da88 100644 --- a/lib/rules/prefer-template.js +++ b/lib/rules/prefer-template.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('prefer-template', { applyDocument: true }) diff --git a/lib/rules/quote-props.js b/lib/rules/quote-props.js index aabfc2bf5..27e210773 100644 --- a/lib/rules/quote-props.js +++ b/lib/rules/quote-props.js @@ -6,7 +6,7 @@ const { wrapCoreRule, flatten } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('quote-props', { skipDynamicArguments: true, preprocess(context, { wrapContextToOverrideProperties, defineVisitor }) { diff --git a/lib/rules/space-in-parens.js b/lib/rules/space-in-parens.js index 3a9a7e0dc..fff3ee17b 100644 --- a/lib/rules/space-in-parens.js +++ b/lib/rules/space-in-parens.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('space-in-parens', { skipDynamicArguments: true, skipDynamicArgumentsReport: true, diff --git a/lib/rules/space-infix-ops.js b/lib/rules/space-infix-ops.js index dd0a8af26..8f0083a95 100644 --- a/lib/rules/space-infix-ops.js +++ b/lib/rules/space-infix-ops.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('space-infix-ops', { skipDynamicArguments: true, applyDocument: true diff --git a/lib/rules/space-unary-ops.js b/lib/rules/space-unary-ops.js index e3ece4c2f..a5fd74e31 100644 --- a/lib/rules/space-unary-ops.js +++ b/lib/rules/space-unary-ops.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('space-unary-ops', { skipDynamicArguments: true, applyDocument: true diff --git a/lib/rules/template-curly-spacing.js b/lib/rules/template-curly-spacing.js index 549c790b6..1fb3fd20f 100644 --- a/lib/rules/template-curly-spacing.js +++ b/lib/rules/template-curly-spacing.js @@ -5,7 +5,7 @@ const { wrapCoreRule } = require('../utils') -// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories +// eslint-disable-next-line internal/no-invalid-meta, internal/no-invalid-meta-docs-categories module.exports = wrapCoreRule('template-curly-spacing', { skipDynamicArguments: true, applyDocument: true diff --git a/package.json b/package.json index 937562b6c..75e3ebb78 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "cover": "npm run cover:test && npm run cover:report", "cover:test": "nyc npm run test:base -- --timeout 60000", "cover:report": "nyc report --reporter=html", - "lint": "eslint . --rulesdir eslint-internal-rules && markdownlint \"**/*.md\"", - "lint:fix": "eslint . --rulesdir eslint-internal-rules --fix && markdownlint \"**/*.md\" --fix", + "lint": "eslint . && markdownlint \"**/*.md\"", + "lint:fix": "eslint . --fix && markdownlint \"**/*.md\" --fix", "tsc": "tsc", "preversion": "npm test && git add .", "version": "env-cmd -e version npm run update && npm run lint -- --fix && git add .", diff --git a/tools/update-lib-configs.js b/tools/update-lib-configs.js index f75aff4fa..b8622e4b0 100644 --- a/tools/update-lib-configs.js +++ b/tools/update-lib-configs.js @@ -11,7 +11,7 @@ This script updates `lib/configs/*.js` files from rule's meta data. const fs = require('fs') const path = require('path') -const eslint = require('eslint') +const { FlatESLint } = require('eslint/use-at-your-own-risk') const categories = require('./lib/categories') const errorCategories = new Set(['base', 'essential', 'vue3-essential']) @@ -95,9 +95,9 @@ for (const category of categories) { // Format files. async function format() { - const linter = new eslint.ESLint({ fix: true }) + const linter = new FlatESLint({ fix: true }) const report = await linter.lintFiles([ROOT]) - eslint.ESLint.outputFixes(report) + FlatESLint.outputFixes(report) } format() diff --git a/tools/update-lib-index.js b/tools/update-lib-index.js index 5a53b52bb..d12830725 100644 --- a/tools/update-lib-index.js +++ b/tools/update-lib-index.js @@ -11,7 +11,7 @@ This script updates `lib/index.js` file from rule's meta data. const fs = require('fs') const path = require('path') -const eslint = require('eslint') +const { FlatESLint } = require('eslint/use-at-your-own-risk') const rules = require('./lib/rules') const configs = require('./lib/configs') @@ -57,9 +57,9 @@ fs.writeFileSync(filePath, content) // Format files. async function format() { - const linter = new eslint.ESLint({ fix: true }) + const linter = new FlatESLint({ fix: true }) const report = await linter.lintFiles([filePath]) - eslint.ESLint.outputFixes(report) + FlatESLint.outputFixes(report) } format()