UNPKG

@ts-intl/dependency

Version:

I18n keys dependency analysis

62 lines (61 loc) 2.33 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import madge from 'madge'; import { offsprings } from './madge'; /** * collect graph of given path, no recursion * @param module * @param madgeConfig * @returns */ export const getDependenciesNoRecursion = (module, madgeConfig) => __awaiter(void 0, void 0, void 0, function* () { const instance = yield madge(module, Object.assign(Object.assign({}, madgeConfig), { dependencyFilter: (id) => id === module })); return instance.obj()[module] || []; }); export const getModulesDependencies = (modules, graph) => { return modules.reduce((all, module) => { offsprings(module, graph).forEach((v) => (all[v] = true)); return all; }, {}); }; /** * generate new graph without given module * @param module * @param graph * @returns */ export const deleteModule = (module, graph) => __awaiter(void 0, void 0, void 0, function* () { const depends = (yield madge(graph)).depends(module); const res = Object.assign({}, graph); delete res[module]; depends.forEach((v) => { res[v] = res[v].filter((v) => v !== module); }); return res; }); /** * generate new graph with changed module * @param module * @param graph * @returns */ export const changeModule = (fromModule, toModule, graph) => __awaiter(void 0, void 0, void 0, function* () { const depends = (yield madge(graph)).depends(fromModule); const res = Object.assign({}, graph); res[toModule] = res[fromModule]; delete res[fromModule]; depends.forEach((v) => { const idx = res[v].indexOf(fromModule); if (idx !== -1) { res[v][idx] = toModule; } }); return res; });