UNPKG

eslint-plugin-etc

Version:
50 lines (49 loc) 1.63 kB
"use strict"; const eslint_etc_1 = require("eslint-etc"); const tsutils = require("tsutils"); const ts = require("typescript"); const utils_1 = require("../utils"); const defaultOptions = []; const rule = (0, utils_1.ruleCreator)({ defaultOptions, meta: { docs: { description: "Forbids the use of `const enum`.", recommended: false, }, fixable: undefined, hasSuggestions: false, messages: { forbidden: "`const enum` is forbidden.", }, schema: [ { properties: { allowLocal: { type: "boolean" }, }, type: "object", }, ], type: "problem", }, name: "no-const-enum", create: (context, unused) => ({ TSEnumDeclaration: (node) => { const [{ allowLocal = false } = {}] = context.options; const { esTreeNodeToTSNodeMap } = (0, eslint_etc_1.getParserServices)(context); const enumDeclaration = esTreeNodeToTSNodeMap.get(node); if (allowLocal && !tsutils.hasModifier(enumDeclaration.modifiers, ts.SyntaxKind.ExportKeyword)) { return; } if (!tsutils.hasModifier(enumDeclaration.modifiers, ts.SyntaxKind.ConstKeyword)) { return; } context.report({ messageId: "forbidden", loc: (0, eslint_etc_1.getLoc)(enumDeclaration.name), }); }, }), }); module.exports = rule;