UNPKG

wonka

Version:

A tiny but capable push & pull stream library for TypeScript and Flow

1,364 lines (1,303 loc) 24 kB
var teardownPlaceholder = () => {}; var e = teardownPlaceholder; function start(e) { return { tag: 0, 0: e }; } function push(e) { return { tag: 1, 0: e }; } var asyncIteratorSymbol = () => "function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"; var observableSymbol = () => "function" == typeof Symbol && Symbol.observable || "@@observable"; var identity = e => e; function buffer(r) { return t => i => { var a = []; var f = e; var n = e; var s = !1; var l = !1; t((e => { if (l) {} else if (0 === e) { l = !0; n(1); if (a.length) { i(push(a)); } i(0); } else if (0 === e.tag) { f = e[0]; r((e => { if (l) {} else if (0 === e) { l = !0; f(1); if (a.length) { i(push(a)); } i(0); } else if (0 === e.tag) { n = e[0]; } else if (a.length) { var r = push(a); a = []; i(r); } })); } else { a.push(e[0]); if (!s) { s = !0; f(0); n(0); } else { s = !1; } } })); i(start((e => { if (1 === e && !l) { l = !0; f(1); n(1); } else if (!l && !s) { s = !0; f(0); n(0); } }))); }; } function concatMap(r) { return t => i => { var a = []; var f = e; var n = e; var s = !1; var l = !1; var u = !1; var o = !1; function applyInnerSource(e) { u = !0; e((e => { if (0 === e) { if (u) { u = !1; if (a.length) { applyInnerSource(r(a.shift())); } else if (o) { i(0); } else if (!s) { s = !0; f(0); } } } else if (0 === e.tag) { l = !1; (n = e[0])(0); } else if (u) { i(e); if (l) { l = !1; } else { n(0); } } })); } t((e => { if (o) {} else if (0 === e) { o = !0; if (!u && !a.length) { i(0); } } else if (0 === e.tag) { f = e[0]; } else { s = !1; if (u) { a.push(e[0]); } else { applyInnerSource(r(e[0])); } } })); i(start((e => { if (1 === e) { if (!o) { o = !0; f(1); } if (u) { u = !1; n(1); } } else { if (!o && !s) { s = !0; f(0); } if (u && !l) { l = !0; n(0); } } }))); }; } function concatAll(e) { return concatMap(identity)(e); } function concat(e) { return concatAll(r(e)); } function filter(r) { return t => i => { var a = e; t((e => { if (0 === e) { i(0); } else if (0 === e.tag) { a = e[0]; i(e); } else if (!r(e[0])) { a(0); } else { i(e); } })); }; } function map(e) { return r => t => r((r => { if (0 === r || 0 === r.tag) { t(r); } else { t(push(e(r[0]))); } })); } function mergeMap(r) { return t => i => { var a = []; var f = e; var n = !1; var s = !1; t((t => { if (s) {} else if (0 === t) { s = !0; if (!a.length) { i(0); } } else if (0 === t.tag) { f = t[0]; } else { n = !1; !function applyInnerSource(r) { var t = e; r((e => { if (0 === e) { if (a.length) { var r = a.indexOf(t); if (r > -1) { (a = a.slice()).splice(r, 1); } if (!a.length) { if (s) { i(0); } else if (!n) { n = !0; f(0); } } } } else if (0 === e.tag) { a.push(t = e[0]); t(0); } else if (a.length) { i(e); t(0); } })); }(r(t[0])); if (!n) { n = !0; f(0); } } })); i(start((e => { if (1 === e) { if (!s) { s = !0; f(1); } for (var r = 0, t = a, i = a.length; r < i; r++) { t[r](1); } a.length = 0; } else { if (!s && !n) { n = !0; f(0); } else { n = !1; } for (var l = 0, u = a, o = a.length; l < o; l++) { u[l](0); } } }))); }; } function mergeAll(e) { return mergeMap(identity)(e); } function merge(e) { return mergeAll(r(e)); } function onEnd(e) { return r => t => { var i = !1; r((r => { if (i) {} else if (0 === r) { i = !0; t(0); e(); } else if (0 === r.tag) { var a = r[0]; t(start((r => { if (1 === r) { i = !0; a(1); e(); } else { a(r); } }))); } else { t(r); } })); }; } function onPush(e) { return r => t => { var i = !1; r((r => { if (i) {} else if (0 === r) { i = !0; t(0); } else if (0 === r.tag) { var a = r[0]; t(start((e => { if (1 === e) { i = !0; } a(e); }))); } else { e(r[0]); t(r); } })); }; } function onStart(e) { return r => t => r((r => { if (0 === r) { t(0); } else if (0 === r.tag) { t(r); e(); } else { t(r); } })); } function sample(r) { return t => i => { var a = e; var f = e; var n; var s = !1; var l = !1; t((e => { if (l) {} else if (0 === e) { l = !0; f(1); i(0); } else if (0 === e.tag) { a = e[0]; } else { n = e[0]; if (!s) { s = !0; f(0); a(0); } else { s = !1; } } })); r((e => { if (l) {} else if (0 === e) { l = !0; a(1); i(0); } else if (0 === e.tag) { f = e[0]; } else if (void 0 !== n) { var r = push(n); n = void 0; i(r); } })); i(start((e => { if (1 === e && !l) { l = !0; a(1); f(1); } else if (!l && !s) { s = !0; a(0); f(0); } }))); }; } function scan(e, r) { return t => i => { var a = r; t((r => { if (0 === r) { i(0); } else if (0 === r.tag) { i(r); } else { i(push(a = e(a, r[0]))); } })); }; } function share(r) { var t = []; var i = e; var a = !1; return e => { t.push(e); if (1 === t.length) { r((e => { if (0 === e) { for (var r = 0, f = t, n = t.length; r < n; r++) { f[r](0); } t.length = 0; } else if (0 === e.tag) { i = e[0]; } else { a = !1; for (var s = 0, l = t, u = t.length; s < u; s++) { l[s](e); } } })); } e(start((r => { if (1 === r) { var f = t.indexOf(e); if (f > -1) { (t = t.slice()).splice(f, 1); } if (!t.length) { i(1); } } else if (!a) { a = !0; i(0); } }))); }; } function skip(r) { return t => i => { var a = e; var f = r; t((e => { if (0 === e) { i(0); } else if (0 === e.tag) { a = e[0]; i(e); } else if (f-- > 0) { a(0); } else { i(e); } })); }; } function skipUntil(r) { return t => i => { var a = e; var f = e; var n = !0; var s = !1; var l = !1; t((e => { if (l) {} else if (0 === e) { l = !0; if (n) { f(1); } i(0); } else if (0 === e.tag) { a = e[0]; r((e => { if (0 === e) { if (n) { l = !0; a(1); } } else if (0 === e.tag) { (f = e[0])(0); } else { n = !1; f(1); } })); } else if (!n) { s = !1; i(e); } else if (!s) { s = !0; a(0); f(0); } else { s = !1; } })); i(start((e => { if (1 === e && !l) { l = !0; a(1); if (n) { f(1); } } else if (!l && !s) { s = !0; if (n) { f(0); } a(0); } }))); }; } function skipWhile(r) { return t => i => { var a = e; var f = !0; t((e => { if (0 === e) { i(0); } else if (0 === e.tag) { a = e[0]; i(e); } else if (f) { if (r(e[0])) { a(0); } else { f = !1; i(e); } } else { i(e); } })); }; } function switchMap(r) { return t => i => { var a = e; var f = e; var n = !1; var s = !1; var l = !1; var u = !1; t((t => { if (u) {} else if (0 === t) { u = !0; if (!l) { i(0); } } else if (0 === t.tag) { a = t[0]; } else { if (l) { f(1); f = e; } if (!n) { n = !0; a(0); } else { n = !1; } !function applyInnerSource(e) { l = !0; e((e => { if (!l) {} else if (0 === e) { l = !1; if (u) { i(0); } else if (!n) { n = !0; a(0); } } else if (0 === e.tag) { s = !1; (f = e[0])(0); } else { i(e); if (!s) { f(0); } else { s = !1; } } })); }(r(t[0])); } })); i(start((e => { if (1 === e) { if (!u) { u = !0; a(1); } if (l) { l = !1; f(1); } } else { if (!u && !n) { n = !0; a(0); } if (l && !s) { s = !0; f(0); } } }))); }; } function switchAll(e) { return switchMap(identity)(e); } function take(r) { return t => i => { var a = e; var f = !1; var n = 0; t((e => { if (f) {} else if (0 === e) { f = !0; i(0); } else if (0 === e.tag) { if (r <= 0) { f = !0; i(0); e[0](1); } else { a = e[0]; } } else if (n++ < r) { i(e); if (!f && n >= r) { f = !0; i(0); a(1); } } else { i(e); } })); i(start((e => { if (1 === e && !f) { f = !0; a(1); } else if (0 === e && !f && n < r) { a(0); } }))); }; } function takeLast(t) { return i => a => { var f = []; var n = e; i((e => { if (0 === e) { r(f)(a); } else if (0 === e.tag) { if (t <= 0) { e[0](1); r(f)(a); } else { (n = e[0])(0); } } else { if (f.length >= t && t) { f.shift(); } f.push(e[0]); n(0); } })); }; } function takeUntil(r) { return t => i => { var a = e; var f = e; var n = !1; t((e => { if (n) {} else if (0 === e) { n = !0; f(1); i(0); } else if (0 === e.tag) { a = e[0]; r((e => { if (0 === e) {} else if (0 === e.tag) { (f = e[0])(0); } else { n = !0; f(1); a(1); i(0); } })); } else { i(e); } })); i(start((e => { if (1 === e && !n) { n = !0; a(1); f(1); } else if (!n) { a(0); } }))); }; } function takeWhile(r, t) { return i => a => { var f = e; var n = !1; i((e => { if (n) {} else if (0 === e) { n = !0; a(0); } else if (0 === e.tag) { f = e[0]; a(e); } else if (!r(e[0])) { n = !0; if (t) { a(e); } a(0); f(1); } else { a(e); } })); }; } function debounce(e) { return r => t => { var i; var a = !1; var f = !1; r((r => { if (f) {} else if (0 === r) { f = !0; if (i) { a = !0; } else { t(0); } } else if (0 === r.tag) { var n = r[0]; t(start((e => { if (1 === e && !f) { f = !0; a = !1; if (i) { clearTimeout(i); } n(1); } else if (!f) { n(0); } }))); } else { if (i) { clearTimeout(i); } i = setTimeout((() => { i = void 0; t(r); if (a) { t(0); } }), e(r[0])); } })); }; } function delay(e) { return r => t => { var i = 0; r((r => { if (0 !== r && 0 === r.tag) { t(r); } else { i++; setTimeout((() => { if (i) { i--; t(r); } }), e); } })); }; } function throttle(e) { return r => t => { var i = !1; var a; r((r => { if (0 === r) { if (a) { clearTimeout(a); } t(0); } else if (0 === r.tag) { var f = r[0]; t(start((e => { if (1 === e) { if (a) { clearTimeout(a); } f(1); } else { f(0); } }))); } else if (!i) { i = !0; if (a) { clearTimeout(a); } a = setTimeout((() => { a = void 0; i = !1; }), e(r[0])); t(r); } })); }; } function lazy(e) { return r => e()(r); } function fromAsyncIterable(e) { return r => { var t = e[asyncIteratorSymbol()] && e[asyncIteratorSymbol()]() || e; var i = !1; var a = !1; var f = !1; var n; r(start((async e => { if (1 === e) { i = !0; if (t.return) { t.return(); } } else if (a) { f = !0; } else { for (f = a = !0; f && !i; ) { if ((n = await t.next()).done) { i = !0; if (t.return) { await t.return(); } r(0); } else { try { f = !1; r(push(n.value)); } catch (e) { if (t.throw) { if (i = !!(await t.throw(e)).done) { r(0); } } else { throw e; } } } } a = !1; } }))); }; } function fromIterable(e) { if (e[Symbol.asyncIterator]) { return fromAsyncIterable(e); } return r => { var t = e[Symbol.iterator](); var i = !1; var a = !1; var f = !1; var n; r(start((e => { if (1 === e) { i = !0; if (t.return) { t.return(); } } else if (a) { f = !0; } else { for (f = a = !0; f && !i; ) { if ((n = t.next()).done) { i = !0; if (t.return) { t.return(); } r(0); } else { try { f = !1; r(push(n.value)); } catch (e) { if (t.throw) { if (i = !!t.throw(e).done) { r(0); } } else { throw e; } } } } a = !1; } }))); }; } var r = fromIterable; function fromValue(e) { return r => { var t = !1; r(start((i => { if (1 === i) { t = !0; } else if (!t) { t = !0; r(push(e)); r(0); } }))); }; } function make(e) { return r => { var t = !1; var i = e({ next(e) { if (!t) { r(push(e)); } }, complete() { if (!t) { t = !0; r(0); } } }); r(start((e => { if (1 === e && !t) { t = !0; i(); } }))); }; } function makeSubject() { var e; var r; return { source: share(make((t => { e = t.next; r = t.complete; return teardownPlaceholder; }))), next(r) { if (e) { e(r); } }, complete() { if (r) { r(); } } }; } var empty = e => { var r = !1; e(start((t => { if (1 === t) { r = !0; } else if (!r) { r = !0; e(0); } }))); }; var never = r => { r(start(e)); }; function interval(e) { return make((r => { var t = 0; var i = setInterval((() => r.next(t++)), e); return () => clearInterval(i); })); } function fromDomEvent(e, r) { return make((t => { e.addEventListener(r, t.next); return () => e.removeEventListener(r, t.next); })); } function fromPromise(e) { return make((r => { e.then((e => { Promise.resolve(e).then((() => { r.next(e); r.complete(); })); })); return teardownPlaceholder; })); } function subscribe(r) { return t => { var i = e; var a = !1; t((e => { if (0 === e) { a = !0; } else if (0 === e.tag) { (i = e[0])(0); } else if (!a) { r(e[0]); i(0); } })); return { unsubscribe() { if (!a) { a = !0; i(1); } } }; }; } function forEach(e) { return r => { subscribe(e)(r); }; } function publish(e) { subscribe((e => {}))(e); } var t = { done: !0 }; var toAsyncIterable = r => { var i = []; var a = !1; var f = !1; var n = !1; var s = e; var l; return { async next() { if (!f) { f = !0; r((e => { if (a) {} else if (0 === e) { if (l) { l = l(t); } a = !0; } else if (0 === e.tag) { n = !0; (s = e[0])(0); } else { n = !1; if (l) { l = l({ value: e[0], done: !1 }); } else { i.push(e[0]); } } })); } if (a && !i.length) { return t; } else if (!a && !n && i.length <= 1) { n = !0; s(0); } return i.length ? { value: i.shift(), done: !1 } : new Promise((e => l = e)); }, async return() { if (!a) { l = s(1); } a = !0; return t; }, [asyncIteratorSymbol()]() { return this; } }; }; function toArray(r) { var t = []; var i = e; var a = !1; r((e => { if (0 === e) { a = !0; } else if (0 === e.tag) { (i = e[0])(0); } else { t.push(e[0]); i(0); } })); if (!a) { i(1); } return t; } function toPromise(r) { return new Promise((t => { var i = e; var a; r((e => { if (0 === e) { Promise.resolve(a).then(t); } else if (0 === e.tag) { (i = e[0])(0); } else { a = e[0]; i(0); } })); })); } function zip(r) { var t = Object.keys(r).length; return i => { var a = new Set; var f = Array.isArray(r) ? new Array(t).fill(e) : {}; var n = Array.isArray(r) ? new Array(t) : {}; var s = !1; var l = !1; var u = !1; var o = 0; var loop = function(v) { r[v]((c => { if (0 === c) { if (o >= t - 1) { u = !0; i(0); } else { o++; } } else if (0 === c.tag) { f[v] = c[0]; } else if (!u) { n[v] = c[0]; a.add(v); if (!s && a.size < t) { if (!l) { for (var h in r) { if (!a.has(h)) { (f[h] || e)(0); } } } else { l = !1; } } else { s = !0; l = !1; i(push(Array.isArray(n) ? n.slice() : { ...n })); } } })); }; for (var v in r) { loop(v); } i(start((e => { if (u) {} else if (1 === e) { u = !0; for (var r in f) { f[r](1); } } else if (!l) { l = !0; for (var t in f) { f[t](0); } } }))); }; } function combine(...e) { return zip(e); } function fromObservable(e) { return r => { var t = (e[observableSymbol()] ? e[observableSymbol()]() : e).subscribe({ next(e) { r(push(e)); }, complete() { r(0); }, error(e) { throw e; } }); r(start((e => { if (1 === e) { t.unsubscribe(); } }))); }; } function toObservable(r) { return { subscribe(t, i, a) { var f = "object" == typeof t ? t : { next: t, error: i, complete: a }; var n = e; var s = !1; r((e => { if (s) {} else if (0 === e) { s = !0; if (f.complete) { f.complete(); } } else if (0 === e.tag) { (n = e[0])(0); } else { f.next(e[0]); n(0); } })); var l = { closed: !1, unsubscribe() { l.closed = !0; s = !0; n(1); } }; return l; }, [observableSymbol()]() { return this; } }; } function fromCallbag(e) { return r => { e(0, ((e, t) => { if (0 === e) { r(start((e => { t(e + 1); }))); } else if (1 === e) { r(push(t)); } else { r(0); } })); }; } function toCallbag(e) { return (r, t) => { if (0 === r) { e((e => { if (0 === e) { t(2); } else if (0 === e.tag) { t(0, (r => { if (r < 3) { e[0](r - 1); } })); } else { t(1, e[0]); } })); } }; } var pipe = (...e) => { var r = e[0]; for (var t = 1, i = e.length; t < i; t++) { r = e[t](r); } return r; }; export { buffer, combine, concat, concatAll, concatMap, debounce, delay, empty, filter, mergeAll as flatten, forEach, r as fromArray, fromAsyncIterable, fromCallbag, fromDomEvent, fromIterable, fromObservable, fromPromise, fromValue, interval, lazy, make, makeSubject, map, merge, mergeAll, mergeMap, never, onEnd, onPush, onStart, pipe, publish, sample, scan, share, skip, skipUntil, skipWhile, subscribe, switchAll, switchMap, take, takeLast, takeUntil, takeWhile, onPush as tap, throttle, toArray, toAsyncIterable, toCallbag, toObservable, toPromise, zip }; //# sourceMappingURL=wonka.mjs.map