streams
Version:
A lazy streams library for functional composition in JavaScript.
35 lines • 3.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromEvent = fromEvent;
exports.fromEventPattern = fromEventPattern;
const async_iterator_pair_1 = require("../util/async-iterator-pair");
function fromEvent(target, eventName, options) {
if (typeof target.on === "function") {
return fromEventPattern((handler) => target.on(eventName, handler), (handler) => target.off?.(eventName, handler));
}
else if (typeof target.addListener === "function") {
return fromEventPattern((handler) => target.addListener(eventName, handler), (handler) => target.removeListener?.(eventName, handler));
}
else if (typeof target.addEventListener === "function") {
return fromEventPattern((handler) => target.addEventListener(eventName, handler, options), (handler) => target.removeEventListener?.(eventName, handler, options));
}
throw new TypeError("unsupported event target");
}
function fromEventPattern(addHandler, removeHandler) {
const [eventConsumer, eventProducer] = (0, async_iterator_pair_1.makeAsyncGeneratorPair)({
onReturn: stop,
});
const eventHandler = (value) => eventProducer.next(value);
function start() {
addHandler(eventHandler);
}
function stop() {
removeHandler?.(eventHandler);
}
async function* eventGenerator() {
start();
return yield* eventConsumer;
}
return eventGenerator();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291cmNlcy9ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStCQSw4QkFzQkM7QUFFRCw0Q0F5QkM7QUFoRkQscUVBQXFFO0FBK0JyRSxTQUFnQixTQUFTLENBQ3ZCLE1BQXVCLEVBQ3ZCLFNBQTBCLEVBQzFCLE9BQWdCO0lBRWhCLElBQUksT0FBTyxNQUFNLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQ3JCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFDM0MsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQzlDLENBQUM7SUFDSixDQUFDO1NBQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDcEQsT0FBTyxnQkFBZ0IsQ0FDckIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUNwRCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7U0FBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3pELE9BQU8sZ0JBQWdCLENBQ3JCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWlCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFDbEUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxJQUFJLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsVUFBOEMsRUFDOUMsYUFBa0Q7SUFFbEQsTUFBTSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxJQUFBLDRDQUFzQixFQUFlO1FBQzFFLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0QsU0FBUyxLQUFLO1FBQ1osVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLElBQUk7UUFDWCxhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxTQUFTLENBQUMsQ0FBQyxjQUFjO1FBQzVCLEtBQUssRUFBRSxDQUFDO1FBRVIsT0FBTyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sY0FBYyxFQUFFLENBQUM7QUFDMUIsQ0FBQyJ9