123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /**
- * @fileoverview Require a name property in Vue components
- * @author LukeeeeBennett
- */
- 'use strict'
- const utils = require('../utils')
- const { getVueComponentDefinitionType } = require('../utils')
- /**
- * @param {Property | SpreadElement} node
- * @returns {node is ObjectExpressionProperty}
- */
- function isNameProperty(node) {
- return (
- node.type === 'Property' &&
- utils.getStaticPropertyName(node) === 'name' &&
- !node.computed
- )
- }
- module.exports = {
- meta: {
- type: 'suggestion',
- docs: {
- description: 'require a name property in Vue components',
- categories: undefined,
- url: 'https://eslint.vuejs.org/rules/require-name-property.html'
- },
- fixable: null,
- schema: []
- },
- /** @param {RuleContext} context */
- create(context) {
- if (utils.isScriptSetup(context)) {
- return {}
- }
- return utils.executeOnVue(context, (component, type) => {
- if (type === 'definition') {
- const defType = getVueComponentDefinitionType(component)
- if (defType === 'mixin') {
- return
- }
- }
- if (component.properties.some(isNameProperty)) return
- context.report({
- node: component,
- message: 'Required name property is not set.'
- })
- })
- }
- }
|