You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
ldo-compact-fork/packages/connected/src/util/splitChangesByGraph.js

45 lines
1.8 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.splitChangesByGraph = exports.stringToGraphNode = exports.graphNodeToString = void 0;
const dataset_1 = require("@ldo/dataset");
const data_model_1 = require("@rdfjs/data-model");
function graphNodeToString(graphNode) {
return graphNode.termType === "DefaultGraph"
? "defaultGraph()"
: graphNode.value;
}
exports.graphNodeToString = graphNodeToString;
function stringToGraphNode(input) {
return input === "defaultGraph()" ? (0, data_model_1.defaultGraph)() : (0, data_model_1.namedNode)(input);
}
exports.stringToGraphNode = stringToGraphNode;
function splitChangesByGraph(changes) {
const changesMap = {};
changes.added?.forEach((quad) => {
const graphHash = graphNodeToString(quad.graph);
if (!changesMap[graphHash]) {
changesMap[graphHash] = {};
}
if (!changesMap[graphHash].added) {
changesMap[graphHash].added = (0, dataset_1.createDataset)();
}
changesMap[graphHash].added?.add((0, data_model_1.quad)(quad.subject, quad.predicate, quad.object, quad.graph));
});
changes.removed?.forEach((quad) => {
const graphHash = graphNodeToString(quad.graph);
if (!changesMap[graphHash]) {
changesMap[graphHash] = {};
}
if (!changesMap[graphHash].removed) {
changesMap[graphHash].removed = (0, dataset_1.createDataset)();
}
changesMap[graphHash].removed?.add((0, data_model_1.quad)(quad.subject, quad.predicate, quad.object, quad.graph));
});
const finalMap = new Map();
Object.entries(changesMap).forEach(([key, value]) => {
finalMap.set(stringToGraphNode(key), value);
});
return finalMap;
}
exports.splitChangesByGraph = splitChangesByGraph;
//# sourceMappingURL=splitChangesByGraph.js.map