Socket
Socket
Sign inDemoInstall

eslint-plugin-vue

Package Overview
Dependencies
Maintainers
3
Versions
170
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-vue - npm Package Compare versions

Comparing version 3.12.0 to 3.13.0

lib/rules/mustache-interpolation-spacing.js

3

lib/recommended-rules.js

@@ -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",

4

lib/rules/attribute-hyphenation.js

@@ -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 |

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc