@solid/community-server
Version:
Community Solid Server: an open and modular implementation of the Solid specifications
43 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaticStorageDescriber = void 0;
const n3_1 = require("n3");
const rdf_string_1 = require("rdf-string");
const StorageDescriber_1 = require("./StorageDescriber");
/**
* Adds a fixed set of triples to the storage description resource,
* with the resource identifier as subject.
*
* This can be used to add descriptions that a storage always needs to have,
* such as the `<> a pim:Storage` triple.
*/
class StaticStorageDescriber extends StorageDescriber_1.StorageDescriber {
terms;
constructor(terms) {
super();
const termMap = new Map();
for (const [predicate, objects] of Object.entries(terms)) {
const predTerm = (0, rdf_string_1.stringToTerm)(predicate);
if (predTerm.termType !== 'NamedNode') {
throw new Error('Predicate needs to be a named node.');
}
const objTerms = (Array.isArray(objects) ? objects : [objects]).map((obj) => (0, rdf_string_1.stringToTerm)(obj));
// `stringToTerm` can only generate valid term types
termMap.set(predTerm, objTerms);
}
this.terms = termMap;
}
async handle(target) {
const subject = n3_1.DataFactory.namedNode(target.path);
return [...this.generateTriples(subject)];
}
*generateTriples(subject) {
for (const [predicate, objects] of this.terms.entries()) {
for (const object of objects) {
yield n3_1.DataFactory.quad(subject, predicate, object);
}
}
}
}
exports.StaticStorageDescriber = StaticStorageDescriber;
//# sourceMappingURL=StaticStorageDescriber.js.map