| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /** * @fileoverview Reject use of Components.classes etc, prefer the shorthand instead. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */"use strict";const componentsMap = {  classes: "Cc",  interfaces: "Ci",  results: "Cr",  utils: "Cu",};module.exports = {  meta: {    docs: {      url:        "https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint-plugin-mozilla/use-cc-etc.html",    },    type: "suggestion",    fixable: "code",  },  create(context) {    return {      MemberExpression(node) {        if (          node.object.type === "Identifier" &&          node.object.name === "Components" &&          node.property.type === "Identifier" &&          Object.getOwnPropertyNames(componentsMap).includes(node.property.name)        ) {          context.report({            node,            message: `Use ${              componentsMap[node.property.name]            } rather than Components.${node.property.name}`,            fix: fixer =>              fixer.replaceTextRange(                [node.range[0], node.range[1]],                componentsMap[node.property.name]              ),          });        }      },    };  },};
 |