eslint-plugin-vue
Advanced tools
Comparing version 3.12.0 to 3.13.0
@@ -14,2 +14,3 @@ /* | ||
"vue/max-attributes-per-line": "off", | ||
"vue/mustache-interpolation-spacing": "off", | ||
"vue/name-property-casing": "off", | ||
@@ -44,2 +45,3 @@ "vue/no-async-in-computed-properties": "off", | ||
"vue/require-component-is": "error", | ||
"vue/require-default-prop": "off", | ||
"vue/require-prop-types": "off", | ||
@@ -50,2 +52,3 @@ "vue/require-render-return": "off", | ||
"vue/return-in-computed-property": "off", | ||
"vue/this-in-template": "off", | ||
"vue/v-bind-style": "off", | ||
@@ -52,0 +55,0 @@ "vue/v-on-style": "off", |
@@ -46,3 +46,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
VAttribute (node) { | ||
@@ -57,4 +57,2 @@ if (!utils.isCustomComponent(node.parent.parent)) return | ||
}) | ||
return {} | ||
} | ||
@@ -61,0 +59,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
VElement (node) { | ||
@@ -52,4 +52,2 @@ const name = node.name | ||
}) | ||
return {} | ||
} | ||
@@ -56,0 +54,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
'VElement' (node) { | ||
@@ -46,4 +46,2 @@ if (utils.isSvgElementNode(node)) { | ||
}) | ||
return {} | ||
} | ||
@@ -50,0 +48,0 @@ |
@@ -30,3 +30,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
'VAttribute[value!=null]' (node) { | ||
@@ -45,4 +45,2 @@ const text = sourceCode.getText(node.value) | ||
}) | ||
return {} | ||
} | ||
@@ -49,0 +47,0 @@ |
@@ -92,3 +92,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
'VElement' (node) { | ||
@@ -136,4 +136,2 @@ const elementType = getElementType(node) | ||
}) | ||
return {} | ||
} | ||
@@ -140,0 +138,0 @@ |
@@ -74,3 +74,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
'VStartTag' (node) { | ||
@@ -159,5 +159,3 @@ const numberOfAttributes = node.attributes.length | ||
} | ||
return {} | ||
} | ||
} |
@@ -40,3 +40,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='if']" (node) { | ||
@@ -54,4 +54,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -58,0 +56,0 @@ |
@@ -54,3 +54,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
'VStartTag' () { | ||
@@ -82,4 +82,2 @@ directiveNames.clear() | ||
}) | ||
return {} | ||
} | ||
@@ -86,0 +84,0 @@ |
@@ -27,3 +27,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='bind']" (node) { | ||
@@ -50,4 +50,2 @@ for (const modifier of node.key.modifiers) { | ||
}) | ||
return {} | ||
} | ||
@@ -54,0 +52,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='cloak']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='else-if']" (node) { | ||
@@ -74,4 +74,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -78,0 +76,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='else']" (node) { | ||
@@ -74,4 +74,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -78,0 +76,0 @@ |
@@ -82,3 +82,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='for']" (node) { | ||
@@ -155,4 +155,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -159,0 +157,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='html']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='if']" (node) { | ||
@@ -67,4 +67,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -71,0 +69,0 @@ |
@@ -83,3 +83,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='model']" (node) { | ||
@@ -168,4 +168,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -172,0 +170,0 @@ |
@@ -34,3 +34,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='on']" (node) { | ||
@@ -56,4 +56,2 @@ for (const modifier of node.key.modifiers) { | ||
}) | ||
return {} | ||
} | ||
@@ -60,0 +58,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='once']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='pre']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='show']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='text']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -40,2 +40,5 @@ /** | ||
} | ||
if (!node.templateBody) { | ||
return | ||
} | ||
const sourceCode = context.getSourceCode() | ||
@@ -42,0 +45,0 @@ const tokenStore = context.parserServices.getTemplateBodyTokenStore() |
@@ -21,2 +21,3 @@ /** | ||
p.value.type !== 'FunctionExpression' && | ||
p.value.type !== 'ArrowFunctionExpression' && | ||
p.value.type !== 'Identifier' | ||
@@ -45,5 +46,3 @@ ) | ||
fixable: null, // or "code" or "whitespace" | ||
schema: [ | ||
// fill in your schema | ||
] | ||
schema: [] | ||
}, | ||
@@ -50,0 +49,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VElement[name='template']" (node) { | ||
@@ -37,4 +37,2 @@ if (utils.hasAttribute(node, 'key') || utils.hasDirective(node, 'bind', 'key')) { | ||
}) | ||
return {} | ||
} | ||
@@ -41,0 +39,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VElement[name='textarea'] VExpressionContainer" (node) { | ||
@@ -39,4 +39,2 @@ if (node.parent.type !== 'VElement') { | ||
}) | ||
return {} | ||
} | ||
@@ -43,0 +41,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VElement[name='component']" (node) { | ||
@@ -37,4 +37,2 @@ if (!utils.hasDirective(node, 'bind', 'is')) { | ||
}) | ||
return {} | ||
} | ||
@@ -41,0 +39,0 @@ |
@@ -46,3 +46,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='for']" (node) { | ||
@@ -52,4 +52,2 @@ checkKey(context, node.parent.parent) | ||
}) | ||
return {} | ||
} | ||
@@ -56,0 +54,0 @@ |
@@ -27,3 +27,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='bind'][key.argument!=null]" (node) { | ||
@@ -46,4 +46,2 @@ if (node.key.shorthand === shorthand) { | ||
}) | ||
return {} | ||
} | ||
@@ -50,0 +48,0 @@ |
@@ -27,3 +27,3 @@ /** | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='on'][key.argument!=null]" (node) { | ||
@@ -47,4 +47,2 @@ if (node.key.shorthand === shorthand) { | ||
}) | ||
return {} | ||
} | ||
@@ -51,0 +49,0 @@ |
@@ -27,3 +27,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='bind']" (node) { | ||
@@ -50,4 +50,2 @@ for (const modifier of node.key.modifiers) { | ||
}) | ||
return {} | ||
} | ||
@@ -54,0 +52,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='cloak']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='else-if']" (node) { | ||
@@ -74,4 +74,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -78,0 +76,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='else']" (node) { | ||
@@ -74,4 +74,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -78,0 +76,0 @@ |
@@ -30,3 +30,2 @@ /** | ||
const variables = vFor.parent.parent.variables | ||
return references.some(reference => | ||
@@ -41,2 +40,30 @@ variables.some(variable => | ||
/** | ||
* Check the child element in tempalte v-for about `v-bind:key` attributes. | ||
* @param {RuleContext} context The rule context to report. | ||
* @param {ASTNode} vFor The attribute node of `v-for` to check. | ||
* @param {ASTNode} child The child node to check. | ||
*/ | ||
function checkChildKey (context, vFor, child) { | ||
const childFor = utils.getDirective(child, 'for') | ||
// if child has v-for, check if parent iterator is used in v-for | ||
if (childFor != null) { | ||
const childForRefs = childFor.value.references | ||
const variables = vFor.parent.parent.variables | ||
const usedInFor = childForRefs.some(cref => | ||
variables.some(variable => | ||
cref.id.name === variable.id.name && | ||
variable.kind === 'v-for' | ||
) | ||
) | ||
// if parent iterator is used, skip other checks | ||
// iterator usage will be checked later by child v-for | ||
if (usedInFor) { | ||
return | ||
} | ||
} | ||
// otherwise, check if parent iterator is directly used in child's key | ||
checkKey(context, vFor, child) | ||
} | ||
/** | ||
* Check the given element about `v-bind:key` attributes. | ||
@@ -51,3 +78,3 @@ * @param {RuleContext} context The rule context to report. | ||
if (child.type === 'VElement') { | ||
checkKey(context, vFor, child) | ||
checkChildKey(context, vFor, child) | ||
} | ||
@@ -85,3 +112,3 @@ } | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='for']" (node) { | ||
@@ -158,4 +185,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -162,0 +187,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='html']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='if']" (node) { | ||
@@ -67,4 +67,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -71,0 +69,0 @@ |
@@ -83,3 +83,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='model']" (node) { | ||
@@ -168,4 +168,2 @@ const element = node.parent.parent | ||
}) | ||
return {} | ||
} | ||
@@ -172,0 +170,0 @@ |
@@ -34,3 +34,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='on']" (node) { | ||
@@ -56,4 +56,2 @@ for (const modifier of node.key.modifiers) { | ||
}) | ||
return {} | ||
} | ||
@@ -60,0 +58,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='once']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='pre']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='show']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -25,3 +25,3 @@ /** | ||
function create (context) { | ||
utils.registerTemplateBodyVisitor(context, { | ||
return utils.defineTemplateBodyVisitor(context, { | ||
"VAttribute[directive=true][key.name='text']" (node) { | ||
@@ -51,4 +51,2 @@ if (node.key.argument) { | ||
}) | ||
return {} | ||
} | ||
@@ -55,0 +53,0 @@ |
@@ -28,6 +28,8 @@ /** | ||
* @param {RuleContext} context The rule context to use parser services. | ||
* @param {Object} visitor The visitor. | ||
* @param {Object} templateBodyVisitor The visitor to traverse the template body. | ||
* @param {Object} scriptVisitor The visitor to traverse the script. | ||
* @returns {Object} The merged visitor. | ||
*/ | ||
registerTemplateBodyVisitor (context, visitor) { | ||
if (context.parserServices.registerTemplateBodyVisitor == null) { | ||
defineTemplateBodyVisitor (context, templateBodyVisitor, scriptVisitor) { | ||
if (context.parserServices.defineTemplateBodyVisitor == null) { | ||
context.report({ | ||
@@ -39,3 +41,3 @@ loc: { line: 1, column: 0 }, | ||
} | ||
context.parserServices.registerTemplateBodyVisitor(context, visitor) | ||
return context.parserServices.defineTemplateBodyVisitor(templateBodyVisitor, scriptVisitor) | ||
}, | ||
@@ -42,0 +44,0 @@ |
{ | ||
"name": "eslint-plugin-vue", | ||
"version": "3.12.0", | ||
"version": "3.13.0", | ||
"description": "Official ESLint plugin for Vue.js", | ||
"main": "lib/index.js", | ||
"scripts": { | ||
"start": "npm run test:simple -- --watch --growl", | ||
"test:base": "mocha \"tests/lib/**/*.js\"", | ||
"test:simple": "npm run test:base -- --reporter dot", | ||
"start": "npm run test:base -- --watch --growl", | ||
"test:base": "mocha \"tests/lib/**/*.js\" --reporter dot", | ||
"test": "nyc npm run test:base -- \"tests/integrations/*.js\" --timeout 60000", | ||
@@ -48,3 +47,3 @@ "lint": "eslint .", | ||
"requireindex": "^1.1.0", | ||
"vue-eslint-parser": "2.0.0-beta.7" | ||
"vue-eslint-parser": "^2.0.1-beta.0" | ||
}, | ||
@@ -51,0 +50,0 @@ "devDependencies": { |
@@ -131,4 +131,6 @@ # eslint-plugin-vue | ||
| :white_check_mark: | [require-component-is](./docs/rules/require-component-is.md) | require `v-bind:is` of `<component>` elements. | | ||
| | [require-default-prop](./docs/rules/require-default-prop.md) | Require default value for props | | ||
| | [require-prop-types](./docs/rules/require-prop-types.md) | Prop definitions should be detailed | | ||
| :white_check_mark: | [require-v-for-key](./docs/rules/require-v-for-key.md) | require `v-bind:key` with `v-for` directives. | | ||
| | [this-in-template](./docs/rules/this-in-template.md) | enforce usage of `this` in template. | | ||
@@ -144,2 +146,3 @@ | ||
| | [max-attributes-per-line](./docs/rules/max-attributes-per-line.md) | Define the number of attributes allows per line | | ||
| :wrench: | [mustache-interpolation-spacing](./docs/rules/mustache-interpolation-spacing.md) | enforce unified spacing in mustache interpolations. | | ||
| :wrench: | [name-property-casing](./docs/rules/name-property-casing.md) | Requires specific casing for the name property in Vue components | | ||
@@ -146,0 +149,0 @@ | :wrench: | [no-multi-spaces](./docs/rules/no-multi-spaces.md) | This rule warns about the usage of extra whitespaces between attributes | |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
189779
73
5501
233
+ Addedvue-eslint-parser@2.0.3(transitive)
- Removeddebug@2.6.9(transitive)
- Removedms@2.0.0(transitive)
- Removedvue-eslint-parser@2.0.0-beta.7(transitive)