@ts-intl/dependency
Version:
I18n keys dependency analysis
41 lines (40 loc) • 1.47 kB
JavaScript
;
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));
};