eslint-plugin-vue
Version:
Official ESLint plugin for Vue.js
55 lines (47 loc) • 1.59 kB
JavaScript
/**
* @fileoverview Enforces render function to always return value.
* @author Armano
*/
const utils = require('../utils')
// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------
module.exports = {
meta: {
type: 'problem',
docs: {
description: 'enforce render function to always return value',
categories: ['vue3-essential', 'essential'],
url: 'https://eslint.vuejs.org/rules/require-render-return.html'
},
fixable: null, // or "code" or "whitespace"
schema: []
},
create (context) {
const forbiddenNodes = []
// ----------------------------------------------------------------------
// Public
// ----------------------------------------------------------------------
return Object.assign({},
utils.executeOnFunctionsWithoutReturn(true, node => {
forbiddenNodes.push(node)
}),
utils.executeOnVue(context, obj => {
const node = obj.properties.find(item => item.type === 'Property' &&
utils.getStaticPropertyName(item) === 'render' &&
(item.value.type === 'ArrowFunctionExpression' || item.value.type === 'FunctionExpression')
)
if (!node) return
forbiddenNodes.forEach(el => {
if (node.value === el) {
context.report({
node: node.key,
message: 'Expected to return a value in render function.'
})
}
})
})
)
}
}