dotnet-deps-parser
Version:
Generate a dep tree given a collection of manifests
43 lines • 2.71 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDependencyTreeFromProjectAssetsJson = void 0;
function getProjectNameForProjectAssetsJson(manifestFile) {
var _a, _b, _c;
return (_c = (_b = (_a = manifestFile === null || manifestFile === void 0 ? void 0 : manifestFile.project) === null || _a === void 0 ? void 0 : _a.restore) === null || _b === void 0 ? void 0 : _b.projectName) !== null && _c !== void 0 ? _c : {};
}
function getProjectVersionForProjectAssetsJson(manifestFile) {
var _a, _b;
return (_b = (_a = manifestFile === null || manifestFile === void 0 ? void 0 : manifestFile.project) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : {};
}
function buildPackageTree(name, version) {
const depTree = {
dependencies: {},
name,
version,
};
return depTree;
}
// Currently the function getDependencyTreeFromProjectAssetsJson returns
// a two level deep flat list of 100% of dependencies.
// TODO: Get full tree
function getDependencyTreeFromProjectAssetsJson(manifestFile, targetFrameWork) {
var _a, _b, _c, _d, _e, _f;
const projectName = getProjectNameForProjectAssetsJson(manifestFile);
const projectVersion = getProjectVersionForProjectAssetsJson(manifestFile);
const depTree = buildPackageTree(projectName, projectVersion);
const topLevelDeps = Object.keys((_b = (_a = manifestFile === null || manifestFile === void 0 ? void 0 : manifestFile.targets) === null || _a === void 0 ? void 0 : _a[targetFrameWork]) !== null && _b !== void 0 ? _b : {});
for (const topLevelDep of topLevelDeps) {
const [topLevelDepName, topLevelDepVersion] = topLevelDep.split('/');
const topLevelDepTree = buildPackageTree(topLevelDepName, topLevelDepVersion);
const transitiveDeps = (_f = (_e = (_d = (_c = manifestFile === null || manifestFile === void 0 ? void 0 : manifestFile.targets) === null || _c === void 0 ? void 0 : _c[targetFrameWork]) === null || _d === void 0 ? void 0 : _d[topLevelDep]) === null || _e === void 0 ? void 0 : _e.dependencies) !== null && _f !== void 0 ? _f : {};
for (const transitiveDep of Object.keys(transitiveDeps)) {
const transitiveDepVersion = transitiveDeps[transitiveDep];
const transitiveDepTree = buildPackageTree(transitiveDep, transitiveDepVersion);
topLevelDepTree.dependencies[transitiveDep] = transitiveDepTree;
}
depTree.dependencies[topLevelDepName] = topLevelDepTree;
}
return depTree;
}
exports.getDependencyTreeFromProjectAssetsJson = getDependencyTreeFromProjectAssetsJson;
//# sourceMappingURL=project-assets-json-parser.js.map
;