rdf-dereference-store
Version:
Dereference RDF to a store
39 lines (38 loc) • 2.37 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.streamToStore = streamToStore;
exports.default = dereferenceToStore;
exports.parse = parse;
const n3_1 = require("n3");
const rdf_dereference_1 = require("rdf-dereference");
const rdf_parse_1 = require("rdf-parse");
const event_emitter_promisify_1 = require("event-emitter-promisify");
const readable_stream_1 = require("readable-stream");
const asynciterator_1 = require("asynciterator");
function streamToStore(data) {
const res = { store: new n3_1.Store(), prefixes: {} };
data.on('prefix', (prefix, ns) => { res.prefixes[prefix] = typeof ns === 'string' ? ns : ns.value; });
return (0, event_emitter_promisify_1.promisifyEventEmitter)(res.store.import(data), res);
}
function dereferenceToStore(input, options) {
return __awaiter(this, void 0, void 0, function* () {
const stream = Array.isArray(input)
? new asynciterator_1.UnionIterator(input.map((url) => __awaiter(this, void 0, void 0, function* () { return (yield rdf_dereference_1.rdfDereferencer.dereference(url, options)).data; })).map((it) => (0, asynciterator_1.wrap)(it.then((itResolved) => (itResolved.on('prefix', (...args) => stream.emit('prefix', ...args)), itResolved)), { autoStart: false })), { autoStart: false })
: (yield rdf_dereference_1.rdfDereferencer.dereference(input, options)).data;
return streamToStore(stream);
});
}
function parse(input, options) {
return __awaiter(this, void 0, void 0, function* () {
return streamToStore(rdf_parse_1.rdfParser.parse(typeof input === 'string' ? readable_stream_1.Readable.from([input]) : input, options));
});
}
;