@ts-intl/dependency
Version:
I18n keys dependency analysis
29 lines (28 loc) • 982 B
JavaScript
import { getModulesDependencies } from './graph';
import { offsprings } from './madge';
/**
* generate new pathIntlKeysMap which only includes offsprings of modules
* @param modules
* @param graph
* @param pathIntlKeysMap
* @returns
*/
export const extractPathIntlKeysMap = (modules, graph, pathIntlKeysMap, ignoreEmpty = false) => {
const modulesDepsMap = getModulesDependencies(modules, graph);
return Object.fromEntries(Object.keys(pathIntlKeysMap)
.filter((v) => (!ignoreEmpty || pathIntlKeysMap[v].length) && modulesDepsMap[v])
.map((v) => [v, pathIntlKeysMap[v]]));
};
/**
* get intl keys of a module and offsprings
* @param module
* @param graph
* @param pathIntlKeysMap
* @returns
*/
export const getModuleIntlKeysMap = (module, graph, pathIntlKeysMap) => {
return offsprings(module, graph).reduce((keys, module) => {
(pathIntlKeysMap[module] || []).forEach((key) => keys.add(key));
return keys;
}, new Set());
};