UNPKG

@ts-intl/dependency

Version:

I18n keys dependency analysis

41 lines (40 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isIntlCall = void 0; const typescript_1 = require("typescript"); const isIntlCall = (node, opts) => { const { funcNamePattern = '', hookNamePattern = '', richNamePattern = '', } = opts; // t() const funcNameRegexp = new RegExp(funcNamePattern); if (testName(node.expression, funcNameRegexp)) { return true; } const expression = node.expression; // useHook()() const hookNameRegexp = new RegExp(hookNamePattern); if (expression.kind === typescript_1.SyntaxKind.CallExpression && testName(expression.expression, hookNameRegexp)) { return true; } const richNameRegexp = new RegExp(richNamePattern); if (expression.kind === typescript_1.SyntaxKind.PropertyAccessExpression && testName(expression.name, richNameRegexp)) { const pNode = expression.expression; // t.rich() if (testName(pNode, funcNameRegexp)) return true; // useHook().rich() const hNode = pNode.expression; if (hNode.kind === typescript_1.SyntaxKind.CallExpression && testName(hNode.expression, hookNameRegexp)) { return true; } return true; } return false; }; exports.isIntlCall = isIntlCall; const testName = (node, regexp) => { return (node.kind === typescript_1.SyntaxKind.Identifier && regexp.test(node.text)); };