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