12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 'use strict'
- const utils = require('../utils')
- module.exports = {
- meta: {
- docs: {
- description: 'disallow `window/document` in `created/beforeCreate`',
- category: 'base'
- },
- messages: {
- noGlobals: 'Unexpected {{name}} in {{funcName}}.'
- }
- },
- create (context) {
- const forbiddenNodes = []
- const options = context.options[0] || {}
- const HOOKS = new Set(
- ['created', 'beforeCreate'].concat(options.methods || [])
- )
- const GLOBALS = ['window', 'document']
- function isGlobals (name) {
- return GLOBALS.includes(name)
- }
- return {
- MemberExpression (node) {
- if (!node.object) return
- const name = node.object.name
- if (isGlobals(name)) {
- forbiddenNodes.push({ name, node })
- }
- },
- VariableDeclarator (node) {
- if (!node.init) return
- const name = node.init.name
- if (isGlobals(name)) {
- forbiddenNodes.push({ name, node })
- }
- },
- ...utils.executeOnVue(context, obj => {
- for (const { funcName, name, node } of utils.getFunctionWithChild(obj, HOOKS, forbiddenNodes)) {
- context.report({
- node,
- messageId: 'noGlobals',
- data: {
- name,
- funcName
- }
- })
- }
- })
- }
- }
- }
|