UNPKG

quadstore

Version:

Quadstore is a LevelDB-backed RDF graph database / triplestore for JavaScript runtimes (browsers, Node.js, Deno, Bun, ...) that implements the RDF/JS interfaces and supports SPARQL queries and querying across named graphs.

49 lines 1.41 kB
export const consumeOneByOne = async (source, onEachItem) => { return new Promise((resolve, reject) => { let item; let ended = false; let looping = false; const loop = () => { looping = true; if ((item = source.read()) !== null) { Promise.resolve(onEachItem(item)) .then(loop) .catch(onError); return; } looping = false; if (ended) { resolve(); } }; const onError = (err) => { reject(err); cleanup(); }; const onEnd = () => { ended = true; if (!looping) { resolve(); } cleanup(); }; const onReadable = () => { if (!looping) { loop(); } }; const cleanup = () => { source.removeListener('end', onEnd); source.removeListener('error', onError); source.removeListener('readable', onReadable); source.destroy?.(); }; source.on('end', onEnd); source.on('error', onError); source.on('readable', onReadable); if ('readable' in source && source.readable) { loop(); } }); }; //# sourceMappingURL=consumeonebyone.js.map