UNPKG

@thi.ng/transducers-async

Version:

Async versions of various highly composable transducers, reducers and iterators

32 lines (31 loc) 730 B
import { compR } from "./compr.js"; import { iterator1 } from "./iterator.js"; function intercept(interceptors = [], src) { if (src) return iterator1(intercept(interceptors), src); const xform = (rfn) => compR(rfn, async (acc, x) => { for (let fn of interceptors) { const res = await fn(x); if (res == null) return acc; x = res; } return rfn[2](acc, x); }); xform.prepend = (fn) => { interceptors.unshift(fn); }; xform.append = (fn) => { interceptors.push(fn); }; xform.remove = (fn) => { const idx = interceptors.indexOf(fn); if (idx >= 0) { interceptors.splice(idx, 1); return true; } return false; }; return xform; } export { intercept };