Socket
Socket
Sign inDemoInstall

eslint-plugin-vue

Package Overview
Dependencies
Maintainers
5
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 7.0.0-alpha.1 to 7.0.0-alpha.2

lib/rules/no-deprecated-functional-template.js

5

lib/configs/vue3-essential.js

@@ -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'),

85

lib/rules/no-reserved-component-names.js

@@ -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": {

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