solid-panes
Version:
Solid-compatible Panes: applets and views for the mashlib and databrowser
23 lines (22 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generateRandomString = generateRandomString;
exports.getStatementsToAdd = getStatementsToAdd;
exports.getStatementsToDelete = getStatementsToDelete;
var _rdflib = require("rdflib");
function getStatementsToDelete(origin, person, kb, ns) {
const applicationStatements = kb.statementsMatching(null, ns.acl('origin'), origin);
const statementsToDelete = applicationStatements.reduce((memo, st) => {
return memo.concat(kb.statementsMatching(person, ns.acl('trustedApp'), st.subject)).concat(kb.statementsMatching(st.subject));
}, []);
return statementsToDelete;
}
function getStatementsToAdd(origin, nodeName, modes, person, ns) {
const application = new _rdflib.BlankNode(`bn_${nodeName}`); // NamedNode(`${person.doc().uri}#${nodeName}`)
return [(0, _rdflib.st)(person, ns.acl('trustedApp'), application, person.doc()), (0, _rdflib.st)(application, ns.acl('origin'), origin, person.doc()), ...modes.map(mode => (0, _rdflib.sym)(mode)).map(mode => (0, _rdflib.st)(application, ns.acl('mode'), mode, person.doc()))];
}
function generateRandomString() {
return Math.random().toString(36).substr(2, 5);
}