UNPKG

@jsverse/transloco-keys-manager

Version:

Extract translatable keys from projects that uses Transloco

24 lines 1.24 kB
import { tsquery } from '@phenomnomnominal/tsquery'; import ts from 'typescript'; import { buildKeysFromASTNodes } from './build-keys-from-ast-nodes.js'; function buildInjectFunctionQuery(nodeType) { return `${nodeType}:has(CallExpression:has(Identifier[name=inject]):has(Identifier[name=TranslocoService]))`; } export function serviceExtractor(ast) { const constructorInjection = 'Constructor Parameter:has(TypeReference Identifier[name=TranslocoService])'; const injectFunction = ['PropertyDeclaration', 'VariableDeclaration'].map(buildInjectFunctionQuery); const serviceNameQuery = [constructorInjection, injectFunction].join(','); const serviceNameNodes = tsquery(ast, serviceNameQuery); let result = []; for (const serviceName of serviceNameNodes) { if (ts.isParameter(serviceName) || ts.isPropertyDeclaration(serviceName) || ts.isVariableDeclaration(serviceName)) { const propName = serviceName.name.getText(); const methodNodes = tsquery(ast, `PropertyAccessExpression:has([text="${propName}"])`); result = result.concat(buildKeysFromASTNodes(methodNodes)); } } return result; } //# sourceMappingURL=service.extractor.js.map