UNPKG

@ts-intl/dependency

Version:

I18n keys dependency analysis

18 lines (17 loc) 676 B
import { createSourceFile, forEachChild, ScriptTarget, SyntaxKind, } from 'typescript'; import { extractIntlKeyArg, isIntlCall } from './utils'; export const extractIntlKeysFromCode = (sourceText, opts) => { const sourceFile = createSourceFile('source.tsx', sourceText, ScriptTarget.Latest); const res = new Set(); const traverse = (node) => { if (node.kind === SyntaxKind.CallExpression) { const key = extractIntlKeyArg(node, opts.argIdx); if (key && isIntlCall(node, opts)) { res.add(key.text); } } forEachChild(node, traverse); }; traverse(sourceFile); return [...res]; };