From 59a5ee83cbb777dfbc3ec24ffd19fe7c4a27c489 Mon Sep 17 00:00:00 2001 From: ota Date: Fri, 9 Oct 2020 11:35:24 +0900 Subject: [PATCH 1/3] Change not to use ESLint internal modules --- docs/.vuepress/components/eslint-code-block.vue | 6 +++--- docs/.vuepress/config.js | 4 +++- docs/.vuepress/shim/eslint/index.js | 2 ++ docs/.vuepress/shim/eslint/lib/rules/index.js | 0 docs/rules/no-textarea-mustache.md | 4 ++++ docs/rules/no-unused-vars.md | 2 +- lib/rules/array-bracket-spacing.js | 7 +++---- lib/rules/arrow-spacing.js | 2 +- lib/rules/block-spacing.js | 2 +- lib/rules/brace-style.js | 2 +- lib/rules/camelcase.js | 2 +- lib/rules/comma-dangle.js | 2 +- lib/rules/comma-spacing.js | 2 +- lib/rules/comma-style.js | 2 +- lib/rules/dot-location.js | 2 +- lib/rules/dot-notation.js | 2 +- lib/rules/eqeqeq.js | 2 +- lib/rules/func-call-spacing.js | 2 +- lib/rules/key-spacing.js | 2 +- lib/rules/keyword-spacing.js | 2 +- lib/rules/no-empty-pattern.js | 2 +- lib/rules/no-extra-parens.js | 2 +- lib/rules/no-restricted-syntax.js | 2 +- lib/rules/no-sparse-arrays.js | 2 +- lib/rules/no-useless-concat.js | 2 +- lib/rules/object-curly-newline.js | 7 +++---- lib/rules/object-curly-spacing.js | 7 +++---- lib/rules/object-property-newline.js | 7 +++---- lib/rules/operator-linebreak.js | 2 +- lib/rules/prefer-template.js | 2 +- lib/rules/space-in-parens.js | 2 +- lib/rules/space-infix-ops.js | 2 +- lib/rules/space-unary-ops.js | 2 +- lib/rules/template-curly-spacing.js | 7 +++---- lib/utils/index.js | 16 ++++++++++++++-- typings/eslint/index.d.ts | 3 +++ 36 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 docs/.vuepress/shim/eslint/index.js create mode 100644 docs/.vuepress/shim/eslint/lib/rules/index.js diff --git a/docs/.vuepress/components/eslint-code-block.vue b/docs/.vuepress/components/eslint-code-block.vue index 465043750..00b694825 100644 --- a/docs/.vuepress/components/eslint-code-block.vue +++ b/docs/.vuepress/components/eslint-code-block.vue @@ -124,11 +124,11 @@ export default { // Load linter. const [ { default: Linter }, - { default: noUndefRule }, + { default: coreRules }, { parseForESLint } ] = await Promise.all([ import('eslint4b/dist/linter'), - import('eslint/lib/rules/no-undef'), + import('eslint4b/dist/core-rules'), import('espree').then(() => import('vue-eslint-parser')) ]) @@ -137,7 +137,7 @@ export default { for (const ruleId of Object.keys(rules)) { linter.defineRule(`vue/${ruleId}`, rules[ruleId]) } - linter.defineRule('no-undef', noUndefRule) + linter.defineRule('no-undef', coreRules['no-undef']) linter.defineParser('vue-eslint-parser', { parseForESLint }) } diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d8b8b2928..fb7719ff3 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -5,6 +5,7 @@ 'use strict' const rules = require('../../tools/lib/rules') +const path = require('path') const uncategorizedRules = rules.filter( (rule) => @@ -122,7 +123,8 @@ module.exports = { return { resolve: { alias: { - module: require.resolve('./shim/module') + module: require.resolve('./shim/module'), + eslint: path.resolve(__dirname, './shim/eslint') } } } diff --git a/docs/.vuepress/shim/eslint/index.js b/docs/.vuepress/shim/eslint/index.js new file mode 100644 index 000000000..e32cb598f --- /dev/null +++ b/docs/.vuepress/shim/eslint/index.js @@ -0,0 +1,2 @@ +const Linter = require('eslint4b') +module.exports = { Linter } diff --git a/docs/.vuepress/shim/eslint/lib/rules/index.js b/docs/.vuepress/shim/eslint/lib/rules/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/docs/rules/no-textarea-mustache.md b/docs/rules/no-textarea-mustache.md index 6bd242a42..c424f2010 100644 --- a/docs/rules/no-textarea-mustache.md +++ b/docs/rules/no-textarea-mustache.md @@ -27,11 +27,15 @@ This rule reports mustaches in ``) won't work. Use `v-model` instead. [https://v3.vuejs.org/guide/forms.html#multiline-text](https://v3.vuejs.org/guide/forms.html#multiline-text) ::: + + ## :wrench: Options Nothing. diff --git a/docs/rules/no-unused-vars.md b/docs/rules/no-unused-vars.md index 4d5d9ee25..2def5d564 100644 --- a/docs/rules/no-unused-vars.md +++ b/docs/rules/no-unused-vars.md @@ -33,7 +33,7 @@ This rule report variable definitions of v-for directives or scope attributes if ## :wrench: Options -```js +```json { "vue/no-unused-vars": ["error", { "ignorePattern": "^_" diff --git a/lib/rules/array-bracket-spacing.js b/lib/rules/array-bracket-spacing.js index a08215e2b..0541d0585 100644 --- a/lib/rules/array-bracket-spacing.js +++ b/lib/rules/array-bracket-spacing.js @@ -6,7 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule( - require('eslint/lib/rules/array-bracket-spacing'), - { skipDynamicArguments: true } -) +module.exports = wrapCoreRule('array-bracket-spacing', { + skipDynamicArguments: true +}) diff --git a/lib/rules/arrow-spacing.js b/lib/rules/arrow-spacing.js index 3d626c614..f31ab3c3d 100644 --- a/lib/rules/arrow-spacing.js +++ b/lib/rules/arrow-spacing.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/arrow-spacing')) +module.exports = wrapCoreRule('arrow-spacing') diff --git a/lib/rules/block-spacing.js b/lib/rules/block-spacing.js index d12ad7da8..0634f2b6a 100644 --- a/lib/rules/block-spacing.js +++ b/lib/rules/block-spacing.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/block-spacing'), { +module.exports = wrapCoreRule('block-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/brace-style.js b/lib/rules/brace-style.js index 66680948d..5dad2c29d 100644 --- a/lib/rules/brace-style.js +++ b/lib/rules/brace-style.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/brace-style'), { +module.exports = wrapCoreRule('brace-style', { skipDynamicArguments: true }) diff --git a/lib/rules/camelcase.js b/lib/rules/camelcase.js index 4aebfabab..4b0898fe6 100644 --- a/lib/rules/camelcase.js +++ b/lib/rules/camelcase.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/camelcase')) +module.exports = wrapCoreRule('camelcase') diff --git a/lib/rules/comma-dangle.js b/lib/rules/comma-dangle.js index aa6c83c5e..6fb48b79d 100644 --- a/lib/rules/comma-dangle.js +++ b/lib/rules/comma-dangle.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/comma-dangle')) +module.exports = wrapCoreRule('comma-dangle') diff --git a/lib/rules/comma-spacing.js b/lib/rules/comma-spacing.js index 2a68be8f1..7ac0245e8 100644 --- a/lib/rules/comma-spacing.js +++ b/lib/rules/comma-spacing.js @@ -6,7 +6,7 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/comma-spacing'), { +module.exports = wrapCoreRule('comma-spacing', { skipDynamicArguments: true, skipDynamicArgumentsReport: true }) diff --git a/lib/rules/comma-style.js b/lib/rules/comma-style.js index e7313b8ac..960e6d6df 100644 --- a/lib/rules/comma-style.js +++ b/lib/rules/comma-style.js @@ -6,7 +6,7 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/comma-style'), { +module.exports = wrapCoreRule('comma-style', { create(_context, { coreHandlers }) { return { VSlotScopeExpression(node) { diff --git a/lib/rules/dot-location.js b/lib/rules/dot-location.js index 14ab075cd..08f96127b 100644 --- a/lib/rules/dot-location.js +++ b/lib/rules/dot-location.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/dot-location')) +module.exports = wrapCoreRule('dot-location') diff --git a/lib/rules/dot-notation.js b/lib/rules/dot-notation.js index 68633b30d..712658967 100644 --- a/lib/rules/dot-notation.js +++ b/lib/rules/dot-notation.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/dot-notation')) +module.exports = wrapCoreRule('dot-notation') diff --git a/lib/rules/eqeqeq.js b/lib/rules/eqeqeq.js index e749e41f7..39894e1fc 100644 --- a/lib/rules/eqeqeq.js +++ b/lib/rules/eqeqeq.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/eqeqeq')) +module.exports = wrapCoreRule('eqeqeq') diff --git a/lib/rules/func-call-spacing.js b/lib/rules/func-call-spacing.js index da076f9cb..9fb96ab39 100644 --- a/lib/rules/func-call-spacing.js +++ b/lib/rules/func-call-spacing.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/func-call-spacing'), { +module.exports = wrapCoreRule('func-call-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/key-spacing.js b/lib/rules/key-spacing.js index 27e624517..a949c18a0 100644 --- a/lib/rules/key-spacing.js +++ b/lib/rules/key-spacing.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/key-spacing'), { +module.exports = wrapCoreRule('key-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/keyword-spacing.js b/lib/rules/keyword-spacing.js index 0b0da6277..af1b28487 100644 --- a/lib/rules/keyword-spacing.js +++ b/lib/rules/keyword-spacing.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/keyword-spacing'), { +module.exports = wrapCoreRule('keyword-spacing', { skipDynamicArguments: true }) diff --git a/lib/rules/no-empty-pattern.js b/lib/rules/no-empty-pattern.js index 2d8223876..91c7472de 100644 --- a/lib/rules/no-empty-pattern.js +++ b/lib/rules/no-empty-pattern.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/no-empty-pattern')) +module.exports = wrapCoreRule('no-empty-pattern') diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index 3e04f193e..3f202fa9d 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -7,7 +7,7 @@ const { isParenthesized } = require('eslint-utils') const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/no-extra-parens'), { +module.exports = wrapCoreRule('no-extra-parens', { skipDynamicArguments: true, create: createForVueSyntax }) diff --git a/lib/rules/no-restricted-syntax.js b/lib/rules/no-restricted-syntax.js index 279f400cd..a09ff6660 100644 --- a/lib/rules/no-restricted-syntax.js +++ b/lib/rules/no-restricted-syntax.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/no-restricted-syntax')) +module.exports = wrapCoreRule('no-restricted-syntax') diff --git a/lib/rules/no-sparse-arrays.js b/lib/rules/no-sparse-arrays.js index 89e30b36c..48f7390e8 100644 --- a/lib/rules/no-sparse-arrays.js +++ b/lib/rules/no-sparse-arrays.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/no-sparse-arrays')) +module.exports = wrapCoreRule('no-sparse-arrays') diff --git a/lib/rules/no-useless-concat.js b/lib/rules/no-useless-concat.js index 9038b9b93..7379a1ee7 100644 --- a/lib/rules/no-useless-concat.js +++ b/lib/rules/no-useless-concat.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/no-useless-concat')) +module.exports = wrapCoreRule('no-useless-concat') diff --git a/lib/rules/object-curly-newline.js b/lib/rules/object-curly-newline.js index 296abe570..5aa994117 100644 --- a/lib/rules/object-curly-newline.js +++ b/lib/rules/object-curly-newline.js @@ -6,7 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule( - require('eslint/lib/rules/object-curly-newline'), - { skipDynamicArguments: true } -) +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 9830d2d43..b7c669c4f 100644 --- a/lib/rules/object-curly-spacing.js +++ b/lib/rules/object-curly-spacing.js @@ -6,7 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule( - require('eslint/lib/rules/object-curly-spacing'), - { skipDynamicArguments: true } -) +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 d58aeb842..dacd82441 100644 --- a/lib/rules/object-property-newline.js +++ b/lib/rules/object-property-newline.js @@ -6,7 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule( - require('eslint/lib/rules/object-property-newline'), - { skipDynamicArguments: true } -) +module.exports = wrapCoreRule('object-property-newline', { + skipDynamicArguments: true +}) diff --git a/lib/rules/operator-linebreak.js b/lib/rules/operator-linebreak.js index 2546693d9..ad92aa74f 100644 --- a/lib/rules/operator-linebreak.js +++ b/lib/rules/operator-linebreak.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/operator-linebreak')) +module.exports = wrapCoreRule('operator-linebreak') diff --git a/lib/rules/prefer-template.js b/lib/rules/prefer-template.js index b78d1eb7a..5cc11e2a5 100644 --- a/lib/rules/prefer-template.js +++ b/lib/rules/prefer-template.js @@ -6,4 +6,4 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/prefer-template')) +module.exports = wrapCoreRule('prefer-template') diff --git a/lib/rules/space-in-parens.js b/lib/rules/space-in-parens.js index 518c62007..29ba0403b 100644 --- a/lib/rules/space-in-parens.js +++ b/lib/rules/space-in-parens.js @@ -6,7 +6,7 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/space-in-parens'), { +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 fe29d9ec0..650b215e8 100644 --- a/lib/rules/space-infix-ops.js +++ b/lib/rules/space-infix-ops.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/space-infix-ops'), { +module.exports = wrapCoreRule('space-infix-ops', { skipDynamicArguments: true }) diff --git a/lib/rules/space-unary-ops.js b/lib/rules/space-unary-ops.js index a45265c3f..4920ca9e4 100644 --- a/lib/rules/space-unary-ops.js +++ b/lib/rules/space-unary-ops.js @@ -6,6 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule(require('eslint/lib/rules/space-unary-ops'), { +module.exports = wrapCoreRule('space-unary-ops', { skipDynamicArguments: true }) diff --git a/lib/rules/template-curly-spacing.js b/lib/rules/template-curly-spacing.js index 777c5d820..acefea6b5 100644 --- a/lib/rules/template-curly-spacing.js +++ b/lib/rules/template-curly-spacing.js @@ -6,7 +6,6 @@ const { wrapCoreRule } = require('../utils') // eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories -module.exports = wrapCoreRule( - require('eslint/lib/rules/template-curly-spacing'), - { skipDynamicArguments: true } -) +module.exports = wrapCoreRule('template-curly-spacing', { + skipDynamicArguments: true +}) diff --git a/lib/utils/index.js b/lib/utils/index.js index 814517e39..bf5a9b797 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -108,6 +108,17 @@ const { findVariable } = require('eslint-utils') */ const componentComments = new WeakMap() +/** @type { Map | null } */ +let ruleMap = null +/** + * @param {string} name + * @returns {RuleModule} + */ +function getCoreRule(name) { + const map = ruleMap || (ruleMap = new (require('eslint').Linter)().getRules()) + return map.get(name) || require(`eslint/lib/rules/${name}`) +} + /** * Wrap the rule context object to override methods which access to tokens (such as getTokenAfter). * @param {RuleContext} context The rule context object. @@ -225,7 +236,7 @@ module.exports = { /** * Wrap a given core rule to apply it to Vue.js template. - * @param {RuleModule} coreRule The core rule implementation to wrap. + * @param {string} coreRuleName The name of the core rule name implementation to wrap. * @param {Object} [options] The option of this rule. * @param {string[]} [options.categories] The categories of this rule. * @param {boolean} [options.skipDynamicArguments] If `true`, skip validation within dynamic arguments. @@ -233,7 +244,8 @@ module.exports = { * @param { (context: RuleContext, options: { coreHandlers: RuleListener }) => TemplateListener } [options.create] If define, extend core rule. * @returns {RuleModule} The wrapped rule implementation. */ - wrapCoreRule(coreRule, options) { + wrapCoreRule(coreRuleName, options) { + const coreRule = getCoreRule(coreRuleName) const { categories, skipDynamicArguments, diff --git a/typings/eslint/index.d.ts b/typings/eslint/index.d.ts index 1d793d243..0c99161f8 100644 --- a/typings/eslint/index.d.ts +++ b/typings/eslint/index.d.ts @@ -357,6 +357,9 @@ export namespace Rule { } export class RuleTester extends ESLintRuleTester {} +export class Linter { + getRules(): Map +} export namespace Linter { type LintMessage = ESLintLinter.LintMessage From cda5d4837c4c0bb6a6170a45923b8e03a6e74a5f Mon Sep 17 00:00:00 2001 From: ota Date: Fri, 9 Oct 2020 11:43:17 +0900 Subject: [PATCH 2/3] update --- lib/utils/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/utils/index.js b/lib/utils/index.js index bf5a9b797..24b9a1bbf 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -111,6 +111,7 @@ const componentComments = new WeakMap() /** @type { Map | null } */ let ruleMap = null /** + * Get the core rule implementation from the rule name * @param {string} name * @returns {RuleModule} */ @@ -236,7 +237,7 @@ module.exports = { /** * Wrap a given core rule to apply it to Vue.js template. - * @param {string} coreRuleName The name of the core rule name implementation to wrap. + * @param {string} coreRuleName The name of the core rule implementation to wrap. * @param {Object} [options] The option of this rule. * @param {string[]} [options.categories] The categories of this rule. * @param {boolean} [options.skipDynamicArguments] If `true`, skip validation within dynamic arguments. From 09a4cf27887a69fab878e509135b4c81dffce742 Mon Sep 17 00:00:00 2001 From: ota Date: Mon, 12 Oct 2020 16:58:47 +0900 Subject: [PATCH 3/3] remove unused scrip --- package.json | 1 - tools/setup-eslint-rule-types.js | 52 -------------------------------- 2 files changed, 53 deletions(-) delete mode 100644 tools/setup-eslint-rule-types.js diff --git a/package.json b/package.json index ef4847dbf..750b114e1 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,6 @@ "cover:report": "nyc report --reporter=html", "lint": "eslint . --rulesdir eslint-internal-rules", "lint:fix": "eslint . --rulesdir eslint-internal-rules --fix", - "pretsc": "node ./tools/setup-eslint-rule-types.js", "tsc": "tsc", "preversion": "npm test && npm run update && git add .", "version": "npm run lint -- --fix && git add .", diff --git a/tools/setup-eslint-rule-types.js b/tools/setup-eslint-rule-types.js deleted file mode 100644 index d836d025c..000000000 --- a/tools/setup-eslint-rule-types.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @author Yosuke Ota - * See LICENSE file in root directory for full license. - */ -'use strict' - -const fs = require('fs') -const path = require('path') -const eslint = require('eslint') -const ruleNames = new Set(new eslint.Linter().getRules().keys()) - -const TYPINGS_ESLINT_RULES_ROOT = path.resolve( - __dirname, - '../typings/eslint/lib/rules' -) - -mkdirIfNotExists(TYPINGS_ESLINT_RULES_ROOT) - -for (const ruleName of ruleNames) { - const filePath = path.join(TYPINGS_ESLINT_RULES_ROOT, `${ruleName}.d.ts`) - fs.writeFileSync( - filePath, - `import { Rule } from '../../index' -declare const rule: Rule.RuleModule -export = rule -` - ) -} - -fs.readdirSync(TYPINGS_ESLINT_RULES_ROOT) - .filter((file) => file.endsWith('.d.ts')) - .filter((file) => !ruleNames.has(file.slice(0, -5))) - .map((file) => path.join(TYPINGS_ESLINT_RULES_ROOT, file)) - .forEach((filePath) => fs.unlinkSync(filePath)) - -function exists(file) { - try { - fs.statSync(file) - return true - } catch (err) { - if (err.code === 'ENOENT') return false - } -} - -function mkdirIfNotExists(dir) { - if (exists(dir)) { - return - } - const p = path.dirname(dir) - mkdirIfNotExists(p) - fs.mkdirSync(dir) -}