Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b5a8260

Browse files
Improve no-invalid-meta internal rule (#2647)
1 parent 9453949 commit b5a8260

9 files changed

+26
-49
lines changed

‎eslint-internal-rules/no-invalid-meta.js

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,6 @@ function getPropertyFromObject(propertyName, node) {
2323
return null
2424
}
2525

26-
/**
27-
* Extracts the `meta` property from the ObjectExpression that all rules export.
28-
*
29-
* @param {ASTNode} exportsNode ObjectExpression node that the rule exports.
30-
* @returns {ASTNode} The `meta` Property node or null if not found.
31-
*/
32-
function getMetaPropertyFromExportsNode(exportsNode) {
33-
return getPropertyFromObject('meta', exportsNode)
34-
}
35-
36-
/**
37-
* Whether this `meta` ObjectExpression has a `docs` property defined or not.
38-
*
39-
* @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule.
40-
* @returns {boolean} `true` if a `docs` property exists.
41-
*/
42-
function hasMetaDocs(metaPropertyNode) {
43-
return Boolean(getPropertyFromObject('docs', metaPropertyNode.value))
44-
}
45-
46-
/**
47-
* Whether this `meta` ObjectExpression has a `docs.category` property defined or not.
48-
*
49-
* @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule.
50-
* @returns {boolean} `true` if a `docs.category` property exists.
51-
*/
52-
function hasMetaDocsCategories(metaPropertyNode) {
53-
const metaDocs = getPropertyFromObject('docs', metaPropertyNode.value)
54-
55-
return metaDocs && getPropertyFromObject('categories', metaDocs.value)
56-
}
57-
5826
/**
5927
* Checks the validity of the meta definition of this rule and reports any errors found.
6028
*
@@ -64,8 +32,7 @@ function hasMetaDocsCategories(metaPropertyNode) {
6432
* @returns {void}
6533
*/
6634
function checkMetaValidity(context, exportsNode) {
67-
const metaProperty = getMetaPropertyFromExportsNode(exportsNode)
68-
35+
const metaProperty = getPropertyFromObject('meta', exportsNode)
6936
if (!metaProperty) {
7037
context.report({
7138
node: exportsNode,
@@ -74,21 +41,35 @@ function checkMetaValidity(context, exportsNode) {
7441
return
7542
}
7643

77-
if (!hasMetaDocs(metaProperty)) {
44+
const metaDocs = getPropertyFromObject('docs', metaProperty.value)
45+
if (!metaDocs) {
7846
context.report({
79-
node: 'metaDocs',
47+
node: metaProperty,
8048
messageId: 'missingMetaDocs'
8149
})
8250
return
8351
}
8452

85-
if (!hasMetaDocsCategories(metaProperty)) {
53+
const metaDocsCategories = getPropertyFromObject('categories', metaDocs.value)
54+
if (!metaDocsCategories) {
8655
context.report({
87-
node: metaProperty,
56+
node: metaDocs,
8857
messageId: 'missingMetaDocsCategories'
8958
})
9059
return
9160
}
61+
62+
const metaDocsRecommended = getPropertyFromObject(
63+
'recommended',
64+
metaDocs.value
65+
)
66+
if (metaDocsRecommended) {
67+
context.report({
68+
node: metaDocsRecommended,
69+
messageId: 'invalidMetaDocsRecommended'
70+
})
71+
return
72+
}
9273
}
9374

9475
module.exports = {
@@ -103,7 +84,9 @@ module.exports = {
10384
missingMeta: 'Rule is missing a meta property.',
10485
missingMetaDocs: 'Rule is missing a meta.docs property.',
10586
missingMetaDocsCategories:
106-
'Rule is missing a meta.docs.categories property.'
87+
'Rule is missing a meta.docs.categories property.',
88+
invalidMetaDocsRecommended:
89+
'Rule should not have a meta.docs.recommended property.'
10790
}
10891
},
10992

‎lib/rules/no-duplicate-attr-inheritance.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ module.exports = {
4040
description:
4141
'enforce `inheritAttrs` to be set to `false` when using `v-bind="$attrs"`',
4242
categories: undefined,
43-
recommended: false,
4443
url: 'https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html'
4544
},
4645
fixable: null,

‎lib/rules/no-potential-component-option-typo.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ module.exports = {
1212
docs: {
1313
description: 'disallow a potential typo in your component property',
1414
categories: undefined,
15-
recommended: false,
1615
url: 'https://eslint.vuejs.org/rules/no-potential-component-option-typo.html'
1716
},
1817
fixable: null,

‎lib/rules/no-ref-object-destructure.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
const baseRule = require('./no-ref-object-reactivity-loss')
77

88
module.exports = {
9-
// eslint-disable-next-line eslint-plugin/require-meta-schema, eslint-plugin/prefer-message-ids, internal/no-invalid-meta, eslint-plugin/require-meta-type -- inherit schema from base rule
9+
// eslint-disable-next-line eslint-plugin/require-meta-schema, eslint-plugin/prefer-message-ids, eslint-plugin/require-meta-type -- inherit schema from base rule
1010
meta: {
1111
...baseRule.meta,
12-
// eslint-disable-next-line eslint-plugin/require-meta-docs-description, internal/no-invalid-meta-docs-categories, eslint-plugin/meta-property-ordering
12+
// eslint-disable-next-line eslint-plugin/require-meta-docs-description, internal/no-invalid-meta, internal/no-invalid-meta-docs-categories, eslint-plugin/meta-property-ordering
1313
docs: {
1414
...baseRule.meta.docs,
1515
url: 'https://eslint.vuejs.org/rules/no-ref-object-destructure.html'

‎lib/rules/no-setup-props-destructure.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
const baseRule = require('./no-setup-props-reactivity-loss')
77

88
module.exports = {
9-
// eslint-disable-next-line eslint-plugin/require-meta-schema, eslint-plugin/prefer-message-ids, internal/no-invalid-meta, eslint-plugin/require-meta-type -- inherit schema from base rule
9+
// eslint-disable-next-line eslint-plugin/require-meta-schema, eslint-plugin/prefer-message-ids, eslint-plugin/require-meta-type -- inherit schema from base rule
1010
meta: {
1111
...baseRule.meta,
12-
// eslint-disable-next-line eslint-plugin/require-meta-docs-description, internal/no-invalid-meta-docs-categories, eslint-plugin/meta-property-ordering
12+
// eslint-disable-next-line eslint-plugin/require-meta-docs-description, internal/no-invalid-meta, internal/no-invalid-meta-docs-categories, eslint-plugin/meta-property-ordering
1313
docs: {
1414
...baseRule.meta.docs,
1515
url: 'https://eslint.vuejs.org/rules/no-setup-props-destructure.html'

‎lib/rules/require-typed-object-prop.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ module.exports = {
116116
docs: {
117117
description: 'enforce adding type declarations to object props',
118118
categories: undefined,
119-
recommended: false,
120119
url: 'https://eslint.vuejs.org/rules/require-typed-object-prop.html'
121120
},
122121
fixable: null,

‎lib/rules/sort-keys.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ module.exports = {
7171
description:
7272
'enforce sort-keys in a manner that is compatible with order-in-components',
7373
categories: null,
74-
recommended: false,
7574
url: 'https://eslint.vuejs.org/rules/sort-keys.html'
7675
},
7776
fixable: null,

‎lib/rules/v-for-delimiter-style.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ module.exports = {
1414
docs: {
1515
description: "enforce `v-for` directive's delimiter style",
1616
categories: undefined,
17-
recommended: false,
1817
url: 'https://eslint.vuejs.org/rules/v-for-delimiter-style.html'
1918
},
2019
fixable: 'code',

‎lib/rules/v-if-else-key.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ module.exports = {
127127
description:
128128
'require key attribute for conditionally rendered repeated components',
129129
categories: null,
130-
recommended: false,
131130
url: 'https://eslint.vuejs.org/rules/v-if-else-key.html'
132131
},
133132
// eslint-disable-next-line eslint-plugin/require-meta-fixable -- fixer is not recognized

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /