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.

47 lines 1.57 kB
import SortedSet from 'js-sorted-set'; import { AsyncIterator } from 'asynciterator'; export class SortingIterator extends AsyncIterator { constructor(source, compare, digest, emit) { super(); let iterator; const startBuffering = () => { const set = new SortedSet({ comparator: compare }); const cleanup = () => { source.removeListener('data', onData); source.removeListener('error', onError); source.removeListener('end', onEnd); source.destroy(); }; const onData = (item) => { set.insert(digest(item)); }; const onError = (err) => { cleanup(); this.emit('error', err); }; const onEnd = () => { cleanup(); iterator = set.beginIterator(); this.readable = true; }; source.on('data', onData); source.on('error', onError); source.on('end', onEnd); }; this.read = () => { if (iterator) { const value = iterator.value(); if (value === null) { this.close(); return null; } iterator = iterator.next(); return emit(value); } this.readable = false; return null; }; queueMicrotask(startBuffering); } } //# sourceMappingURL=sortingiterator.js.map