| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | /** * @fileoverview Prevent overwrite reserved keys * @author Armano */'use strict'const utils = require('../utils')// ------------------------------------------------------------------------------// Rule Definition// ------------------------------------------------------------------------------const RESERVED_KEYS = require('../utils/vue-reserved.json')const GROUP_NAMES = ['props', 'computed', 'data', 'methods']module.exports = {  meta: {    docs: {      description: 'disallow overwriting reserved keys',      category: 'essential',      url: 'https://github.com/vuejs/eslint-plugin-vue/blob/v4.7.1/docs/rules/no-reserved-keys.md'    },    fixable: null,    schema: [      {        type: 'object',        properties: {          reserved: {            type: 'array'          },          groups: {            type: 'array'          }        },        additionalProperties: false      }    ]  },  create (context) {    const options = context.options[0] || {}    const reservedKeys = new Set(RESERVED_KEYS.concat(options.reserved || []))    const groups = new Set(GROUP_NAMES.concat(options.groups || []))    // ----------------------------------------------------------------------    // Public    // ----------------------------------------------------------------------    return utils.executeOnVue(context, (obj) => {      const properties = utils.iterateProperties(obj, groups)      for (const o of properties) {        if (o.groupName === 'data' && o.name[0] === '_') {          context.report({            node: o.node,            message: "Keys starting with with '_' are reserved in '{{name}}' group.",            data: {              name: o.name            }          })        } else if (reservedKeys.has(o.name)) {          context.report({            node: o.node,            message: "Key '{{name}}' is reserved.",            data: {              name: o.name            }          })        }      }    })  }}
 |