/** * @fileoverview Enforces that a return statement is present in computed property (return-in-computed-property) * @author Armano */ 'use strict' const utils = require('../utils') // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ module.exports = { meta: { type: 'problem', docs: { description: 'enforce that a return statement is present in computed property', category: 'essential', url: 'https://eslint.vuejs.org/rules/return-in-computed-property.html' }, fixable: null, // or "code" or "whitespace" schema: [ { type: 'object', properties: { treatUndefinedAsUnspecified: { type: 'boolean' } }, additionalProperties: false } ] }, create (context) { const options = context.options[0] || {} const treatUndefinedAsUnspecified = !(options.treatUndefinedAsUnspecified === false) const forbiddenNodes = [] // ---------------------------------------------------------------------- // Public // ---------------------------------------------------------------------- return Object.assign({}, utils.executeOnFunctionsWithoutReturn(treatUndefinedAsUnspecified, node => { forbiddenNodes.push(node) }), utils.executeOnVue(context, properties => { const computedProperties = utils.getComputedProperties(properties) computedProperties.forEach(cp => { forbiddenNodes.forEach(el => { if (cp.value && cp.value.parent === el) { context.report({ node: el, message: 'Expected to return a value in "{{name}}" computed property.', data: { name: cp.key } }) } }) }) }) ) } }