import * as ESTree from 'estree'; import { NodeGuards } from './NodeGuards'; export class NodeLiteralUtils { /** * @param {Literal} literalNode * @returns {literalNode is (SimpleLiteral & {value: string})} */ public static isStringLiteralNode (literalNode: ESTree.Literal): literalNode is ESTree.Literal & {value: string} { return typeof literalNode.value === 'string'; } /** * @param {Literal} literalNode * @param {Node} parentNode * @returns {boolean} */ public static isProhibitedLiteralNode (literalNode: ESTree.Literal, parentNode: ESTree.Node): boolean { if (NodeGuards.isPropertyNode(parentNode) && !parentNode.computed && parentNode.key === literalNode) { return true; } if (NodeGuards.isImportDeclarationNode(parentNode)) { return true; } if (NodeGuards.isExportAllDeclarationNode(parentNode) || NodeGuards.isExportNamedDeclarationNode(parentNode)) { return true; } return false; } }