@jahed/sparql-engine
Version:
SPARQL query engine for servers and web browsers.
41 lines • 1.03 kB
JavaScript
// SPDX-License-Identifier: MIT
import { createObserver, createSubscription } from "../../engine/pipeline/pipeline-engine.js";
export class Consumable {
subscribe(observerOrNext) {
const observer = createObserver(observerOrNext);
this.execute().then(observer.complete, observer.error);
return createSubscription();
}
forEach(cb) {
this.execute();
}
pipe(fn) {
return fn(this);
}
async *[Symbol.asyncIterator]() {
await this.execute();
}
}
export class ErrorConsumable extends Consumable {
_reason;
constructor(reason) {
super();
this._reason = new Error(reason);
}
execute() {
return Promise.reject(this._reason);
}
}
export class Consumer extends Consumable {
_source;
constructor(source) {
super();
this._source = source;
}
async execute() {
for await (const data of this._source) {
this.onData(data);
}
}
}
//# sourceMappingURL=consumer.js.map