Skip to content

Commit d44fb18

Browse files
authored
Change not to use ESLint internal modules (#1322)
* Change not to use ESLint internal modules * update * remove unused scrip
1 parent 0e5480c commit d44fb18

38 files changed

+69
-103
lines changed

docs/.vuepress/components/eslint-code-block.vue

+3-3
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,11 @@ export default {
124124
// Load linter.
125125
const [
126126
{ default: Linter },
127-
{ default: noUndefRule },
127+
{ default: coreRules },
128128
{ parseForESLint }
129129
] = await Promise.all([
130130
import('eslint4b/dist/linter'),
131-
import('eslint/lib/rules/no-undef'),
131+
import('eslint4b/dist/core-rules'),
132132
import('espree').then(() => import('vue-eslint-parser'))
133133
])
134134
@@ -137,7 +137,7 @@ export default {
137137
for (const ruleId of Object.keys(rules)) {
138138
linter.defineRule(`vue/${ruleId}`, rules[ruleId])
139139
}
140-
linter.defineRule('no-undef', noUndefRule)
140+
linter.defineRule('no-undef', coreRules['no-undef'])
141141
142142
linter.defineParser('vue-eslint-parser', { parseForESLint })
143143
}

docs/.vuepress/config.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
'use strict'
66

77
const rules = require('../../tools/lib/rules')
8+
const path = require('path')
89

910
const uncategorizedRules = rules.filter(
1011
(rule) =>
@@ -122,7 +123,8 @@ module.exports = {
122123
return {
123124
resolve: {
124125
alias: {
125-
module: require.resolve('./shim/module')
126+
module: require.resolve('./shim/module'),
127+
eslint: path.resolve(__dirname, './shim/eslint')
126128
}
127129
}
128130
}

docs/.vuepress/shim/eslint/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const Linter = require('eslint4b')
2+
module.exports = { Linter }

docs/.vuepress/shim/eslint/lib/rules/index.js

Whitespace-only changes.

docs/rules/no-textarea-mustache.md

+4
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@ This rule reports mustaches in `<textarea>`.
2727

2828
</eslint-code-block>
2929

30+
<div v-pre>
31+
3032
::: warning Note
3133
Interpolation on textareas (`<textarea>{{text}}</textarea>`) won't work. Use `v-model` instead.
3234
[https://v3.vuejs.org/guide/forms.html#multiline-text](https://v3.vuejs.org/guide/forms.html#multiline-text)
3335
:::
3436

37+
</div>
38+
3539
## :wrench: Options
3640

3741
Nothing.

docs/rules/no-unused-vars.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ This rule report variable definitions of v-for directives or scope attributes if
3333

3434
## :wrench: Options
3535

36-
```js
36+
```json
3737
{
3838
"vue/no-unused-vars": ["error", {
3939
"ignorePattern": "^_"

lib/rules/array-bracket-spacing.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(
10-
require('eslint/lib/rules/array-bracket-spacing'),
11-
{ skipDynamicArguments: true }
12-
)
9+
module.exports = wrapCoreRule('array-bracket-spacing', {
10+
skipDynamicArguments: true
11+
})

lib/rules/arrow-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/arrow-spacing'))
9+
module.exports = wrapCoreRule('arrow-spacing')

lib/rules/block-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/block-spacing'), {
9+
module.exports = wrapCoreRule('block-spacing', {
1010
skipDynamicArguments: true
1111
})

lib/rules/brace-style.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/brace-style'), {
9+
module.exports = wrapCoreRule('brace-style', {
1010
skipDynamicArguments: true
1111
})

lib/rules/camelcase.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/camelcase'))
9+
module.exports = wrapCoreRule('camelcase')

lib/rules/comma-dangle.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/comma-dangle'))
9+
module.exports = wrapCoreRule('comma-dangle')

lib/rules/comma-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/comma-spacing'), {
9+
module.exports = wrapCoreRule('comma-spacing', {
1010
skipDynamicArguments: true,
1111
skipDynamicArgumentsReport: true
1212
})

lib/rules/comma-style.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/comma-style'), {
9+
module.exports = wrapCoreRule('comma-style', {
1010
create(_context, { coreHandlers }) {
1111
return {
1212
VSlotScopeExpression(node) {

lib/rules/dot-location.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/dot-location'))
9+
module.exports = wrapCoreRule('dot-location')

lib/rules/dot-notation.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/dot-notation'))
9+
module.exports = wrapCoreRule('dot-notation')

lib/rules/eqeqeq.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/eqeqeq'))
9+
module.exports = wrapCoreRule('eqeqeq')

lib/rules/func-call-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/func-call-spacing'), {
9+
module.exports = wrapCoreRule('func-call-spacing', {
1010
skipDynamicArguments: true
1111
})

lib/rules/key-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/key-spacing'), {
9+
module.exports = wrapCoreRule('key-spacing', {
1010
skipDynamicArguments: true
1111
})

lib/rules/keyword-spacing.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/keyword-spacing'), {
9+
module.exports = wrapCoreRule('keyword-spacing', {
1010
skipDynamicArguments: true
1111
})

lib/rules/no-empty-pattern.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/no-empty-pattern'))
9+
module.exports = wrapCoreRule('no-empty-pattern')

lib/rules/no-extra-parens.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const { isParenthesized } = require('eslint-utils')
77
const { wrapCoreRule } = require('../utils')
88

99
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
10-
module.exports = wrapCoreRule(require('eslint/lib/rules/no-extra-parens'), {
10+
module.exports = wrapCoreRule('no-extra-parens', {
1111
skipDynamicArguments: true,
1212
create: createForVueSyntax
1313
})

lib/rules/no-restricted-syntax.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/no-restricted-syntax'))
9+
module.exports = wrapCoreRule('no-restricted-syntax')

lib/rules/no-sparse-arrays.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/no-sparse-arrays'))
9+
module.exports = wrapCoreRule('no-sparse-arrays')

lib/rules/no-useless-concat.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/no-useless-concat'))
9+
module.exports = wrapCoreRule('no-useless-concat')

lib/rules/object-curly-newline.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(
10-
require('eslint/lib/rules/object-curly-newline'),
11-
{ skipDynamicArguments: true }
12-
)
9+
module.exports = wrapCoreRule('object-curly-newline', {
10+
skipDynamicArguments: true
11+
})

lib/rules/object-curly-spacing.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(
10-
require('eslint/lib/rules/object-curly-spacing'),
11-
{ skipDynamicArguments: true }
12-
)
9+
module.exports = wrapCoreRule('object-curly-spacing', {
10+
skipDynamicArguments: true
11+
})

lib/rules/object-property-newline.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(
10-
require('eslint/lib/rules/object-property-newline'),
11-
{ skipDynamicArguments: true }
12-
)
9+
module.exports = wrapCoreRule('object-property-newline', {
10+
skipDynamicArguments: true
11+
})

lib/rules/operator-linebreak.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/operator-linebreak'))
9+
module.exports = wrapCoreRule('operator-linebreak')

lib/rules/prefer-template.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/prefer-template'))
9+
module.exports = wrapCoreRule('prefer-template')

lib/rules/space-in-parens.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/space-in-parens'), {
9+
module.exports = wrapCoreRule('space-in-parens', {
1010
skipDynamicArguments: true,
1111
skipDynamicArgumentsReport: true
1212
})

lib/rules/space-infix-ops.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/space-infix-ops'), {
9+
module.exports = wrapCoreRule('space-infix-ops', {
1010
skipDynamicArguments: true
1111
})

lib/rules/space-unary-ops.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(require('eslint/lib/rules/space-unary-ops'), {
9+
module.exports = wrapCoreRule('space-unary-ops', {
1010
skipDynamicArguments: true
1111
})

lib/rules/template-curly-spacing.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const { wrapCoreRule } = require('../utils')
77

88
// eslint-disable-next-line no-invalid-meta, no-invalid-meta-docs-categories
9-
module.exports = wrapCoreRule(
10-
require('eslint/lib/rules/template-curly-spacing'),
11-
{ skipDynamicArguments: true }
12-
)
9+
module.exports = wrapCoreRule('template-curly-spacing', {
10+
skipDynamicArguments: true
11+
})

lib/utils/index.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,18 @@ const { findVariable } = require('eslint-utils')
108108
*/
109109
const componentComments = new WeakMap()
110110

111+
/** @type { Map<string, RuleModule> | null } */
112+
let ruleMap = null
113+
/**
114+
* Get the core rule implementation from the rule name
115+
* @param {string} name
116+
* @returns {RuleModule}
117+
*/
118+
function getCoreRule(name) {
119+
const map = ruleMap || (ruleMap = new (require('eslint').Linter)().getRules())
120+
return map.get(name) || require(`eslint/lib/rules/${name}`)
121+
}
122+
111123
/**
112124
* Wrap the rule context object to override methods which access to tokens (such as getTokenAfter).
113125
* @param {RuleContext} context The rule context object.
@@ -225,15 +237,16 @@ module.exports = {
225237

226238
/**
227239
* Wrap a given core rule to apply it to Vue.js template.
228-
* @param {RuleModule} coreRule The core rule implementation to wrap.
240+
* @param {string} coreRuleName The name of the core rule implementation to wrap.
229241
* @param {Object} [options] The option of this rule.
230242
* @param {string[]} [options.categories] The categories of this rule.
231243
* @param {boolean} [options.skipDynamicArguments] If `true`, skip validation within dynamic arguments.
232244
* @param {boolean} [options.skipDynamicArgumentsReport] If `true`, skip report within dynamic arguments.
233245
* @param { (context: RuleContext, options: { coreHandlers: RuleListener }) => TemplateListener } [options.create] If define, extend core rule.
234246
* @returns {RuleModule} The wrapped rule implementation.
235247
*/
236-
wrapCoreRule(coreRule, options) {
248+
wrapCoreRule(coreRuleName, options) {
249+
const coreRule = getCoreRule(coreRuleName)
237250
const {
238251
categories,
239252
skipDynamicArguments,

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
"cover:report": "nyc report --reporter=html",
1414
"lint": "eslint . --rulesdir eslint-internal-rules",
1515
"lint:fix": "eslint . --rulesdir eslint-internal-rules --fix",
16-
"pretsc": "node ./tools/setup-eslint-rule-types.js",
1716
"tsc": "tsc",
1817
"preversion": "npm test && npm run update && git add .",
1918
"version": "npm run lint -- --fix && git add .",

tools/setup-eslint-rule-types.js

-52
This file was deleted.

typings/eslint/index.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,9 @@ export namespace Rule {
357357
}
358358

359359
export class RuleTester extends ESLintRuleTester {}
360+
export class Linter {
361+
getRules(): Map<string, Rule.RuleModule>
362+
}
360363

361364
export namespace Linter {
362365
type LintMessage = ESLintLinter.LintMessage

0 commit comments

Comments
 (0)