eslint-plugin-vue
Advanced tools
Comparing version 7.0.0-alpha.1 to 7.0.0-alpha.2
@@ -13,2 +13,4 @@ /* | ||
'vue/no-deprecated-filter': 'error', | ||
'vue/no-deprecated-functional-template': 'error', | ||
'vue/no-deprecated-html-element-is': 'error', | ||
'vue/no-deprecated-inline-template': 'error', | ||
@@ -20,2 +22,3 @@ 'vue/no-deprecated-scope-attribute': 'error', | ||
'vue/no-deprecated-v-on-number-modifiers': 'error', | ||
'vue/no-deprecated-vue-config-keycodes': 'error', | ||
'vue/no-dupe-keys': 'error', | ||
@@ -39,4 +42,4 @@ 'vue/no-duplicate-attributes': 'error', | ||
'vue/require-render-return': 'error', | ||
'vue/require-toggle-inside-transition': 'error', | ||
'vue/require-v-for-key': 'error', | ||
'vue/require-v-if-inside-transition': 'error', | ||
'vue/require-valid-default-prop': 'error', | ||
@@ -43,0 +46,0 @@ 'vue/return-in-computed-property': 'error', |
@@ -46,2 +46,4 @@ /* | ||
'no-deprecated-filter': require('./rules/no-deprecated-filter'), | ||
'no-deprecated-functional-template': require('./rules/no-deprecated-functional-template'), | ||
'no-deprecated-html-element-is': require('./rules/no-deprecated-html-element-is'), | ||
'no-deprecated-inline-template': require('./rules/no-deprecated-inline-template'), | ||
@@ -53,2 +55,3 @@ 'no-deprecated-scope-attribute': require('./rules/no-deprecated-scope-attribute'), | ||
'no-deprecated-v-on-number-modifiers': require('./rules/no-deprecated-v-on-number-modifiers'), | ||
'no-deprecated-vue-config-keycodes': require('./rules/no-deprecated-vue-config-keycodes'), | ||
'no-dupe-keys': require('./rules/no-dupe-keys'), | ||
@@ -93,4 +96,4 @@ 'no-duplicate-attributes': require('./rules/no-duplicate-attributes'), | ||
'require-render-return': require('./rules/require-render-return'), | ||
'require-toggle-inside-transition': require('./rules/require-toggle-inside-transition'), | ||
'require-v-for-key': require('./rules/require-v-for-key'), | ||
'require-v-if-inside-transition': require('./rules/require-v-if-inside-transition'), | ||
'require-valid-default-prop': require('./rules/require-valid-default-prop'), | ||
@@ -97,0 +100,0 @@ 'return-in-computed-property': require('./rules/return-in-computed-property'), |
@@ -25,16 +25,40 @@ /** | ||
// https://vuejs.org/v2/api/index.html#Built-In-Components | ||
const vueBuiltInComponents = [ | ||
'component', | ||
'transition', | ||
'transition-group', | ||
'keep-alive', | ||
'slot' | ||
] | ||
const vue3BuiltInComponents = [ | ||
'teleport', | ||
'suspense' | ||
] | ||
const isLowercase = (word) => /^[a-z]*$/.test(word) | ||
const capitalizeFirstLetter = (word) => word[0].toUpperCase() + word.substring(1, word.length) | ||
const RESERVED_NAMES = new Set( | ||
[ | ||
...kebabCaseElements, | ||
...kebabCaseElements.map(casing.pascalCase), | ||
...htmlElements, | ||
...htmlElements.map(capitalizeFirstLetter), | ||
...deprecatedHtmlElements, | ||
...deprecatedHtmlElements.map(capitalizeFirstLetter), | ||
...svgElements, | ||
...svgElements.filter(isLowercase).map(capitalizeFirstLetter) | ||
]) | ||
const RESERVED_NAMES_IN_HTML = new Set([ | ||
...htmlElements, | ||
...htmlElements.map(capitalizeFirstLetter) | ||
]) | ||
const RESERVED_NAMES_IN_VUE = new Set([ | ||
...vueBuiltInComponents, | ||
...vueBuiltInComponents.map(casing.pascalCase) | ||
]) | ||
const RESERVED_NAMES_IN_VUE3 = new Set([ | ||
...RESERVED_NAMES_IN_VUE, | ||
...vue3BuiltInComponents, | ||
...vue3BuiltInComponents.map(casing.pascalCase) | ||
]) | ||
const RESERVED_NAMES_IN_OTHERS = new Set([ | ||
...deprecatedHtmlElements, | ||
...deprecatedHtmlElements.map(capitalizeFirstLetter), | ||
...kebabCaseElements, | ||
...kebabCaseElements.map(casing.pascalCase), | ||
...svgElements, | ||
...svgElements.filter(isLowercase).map(capitalizeFirstLetter) | ||
]) | ||
@@ -50,10 +74,37 @@ // ------------------------------------------------------------------------------ | ||
description: 'disallow the use of reserved names in component definitions', | ||
categories: undefined, // 'essential' | ||
categories: undefined, | ||
url: 'https://eslint.vuejs.org/rules/no-reserved-component-names.html' | ||
}, | ||
fixable: null, | ||
schema: [] | ||
schema: [{ | ||
type: 'object', | ||
properties: { | ||
disallowVueBuiltInComponents: { | ||
type: 'boolean' | ||
}, | ||
disallowVue3BuiltInComponents: { | ||
type: 'boolean' | ||
} | ||
} | ||
}], | ||
messages: { | ||
reserved: 'Name "{{name}}" is reserved.', | ||
reservedInHtml: 'Name "{{name}}" is reserved in HTML.', | ||
reservedInVue: 'Name "{{name}}" is reserved in Vue.js.', | ||
reservedInVue3: 'Name "{{name}}" is reserved in Vue.js 3.x.' | ||
} | ||
}, | ||
create (context) { | ||
const options = context.options[0] || {} | ||
const disallowVueBuiltInComponents = options.disallowVueBuiltInComponents === true | ||
const disallowVue3BuiltInComponents = options.disallowVue3BuiltInComponents === true | ||
const reservedNames = new Set([ | ||
...RESERVED_NAMES_IN_HTML, | ||
...(disallowVueBuiltInComponents ? RESERVED_NAMES_IN_VUE : []), | ||
...(disallowVue3BuiltInComponents ? RESERVED_NAMES_IN_VUE3 : []), | ||
...RESERVED_NAMES_IN_OTHERS | ||
]) | ||
function canVerify (node) { | ||
@@ -75,3 +126,3 @@ return node.type === 'Literal' || ( | ||
} | ||
if (RESERVED_NAMES.has(name)) { | ||
if (reservedNames.has(name)) { | ||
report(node, name) | ||
@@ -84,3 +135,5 @@ } | ||
node: node, | ||
message: 'Name "{{name}}" is reserved.', | ||
messageId: RESERVED_NAMES_IN_HTML.has(name) ? 'reservedInHtml' | ||
: RESERVED_NAMES_IN_VUE.has(name) ? 'reservedInVue' | ||
: RESERVED_NAMES_IN_VUE3.has(name) ? 'reservedInVue3' : 'reserved', | ||
data: { | ||
@@ -105,3 +158,3 @@ name: name | ||
utils.getRegisteredComponents(obj) | ||
.filter(({ name }) => RESERVED_NAMES.has(name)) | ||
.filter(({ name }) => reservedNames.has(name)) | ||
.forEach(({ node, name }) => report(node, name)) | ||
@@ -108,0 +161,0 @@ |
{ | ||
"name": "eslint-plugin-vue", | ||
"version": "7.0.0-alpha.1", | ||
"version": "7.0.0-alpha.2", | ||
"description": "Official ESLint plugin for Vue.js", | ||
@@ -50,3 +50,3 @@ "main": "lib/index.js", | ||
"peerDependencies": { | ||
"eslint": "^5.0.0 || ^6.0.0" | ||
"eslint": "^6.0.0 || ^7.0.0" | ||
}, | ||
@@ -56,24 +56,23 @@ "dependencies": { | ||
"natural-compare": "^1.4.0", | ||
"semver": "^5.6.0", | ||
"semver": "^7.3.2", | ||
"vue-eslint-parser": "^7.0.0" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^4.2.16", | ||
"@typescript-eslint/parser": "^2.6.1", | ||
"@vuepress/plugin-pwa": "^1.4.0", | ||
"acorn": "^7.1.0", | ||
"babel-eslint": "^10.0.2", | ||
"chai": "^4.1.0", | ||
"eslint": "^6.0.0", | ||
"eslint-plugin-eslint-plugin": "^2.0.1", | ||
"eslint-plugin-import": "^2.18.2", | ||
"@types/node": "^13.13.5", | ||
"@typescript-eslint/parser": "^2.31.0", | ||
"@vuepress/plugin-pwa": "^1.4.1", | ||
"babel-eslint": "^10.1.0", | ||
"chai": "^4.2.0", | ||
"eslint": "^7.0.0", | ||
"eslint-plugin-eslint-plugin": "^2.2.1", | ||
"eslint-plugin-import": "^2.20.2", | ||
"eslint-plugin-vue": "file:.", | ||
"eslint-plugin-vue-libs": "^4.0.0", | ||
"eslint4b": "^6.8.0", | ||
"lodash": "^4.17.4", | ||
"mocha": "^5.2.0", | ||
"nyc": "^12.0.2", | ||
"typescript": "^3.5.2", | ||
"eslint4b": "^7.0.0", | ||
"lodash": "^4.17.15", | ||
"mocha": "^7.1.2", | ||
"nyc": "^15.0.1", | ||
"typescript": "^3.8.3", | ||
"vue-eslint-editor": "^1.1.0", | ||
"vuepress": "^1.4.0" | ||
"vuepress": "^1.4.1" | ||
}, | ||
@@ -80,0 +79,0 @@ "publishConfig": { |
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
459149
17
149
12833
+ Added@babel/code-frame@7.12.11(transitive)
+ Added@eslint/eslintrc@0.4.3(transitive)
+ Added@humanwhocodes/config-array@0.5.0(transitive)
+ Added@humanwhocodes/object-schema@1.2.1(transitive)
+ Addedajv@8.17.1(transitive)
+ Addedansi-colors@4.1.3(transitive)
+ Addedastral-regex@2.0.0(transitive)
+ Addedcross-spawn@7.0.3(transitive)
+ Addedenquirer@2.4.1(transitive)
+ Addedescape-string-regexp@4.0.0(transitive)
+ Addedeslint@7.32.0(transitive)
+ Addedeslint-visitor-keys@2.1.0(transitive)
+ Addedespree@7.3.1(transitive)
+ Addedfast-uri@3.0.3(transitive)
+ Addedfile-entry-cache@6.0.1(transitive)
+ Addedflat-cache@3.2.0(transitive)
+ Addedflatted@3.3.1(transitive)
+ Addedglobals@13.24.0(transitive)
+ Addedjson-buffer@3.0.1(transitive)
+ Addedjson-schema-traverse@1.0.0(transitive)
+ Addedkeyv@4.5.4(transitive)
+ Addedlevn@0.4.1(transitive)
+ Addedlodash.merge@4.6.2(transitive)
+ Addedlodash.truncate@4.4.2(transitive)
+ Addedoptionator@0.9.4(transitive)
+ Addedpath-key@3.1.1(transitive)
+ Addedprelude-ls@1.2.1(transitive)
+ Addedregexpp@3.2.0(transitive)
+ Addedrequire-from-string@2.0.2(transitive)
+ Addedrimraf@3.0.2(transitive)
+ Addedsemver@7.6.3(transitive)
+ Addedshebang-command@2.0.0(transitive)
+ Addedshebang-regex@3.0.0(transitive)
+ Addedslice-ansi@4.0.0(transitive)
+ Addedtable@6.8.2(transitive)
+ Addedtype-check@0.4.0(transitive)
+ Addedtype-fest@0.20.2(transitive)
+ Addedwhich@2.0.2(transitive)
- Removed@babel/code-frame@7.25.7(transitive)
- Removedansi-escapes@4.3.2(transitive)
- Removedansi-regex@4.1.1(transitive)
- Removedastral-regex@1.0.0(transitive)
- Removedchardet@0.7.0(transitive)
- Removedcli-cursor@3.1.0(transitive)
- Removedcli-width@3.0.0(transitive)
- Removedcross-spawn@6.0.5(transitive)
- Removedemoji-regex@7.0.3(transitive)
- Removedeslint@6.8.0(transitive)
- Removedeslint-utils@1.4.3(transitive)
- Removedexternal-editor@3.1.0(transitive)
- Removedfigures@3.2.0(transitive)
- Removedfile-entry-cache@5.0.1(transitive)
- Removedflat-cache@2.0.1(transitive)
- Removedflatted@2.0.2(transitive)
- Removedglobals@12.4.0(transitive)
- Removediconv-lite@0.4.24(transitive)
- Removedinquirer@7.3.3(transitive)
- Removedis-fullwidth-code-point@2.0.0(transitive)
- Removedlevn@0.3.0(transitive)
- Removedmimic-fn@2.1.0(transitive)
- Removedminimist@1.2.8(transitive)
- Removedmkdirp@0.5.6(transitive)
- Removedmute-stream@0.0.8(transitive)
- Removednice-try@1.0.5(transitive)
- Removedonetime@5.1.2(transitive)
- Removedoptionator@0.8.3(transitive)
- Removedos-tmpdir@1.0.2(transitive)
- Removedpath-key@2.0.1(transitive)
- Removedprelude-ls@1.1.2(transitive)
- Removedregexpp@2.0.1(transitive)
- Removedrestore-cursor@3.1.0(transitive)
- Removedrimraf@2.6.3(transitive)
- Removedrun-async@2.4.1(transitive)
- Removedrxjs@6.6.7(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsemver@5.7.2(transitive)
- Removedshebang-command@1.2.0(transitive)
- Removedshebang-regex@1.0.0(transitive)
- Removedsignal-exit@3.0.7(transitive)
- Removedslice-ansi@2.1.0(transitive)
- Removedstring-width@3.1.0(transitive)
- Removedstrip-ansi@5.2.0(transitive)
- Removedtable@5.4.6(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtmp@0.0.33(transitive)
- Removedtslib@1.14.1(transitive)
- Removedtype-check@0.3.2(transitive)
- Removedtype-fest@0.21.30.8.1(transitive)
- Removedwhich@1.3.1(transitive)
- Removedwrite@1.0.3(transitive)
Updatedsemver@^7.3.2