From ae1485c7ee5f16b835a3cc405d7c8d3e8f0f7863 Mon Sep 17 00:00:00 2001 From: Armano2 Date: Tue, 4 Jul 2017 22:14:21 +0200 Subject: [PATCH 1/2] =#65 - vue/no-invalid-v-for shouldn't catch slots --- lib/utils/index.js | 14 +++++++++++++- lib/utils/vue-elements.json | 1 + package-lock.json | 2 +- tests/lib/rules/no-invalid-v-for.js | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 lib/utils/vue-elements.json diff --git a/lib/utils/index.js b/lib/utils/index.js index cd01df744..481d4352e 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -12,6 +12,7 @@ const HTML_ELEMENT_NAMES = new Set(require('./html-elements.json')) const SVG_ELEMENT_NAMES = new Set(require('./svg-elements.json')) const VOID_ELEMENT_NAMES = new Set(require('./void-elements.json')) +const VUE_ELEMENT_NAMES = new Set(require('./vue-elements.json')) const assert = require('assert') // ------------------------------------------------------------------------------ @@ -204,7 +205,7 @@ module.exports = { const name = node.id.name return ( - !(this.isHtmlElementName(name) || this.isSvgElementName(name)) || + !(this.isHtmlElementName(name) || this.isSvgElementName(name) || this.isVueElementName(name)) || this.hasAttribute(node, 'is') || this.hasDirective(node, 'bind', 'is') ) @@ -241,5 +242,16 @@ module.exports = { assert(typeof name === 'string') return VOID_ELEMENT_NAMES.has(name.toLowerCase()) + }, + + /** + * Check whether the given name is a vue element name or not. + * @param {string} name The name to check. + * @returns {boolean} `true` if the name is a vue element name. + */ + isVueElementName (name) { + assert(typeof name === 'string') + + return VUE_ELEMENT_NAMES.has(name.toLowerCase()) } } diff --git a/lib/utils/vue-elements.json b/lib/utils/vue-elements.json new file mode 100644 index 000000000..dc9366f05 --- /dev/null +++ b/lib/utils/vue-elements.json @@ -0,0 +1 @@ +["slot"] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f6b8069bf..2fb3e3be6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-vue", - "version": "3.2.0", + "version": "3.5.0", "lockfileVersion": 1, "dependencies": { "@types/node": { diff --git a/tests/lib/rules/no-invalid-v-for.js b/tests/lib/rules/no-invalid-v-for.js index 24c739689..443cacad5 100644 --- a/tests/lib/rules/no-invalid-v-for.js +++ b/tests/lib/rules/no-invalid-v-for.js @@ -74,6 +74,10 @@ tester.run('no-invalid-v-for', rule, { { filename: 'test.vue', code: '' + }, + { + filename: 'test.vue', + code: '' } ], invalid: [ From e743334f0b8c6eedbfba0e60266e55ec3e23df85 Mon Sep 17 00:00:00 2001 From: Armano Date: Thu, 6 Jul 2017 19:26:09 +0100 Subject: [PATCH 2/2] Add missing valid html5 tags see https://developer.mozilla.org/en-US/docs/Web/HTML/Element --- lib/utils/html-elements.json | 2 +- lib/utils/index.js | 14 +------------- lib/utils/vue-elements.json | 1 - 3 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 lib/utils/vue-elements.json diff --git a/lib/utils/html-elements.json b/lib/utils/html-elements.json index d33de20b6..721f7876d 100644 --- a/lib/utils/html-elements.json +++ b/lib/utils/html-elements.json @@ -1 +1 @@ -["html","body","base","head","link","meta","style","title","address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","nav","section","div","dd","dl","dt","figcaption","figure","hr","img","li","main","ol","p","pre","ul","a","b","abbr","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","area","audio","map","track","video","embed","object","param","source","canvas","script","noscript","del","ins","caption","col","colgroup","table","thead","tbody","td","th","tr","button","datalist","fieldset","form","input","label","legend","meter","optgroup","option","output","progress","select","textarea","details","dialog","menu","menuitem","summary","content","element","shadow","template"] +["html","body","base","head","link","meta","style","title","address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","nav","section","div","dd","dl","dt","figcaption","figure","hr","img","li","main","ol","p","pre","ul","a","b","abbr","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","area","audio","map","track","video","embed","object","param","source","canvas","script","noscript","del","ins","caption","col","colgroup","table","thead","tbody","tfoot","td","th","tr","button","datalist","fieldset","form","input","label","legend","meter","optgroup","option","output","progress","select","textarea","details","dialog","menu","menuitem","summary","content","element","shadow","template","slot","blockquote","iframe","noframes","picture"] diff --git a/lib/utils/index.js b/lib/utils/index.js index 481d4352e..cd01df744 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -12,7 +12,6 @@ const HTML_ELEMENT_NAMES = new Set(require('./html-elements.json')) const SVG_ELEMENT_NAMES = new Set(require('./svg-elements.json')) const VOID_ELEMENT_NAMES = new Set(require('./void-elements.json')) -const VUE_ELEMENT_NAMES = new Set(require('./vue-elements.json')) const assert = require('assert') // ------------------------------------------------------------------------------ @@ -205,7 +204,7 @@ module.exports = { const name = node.id.name return ( - !(this.isHtmlElementName(name) || this.isSvgElementName(name) || this.isVueElementName(name)) || + !(this.isHtmlElementName(name) || this.isSvgElementName(name)) || this.hasAttribute(node, 'is') || this.hasDirective(node, 'bind', 'is') ) @@ -242,16 +241,5 @@ module.exports = { assert(typeof name === 'string') return VOID_ELEMENT_NAMES.has(name.toLowerCase()) - }, - - /** - * Check whether the given name is a vue element name or not. - * @param {string} name The name to check. - * @returns {boolean} `true` if the name is a vue element name. - */ - isVueElementName (name) { - assert(typeof name === 'string') - - return VUE_ELEMENT_NAMES.has(name.toLowerCase()) } } diff --git a/lib/utils/vue-elements.json b/lib/utils/vue-elements.json deleted file mode 100644 index dc9366f05..000000000 --- a/lib/utils/vue-elements.json +++ /dev/null @@ -1 +0,0 @@ -["slot"] \ No newline at end of file