@amplience/dc-cli
Version:
Dynamic Content CLI Tool
24 lines (23 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.dedupeContentItems = void 0;
const dc_management_sdk_js_1 = require("dc-management-sdk-js");
const content_mapping_1 = require("../content-mapping");
const content_dependancy_tree_1 = require("./content-dependancy-tree");
const dedupeContentItems = (contentItems) => {
const repoContentItems = contentItems.map(content => ({ repo: new dc_management_sdk_js_1.ContentRepository(), content }));
const contentTree = new content_dependancy_tree_1.ContentDependancyTree(repoContentItems, new content_mapping_1.ContentMapping());
const dedupedContentItems = contentTree.all
.filter(node => {
let isTopLevel = true;
contentTree.traverseDependants(node, dependant => {
if (dependant != node && contentTree.all.findIndex(entry => entry === dependant) !== -1) {
isTopLevel = false;
}
}, true);
return isTopLevel;
})
.map(node => node.owner.content);
return dedupedContentItems;
};
exports.dedupeContentItems = dedupeContentItems;