1/** 2 * @fileoverview Rule to flag usage of __proto__ property 3 * @author Ilya Volodin 4 */ 5 6"use strict"; 7 8//------------------------------------------------------------------------------ 9// Requirements 10//------------------------------------------------------------------------------ 11 12const { getStaticPropertyName } = require("./utils/ast-utils"); 13 14//------------------------------------------------------------------------------ 15// Rule Definition 16//------------------------------------------------------------------------------ 17 18module.exports = { 19 meta: { 20 type: "suggestion", 21 22 docs: { 23 description: "disallow the use of the `__proto__` property", 24 category: "Best Practices", 25 recommended: false, 26 url: "https://eslint.org/docs/rules/no-proto" 27 }, 28 29 schema: [], 30 31 messages: { 32 unexpectedProto: "The '__proto__' property is deprecated." 33 } 34 }, 35 36 create(context) { 37 38 return { 39 40 MemberExpression(node) { 41 if (getStaticPropertyName(node) === "__proto__") { 42 context.report({ node, messageId: "unexpectedProto" }); 43 } 44 } 45 }; 46 47 } 48}; 49