Socket
Socket
Sign inDemoInstall

wonka

Package Overview
Dependencies
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wonka - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

lib/js/src/operators/wonka_operator_combine.js

19

bsconfig.json

@@ -18,6 +18,17 @@ {

"dir": "src",
"subdirs": [{
"dir": "web",
"backend": ["js"]
}]
"subdirs": [
{
"dir": "operators"
},
{
"dir": "sources"
},
{
"dir": "sinks"
},
{
"dir": "web",
"backend": ["js"]
}
]
},

@@ -24,0 +35,0 @@ {

@@ -97,47 +97,2 @@ function pipe(source) {

function _2(o, a0, a1) {
var arity = o.length;
if (2 === arity) {
return o(a0, a1);
} else {
return (function curry_2(o, a0, a1, arity) {
switch (arity) {
case 1:
return app(o(a0), [a1]);
case 2:
return o(a0, a1);
case 3:
return function(param) {
return o(a0, a1, param);
};
case 4:
return function(param, param$1) {
return o(a0, a1, param, param$1);
};
case 5:
return function(param, param$1, param$2) {
return o(a0, a1, param, param$1, param$2);
};
case 6:
return function(param, param$1, param$2, param$3) {
return o(a0, a1, param, param$1, param$2, param$3);
};
case 7:
return function(param, param$1, param$2, param$3, param$4) {
return o(a0, a1, param, param$1, param$2, param$3, param$4);
};
default:
return app(o, [a0, a1]);
}
})(o, a0, a1, arity);
}
}
function _3(o, a0, a1, a2) {

@@ -194,4 +149,3 @@ var arity = o.length;

} else if (null !== x && x[0] === undefinedHeader) {
var nid = (x[1] + 1) | 0;
var block$1 = [undefinedHeader, nid];
var block$1 = [undefinedHeader, (x[1] + 1) | 0];
block$1.tag = 256;

@@ -233,61 +187,72 @@ return block$1;

function makeSubject(param) {
var state = [new Array(), !1];
return [
function(sink) {
state[0] = state[0].concat(sink);
return sink(
__(0, [
function(signal) {
if (1 === signal) {
state[0] = state[0].filter(function(x) {
return x !== sink;
});
return 0;
} else {
return 0;
}
function takeLast(max) {
return function(source) {
return function(sink) {
var queue = new Array();
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal) {
return (function makeTrampoline(sink, f) {
var state = [!1, !1, !1];
return sink(
__(0, [
function(signal) {
if (signal || state[0]) {
return 0;
} else {
state[2] = !0;
if (state[1]) {
return 0;
} else {
state[1] = !0;
!(function(_param) {
while (1) {
var match = f();
if (void 0 !== match) {
state[2] = !1;
sink(__(1, [valFromOption(match)]));
if (state[2]) {
continue;
} else {
return 0;
}
} else {
state[0] = !0;
return sink(0);
}
}
})();
state[1] = !1;
return 0;
}
}
}
])
);
})(sink, function() {
return queue.shift();
});
} else if (signal.tag) {
if (queue.length >= max && max > 0) {
queue.shift();
}
])
);
},
function(value) {
if (state[1]) {
return 0;
} else {
state[0].forEach(function(sink) {
return sink(__(1, [value]));
});
return 0;
}
},
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
state[0].forEach(function(sink) {
return sink(0);
});
return 0;
}
}
];
queue.push(signal[0]);
return talkback(0);
} else {
return talkback(0);
}
});
};
};
}
function make(f) {
function fromListener(addListener, removeListener) {
return function(sink) {
var teardown = f([
function(value) {
return sink(__(1, [value]));
},
function(param) {
return sink(0);
}
]);
return sink(
var handler = function($$event) {
return sink(__(1, [$$event]));
};
sink(
__(0, [
function(signal) {
if (signal) {
return teardown();
return _1(removeListener, handler);
} else {

@@ -299,38 +264,50 @@ return 0;

);
return _1(addListener, handler);
};
}
function fromList(ls) {
return function(sink) {
var state = [ls, !1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[2];
if (signal) {
state[1] = !0;
return 0;
} else if (match) {
state[3] = !0;
return 0;
} else {
state[3] = !0;
state[2] = !0;
while (state[3] && !state[1]) {
var match$1 = state[0];
if (match$1) {
state[0] = match$1[1];
state[3] = !1;
sink(__(1, [match$1[0]]));
} else {
state[1] = !0;
sink(0);
}
}
state[2] = !1;
return 0;
}
var toPromise$1 = function toPromise(source) {
return new Promise(function(resolve, param) {
return _1(takeLast(1)(source), function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](0);
}
});
});
};
function subscribe(f) {
return function(source) {
var state = [talkbackPlaceholder, !1];
_1(source, function(signal) {
if ("number" == typeof signal) {
state[1] = !0;
return 0;
} else if (signal.tag) {
if (state[1]) {
return 0;
} else {
f(signal[0]);
return state[0](0);
}
])
);
} else {
var x = signal[0];
state[0] = x;
return x(0);
}
});
return [
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
return state[0](1);
}
}
];
};

@@ -377,92 +354,2 @@ }

function fromValue(x) {
return function(sink) {
var ended = [!1];
return sink(
__(0, [
function(signal) {
if (signal || ended[0]) {
return 0;
} else {
ended[0] = !0;
sink(__(1, [x]));
return sink(0);
}
}
])
);
};
}
function empty(sink) {
sink(__(0, [talkbackPlaceholder]));
return sink(0);
}
function never(sink) {
return sink(__(0, [talkbackPlaceholder]));
}
function tap(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
if ("number" != typeof signal) {
if (signal.tag) {
f(signal[0]);
}
}
return sink(signal);
});
};
};
}
function map(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
var tmp;
tmp =
"number" == typeof signal ? 0 : signal.tag ? __(1, [f(signal[0])]) : __(0, [signal[0]]);
return sink(tmp);
});
};
};
}
function filter(f) {
return function(source) {
return function(sink) {
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || f(signal[0])) {
return sink(signal);
} else {
return talkback(0);
}
});
};
};
}
function scan(f, seed) {
return function(source) {
return function(sink) {
var acc = [seed];
return _1(source, function(signal) {
var tmp;
if ("number" == typeof signal) {
tmp = 0;
} else if (signal.tag) {
acc[0] = _2(f, acc[0], signal[0]);
tmp = __(1, [acc[0]]);
} else {
tmp = __(0, [signal[0]]);
}
return sink(tmp);
});
};
};
}
function mergeMap(f) {

@@ -527,2 +414,5 @@ return function(source) {

if (signal) {
state[1].forEach(function(talkback) {
return talkback(1);
});
if (state[2]) {

@@ -554,8 +444,2 @@ return 0;

function merge(sources) {
return mergeMap(function(x) {
return x;
})(fromArray(sources));
}
function mergeAll(source) {

@@ -638,2 +522,3 @@ return mergeMap(function(x) {

if (signal) {
state[2](1);
if (state[5]) {

@@ -645,3 +530,4 @@ return 0;

state[1](1);
return state[2](1);
state[2] = talkbackPlaceholder;
return 0;
}

@@ -660,67 +546,204 @@ } else if (state[5]) {

function concatAll(source) {
return concatMap(function(x) {
return x;
})(source);
}
var Types = 0;
function concat(sources) {
return concatMap(function(x) {
return x;
})(fromArray(sources));
}
var fromArray$1 = fromArray;
function switchMap(f) {
return function(source) {
var fromList$1 = function fromList(ls) {
return function(sink) {
var state = [ls, !1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[2];
if (signal) {
state[1] = !0;
return 0;
} else if (match) {
state[3] = !0;
return 0;
} else {
state[3] = !0;
state[2] = !0;
while (state[3] && !state[1]) {
var match$1 = state[0];
if (match$1) {
state[0] = match$1[1];
state[3] = !1;
sink(__(1, [match$1[0]]));
} else {
state[1] = !0;
sink(0);
}
}
state[2] = !1;
return 0;
}
}
])
);
};
};
var fromValue$1 = function fromValue(x) {
return function(sink) {
var ended = [!1];
return sink(
__(0, [
function(signal) {
if (signal || ended[0]) {
return 0;
} else {
ended[0] = !0;
sink(__(1, [x]));
return sink(0);
}
}
])
);
};
};
var make$1 = function make(f) {
return function(sink) {
var teardown = f([
function(value) {
return sink(__(1, [value]));
},
function(param) {
return sink(0);
}
]);
return sink(
__(0, [
function(signal) {
if (signal) {
return teardown();
} else {
return 0;
}
}
])
);
};
};
var makeSubject$1 = function makeSubject(param) {
var state = [new Array(), !1];
return [
function(sink) {
state[0] = state[0].concat(sink);
return sink(
__(0, [
function(signal) {
if (1 === signal) {
state[0] = state[0].filter(function(x) {
return x !== sink;
});
return 0;
} else {
return 0;
}
}
])
);
},
function(value) {
if (state[1]) {
return 0;
} else {
state[0].forEach(function(sink) {
return sink(__(1, [value]));
});
return 0;
}
},
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
state[0].forEach(function(sink) {
return sink(0);
});
return 0;
}
}
];
};
var empty$1 = function empty(sink) {
sink(__(0, [talkbackPlaceholder]));
return sink(0);
};
var never$1 = function never(sink) {
return sink(__(0, [talkbackPlaceholder]));
};
var combine$1 = function combine(sourceA) {
return function(sourceB) {
return function(sink) {
var state = [talkbackPlaceholder, talkbackPlaceholder, !1, !1, !1];
_1(source, function(signal) {
var state = [talkbackPlaceholder, talkbackPlaceholder, void 0, void 0, !1, 0, !1];
_1(sourceA, function(signal) {
var match = state[3];
if ("number" == typeof signal) {
if (state[4]) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
} else {
state[4] = !0;
if (state[2]) {
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var a = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
return sink(0);
state[2] = some(a);
state[4] = !1;
return sink(__(1, [[a, valFromOption(match)]]));
}
} else {
state[2] = some(a);
state[4] = !1;
return 0;
}
} else if (signal.tag) {
if (state[4]) {
} else {
state[0] = signal[0];
return 0;
}
});
_1(sourceB, function(signal) {
var match = state[2];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
} else {
if (state[2]) {
state[1](1);
state[1] = talkbackPlaceholder;
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var b = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
state[3] = some(b);
state[4] = !1;
return sink(__(1, [[valFromOption(match), b]]));
}
_1(f(signal[0]), function(signal) {
if ("number" == typeof signal) {
state[2] = !1;
state[1] = talkbackPlaceholder;
if (state[4]) {
return sink(0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[3]) {
return 0;
} else {
sink(__(1, [signal[0]]));
return state[1](0);
}
} else {
var tb = signal[0];
state[2] = !0;
state[1] = tb;
return tb(0);
}
});
return state[0](0);
} else {
state[3] = some(b);
state[4] = !1;
return 0;
}
} else {
var tb = signal[0];
state[0] = tb;
return tb(0);
state[1] = signal[0];
return 0;
}

@@ -731,15 +754,14 @@ });

function(signal) {
if (signal) {
if (state[4]) {
return 0;
} else {
state[4] = !0;
state[3] = !0;
state[0](1);
state[1](1);
state[1] = talkbackPlaceholder;
return 0;
}
if (state[6]) {
return 0;
} else if (signal) {
state[6] = !0;
state[0](1);
return state[1](1);
} else if (state[4]) {
return 0;
} else {
return state[1](0);
state[4] = !0;
state[0](signal);
return state[1](signal);
}

@@ -751,5 +773,78 @@ }

};
}
};
function share(source) {
var concatMap$1 = concatMap;
var concat$1 = function concat(sources) {
return concatMap(function(x) {
return x;
})(fromArray(sources));
};
var concatAll$1 = function concatAll(source) {
return concatMap(function(x) {
return x;
})(source);
};
var filter$1 = function filter(f) {
return function(source) {
return function(sink) {
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || f(signal[0])) {
return sink(signal);
} else {
return talkback(0);
}
});
};
};
};
var map$1 = function map(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
var tmp;
tmp =
"number" == typeof signal ? 0 : signal.tag ? __(1, [f(signal[0])]) : __(0, [signal[0]]);
return sink(tmp);
});
};
};
};
var mergeMap$1 = mergeMap;
var merge$1 = function merge(sources) {
return mergeMap(function(x) {
return x;
})(fromArray(sources));
};
var mergeAll$1 = mergeAll;
var flatten$1 = mergeAll;
var scan$1 = function scan(f, seed) {
return function(source) {
return function(sink) {
var acc = [seed];
return _1(source, function(signal) {
var tmp;
if ("number" == typeof signal) {
tmp = 0;
} else if (signal.tag) {
acc[0] = f(acc[0], signal[0]);
tmp = __(1, [acc[0]]);
} else {
tmp = __(0, [signal[0]]);
}
return sink(tmp);
});
};
};
};
var share$1 = function share(source) {
var state = [new Array(), talkbackPlaceholder, !1];

@@ -800,94 +895,178 @@ return function(sink) {

};
}
};
function combine(sourceA, sourceB) {
return function(sink) {
var state = [talkbackPlaceholder, talkbackPlaceholder, void 0, void 0, !1, 0, !1];
_1(sourceA, function(signal) {
var match = state[3];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
var skip$1 = function skip(wait) {
return function(source) {
return function(sink) {
var rest = [wait];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
state[6] = !0;
rest[0] = (rest[0] - 1) | 0;
return talkback(0);
}
});
};
};
};
var skipUntil$1 = function skipUntil(notifier) {
return function(source) {
return function(sink) {
var state = [!0, !1, !1, talkbackPlaceholder, talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (state[0]) {
state[4](1);
}
state[1] = !0;
return sink(0);
}
} else if (signal.tag) {
var a = signal[0];
if (void 0 !== match) {
if (state[6]) {
} else if (signal.tag) {
if (state[0] && !state[1]) {
return state[3](0);
} else if (state[1]) {
return 0;
} else {
state[2] = some(a);
state[4] = !1;
return sink(__(1, [[a, valFromOption(match)]]));
state[2] = !1;
return sink(signal);
}
} else {
state[2] = some(a);
state[4] = !1;
return 0;
var tb = signal[0];
state[3] = tb;
return _1(notifier, function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
state[0] = !1;
return state[4](1);
} else {
var innerTb = signal[0];
state[4] = innerTb;
innerTb(0);
return tb(0);
}
});
}
} else {
state[0] = signal[0];
return 0;
}
});
_1(sourceB, function(signal) {
var match = state[2];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
});
return sink(
__(0, [
function(signal) {
if (signal) {
if (state[0]) {
state[4](1);
}
state[1] = !0;
return state[3](1);
} else if (!state[2] && !state[1]) {
state[2] = !0;
return state[3](0);
} else {
return 0;
}
}
])
);
};
};
};
var skipWhile$1 = function skipWhile(f) {
return function(source) {
return function(sink) {
var skip = [!0];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || !skip[0]) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(0);
} else {
state[6] = !0;
return sink(0);
skip[0] = !1;
return sink(signal);
}
} else if (signal.tag) {
var b = signal[0];
if (void 0 !== match) {
if (state[6]) {
});
};
};
};
var switchMap$1 = function switchMap(f) {
return function(source) {
return function(sink) {
var state = [talkbackPlaceholder, talkbackPlaceholder, !1, !1, !1];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (state[4]) {
return 0;
} else {
state[3] = some(b);
state[4] = !1;
return sink(__(1, [[valFromOption(match), b]]));
state[4] = !0;
if (state[2]) {
return 0;
} else {
return sink(0);
}
}
} else {
state[3] = some(b);
state[4] = !1;
return 0;
}
} else {
state[1] = signal[0];
return 0;
}
});
return sink(
__(0, [
function(signal) {
if (state[6]) {
} else if (signal.tag) {
if (state[4]) {
return 0;
} else if (signal) {
state[6] = !0;
state[0](1);
return state[1](1);
} else if (state[4]) {
return 0;
} else {
state[4] = !0;
state[0](signal);
return state[1](signal);
if (state[2]) {
state[1](1);
state[1] = talkbackPlaceholder;
}
_1(f(signal[0]), function(signal) {
if ("number" == typeof signal) {
state[2] = !1;
state[1] = talkbackPlaceholder;
if (state[4]) {
return sink(0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[3]) {
return 0;
} else {
sink(__(1, [signal[0]]));
return state[1](0);
}
} else {
var tb = signal[0];
state[2] = !0;
state[1] = tb;
return tb(0);
}
});
return state[0](0);
}
} else {
var tb = signal[0];
state[0] = tb;
return tb(0);
}
])
);
});
return sink(
__(0, [
function(signal) {
if (signal) {
state[1](1);
if (state[4]) {
return 0;
} else {
state[4] = !0;
state[3] = !0;
state[0](1);
state[1] = talkbackPlaceholder;
return 0;
}
} else {
return state[1](0);
}
}
])
);
};
};
}
};
function take(max) {
var take$1 = function take(max) {
return function(source) {

@@ -940,114 +1119,9 @@ return function(sink) {

};
}
};
function takeLast(max) {
return function(source) {
return function(sink) {
var queue = new Array();
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal) {
return (function makeTrampoline(sink, f) {
var state = [!1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[0];
if (signal || match) {
return 0;
} else {
state[2] = !0;
if (state[1]) {
return 0;
} else {
state[1] = !0;
!(function(_param) {
while (1) {
var match = f();
if (void 0 !== match) {
state[2] = !1;
sink(__(1, [valFromOption(match)]));
if (state[2]) {
continue;
} else {
return 0;
}
} else {
state[0] = !0;
return sink(0);
}
}
})();
state[1] = !1;
return 0;
}
}
}
])
);
})(sink, function() {
return queue.shift();
});
} else if (signal.tag) {
if (queue.length >= max && max > 0) {
queue.shift();
}
queue.push(signal[0]);
return talkback(0);
} else {
return talkback(0);
}
});
};
};
}
var takeLast$1 = takeLast;
function takeWhile(f) {
var takeUntil$1 = function takeUntil(notifier) {
return function(source) {
return function(sink) {
var ended = [!1];
var talkback = [talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (ended[0]) {
return 0;
} else {
ended[0] = !0;
return sink(0);
}
} else if (signal.tag) {
if (ended[0]) {
return 0;
} else if (f(signal[0])) {
return sink(signal);
} else {
ended[0] = !0;
sink(0);
return talkback[0](1);
}
} else {
talkback[0] = signal[0];
return sink(signal);
}
});
return sink(
__(0, [
function(signal) {
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = !0;
return talkback[0](1);
} else {
return talkback[0](0);
}
}
])
);
};
};
}
function takeUntil(notifier) {
return function(source) {
return function(sink) {
var state = [!1, talkbackPlaceholder, talkbackPlaceholder];

@@ -1103,74 +1177,30 @@ _1(source, function(signal) {

};
}
};
function skip(wait) {
var takeWhile$1 = function takeWhile(f) {
return function(source) {
return function(sink) {
var rest = [wait];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
rest[0] = (rest[0] - 1) | 0;
return talkback(0);
}
});
};
};
}
function skipWhile(f) {
return function(source) {
return function(sink) {
var skip = [!0];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || !skip[0]) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(0);
} else {
skip[0] = !1;
return sink(signal);
}
});
};
};
}
function skipUntil(notifier) {
return function(source) {
return function(sink) {
var state = [!0, !1, !1, talkbackPlaceholder, talkbackPlaceholder];
var ended = [!1];
var talkback = [talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (state[0]) {
state[4](1);
if (ended[0]) {
return 0;
} else {
ended[0] = !0;
return sink(0);
}
state[1] = !0;
return sink(0);
} else if (signal.tag) {
if (state[0] && !state[1]) {
return state[3](0);
} else if (state[1]) {
if (ended[0]) {
return 0;
} else if (f(signal[0])) {
return sink(signal);
} else {
state[2] = !1;
return sink(signal);
ended[0] = !0;
sink(0);
return talkback[0](1);
}
} else {
var tb = signal[0];
state[3] = tb;
return _1(notifier, function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
state[0] = !1;
return state[4](1);
} else {
var innerTb = signal[0];
state[4] = innerTb;
innerTb(0);
return tb(0);
}
});
talkback[0] = signal[0];
return sink(signal);
}

@@ -1181,13 +1211,9 @@ });

function(signal) {
if (signal) {
if (state[0]) {
state[4](1);
}
state[1] = !0;
return state[3](1);
} else if (!state[2] && !state[1]) {
state[2] = !0;
return state[3](0);
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = !0;
return talkback[0](1);
} else {
return 0;
return talkback[0](0);
}

@@ -1199,5 +1225,20 @@ }

};
}
};
function publish(source) {
var tap$1 = function tap(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
if ("number" != typeof signal) {
if (signal.tag) {
f(signal[0]);
}
}
return sink(signal);
});
};
};
};
var publish$1 = function publish(source) {
var state = [talkbackPlaceholder, !1];

@@ -1230,38 +1271,7 @@ _1(source, function(signal) {

];
}
};
function subscribe(f) {
return function(source) {
var state = [talkbackPlaceholder, !1];
_1(source, function(signal) {
if ("number" == typeof signal) {
state[1] = !0;
return 0;
} else if (signal.tag) {
if (state[1]) {
return 0;
} else {
f(signal[0]);
return state[0](0);
}
} else {
var x = signal[0];
state[0] = x;
return x(0);
}
});
return [
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
return state[0](1);
}
}
];
};
}
var subscribe$1 = subscribe;
function forEach(f) {
var forEach$1 = function forEach(f) {
return function(source) {

@@ -1271,96 +1281,5 @@ subscribe(f)(source);

};
}
};
var Types = 0;
var flatten = mergeAll;
function fromListener(addListener, removeListener) {
return function(sink) {
var handler = function($$event) {
return sink(__(1, [$$event]));
};
sink(
__(0, [
function(signal) {
if (signal) {
return _1(removeListener, handler);
} else {
return 0;
}
}
])
);
return _1(addListener, handler);
};
}
function fromDomEvent(element, $$event) {
return function(sink) {
var addEventListener = function(element, event, handler) {
element.addEventListener(event, handler);
};
var removeEventListener = function(element, event, handler) {
element.removeEventListener(event, handler);
};
return fromListener(
function(handler) {
return _3(addEventListener, element, $$event, handler);
},
function(handler) {
return _3(removeEventListener, element, $$event, handler);
}
)(sink);
};
}
function interval(p) {
return function(sink) {
var i = [0];
var id = setInterval(function(param) {
var num = i[0];
i[0] = (i[0] + 1) | 0;
return sink(__(1, [num]));
}, p);
return sink(
__(0, [
function(signal) {
if (signal) {
clearInterval(id);
return 0;
} else {
return 0;
}
}
])
);
};
}
function fromPromise(promise) {
return function(sink) {
var ended = [!1];
promise.then(function(value) {
if (!ended[0]) {
sink(__(1, [value]));
sink(0);
}
return Promise.resolve(0);
});
return sink(
__(0, [
function(signal) {
if (signal) {
ended[0] = !0;
return 0;
} else {
return 0;
}
}
])
);
};
}
function debounce(f) {
var debounce$2 = function debounce(f) {
return function(source) {

@@ -1420,58 +1339,79 @@ return function(sink) {

};
}
};
function throttle(f) {
var delay$2 = function delay(wait) {
return function(source) {
return function(sink) {
var skip$$1 = [!1];
var id = [void 0];
var $$clearTimeout$1 = function(param) {
var match = id[0];
if (void 0 !== match) {
clearTimeout(valFromOption(match));
return 0;
var state = [talkbackPlaceholder, 0, !1];
_1(source, function(signal) {
var exit = 0;
if ("number" == typeof signal || signal.tag) {
exit = 1;
} else {
state[0] = signal[0];
return 0;
}
};
return _1(source, function(signal) {
if ("number" == typeof signal) {
$$clearTimeout$1();
return sink(0);
} else if (signal.tag) {
if (skip$$1[0]) {
if (1 === exit) {
if (state[2]) {
return 0;
} else {
skip$$1[0] = !0;
$$clearTimeout$1();
id[0] = some(
setTimeout(function(param) {
id[0] = void 0;
skip$$1[0] = !1;
return 0;
}, f(signal[0]))
);
return sink(signal);
state[1] = (state[1] + 1) | 0;
setTimeout(function(param) {
if (state[2] && 0 === state[1]) {
sink(0);
} else {
state[1] = (state[1] - 1) | 0;
}
return sink(signal);
}, wait);
return 0;
}
} else {
var tb = signal[0];
return sink(
__(0, [
function(signal) {
if (signal) {
$$clearTimeout$1();
return tb(1);
} else {
return tb(signal);
}
}
])
);
}
});
return sink(
__(0, [
function(signal) {
if (signal) {
state[2] = !0;
if (0 === state[1]) {
return sink(0);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
return state[0](signal);
}
}
])
);
};
};
}
};
function sample(notifier) {
var interval$2 = function interval(p) {
return function(sink) {
var i = [0];
var id = setInterval(function(param) {
var num = i[0];
i[0] = (i[0] + 1) | 0;
return sink(__(1, [num]));
}, p);
return sink(
__(0, [
function(signal) {
if (signal) {
clearInterval(id);
return 0;
} else {
return 0;
}
}
])
);
};
};
var sample$2 = function sample(notifier) {
return function(source) {

@@ -1536,68 +1476,104 @@ return function(sink) {

};
}
};
function delay(wait) {
var throttle$2 = function throttle(f) {
return function(source) {
return function(sink) {
var state = [talkbackPlaceholder, 0, !1];
_1(source, function(signal) {
var exit = 0;
if ("number" == typeof signal || signal.tag) {
exit = 1;
var skip = [!1];
var id = [void 0];
var $$clearTimeout$1 = function(param) {
var match = id[0];
if (void 0 !== match) {
clearTimeout(valFromOption(match));
return 0;
} else {
state[0] = signal[0];
return 0;
}
if (1 === exit) {
if (state[2]) {
};
return _1(source, function(signal) {
if ("number" == typeof signal) {
$$clearTimeout$1();
return sink(0);
} else if (signal.tag) {
if (skip[0]) {
return 0;
} else {
state[1] = (state[1] + 1) | 0;
setTimeout(function(param) {
if (state[2] && 0 === state[1]) {
sink(0);
} else {
state[1] = (state[1] - 1) | 0;
skip[0] = !0;
$$clearTimeout$1();
id[0] = some(
setTimeout(function(param) {
id[0] = void 0;
skip[0] = !1;
return 0;
}, f(signal[0]))
);
return sink(signal);
}
} else {
var tb = signal[0];
return sink(
__(0, [
function(signal) {
if (signal) {
$$clearTimeout$1();
return tb(1);
} else {
return tb(signal);
}
}
return sink(signal);
}, wait);
return 0;
}
])
);
}
});
return sink(
__(0, [
function(signal) {
if (signal) {
state[2] = !0;
if (0 === state[1]) {
return sink(0);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
return state[0](signal);
}
}
])
);
};
};
}
};
function toPromise(source) {
return new Promise(function(resolve, param) {
return _1(takeLast(1)(source), function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](0);
var toPromise$2 = toPromise$1;
var fromDomEvent$2 = function fromDomEvent(element, $$event) {
return function(sink) {
var addEventListener = function(element, event, handler) {
element.addEventListener(event, handler);
};
var removeEventListener = function(element, event, handler) {
element.removeEventListener(event, handler);
};
return fromListener(
function(handler) {
return _3(addEventListener, element, $$event, handler);
},
function(handler) {
return _3(removeEventListener, element, $$event, handler);
}
)(sink);
};
};
var fromListener$2 = fromListener;
var fromPromise$2 = function fromPromise(promise) {
return function(sink) {
var ended = [!1];
promise.then(function(value) {
if (!ended[0]) {
sink(__(1, [value]));
sink(0);
}
return Promise.resolve(0);
});
});
}
return sink(
__(0, [
function(signal) {
if (signal) {
ended[0] = !0;
return 0;
} else {
return 0;
}
}
])
);
};
};

@@ -1607,42 +1583,42 @@ export {

Types,
makeSubject,
make,
fromList,
fromArray,
fromValue,
empty,
never,
tap,
map,
filter,
scan,
mergeMap,
switchMap,
concatMap,
merge,
concat,
mergeAll,
flatten,
concatAll,
share,
combine,
take,
takeLast,
takeWhile,
takeUntil,
skip,
skipWhile,
skipUntil,
publish,
forEach,
subscribe,
fromListener,
fromDomEvent,
interval,
fromPromise,
debounce,
throttle,
sample,
delay,
toPromise
fromArray$1 as fromArray,
fromList$1 as fromList,
fromValue$1 as fromValue,
make$1 as make,
makeSubject$1 as makeSubject,
empty$1 as empty,
never$1 as never,
combine$1 as combine,
concatMap$1 as concatMap,
concat$1 as concat,
concatAll$1 as concatAll,
filter$1 as filter,
map$1 as map,
mergeMap$1 as mergeMap,
merge$1 as merge,
mergeAll$1 as mergeAll,
flatten$1 as flatten,
scan$1 as scan,
share$1 as share,
skip$1 as skip,
skipUntil$1 as skipUntil,
skipWhile$1 as skipWhile,
switchMap$1 as switchMap,
take$1 as take,
takeLast$1 as takeLast,
takeUntil$1 as takeUntil,
takeWhile$1 as takeWhile,
tap$1 as tap,
publish$1 as publish,
subscribe$1 as subscribe,
forEach$1 as forEach,
debounce$2 as debounce,
delay$2 as delay,
interval$2 as interval,
sample$2 as sample,
throttle$2 as throttle,
toPromise$2 as toPromise,
fromDomEvent$2 as fromDomEvent,
fromListener$2 as fromListener,
fromPromise$2 as fromPromise
};

@@ -87,47 +87,2 @@ function __(tag, block) {

function _2(o, a0, a1) {
var arity = o.length;
if (2 === arity) {
return o(a0, a1);
} else {
return (function curry_2(o, a0, a1, arity) {
switch (arity) {
case 1:
return app(o(a0), [a1]);
case 2:
return o(a0, a1);
case 3:
return function(param) {
return o(a0, a1, param);
};
case 4:
return function(param, param$1) {
return o(a0, a1, param, param$1);
};
case 5:
return function(param, param$1, param$2) {
return o(a0, a1, param, param$1, param$2);
};
case 6:
return function(param, param$1, param$2, param$3) {
return o(a0, a1, param, param$1, param$2, param$3);
};
case 7:
return function(param, param$1, param$2, param$3, param$4) {
return o(a0, a1, param, param$1, param$2, param$3, param$4);
};
default:
return app(o, [a0, a1]);
}
})(o, a0, a1, arity);
}
}
function _3(o, a0, a1, a2) {

@@ -184,4 +139,3 @@ var arity = o.length;

} else if (null !== x && x[0] === undefinedHeader) {
var nid = (x[1] + 1) | 0;
var block$1 = [undefinedHeader, nid];
var block$1 = [undefinedHeader, (x[1] + 1) | 0];
block$1.tag = 256;

@@ -223,2 +177,129 @@ return block$1;

function takeLast(max) {
return function(source) {
return function(sink) {
var queue = new Array();
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal) {
return (function makeTrampoline(sink, f) {
var state = [!1, !1, !1];
return sink(
__(0, [
function(signal) {
if (signal || state[0]) {
return 0;
} else {
state[2] = !0;
if (state[1]) {
return 0;
} else {
state[1] = !0;
!(function(_param) {
while (1) {
var match = f();
if (void 0 !== match) {
state[2] = !1;
sink(__(1, [valFromOption(match)]));
if (state[2]) {
continue;
} else {
return 0;
}
} else {
state[0] = !0;
return sink(0);
}
}
})();
state[1] = !1;
return 0;
}
}
}
])
);
})(sink, function() {
return queue.shift();
});
} else if (signal.tag) {
if (queue.length >= max && max > 0) {
queue.shift();
}
queue.push(signal[0]);
return talkback(0);
} else {
return talkback(0);
}
});
};
};
}
function fromListener(addListener, removeListener) {
return function(sink) {
var handler = function($$event) {
return sink(__(1, [$$event]));
};
sink(
__(0, [
function(signal) {
if (signal) {
return _1(removeListener, handler);
} else {
return 0;
}
}
])
);
return _1(addListener, handler);
};
}
var toPromise$1 = function toPromise(source) {
return new Promise(function(resolve, param) {
return _1(takeLast(1)(source), function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](0);
}
});
});
};
function subscribe(f) {
return function(source) {
var state = [talkbackPlaceholder, !1];
_1(source, function(signal) {
if ("number" == typeof signal) {
state[1] = !0;
return 0;
} else if (signal.tag) {
if (state[1]) {
return 0;
} else {
f(signal[0]);
return state[0](0);
}
} else {
var x = signal[0];
state[0] = x;
return x(0);
}
});
return [
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
return state[0](1);
}
}
];
};
}
function fromArray(arr) {

@@ -321,2 +402,5 @@ return function(sink) {

if (signal) {
state[1].forEach(function(talkback) {
return talkback(1);
});
if (state[2]) {

@@ -425,2 +509,3 @@ return 0;

if (signal) {
state[2](1);
if (state[5]) {

@@ -432,3 +517,4 @@ return 0;

state[1](1);
return state[2](1);
state[2] = talkbackPlaceholder;
return 0;
}

@@ -447,108 +533,74 @@ } else if (state[5]) {

function takeLast(max) {
return function(source) {
return function(sink) {
var queue = new Array();
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal) {
return (function makeTrampoline(sink, f) {
var state = [!1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[0];
if (signal || match) {
return 0;
} else {
state[2] = !0;
if (state[1]) {
return 0;
} else {
state[1] = !0;
!(function(_param) {
while (1) {
var match = f();
if (void 0 !== match) {
state[2] = !1;
sink(__(1, [valFromOption(match)]));
if (state[2]) {
continue;
} else {
return 0;
}
} else {
state[0] = !0;
return sink(0);
}
}
})();
state[1] = !1;
return 0;
}
}
}
])
);
})(sink, function() {
return queue.shift();
});
} else if (signal.tag) {
if (queue.length >= max && max > 0) {
queue.shift();
var fromArray$1 = fromArray;
var fromList$1 = function fromList(ls) {
return function(sink) {
var state = [ls, !1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[2];
if (signal) {
state[1] = !0;
return 0;
} else if (match) {
state[3] = !0;
return 0;
} else {
state[3] = !0;
state[2] = !0;
while (state[3] && !state[1]) {
var match$1 = state[0];
if (match$1) {
state[0] = match$1[1];
state[3] = !1;
sink(__(1, [match$1[0]]));
} else {
state[1] = !0;
sink(0);
}
}
state[2] = !1;
return 0;
}
queue.push(signal[0]);
return talkback(0);
} else {
return talkback(0);
}
});
};
])
);
};
}
};
function subscribe(f) {
return function(source) {
var state = [talkbackPlaceholder, !1];
_1(source, function(signal) {
if ("number" == typeof signal) {
state[1] = !0;
return 0;
} else if (signal.tag) {
if (state[1]) {
return 0;
} else {
f(signal[0]);
return state[0](0);
var fromValue$1 = function fromValue(x) {
return function(sink) {
var ended = [!1];
return sink(
__(0, [
function(signal) {
if (signal || ended[0]) {
return 0;
} else {
ended[0] = !0;
sink(__(1, [x]));
return sink(0);
}
}
} else {
var x = signal[0];
state[0] = x;
return x(0);
}
});
return [
function(param) {
if (state[1]) {
return 0;
} else {
state[1] = !0;
return state[0](1);
}
}
];
])
);
};
}
};
var flatten = mergeAll;
function fromListener(addListener, removeListener) {
var make$1 = function make(f) {
return function(sink) {
var handler = function($$event) {
return sink(__(1, [$$event]));
};
sink(
var teardown = f([
function(value) {
return sink(__(1, [value]));
},
function(param) {
return sink(0);
}
]);
return sink(
__(0, [
function(signal) {
if (signal) {
return _1(removeListener, handler);
return teardown();
} else {

@@ -560,19 +612,6 @@ return 0;

);
return _1(addListener, handler);
};
}
exports.pipe = function pipe(source) {
var args = arguments;
var len = args.length;
var x = source;
for (var i = 1; i < len; i++) {
x = args[i](x);
}
return x;
};
exports.Types = 0;
exports.makeSubject = function makeSubject(param) {
var makeSubject$1 = function makeSubject(param) {
var state = [new Array(), !1];

@@ -621,102 +660,125 @@ return [

exports.make = function make(f) {
return function(sink) {
var teardown = f([
function(value) {
return sink(__(1, [value]));
},
function(param) {
return sink(0);
}
]);
return sink(
__(0, [
function(signal) {
if (signal) {
return teardown();
} else {
return 0;
}
}
])
);
};
var empty$1 = function empty(sink) {
sink(__(0, [talkbackPlaceholder]));
return sink(0);
};
exports.fromList = function fromList(ls) {
return function(sink) {
var state = [ls, !1, !1, !1];
return sink(
__(0, [
function(signal) {
var match = state[2];
if (signal) {
state[1] = !0;
var never$1 = function never(sink) {
return sink(__(0, [talkbackPlaceholder]));
};
var combine$1 = function combine(sourceA) {
return function(sourceB) {
return function(sink) {
var state = [talkbackPlaceholder, talkbackPlaceholder, void 0, void 0, !1, 0, !1];
_1(sourceA, function(signal) {
var match = state[3];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (match) {
state[3] = !0;
} else if (state[6]) {
return 0;
} else {
state[3] = !0;
state[2] = !0;
while (state[3] && !state[1]) {
var match$1 = state[0];
if (match$1) {
state[0] = match$1[1];
state[3] = !1;
sink(__(1, [match$1[0]]));
} else {
state[1] = !0;
sink(0);
}
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var a = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
state[2] = some(a);
state[4] = !1;
return sink(__(1, [[a, valFromOption(match)]]));
}
state[2] = !1;
} else {
state[2] = some(a);
state[4] = !1;
return 0;
}
} else {
state[0] = signal[0];
return 0;
}
])
);
};
};
exports.fromArray = fromArray;
exports.fromValue = function fromValue(x) {
return function(sink) {
var ended = [!1];
return sink(
__(0, [
function(signal) {
if (signal || ended[0]) {
});
_1(sourceB, function(signal) {
var match = state[2];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
} else {
ended[0] = !0;
sink(__(1, [x]));
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var b = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
state[3] = some(b);
state[4] = !1;
return sink(__(1, [[valFromOption(match), b]]));
}
} else {
state[3] = some(b);
state[4] = !1;
return 0;
}
} else {
state[1] = signal[0];
return 0;
}
])
);
});
return sink(
__(0, [
function(signal) {
if (state[6]) {
return 0;
} else if (signal) {
state[6] = !0;
state[0](1);
return state[1](1);
} else if (state[4]) {
return 0;
} else {
state[4] = !0;
state[0](signal);
return state[1](signal);
}
}
])
);
};
};
};
exports.empty = function empty(sink) {
sink(__(0, [talkbackPlaceholder]));
return sink(0);
var concatMap$1 = concatMap;
var concat$1 = function concat(sources) {
return concatMap(function(x) {
return x;
})(fromArray(sources));
};
exports.never = function never(sink) {
return sink(__(0, [talkbackPlaceholder]));
var concatAll$1 = function concatAll(source) {
return concatMap(function(x) {
return x;
})(source);
};
exports.tap = function tap(f) {
var filter$1 = function filter(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
if ("number" != typeof signal) {
if (signal.tag) {
f(signal[0]);
}
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || f(signal[0])) {
return sink(signal);
} else {
return talkback(0);
}
return sink(signal);
});

@@ -727,3 +789,3 @@ };

exports.map = function map(f) {
var map$1 = function map(f) {
return function(source) {

@@ -741,9 +803,91 @@ return function(sink) {

exports.filter = function filter(f) {
var mergeMap$1 = mergeMap;
var merge$1 = function merge(sources) {
return mergeMap(function(x) {
return x;
})(fromArray(sources));
};
var mergeAll$1 = mergeAll;
var flatten$1 = mergeAll;
var scan$1 = function scan(f, seed) {
return function(source) {
return function(sink) {
var acc = [seed];
return _1(source, function(signal) {
var tmp;
if ("number" == typeof signal) {
tmp = 0;
} else if (signal.tag) {
acc[0] = f(acc[0], signal[0]);
tmp = __(1, [acc[0]]);
} else {
tmp = __(0, [signal[0]]);
}
return sink(tmp);
});
};
};
};
var share$1 = function share(source) {
var state = [new Array(), talkbackPlaceholder, !1];
return function(sink) {
state[0] = state[0].concat(sink);
if (1 === state[0].length) {
_1(source, function(signal) {
if ("number" == typeof signal) {
state[0].forEach(function(sink) {
return sink(0);
});
state[0] = new Array();
return 0;
} else if (signal.tag) {
state[2] = !1;
state[0].forEach(function(sink) {
return sink(signal);
});
return 0;
} else {
state[1] = signal[0];
return 0;
}
});
}
return sink(
__(0, [
function(signal) {
if (signal) {
state[0] = state[0].filter(function(x) {
return x !== sink;
});
if (0 === state[0].length) {
return state[1](1);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
state[2] = !0;
return state[1](signal);
}
}
])
);
};
};
var skip$1 = function skip(wait) {
return function(source) {
return function(sink) {
var rest = [wait];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || f(signal[0])) {
if ("number" == typeof signal || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
rest[0] = (rest[0] - 1) | 0;
return talkback(0);

@@ -756,18 +900,58 @@ }

exports.scan = function scan(f, seed) {
var skipUntil$1 = function skipUntil(notifier) {
return function(source) {
return function(sink) {
var acc = [seed];
return _1(source, function(signal) {
var tmp;
var state = [!0, !1, !1, talkbackPlaceholder, talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
tmp = 0;
if (state[0]) {
state[4](1);
}
state[1] = !0;
return sink(0);
} else if (signal.tag) {
acc[0] = _2(f, acc[0], signal[0]);
tmp = __(1, [acc[0]]);
if (state[0] && !state[1]) {
return state[3](0);
} else if (state[1]) {
return 0;
} else {
state[2] = !1;
return sink(signal);
}
} else {
tmp = __(0, [signal[0]]);
var tb = signal[0];
state[3] = tb;
return _1(notifier, function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
state[0] = !1;
return state[4](1);
} else {
var innerTb = signal[0];
state[4] = innerTb;
innerTb(0);
return tb(0);
}
});
}
return sink(tmp);
});
return sink(
__(0, [
function(signal) {
if (signal) {
if (state[0]) {
state[4](1);
}
state[1] = !0;
return state[3](1);
} else if (!state[2] && !state[1]) {
state[2] = !0;
return state[3](0);
} else {
return 0;
}
}
])
);
};

@@ -777,5 +961,21 @@ };

exports.mergeMap = mergeMap;
var skipWhile$1 = function skipWhile(f) {
return function(source) {
return function(sink) {
var skip = [!0];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || !skip[0]) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(0);
} else {
skip[0] = !1;
return sink(signal);
}
});
};
};
};
exports.switchMap = function switchMap(f) {
var switchMap$1 = function switchMap(f) {
return function(source) {

@@ -839,2 +1039,3 @@ return function(sink) {

if (signal) {
state[1](1);
if (state[4]) {

@@ -846,3 +1047,2 @@ return 0;

state[0](1);
state[1](1);
state[1] = talkbackPlaceholder;

@@ -861,164 +1061,3 @@ return 0;

exports.concatMap = concatMap;
exports.merge = function merge(sources) {
return mergeMap(function(x) {
return x;
})(fromArray(sources));
};
exports.concat = function concat(sources) {
return concatMap(function(x) {
return x;
})(fromArray(sources));
};
exports.mergeAll = mergeAll;
exports.flatten = flatten;
exports.concatAll = function concatAll(source) {
return concatMap(function(x) {
return x;
})(source);
};
exports.share = function share(source) {
var state = [new Array(), talkbackPlaceholder, !1];
return function(sink) {
state[0] = state[0].concat(sink);
if (1 === state[0].length) {
_1(source, function(signal) {
if ("number" == typeof signal) {
state[0].forEach(function(sink) {
return sink(0);
});
state[0] = new Array();
return 0;
} else if (signal.tag) {
state[2] = !1;
state[0].forEach(function(sink) {
return sink(signal);
});
return 0;
} else {
state[1] = signal[0];
return 0;
}
});
}
return sink(
__(0, [
function(signal) {
if (signal) {
state[0] = state[0].filter(function(x) {
return x !== sink;
});
if (0 === state[0].length) {
return state[1](1);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
state[2] = !0;
return state[1](signal);
}
}
])
);
};
};
exports.combine = function combine(sourceA, sourceB) {
return function(sink) {
var state = [talkbackPlaceholder, talkbackPlaceholder, void 0, void 0, !1, 0, !1];
_1(sourceA, function(signal) {
var match = state[3];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
} else {
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var a = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
state[2] = some(a);
state[4] = !1;
return sink(__(1, [[a, valFromOption(match)]]));
}
} else {
state[2] = some(a);
state[4] = !1;
return 0;
}
} else {
state[0] = signal[0];
return 0;
}
});
_1(sourceB, function(signal) {
var match = state[2];
if ("number" == typeof signal) {
if (state[5] < 1) {
state[5] = (state[5] + 1) | 0;
return 0;
} else if (state[6]) {
return 0;
} else {
state[6] = !0;
return sink(0);
}
} else if (signal.tag) {
var b = signal[0];
if (void 0 !== match) {
if (state[6]) {
return 0;
} else {
state[3] = some(b);
state[4] = !1;
return sink(__(1, [[valFromOption(match), b]]));
}
} else {
state[3] = some(b);
state[4] = !1;
return 0;
}
} else {
state[1] = signal[0];
return 0;
}
});
return sink(
__(0, [
function(signal) {
if (state[6]) {
return 0;
} else if (signal) {
state[6] = !0;
state[0](1);
return state[1](1);
} else if (state[4]) {
return 0;
} else {
state[4] = !0;
state[0](signal);
return state[1](signal);
}
}
])
);
};
};
exports.take = function take(max) {
var take$1 = function take(max) {
return function(source) {

@@ -1073,53 +1112,7 @@ return function(sink) {

exports.takeLast = takeLast;
var takeLast$1 = takeLast;
exports.takeWhile = function takeWhile(f) {
var takeUntil$1 = function takeUntil(notifier) {
return function(source) {
return function(sink) {
var ended = [!1];
var talkback = [talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (ended[0]) {
return 0;
} else {
ended[0] = !0;
return sink(0);
}
} else if (signal.tag) {
if (ended[0]) {
return 0;
} else if (f(signal[0])) {
return sink(signal);
} else {
ended[0] = !0;
sink(0);
return talkback[0](1);
}
} else {
talkback[0] = signal[0];
return sink(signal);
}
});
return sink(
__(0, [
function(signal) {
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = !0;
return talkback[0](1);
} else {
return talkback[0](0);
}
}
])
);
};
};
};
exports.takeUntil = function takeUntil(notifier) {
return function(source) {
return function(sink) {
var state = [!1, talkbackPlaceholder, talkbackPlaceholder];

@@ -1177,72 +1170,28 @@ _1(source, function(signal) {

exports.skip = function skip(wait) {
var takeWhile$1 = function takeWhile(f) {
return function(source) {
return function(sink) {
var rest = [wait];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
rest[0] = (rest[0] - 1) | 0;
return talkback(0);
}
});
};
};
};
exports.skipWhile = function skipWhile(f) {
return function(source) {
return function(sink) {
var skip = [!0];
return captureTalkback(source, function(signal, talkback) {
if ("number" == typeof signal || !signal.tag || !skip[0]) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(0);
} else {
skip[0] = !1;
return sink(signal);
}
});
};
};
};
exports.skipUntil = function skipUntil(notifier) {
return function(source) {
return function(sink) {
var state = [!0, !1, !1, talkbackPlaceholder, talkbackPlaceholder];
var ended = [!1];
var talkback = [talkbackPlaceholder];
_1(source, function(signal) {
if ("number" == typeof signal) {
if (state[0]) {
state[4](1);
if (ended[0]) {
return 0;
} else {
ended[0] = !0;
return sink(0);
}
state[1] = !0;
return sink(0);
} else if (signal.tag) {
if (state[0] && !state[1]) {
return state[3](0);
} else if (state[1]) {
if (ended[0]) {
return 0;
} else if (f(signal[0])) {
return sink(signal);
} else {
state[2] = !1;
return sink(signal);
ended[0] = !0;
sink(0);
return talkback[0](1);
}
} else {
var tb = signal[0];
state[3] = tb;
return _1(notifier, function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
state[0] = !1;
return state[4](1);
} else {
var innerTb = signal[0];
state[4] = innerTb;
innerTb(0);
return tb(0);
}
});
talkback[0] = signal[0];
return sink(signal);
}

@@ -1253,13 +1202,9 @@ });

function(signal) {
if (signal) {
if (state[0]) {
state[4](1);
}
state[1] = !0;
return state[3](1);
} else if (!state[2] && !state[1]) {
state[2] = !0;
return state[3](0);
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = !0;
return talkback[0](1);
} else {
return 0;
return talkback[0](0);
}

@@ -1273,3 +1218,18 @@ }

exports.publish = function publish(source) {
var tap$1 = function tap(f) {
return function(source) {
return function(sink) {
return _1(source, function(signal) {
if ("number" != typeof signal) {
if (signal.tag) {
f(signal[0]);
}
}
return sink(signal);
});
};
};
};
var publish$1 = function publish(source) {
var state = [talkbackPlaceholder, !1];

@@ -1304,3 +1264,5 @@ _1(source, function(signal) {

exports.forEach = function forEach(f) {
var subscribe$1 = subscribe;
var forEach$1 = function forEach(f) {
return function(source) {

@@ -1312,74 +1274,3 @@ subscribe(f)(source);

exports.subscribe = subscribe;
exports.fromListener = fromListener;
exports.fromDomEvent = function fromDomEvent(element, $$event) {
return function(sink) {
var addEventListener = function(element, event, handler) {
element.addEventListener(event, handler);
};
var removeEventListener = function(element, event, handler) {
element.removeEventListener(event, handler);
};
return fromListener(
function(handler) {
return _3(addEventListener, element, $$event, handler);
},
function(handler) {
return _3(removeEventListener, element, $$event, handler);
}
)(sink);
};
};
exports.interval = function interval(p) {
return function(sink) {
var i = [0];
var id = setInterval(function(param) {
var num = i[0];
i[0] = (i[0] + 1) | 0;
return sink(__(1, [num]));
}, p);
return sink(
__(0, [
function(signal) {
if (signal) {
clearInterval(id);
return 0;
} else {
return 0;
}
}
])
);
};
};
exports.fromPromise = function fromPromise(promise) {
return function(sink) {
var ended = [!1];
promise.then(function(value) {
if (!ended[0]) {
sink(__(1, [value]));
sink(0);
}
return Promise.resolve(0);
});
return sink(
__(0, [
function(signal) {
if (signal) {
ended[0] = !0;
return 0;
} else {
return 0;
}
}
])
);
};
};
exports.debounce = function debounce(f) {
var debounce$2 = function debounce(f) {
return function(source) {

@@ -1441,51 +1332,49 @@ return function(sink) {

exports.throttle = function throttle(f) {
var delay$2 = function delay(wait) {
return function(source) {
return function(sink) {
var skip$$1 = [!1];
var id = [void 0];
var $$clearTimeout$1 = function(param) {
var match = id[0];
if (void 0 !== match) {
clearTimeout(valFromOption(match));
return 0;
var state = [talkbackPlaceholder, 0, !1];
_1(source, function(signal) {
var exit = 0;
if ("number" == typeof signal || signal.tag) {
exit = 1;
} else {
state[0] = signal[0];
return 0;
}
};
return _1(source, function(signal) {
if ("number" == typeof signal) {
$$clearTimeout$1();
return sink(0);
} else if (signal.tag) {
if (skip$$1[0]) {
if (1 === exit) {
if (state[2]) {
return 0;
} else {
skip$$1[0] = !0;
$$clearTimeout$1();
id[0] = some(
setTimeout(function(param) {
id[0] = void 0;
skip$$1[0] = !1;
return 0;
}, f(signal[0]))
);
return sink(signal);
state[1] = (state[1] + 1) | 0;
setTimeout(function(param) {
if (state[2] && 0 === state[1]) {
sink(0);
} else {
state[1] = (state[1] - 1) | 0;
}
return sink(signal);
}, wait);
return 0;
}
} else {
var tb = signal[0];
return sink(
__(0, [
function(signal) {
if (signal) {
$$clearTimeout$1();
return tb(1);
} else {
return tb(signal);
}
}
])
);
}
});
return sink(
__(0, [
function(signal) {
if (signal) {
state[2] = !0;
if (0 === state[1]) {
return sink(0);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
return state[0](signal);
}
}
])
);
};

@@ -1495,3 +1384,26 @@ };

exports.sample = function sample(notifier) {
var interval$2 = function interval(p) {
return function(sink) {
var i = [0];
var id = setInterval(function(param) {
var num = i[0];
i[0] = (i[0] + 1) | 0;
return sink(__(1, [num]));
}, p);
return sink(
__(0, [
function(signal) {
if (signal) {
clearInterval(id);
return 0;
} else {
return 0;
}
}
])
);
};
};
var sample$2 = function sample(notifier) {
return function(source) {

@@ -1558,49 +1470,51 @@ return function(sink) {

exports.delay = function delay(wait) {
var throttle$2 = function throttle(f) {
return function(source) {
return function(sink) {
var state = [talkbackPlaceholder, 0, !1];
_1(source, function(signal) {
var exit = 0;
if ("number" == typeof signal || signal.tag) {
exit = 1;
var skip = [!1];
var id = [void 0];
var $$clearTimeout$1 = function(param) {
var match = id[0];
if (void 0 !== match) {
clearTimeout(valFromOption(match));
return 0;
} else {
state[0] = signal[0];
return 0;
}
if (1 === exit) {
if (state[2]) {
};
return _1(source, function(signal) {
if ("number" == typeof signal) {
$$clearTimeout$1();
return sink(0);
} else if (signal.tag) {
if (skip[0]) {
return 0;
} else {
state[1] = (state[1] + 1) | 0;
setTimeout(function(param) {
if (state[2] && 0 === state[1]) {
sink(0);
} else {
state[1] = (state[1] - 1) | 0;
skip[0] = !0;
$$clearTimeout$1();
id[0] = some(
setTimeout(function(param) {
id[0] = void 0;
skip[0] = !1;
return 0;
}, f(signal[0]))
);
return sink(signal);
}
} else {
var tb = signal[0];
return sink(
__(0, [
function(signal) {
if (signal) {
$$clearTimeout$1();
return tb(1);
} else {
return tb(signal);
}
}
return sink(signal);
}, wait);
return 0;
}
])
);
}
});
return sink(
__(0, [
function(signal) {
if (signal) {
state[2] = !0;
if (0 === state[1]) {
return sink(0);
} else {
return 0;
}
} else if (state[2]) {
return 0;
} else {
return state[0](signal);
}
}
])
);
};

@@ -1610,14 +1524,140 @@ };

exports.toPromise = function toPromise(source) {
return new Promise(function(resolve, param) {
return _1(takeLast(1)(source), function(signal) {
if ("number" == typeof signal) {
return 0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](0);
var toPromise$2 = toPromise$1;
var fromDomEvent$2 = function fromDomEvent(element, $$event) {
return function(sink) {
var addEventListener = function(element, event, handler) {
element.addEventListener(event, handler);
};
var removeEventListener = function(element, event, handler) {
element.removeEventListener(event, handler);
};
return fromListener(
function(handler) {
return _3(addEventListener, element, $$event, handler);
},
function(handler) {
return _3(removeEventListener, element, $$event, handler);
}
)(sink);
};
};
var fromListener$2 = fromListener;
var fromPromise$2 = function fromPromise(promise) {
return function(sink) {
var ended = [!1];
promise.then(function(value) {
if (!ended[0]) {
sink(__(1, [value]));
sink(0);
}
return Promise.resolve(0);
});
});
return sink(
__(0, [
function(signal) {
if (signal) {
ended[0] = !0;
return 0;
} else {
return 0;
}
}
])
);
};
};
exports.pipe = function pipe(source) {
var args = arguments;
var len = args.length;
var x = source;
for (var i = 1; i < len; i++) {
x = args[i](x);
}
return x;
};
exports.Types = 0;
exports.fromArray = fromArray$1;
exports.fromList = fromList$1;
exports.fromValue = fromValue$1;
exports.make = make$1;
exports.makeSubject = makeSubject$1;
exports.empty = empty$1;
exports.never = never$1;
exports.combine = combine$1;
exports.concatMap = concatMap$1;
exports.concat = concat$1;
exports.concatAll = concatAll$1;
exports.filter = filter$1;
exports.map = map$1;
exports.mergeMap = mergeMap$1;
exports.merge = merge$1;
exports.mergeAll = mergeAll$1;
exports.flatten = flatten$1;
exports.scan = scan$1;
exports.share = share$1;
exports.skip = skip$1;
exports.skipUntil = skipUntil$1;
exports.skipWhile = skipWhile$1;
exports.switchMap = switchMap$1;
exports.take = take$1;
exports.takeLast = takeLast$1;
exports.takeUntil = takeUntil$1;
exports.takeWhile = takeWhile$1;
exports.tap = tap$1;
exports.publish = publish$1;
exports.subscribe = subscribe$1;
exports.forEach = forEach$1;
exports.debounce = debounce$2;
exports.delay = delay$2;
exports.interval = interval$2;
exports.sample = sample$2;
exports.throttle = throttle$2;
exports.toPromise = toPromise$2;
exports.fromDomEvent = fromDomEvent$2;
exports.fromListener = fromListener$2;
exports.fromPromise = fromPromise$2;
'use strict';
var Block = require("bs-platform/lib/js/block.js");
var Curry = require("bs-platform/lib/js/curry.js");
var Wonka = require("../wonka.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Wonka_helpers = require("../wonka_helpers.js");
var Wonka_operator_delay = require("./wonka_operator_delay.js");
var Wonka_sink_toPromise = require("./wonka_sink_toPromise.js");
var Wonka_operator_sample = require("./wonka_operator_sample.js");
var Wonka_operator_debounce = require("./wonka_operator_debounce.js");
var Wonka_operator_interval = require("./wonka_operator_interval.js");
var Wonka_operator_throttle = require("./wonka_operator_throttle.js");
var Wonka_source_fromPromise = require("./wonka_source_fromPromise.js");
var Wonka_source_fromDomEvent = require("./wonka_source_fromDomEvent.js");
var Wonka_source_fromListener = require("./wonka_source_fromListener.js");
function fromListener(addListener, removeListener) {
return (function (sink) {
var handler = function ($$event) {
return sink(/* Push */Block.__(1, [$$event]));
};
sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
return Curry._1(removeListener, handler);
} else {
return /* () */0;
}
})]));
return Curry._1(addListener, handler);
});
}
var debounce = Wonka_operator_debounce.debounce;
function fromDomEvent(element, $$event) {
return (function (sink) {
var addEventListener = (
function (element, event, handler) {
element.addEventListener(event, handler);
}
);
var removeEventListener = (
function (element, event, handler) {
element.removeEventListener(event, handler);
}
);
return fromListener((function (handler) {
return Curry._3(addEventListener, element, $$event, handler);
}), (function (handler) {
return Curry._3(removeEventListener, element, $$event, handler);
}))(sink);
});
}
var delay = Wonka_operator_delay.delay;
function interval(p) {
return (function (sink) {
var i = /* record */[/* contents */0];
var id = setInterval((function (param) {
var num = i[0];
i[0] = i[0] + 1 | 0;
return sink(/* Push */Block.__(1, [num]));
}), p);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
clearInterval(id);
return /* () */0;
} else {
return /* () */0;
}
})]));
});
}
var interval = Wonka_operator_interval.interval;
function fromPromise(promise) {
return (function (sink) {
var ended = /* record */[/* contents */false];
promise.then((function (value) {
if (!ended[0]) {
sink(/* Push */Block.__(1, [value]));
sink(/* End */0);
}
return Promise.resolve(/* () */0);
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
ended[0] = true;
return /* () */0;
} else {
return /* () */0;
}
})]));
});
}
var sample = Wonka_operator_sample.sample;
function debounce(f) {
return (function (source) {
return (function (sink) {
var gotEndSignal = /* record */[/* contents */false];
var id = /* record */[/* contents */undefined];
var $$clearTimeout$1 = function (param) {
var match = id[0];
if (match !== undefined) {
id[0] = undefined;
clearTimeout(Caml_option.valFromOption(match));
return /* () */0;
} else {
return /* () */0;
}
};
return Curry._1(source, (function (signal) {
if (typeof signal === "number") {
gotEndSignal[0] = true;
var match = id[0];
if (match !== undefined) {
return /* () */0;
} else {
return sink(/* End */0);
}
} else if (signal.tag) {
$$clearTimeout$1(/* () */0);
id[0] = Caml_option.some(setTimeout((function (param) {
id[0] = undefined;
sink(signal);
if (gotEndSignal[0]) {
return sink(/* End */0);
} else {
return 0;
}
}), f(signal[0])));
return /* () */0;
} else {
var tb = signal[0];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
$$clearTimeout$1(/* () */0);
return tb(/* Close */1);
} else {
return tb(signal);
}
})]));
}
}));
});
});
}
var throttle = Wonka_operator_throttle.throttle;
function throttle(f) {
return (function (source) {
return (function (sink) {
var skip = /* record */[/* contents */false];
var id = /* record */[/* contents */undefined];
var $$clearTimeout$1 = function (param) {
var match = id[0];
if (match !== undefined) {
clearTimeout(Caml_option.valFromOption(match));
return /* () */0;
} else {
return /* () */0;
}
};
return Curry._1(source, (function (signal) {
if (typeof signal === "number") {
$$clearTimeout$1(/* () */0);
return sink(/* End */0);
} else if (signal.tag) {
if (skip[0]) {
return /* () */0;
} else {
skip[0] = true;
$$clearTimeout$1(/* () */0);
id[0] = Caml_option.some(setTimeout((function (param) {
id[0] = undefined;
skip[0] = false;
return /* () */0;
}), f(signal[0])));
return sink(signal);
}
} else {
var tb = signal[0];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
$$clearTimeout$1(/* () */0);
return tb(/* Close */1);
} else {
return tb(signal);
}
})]));
}
}));
});
});
}
var toPromise = Wonka_sink_toPromise.toPromise;
function sample(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* ended */false,
/* value */undefined,
/* sourceTalkback */(function (param) {
return /* () */0;
}),
/* notifierTalkback */(function (param) {
return /* () */0;
})
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */0] = true;
state[/* notifierTalkback */3](/* Close */1);
return sink(/* End */0);
} else if (signal.tag) {
state[/* value */1] = Caml_option.some(signal[0]);
return /* () */0;
} else {
state[/* sourceTalkback */2] = signal[0];
return /* () */0;
}
}));
Curry._1(notifier, (function (signal) {
var match = state[/* value */1];
if (typeof signal === "number") {
state[/* ended */0] = true;
state[/* sourceTalkback */2](/* Close */1);
return sink(/* End */0);
} else if (signal.tag) {
if (match !== undefined && !state[/* ended */0]) {
state[/* value */1] = undefined;
return sink(/* Push */Block.__(1, [Caml_option.valFromOption(match)]));
} else {
return /* () */0;
}
} else {
state[/* notifierTalkback */3] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* ended */0] = true;
state[/* sourceTalkback */2](/* Close */1);
return state[/* notifierTalkback */3](/* Close */1);
} else {
state[/* sourceTalkback */2](/* Pull */0);
return state[/* notifierTalkback */3](/* Pull */0);
}
})]));
});
});
}
var fromDomEvent = Wonka_source_fromDomEvent.fromDomEvent;
function delay(wait) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* active */0,
/* gotEndSignal */false
];
Curry._1(source, (function (signal) {
var exit = 0;
if (typeof signal === "number" || signal.tag) {
exit = 1;
} else {
state[/* talkback */0] = signal[0];
return /* () */0;
}
if (exit === 1) {
if (state[/* gotEndSignal */2]) {
return /* () */0;
} else {
state[/* active */1] = state[/* active */1] + 1 | 0;
setTimeout((function (param) {
if (state[/* gotEndSignal */2] && state[/* active */1] === 0) {
sink(/* End */0);
} else {
state[/* active */1] = state[/* active */1] - 1 | 0;
}
return sink(signal);
}), wait);
return /* () */0;
}
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* gotEndSignal */2] = true;
if (state[/* active */1] === 0) {
return sink(/* End */0);
} else {
return 0;
}
} else if (state[/* gotEndSignal */2]) {
return /* () */0;
} else {
return state[/* talkback */0](signal);
}
})]));
});
});
}
var fromListener = Wonka_source_fromListener.fromListener;
function toPromise(source) {
return new Promise((function (resolve, param) {
return Curry._1(Wonka.takeLast(1)(source), (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](/* Pull */0);
}
}));
}));
}
var fromPromise = Wonka_source_fromPromise.fromPromise;
exports.fromListener = fromListener;
exports.fromDomEvent = fromDomEvent;
exports.debounce = debounce;
exports.delay = delay;
exports.interval = interval;
exports.fromPromise = fromPromise;
exports.debounce = debounce;
exports.sample = sample;
exports.throttle = throttle;
exports.sample = sample;
exports.delay = delay;
exports.toPromise = toPromise;
exports.fromDomEvent = fromDomEvent;
exports.fromListener = fromListener;
exports.fromPromise = fromPromise;
/* No side effect */
'use strict';
var Block = require("bs-platform/lib/js/block.js");
var Curry = require("bs-platform/lib/js/curry.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Wonka_helpers = require("./wonka_helpers.js");
var MutableQueue_js = require("bs-rebel/lib/js/src/js/MutableQueue_js.js");
var WonkaJs = require("./web/wonkaJs.js");
var Wonka_source_make = require("./sources/wonka_source_make.js");
var Wonka_operator_map = require("./operators/wonka_operator_map.js");
var Wonka_operator_tap = require("./operators/wonka_operator_tap.js");
var Wonka_sink_publish = require("./sinks/wonka_sink_publish.js");
var Wonka_operator_scan = require("./operators/wonka_operator_scan.js");
var Wonka_operator_skip = require("./operators/wonka_operator_skip.js");
var Wonka_operator_take = require("./operators/wonka_operator_take.js");
var Wonka_operator_share = require("./operators/wonka_operator_share.js");
var Wonka_sink_subscribe = require("./sinks/wonka_sink_subscribe.js");
var Wonka_operator_filter = require("./operators/wonka_operator_filter.js");
var Wonka_source_fromList = require("./sources/wonka_source_fromList.js");
var Wonka_operator_combine = require("./operators/wonka_operator_combine.js");
var Wonka_source_fromArray = require("./sources/wonka_source_fromArray.js");
var Wonka_source_fromValue = require("./sources/wonka_source_fromValue.js");
var Wonka_operator_mergeMap = require("./operators/wonka_operator_mergeMap.js");
var Wonka_operator_takeLast = require("./operators/wonka_operator_takeLast.js");
var Wonka_source_primitives = require("./sources/wonka_source_primitives.js");
var Wonka_operator_concatMap = require("./operators/wonka_operator_concatMap.js");
var Wonka_operator_skipUntil = require("./operators/wonka_operator_skipUntil.js");
var Wonka_operator_skipWhile = require("./operators/wonka_operator_skipWhile.js");
var Wonka_operator_switchMap = require("./operators/wonka_operator_switchMap.js");
var Wonka_operator_takeUntil = require("./operators/wonka_operator_takeUntil.js");
var Wonka_operator_takeWhile = require("./operators/wonka_operator_takeWhile.js");
var Wonka_source_makeSubject = require("./sources/wonka_source_makeSubject.js");
function makeSubject(param) {
var state = /* record */[
/* sinks */new Array(),
/* ended */false
];
var source = function (sink) {
state[/* sinks */0] = state[/* sinks */0].concat(sink);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal === /* Close */1) {
state[/* sinks */0] = state[/* sinks */0].filter((function (x) {
return x !== sink;
}));
return /* () */0;
} else {
return 0;
}
})]));
};
var next = function (value) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* sinks */0].forEach((function (sink) {
return sink(/* Push */Block.__(1, [value]));
}));
return /* () */0;
}
};
var complete = function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
state[/* sinks */0].forEach((function (sink) {
return sink(/* End */0);
}));
return /* () */0;
}
};
return /* record */[
/* source */source,
/* next */next,
/* complete */complete
];
}
var Types = 0;
function make(f) {
return (function (sink) {
var teardown = f(/* record */[
/* next */(function (value) {
return sink(/* Push */Block.__(1, [value]));
}),
/* complete */(function (param) {
return sink(/* End */0);
})
]);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
return teardown();
} else {
return /* () */0;
}
})]));
});
}
var fromArray = Wonka_source_fromArray.fromArray;
function fromList(ls) {
return (function (sink) {
var state = /* record */[
/* value */ls,
/* ended */false,
/* looping */false,
/* pull */false
];
return sink(/* Start */Block.__(0, [(function (signal) {
var match = state[/* looping */2];
if (signal) {
state[/* ended */1] = true;
return /* () */0;
} else if (match) {
state[/* pull */3] = true;
return /* () */0;
} else {
state[/* pull */3] = true;
state[/* looping */2] = true;
while(state[/* pull */3] && !state[/* ended */1]) {
var match$1 = state[/* value */0];
if (match$1) {
state[/* value */0] = match$1[1];
state[/* pull */3] = false;
sink(/* Push */Block.__(1, [match$1[0]]));
} else {
state[/* ended */1] = true;
sink(/* End */0);
}
};
state[/* looping */2] = false;
return /* () */0;
}
})]));
});
}
var fromList = Wonka_source_fromList.fromList;
function fromArray(arr) {
return (function (sink) {
var size = arr.length;
var state = /* record */[
/* index */0,
/* ended */false,
/* looping */false,
/* pull */false
];
return sink(/* Start */Block.__(0, [(function (signal) {
var match = state[/* looping */2];
if (signal) {
state[/* ended */1] = true;
return /* () */0;
} else if (match) {
state[/* pull */3] = true;
return /* () */0;
} else {
state[/* pull */3] = true;
state[/* looping */2] = true;
while(state[/* pull */3] && !state[/* ended */1]) {
var index = state[/* index */0];
if (index < size) {
var x = arr[index];
state[/* index */0] = index + 1 | 0;
state[/* pull */3] = false;
sink(/* Push */Block.__(1, [x]));
} else {
state[/* ended */1] = true;
sink(/* End */0);
}
};
state[/* looping */2] = false;
return /* () */0;
}
})]));
});
}
var fromValue = Wonka_source_fromValue.fromValue;
function fromValue(x) {
return (function (sink) {
var ended = /* record */[/* contents */false];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal || ended[0]) {
return /* () */0;
} else {
ended[0] = true;
sink(/* Push */Block.__(1, [x]));
return sink(/* End */0);
}
})]));
});
}
var make = Wonka_source_make.make;
function empty(sink) {
sink(/* Start */Block.__(0, [Wonka_helpers.talkbackPlaceholder]));
return sink(/* End */0);
}
var makeSubject = Wonka_source_makeSubject.makeSubject;
function never(sink) {
return sink(/* Start */Block.__(0, [Wonka_helpers.talkbackPlaceholder]));
}
var empty = Wonka_source_primitives.empty;
function tap(f) {
return (function (source) {
return (function (sink) {
return Curry._1(source, (function (signal) {
if (typeof signal !== "number") {
if (signal.tag) {
f(signal[0]);
}
}
return sink(signal);
}));
});
});
}
var never = Wonka_source_primitives.never;
function map(f) {
return (function (source) {
return (function (sink) {
return Curry._1(source, (function (signal) {
var tmp;
tmp = typeof signal === "number" ? /* End */0 : (
signal.tag ? /* Push */Block.__(1, [f(signal[0])]) : /* Start */Block.__(0, [signal[0]])
);
return sink(tmp);
}));
});
});
}
var combine = Wonka_operator_combine.combine;
function filter(f) {
return (function (source) {
return (function (sink) {
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && !f(signal[0]))) {
return sink(signal);
} else {
return talkback(/* Pull */0);
}
}));
});
});
}
var concatMap = Wonka_operator_concatMap.concatMap;
function scan(f, seed) {
return (function (source) {
return (function (sink) {
var acc = /* record */[/* contents */seed];
return Curry._1(source, (function (signal) {
var tmp;
if (typeof signal === "number") {
tmp = /* End */0;
} else if (signal.tag) {
acc[0] = Curry._2(f, acc[0], signal[0]);
tmp = /* Push */Block.__(1, [acc[0]]);
} else {
tmp = /* Start */Block.__(0, [signal[0]]);
}
return sink(tmp);
}));
});
});
}
var concat = Wonka_operator_concatMap.concat;
function mergeMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkbacks */new Array(),
/* ended */false
];
var applyInnerSource = function (innerSource) {
var talkback = /* record */[/* contents */Wonka_helpers.talkbackPlaceholder];
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerTalkbacks */1] = state[/* innerTalkbacks */1].filter((function (x) {
return x !== talkback[0];
}));
if (state[/* ended */2] && state[/* innerTalkbacks */1].length === 0) {
return sink(/* End */0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[/* innerTalkbacks */1].length !== 0) {
sink(/* Push */Block.__(1, [signal[0]]));
return talkback[0](/* Pull */0);
} else {
return /* () */0;
}
} else {
var tb = signal[0];
talkback[0] = tb;
state[/* innerTalkbacks */1] = state[/* innerTalkbacks */1].concat(tb);
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* ended */2] = true;
if (state[/* innerTalkbacks */1].length === 0) {
return sink(/* End */0);
} else {
return 0;
}
}
} else if (signal.tag) {
if (state[/* ended */2]) {
return /* () */0;
} else {
applyInnerSource(f(signal[0]));
return state[/* outerTalkback */0](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */0] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* ended */2] = true;
state[/* outerTalkback */0](/* Close */1);
state[/* innerTalkbacks */1].forEach((function (talkback) {
return talkback(/* Close */1);
}));
state[/* innerTalkbacks */1] = new Array();
return /* () */0;
}
} else if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* innerTalkbacks */1].forEach((function (talkback) {
return talkback(/* Pull */0);
}));
return /* () */0;
}
})]));
});
});
}
var concatAll = Wonka_operator_concatMap.concatAll;
function merge(sources) {
return mergeMap((function (x) {
return x;
}))(fromArray(sources));
}
var filter = Wonka_operator_filter.filter;
function mergeAll(source) {
return mergeMap((function (x) {
return x;
}))(source);
}
var map = Wonka_operator_map.map;
function concatMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* inputQueue */new Array(),
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerActive */false,
/* closed */false,
/* ended */false
];
var applyInnerSource = function (innerSource) {
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerActive */3] = false;
state[/* innerTalkback */2] = Wonka_helpers.talkbackPlaceholder;
var match = state[/* inputQueue */0].shift();
if (match !== undefined) {
return applyInnerSource(f(Caml_option.valFromOption(match)));
} else if (state[/* ended */5]) {
return sink(/* End */0);
} else {
return /* () */0;
}
} else if (signal.tag) {
if (state[/* closed */4]) {
return /* () */0;
} else {
sink(/* Push */Block.__(1, [signal[0]]));
return state[/* innerTalkback */2](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* innerActive */3] = true;
state[/* innerTalkback */2] = tb;
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */5]) {
return /* () */0;
} else {
state[/* ended */5] = true;
if (!state[/* innerActive */3] && MutableQueue_js.isEmpty(state[/* inputQueue */0])) {
return sink(/* End */0);
} else {
return 0;
}
}
} else if (signal.tag) {
if (state[/* ended */5]) {
return /* () */0;
} else {
var x = signal[0];
if (state[/* innerActive */3]) {
state[/* inputQueue */0].push(x);
} else {
applyInnerSource(f(x));
}
return state[/* outerTalkback */1](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */1] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */5]) {
return /* () */0;
} else {
state[/* ended */5] = true;
state[/* closed */4] = true;
state[/* outerTalkback */1](/* Close */1);
return state[/* innerTalkback */2](/* Close */1);
}
} else if (state[/* ended */5]) {
return 0;
} else {
return state[/* innerTalkback */2](/* Pull */0);
}
})]));
});
});
}
var mergeMap = Wonka_operator_mergeMap.mergeMap;
function concatAll(source) {
return concatMap((function (x) {
return x;
}))(source);
}
var merge = Wonka_operator_mergeMap.merge;
function concat(sources) {
return concatMap((function (x) {
return x;
}))(fromArray(sources));
}
var mergeAll = Wonka_operator_mergeMap.mergeAll;
function switchMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerActive */false,
/* closed */false,
/* ended */false
];
var applyInnerSource = function (innerSource) {
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerActive */2] = false;
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
if (state[/* ended */4]) {
return sink(/* End */0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[/* closed */3]) {
return /* () */0;
} else {
sink(/* Push */Block.__(1, [signal[0]]));
return state[/* innerTalkback */1](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* innerActive */2] = true;
state[/* innerTalkback */1] = tb;
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */4]) {
return /* () */0;
} else {
state[/* ended */4] = true;
if (state[/* innerActive */2]) {
return 0;
} else {
return sink(/* End */0);
}
}
} else if (signal.tag) {
if (state[/* ended */4]) {
return /* () */0;
} else {
if (state[/* innerActive */2]) {
state[/* innerTalkback */1](/* Close */1);
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
}
applyInnerSource(f(signal[0]));
return state[/* outerTalkback */0](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */0] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */4]) {
return /* () */0;
} else {
state[/* ended */4] = true;
state[/* closed */3] = true;
state[/* outerTalkback */0](/* Close */1);
state[/* innerTalkback */1](/* Close */1);
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
return /* () */0;
}
} else {
return state[/* innerTalkback */1](/* Pull */0);
}
})]));
});
});
}
var flatten = Wonka_operator_mergeMap.flatten;
function share(source) {
var state = /* record */[
/* sinks */new Array(),
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* gotSignal */false
];
return (function (sink) {
state[/* sinks */0] = state[/* sinks */0].concat(sink);
if (state[/* sinks */0].length === 1) {
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* sinks */0].forEach((function (sink) {
return sink(/* End */0);
}));
state[/* sinks */0] = new Array();
return /* () */0;
} else if (signal.tag) {
state[/* gotSignal */2] = false;
state[/* sinks */0].forEach((function (sink) {
return sink(signal);
}));
return /* () */0;
} else {
state[/* talkback */1] = signal[0];
return /* () */0;
}
}));
}
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* sinks */0] = state[/* sinks */0].filter((function (x) {
return x !== sink;
}));
if (state[/* sinks */0].length === 0) {
return state[/* talkback */1](/* Close */1);
} else {
return 0;
}
} else if (state[/* gotSignal */2]) {
return /* () */0;
} else {
state[/* gotSignal */2] = true;
return state[/* talkback */1](signal);
}
})]));
});
}
var scan = Wonka_operator_scan.scan;
function combine(sourceA, sourceB) {
return (function (sink) {
var state = /* record */[
/* talkbackA */Wonka_helpers.talkbackPlaceholder,
/* talkbackB */Wonka_helpers.talkbackPlaceholder,
/* lastValA */undefined,
/* lastValB */undefined,
/* gotSignal */false,
/* endCounter */0,
/* ended */false
];
Curry._1(sourceA, (function (signal) {
var match = state[/* lastValB */3];
if (typeof signal === "number") {
if (state[/* endCounter */5] < 1) {
state[/* endCounter */5] = state[/* endCounter */5] + 1 | 0;
return /* () */0;
} else if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* ended */6] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
var a = signal[0];
if (match !== undefined) {
if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* lastValA */2] = Caml_option.some(a);
state[/* gotSignal */4] = false;
return sink(/* Push */Block.__(1, [/* tuple */[
a,
Caml_option.valFromOption(match)
]]));
}
} else {
state[/* lastValA */2] = Caml_option.some(a);
state[/* gotSignal */4] = false;
return /* () */0;
}
} else {
state[/* talkbackA */0] = signal[0];
return /* () */0;
}
}));
Curry._1(sourceB, (function (signal) {
var match = state[/* lastValA */2];
if (typeof signal === "number") {
if (state[/* endCounter */5] < 1) {
state[/* endCounter */5] = state[/* endCounter */5] + 1 | 0;
return /* () */0;
} else if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* ended */6] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
var b = signal[0];
if (match !== undefined) {
if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* lastValB */3] = Caml_option.some(b);
state[/* gotSignal */4] = false;
return sink(/* Push */Block.__(1, [/* tuple */[
Caml_option.valFromOption(match),
b
]]));
}
} else {
state[/* lastValB */3] = Caml_option.some(b);
state[/* gotSignal */4] = false;
return /* () */0;
}
} else {
state[/* talkbackB */1] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* ended */6]) {
return 0;
} else if (signal) {
state[/* ended */6] = true;
state[/* talkbackA */0](/* Close */1);
return state[/* talkbackB */1](/* Close */1);
} else if (state[/* gotSignal */4]) {
return /* () */0;
} else {
state[/* gotSignal */4] = true;
state[/* talkbackA */0](signal);
return state[/* talkbackB */1](signal);
}
})]));
});
}
var share = Wonka_operator_share.share;
function take(max) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* taken */0,
/* talkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* taken */0] < max) {
state[/* taken */0] = max;
return sink(/* End */0);
} else {
return /* () */0;
}
} else if (signal.tag) {
if (state[/* taken */0] < max) {
state[/* taken */0] = state[/* taken */0] + 1 | 0;
sink(signal);
if (state[/* taken */0] === max) {
sink(/* End */0);
return state[/* talkback */1](/* Close */1);
} else {
return 0;
}
} else {
return /* () */0;
}
} else {
state[/* talkback */1] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* taken */0] < max) {
if (signal) {
state[/* taken */0] = max;
return state[/* talkback */1](/* Close */1);
} else {
return state[/* talkback */1](/* Pull */0);
}
} else {
return 0;
}
})]));
});
});
}
var skip = Wonka_operator_skip.skip;
function takeLast(max) {
return (function (source) {
return (function (sink) {
var queue = new Array();
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number") {
return Wonka_helpers.makeTrampoline(sink, (function () {
return queue.shift();
}));
} else if (signal.tag) {
var size = queue.length;
if (size >= max && max > 0) {
queue.shift();
}
queue.push(signal[0]);
return talkback(/* Pull */0);
} else {
return talkback(/* Pull */0);
}
}));
});
});
}
var skipUntil = Wonka_operator_skipUntil.skipUntil;
function takeWhile(f) {
return (function (source) {
return (function (sink) {
var ended = /* record */[/* contents */false];
var talkback = /* record */[/* contents */Wonka_helpers.talkbackPlaceholder];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (ended[0]) {
return /* () */0;
} else {
ended[0] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
if (ended[0]) {
return /* () */0;
} else if (f(signal[0])) {
return sink(signal);
} else {
ended[0] = true;
sink(/* End */0);
return talkback[0](/* Close */1);
}
} else {
talkback[0] = signal[0];
return sink(signal);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = true;
return talkback[0](/* Close */1);
} else {
return talkback[0](/* Pull */0);
}
})]));
});
});
}
var skipWhile = Wonka_operator_skipWhile.skipWhile;
function takeUntil(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* ended */false,
/* sourceTalkback */Wonka_helpers.talkbackPlaceholder,
/* notifierTalkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */0]) {
return /* () */0;
} else {
state[/* notifierTalkback */2](/* Close */1);
state[/* ended */0] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
if (state[/* ended */0]) {
return /* () */0;
} else {
return sink(signal);
}
} else {
state[/* sourceTalkback */1] = signal[0];
return Curry._1(notifier, (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
state[/* ended */0] = true;
state[/* notifierTalkback */2](/* Close */1);
state[/* sourceTalkback */1](/* Close */1);
return sink(/* End */0);
} else {
var innerTb = signal[0];
state[/* notifierTalkback */2] = innerTb;
return innerTb(/* Pull */0);
}
}));
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* ended */0]) {
return 0;
} else if (signal) {
state[/* sourceTalkback */1](/* Close */1);
return state[/* notifierTalkback */2](/* Close */1);
} else {
return state[/* sourceTalkback */1](/* Pull */0);
}
})]));
});
});
}
var switchMap = Wonka_operator_switchMap.switchMap;
function skip(wait) {
return (function (source) {
return (function (sink) {
var rest = /* record */[/* contents */wait];
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
rest[0] = rest[0] - 1 | 0;
return talkback(/* Pull */0);
}
}));
});
});
}
var take = Wonka_operator_take.take;
function skipWhile(f) {
return (function (source) {
return (function (sink) {
var skip = /* record */[/* contents */true];
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && skip[0])) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(/* Pull */0);
} else {
skip[0] = false;
return sink(signal);
}
}));
});
});
}
var takeLast = Wonka_operator_takeLast.takeLast;
function skipUntil(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* skip */true,
/* ended */false,
/* gotSignal */false,
/* sourceTalkback */Wonka_helpers.talkbackPlaceholder,
/* notifierTalkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* skip */0]) {
state[/* notifierTalkback */4](/* Close */1);
}
state[/* ended */1] = true;
return sink(/* End */0);
} else if (signal.tag) {
if (state[/* skip */0] && !state[/* ended */1]) {
return state[/* sourceTalkback */3](/* Pull */0);
} else if (state[/* ended */1]) {
return /* () */0;
} else {
state[/* gotSignal */2] = false;
return sink(signal);
}
} else {
var tb = signal[0];
state[/* sourceTalkback */3] = tb;
return Curry._1(notifier, (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
state[/* skip */0] = false;
return state[/* notifierTalkback */4](/* Close */1);
} else {
var innerTb = signal[0];
state[/* notifierTalkback */4] = innerTb;
innerTb(/* Pull */0);
return tb(/* Pull */0);
}
}));
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* skip */0]) {
state[/* notifierTalkback */4](/* Close */1);
}
state[/* ended */1] = true;
return state[/* sourceTalkback */3](/* Close */1);
} else if (!state[/* gotSignal */2] && !state[/* ended */1]) {
state[/* gotSignal */2] = true;
return state[/* sourceTalkback */3](/* Pull */0);
} else {
return /* () */0;
}
})]));
});
});
}
var takeUntil = Wonka_operator_takeUntil.takeUntil;
function publish(source) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* ended */false
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */1] = true;
return /* () */0;
} else if (signal.tag) {
if (state[/* ended */1]) {
return 0;
} else {
return state[/* talkback */0](/* Pull */0);
}
} else {
var x = signal[0];
state[/* talkback */0] = x;
return x(/* Pull */0);
}
}));
return /* record */[/* unsubscribe */(function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
return state[/* talkback */0](/* Close */1);
}
})];
}
var takeWhile = Wonka_operator_takeWhile.takeWhile;
function subscribe(f) {
return (function (source) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* ended */false
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */1] = true;
return /* () */0;
} else if (signal.tag) {
if (state[/* ended */1]) {
return /* () */0;
} else {
f(signal[0]);
return state[/* talkback */0](/* Pull */0);
}
} else {
var x = signal[0];
state[/* talkback */0] = x;
return x(/* Pull */0);
}
}));
return /* record */[/* unsubscribe */(function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
return state[/* talkback */0](/* Close */1);
}
})];
});
}
var tap = Wonka_operator_tap.tap;
function forEach(f) {
return (function (source) {
subscribe(f)(source);
return /* () */0;
});
}
var publish = Wonka_sink_publish.publish;
var Types = 0;
var subscribe = Wonka_sink_subscribe.subscribe;
var flatten = mergeAll;
var forEach = Wonka_sink_subscribe.forEach;
var debounce = WonkaJs.debounce;
var delay = WonkaJs.delay;
var interval = WonkaJs.interval;
var sample = WonkaJs.sample;
var throttle = WonkaJs.throttle;
var toPromise = WonkaJs.toPromise;
var fromDomEvent = WonkaJs.fromDomEvent;
var fromListener = WonkaJs.fromListener;
var fromPromise = WonkaJs.fromPromise;
exports.Types = Types;
exports.makeSubject = makeSubject;
exports.make = make;
exports.fromArray = fromArray;
exports.fromList = fromList;
exports.fromArray = fromArray;
exports.fromValue = fromValue;
exports.make = make;
exports.makeSubject = makeSubject;
exports.empty = empty;
exports.never = never;
exports.tap = tap;
exports.combine = combine;
exports.concatMap = concatMap;
exports.concat = concat;
exports.concatAll = concatAll;
exports.filter = filter;
exports.map = map;
exports.filter = filter;
exports.scan = scan;
exports.mergeMap = mergeMap;
exports.switchMap = switchMap;
exports.concatMap = concatMap;
exports.merge = merge;
exports.concat = concat;
exports.mergeAll = mergeAll;
exports.flatten = flatten;
exports.concatAll = concatAll;
exports.scan = scan;
exports.share = share;
exports.combine = combine;
exports.skip = skip;
exports.skipUntil = skipUntil;
exports.skipWhile = skipWhile;
exports.switchMap = switchMap;
exports.take = take;
exports.takeLast = takeLast;
exports.takeUntil = takeUntil;
exports.takeWhile = takeWhile;
exports.takeUntil = takeUntil;
exports.skip = skip;
exports.skipWhile = skipWhile;
exports.skipUntil = skipUntil;
exports.tap = tap;
exports.publish = publish;
exports.subscribe = subscribe;
exports.forEach = forEach;
exports.subscribe = subscribe;
exports.debounce = debounce;
exports.delay = delay;
exports.interval = interval;
exports.sample = sample;
exports.throttle = throttle;
exports.toPromise = toPromise;
exports.fromDomEvent = fromDomEvent;
exports.fromListener = fromListener;
exports.fromPromise = fromPromise;
/* No side effect */
{
"name": "wonka",
"version": "1.4.0",
"version": "1.4.1",
"author": "Phil Pluckthun <phil@kitten.sh>",

@@ -5,0 +5,0 @@ "source": "./src/index.js",

@@ -1,5 +0,4 @@

export { Talkback, Signal, Sink, Subscription, Source, Operator, Observer, Subject } from './wonka_types';
export * from './pipe';
export * from './wonka_types';
export * from './wonka';
export * from './web/wonkaJs';
export * from './pipe';
export * from './wonka';
export * from './web/wonkaJs';

@@ -1,17 +0,14 @@

import { Sink, Source, Operator } from '../wonka_types';
/* operators */
export * from './wonka_operator_debounce';
export * from './wonka_operator_delay';
export * from './wonka_operator_interval';
export * from './wonka_operator_sample';
export * from './wonka_operator_throttle';
export const fromListener: <E>(
addListener: (cb: (event: E) => void) => void,
removeListener: (cb: (event: E) => void) => void
) => Source<E>;
/* sinks */
export * from './wonka_sink_toPromise';
export const fromDomEvent: <E>(HTMLElement, string) => Source<E>;
export const interval: (interval: number) => Source<number>;
export const fromPromise: <A>(promise: Promise<A>) => Source<A>;
export const debounce: <A>(f: (x: A) => number) => Operator<A, A>;
export const throttle: <A>(f: (x: A) => number) => Operator<A, A>;
export const sample: <A>(signal: Source<any>) => Operator<A, A>;
export const delay: <A>(duration: number) => Operator<A, A>;
export const toPromise: <A>(source: Source<A>) => Promise<A>;
/* sources */
export * from './wonka_source_fromDomEvent';
export * from './wonka_source_fromListener';
export * from './wonka_source_fromPromise';
import * as Block from "bs-platform/lib/es6/block.js";
import * as Curry from "bs-platform/lib/es6/curry.js";
import * as Wonka from "../wonka.js";
import * as Caml_option from "bs-platform/lib/es6/caml_option.js";
import * as Wonka_helpers from "../wonka_helpers.js";
import * as Wonka_operator_delay from "./wonka_operator_delay.js";
import * as Wonka_sink_toPromise from "./wonka_sink_toPromise.js";
import * as Wonka_operator_sample from "./wonka_operator_sample.js";
import * as Wonka_operator_debounce from "./wonka_operator_debounce.js";
import * as Wonka_operator_interval from "./wonka_operator_interval.js";
import * as Wonka_operator_throttle from "./wonka_operator_throttle.js";
import * as Wonka_source_fromPromise from "./wonka_source_fromPromise.js";
import * as Wonka_source_fromDomEvent from "./wonka_source_fromDomEvent.js";
import * as Wonka_source_fromListener from "./wonka_source_fromListener.js";
function fromListener(addListener, removeListener) {
return (function (sink) {
var handler = function ($$event) {
return sink(/* Push */Block.__(1, [$$event]));
};
sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
return Curry._1(removeListener, handler);
} else {
return /* () */0;
}
})]));
return Curry._1(addListener, handler);
});
}
var debounce = Wonka_operator_debounce.debounce;
function fromDomEvent(element, $$event) {
return (function (sink) {
var addEventListener = (
function (element, event, handler) {
element.addEventListener(event, handler);
}
);
var removeEventListener = (
function (element, event, handler) {
element.removeEventListener(event, handler);
}
);
return fromListener((function (handler) {
return Curry._3(addEventListener, element, $$event, handler);
}), (function (handler) {
return Curry._3(removeEventListener, element, $$event, handler);
}))(sink);
});
}
var delay = Wonka_operator_delay.delay;
function interval(p) {
return (function (sink) {
var i = /* record */[/* contents */0];
var id = setInterval((function (param) {
var num = i[0];
i[0] = i[0] + 1 | 0;
return sink(/* Push */Block.__(1, [num]));
}), p);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
clearInterval(id);
return /* () */0;
} else {
return /* () */0;
}
})]));
});
}
var interval = Wonka_operator_interval.interval;
function fromPromise(promise) {
return (function (sink) {
var ended = /* record */[/* contents */false];
promise.then((function (value) {
if (!ended[0]) {
sink(/* Push */Block.__(1, [value]));
sink(/* End */0);
}
return Promise.resolve(/* () */0);
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
ended[0] = true;
return /* () */0;
} else {
return /* () */0;
}
})]));
});
}
var sample = Wonka_operator_sample.sample;
function debounce(f) {
return (function (source) {
return (function (sink) {
var gotEndSignal = /* record */[/* contents */false];
var id = /* record */[/* contents */undefined];
var $$clearTimeout$1 = function (param) {
var match = id[0];
if (match !== undefined) {
id[0] = undefined;
clearTimeout(Caml_option.valFromOption(match));
return /* () */0;
} else {
return /* () */0;
}
};
return Curry._1(source, (function (signal) {
if (typeof signal === "number") {
gotEndSignal[0] = true;
var match = id[0];
if (match !== undefined) {
return /* () */0;
} else {
return sink(/* End */0);
}
} else if (signal.tag) {
$$clearTimeout$1(/* () */0);
id[0] = Caml_option.some(setTimeout((function (param) {
id[0] = undefined;
sink(signal);
if (gotEndSignal[0]) {
return sink(/* End */0);
} else {
return 0;
}
}), f(signal[0])));
return /* () */0;
} else {
var tb = signal[0];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
$$clearTimeout$1(/* () */0);
return tb(/* Close */1);
} else {
return tb(signal);
}
})]));
}
}));
});
});
}
var throttle = Wonka_operator_throttle.throttle;
function throttle(f) {
return (function (source) {
return (function (sink) {
var skip = /* record */[/* contents */false];
var id = /* record */[/* contents */undefined];
var $$clearTimeout$1 = function (param) {
var match = id[0];
if (match !== undefined) {
clearTimeout(Caml_option.valFromOption(match));
return /* () */0;
} else {
return /* () */0;
}
};
return Curry._1(source, (function (signal) {
if (typeof signal === "number") {
$$clearTimeout$1(/* () */0);
return sink(/* End */0);
} else if (signal.tag) {
if (skip[0]) {
return /* () */0;
} else {
skip[0] = true;
$$clearTimeout$1(/* () */0);
id[0] = Caml_option.some(setTimeout((function (param) {
id[0] = undefined;
skip[0] = false;
return /* () */0;
}), f(signal[0])));
return sink(signal);
}
} else {
var tb = signal[0];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
$$clearTimeout$1(/* () */0);
return tb(/* Close */1);
} else {
return tb(signal);
}
})]));
}
}));
});
});
}
var toPromise = Wonka_sink_toPromise.toPromise;
function sample(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* ended */false,
/* value */undefined,
/* sourceTalkback */(function (param) {
return /* () */0;
}),
/* notifierTalkback */(function (param) {
return /* () */0;
})
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */0] = true;
state[/* notifierTalkback */3](/* Close */1);
return sink(/* End */0);
} else if (signal.tag) {
state[/* value */1] = Caml_option.some(signal[0]);
return /* () */0;
} else {
state[/* sourceTalkback */2] = signal[0];
return /* () */0;
}
}));
Curry._1(notifier, (function (signal) {
var match = state[/* value */1];
if (typeof signal === "number") {
state[/* ended */0] = true;
state[/* sourceTalkback */2](/* Close */1);
return sink(/* End */0);
} else if (signal.tag) {
if (match !== undefined && !state[/* ended */0]) {
state[/* value */1] = undefined;
return sink(/* Push */Block.__(1, [Caml_option.valFromOption(match)]));
} else {
return /* () */0;
}
} else {
state[/* notifierTalkback */3] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* ended */0] = true;
state[/* sourceTalkback */2](/* Close */1);
return state[/* notifierTalkback */3](/* Close */1);
} else {
state[/* sourceTalkback */2](/* Pull */0);
return state[/* notifierTalkback */3](/* Pull */0);
}
})]));
});
});
}
var fromDomEvent = Wonka_source_fromDomEvent.fromDomEvent;
function delay(wait) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* active */0,
/* gotEndSignal */false
];
Curry._1(source, (function (signal) {
var exit = 0;
if (typeof signal === "number" || signal.tag) {
exit = 1;
} else {
state[/* talkback */0] = signal[0];
return /* () */0;
}
if (exit === 1) {
if (state[/* gotEndSignal */2]) {
return /* () */0;
} else {
state[/* active */1] = state[/* active */1] + 1 | 0;
setTimeout((function (param) {
if (state[/* gotEndSignal */2] && state[/* active */1] === 0) {
sink(/* End */0);
} else {
state[/* active */1] = state[/* active */1] - 1 | 0;
}
return sink(signal);
}), wait);
return /* () */0;
}
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* gotEndSignal */2] = true;
if (state[/* active */1] === 0) {
return sink(/* End */0);
} else {
return 0;
}
} else if (state[/* gotEndSignal */2]) {
return /* () */0;
} else {
return state[/* talkback */0](signal);
}
})]));
});
});
}
var fromListener = Wonka_source_fromListener.fromListener;
function toPromise(source) {
return new Promise((function (resolve, param) {
return Curry._1(Wonka.takeLast(1)(source), (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
return resolve(signal[0]);
} else {
return signal[0](/* Pull */0);
}
}));
}));
}
var fromPromise = Wonka_source_fromPromise.fromPromise;
export {
fromListener ,
fromDomEvent ,
debounce ,
delay ,
interval ,
fromPromise ,
debounce ,
sample ,
throttle ,
sample ,
delay ,
toPromise ,
fromDomEvent ,
fromListener ,
fromPromise ,
}
/* No side effect */

@@ -1,40 +0,31 @@

import { List, Sink, Source, Subscription, Operator, Observer, Subject } from './wonka_types';
/* sources */
export * from './sources/wonka_source_fromArray';
export * from './sources/wonka_source_fromList';
export * from './sources/wonka_source_fromValue';
export * from './sources/wonka_source_make';
export * from './sources/wonka_source_makeSubject';
export * from './sources/wonka_source_primitives';
export const makeSubject: <A>() => Subject<A>;
/* operators */
export * from './operators/wonka_operator_combine';
export * from './operators/wonka_operator_concatMap';
export * from './operators/wonka_operator_filter';
export * from './operators/wonka_operator_map';
export * from './operators/wonka_operator_mergeMap';
export * from './operators/wonka_operator_scan';
export * from './operators/wonka_operator_share';
export * from './operators/wonka_operator_skip';
export * from './operators/wonka_operator_skipUntil';
export * from './operators/wonka_operator_skipWhile';
export * from './operators/wonka_operator_switchMap';
export * from './operators/wonka_operator_take';
export * from './operators/wonka_operator_takeLast';
export * from './operators/wonka_operator_takeUntil';
export * from './operators/wonka_operator_takeWhile';
export * from './operators/wonka_operator_tap';
export const make: <A>(f: (observer: Observer<A>) => (() => void)) => Source<A>;
export const fromList: <A>(list: List<A>) => Source<A>;
export const fromArray: <A>(array: A[]) => Source<A>;
export const fromValue: <A>(value: A) => Source<A>;
export const empty: Source<{}>;
export const never: Source<{}>;
/* sinks */
export * from './sinks/wonka_sink_publish';
export * from './sinks/wonka_sink_subscribe';
export const tap: <A>(f: (value: A) => void) => Operator<A, A>;
export const map: <A, B>(f: (value: A) => B) => Operator<A, B>;
export const filter: <A>(f: (value: A) => boolean) => Operator<A, A>;
export const scan: <A, B>(f: (acc: B, value: A) => B, acc: B) => Operator<A, B>;
export const mergeMap: <A, B>(f: (value: A) => Source<B>) => Operator<A, B>;
export const switchMap: <A, B>(f: (value: A) => Source<B>) => Operator<A, B>;
export const concatMap: <A, B>(f: (value: A) => Source<B>) => Operator<A, B>;
export const merge: <A>(sources: Array<Source<A>>) => Source<A>;
export const concat: <A>(sources: Array<Source<A>>) => Source<A>;
export const share: <A>(source: Source<A>) => Source<A>;
export const combine: <A, B>(a: Source<A>, b: Source<B>) => Source<[A, B]>;
export const concatAll: <A>(source: Source<Source<A>>) => Source<A>;
export const mergeAll: <A>(source: Source<Source<A>>) => Source<A>;
export const flatten: <A>(source: Source<Source<A>>) => Source<A>;
export const take: <A>(max: number) => Operator<A, A>;
export const takeLast: <A>(max: number) => Operator<A, A>;
export const takeWhile: <A>(f: (x: A) => boolean) => Operator<A, A>;
export const takeUntil: <A>(signal: Source<any>) => Operator<A, A>;
export const skip: <A>(max: number) => Operator<A, A>;
export const skipWhile: <A>(f: (x: A) => boolean) => Operator<A, A>;
export const skipUntil: <A>(signal: Source<any>) => Operator<A, A>;
export const publish: <A>(source: Source<A>) => Subscription;
export const forEach: <A>(f: (x: A) => void) => (source: Source<A>) => void;
export const subscribe: <A>(f: (x: A) => void) => (source: Source<A>) => Subscription;
export * from './web/wonkaJs';
import * as Block from "bs-platform/lib/es6/block.js";
import * as Curry from "bs-platform/lib/es6/curry.js";
import * as Caml_option from "bs-platform/lib/es6/caml_option.js";
import * as Wonka_helpers from "./wonka_helpers.js";
import * as MutableQueue_js from "bs-rebel/src/js/MutableQueue_js.js";
import * as WonkaJs from "./web/wonkaJs.js";
import * as Wonka_source_make from "./sources/wonka_source_make.js";
import * as Wonka_operator_map from "./operators/wonka_operator_map.js";
import * as Wonka_operator_tap from "./operators/wonka_operator_tap.js";
import * as Wonka_sink_publish from "./sinks/wonka_sink_publish.js";
import * as Wonka_operator_scan from "./operators/wonka_operator_scan.js";
import * as Wonka_operator_skip from "./operators/wonka_operator_skip.js";
import * as Wonka_operator_take from "./operators/wonka_operator_take.js";
import * as Wonka_operator_share from "./operators/wonka_operator_share.js";
import * as Wonka_sink_subscribe from "./sinks/wonka_sink_subscribe.js";
import * as Wonka_operator_filter from "./operators/wonka_operator_filter.js";
import * as Wonka_source_fromList from "./sources/wonka_source_fromList.js";
import * as Wonka_operator_combine from "./operators/wonka_operator_combine.js";
import * as Wonka_source_fromArray from "./sources/wonka_source_fromArray.js";
import * as Wonka_source_fromValue from "./sources/wonka_source_fromValue.js";
import * as Wonka_operator_mergeMap from "./operators/wonka_operator_mergeMap.js";
import * as Wonka_operator_takeLast from "./operators/wonka_operator_takeLast.js";
import * as Wonka_source_primitives from "./sources/wonka_source_primitives.js";
import * as Wonka_operator_concatMap from "./operators/wonka_operator_concatMap.js";
import * as Wonka_operator_skipUntil from "./operators/wonka_operator_skipUntil.js";
import * as Wonka_operator_skipWhile from "./operators/wonka_operator_skipWhile.js";
import * as Wonka_operator_switchMap from "./operators/wonka_operator_switchMap.js";
import * as Wonka_operator_takeUntil from "./operators/wonka_operator_takeUntil.js";
import * as Wonka_operator_takeWhile from "./operators/wonka_operator_takeWhile.js";
import * as Wonka_source_makeSubject from "./sources/wonka_source_makeSubject.js";
function makeSubject(param) {
var state = /* record */[
/* sinks */new Array(),
/* ended */false
];
var source = function (sink) {
state[/* sinks */0] = state[/* sinks */0].concat(sink);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal === /* Close */1) {
state[/* sinks */0] = state[/* sinks */0].filter((function (x) {
return x !== sink;
}));
return /* () */0;
} else {
return 0;
}
})]));
};
var next = function (value) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* sinks */0].forEach((function (sink) {
return sink(/* Push */Block.__(1, [value]));
}));
return /* () */0;
}
};
var complete = function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
state[/* sinks */0].forEach((function (sink) {
return sink(/* End */0);
}));
return /* () */0;
}
};
return /* record */[
/* source */source,
/* next */next,
/* complete */complete
];
}
var Types = 0;
function make(f) {
return (function (sink) {
var teardown = f(/* record */[
/* next */(function (value) {
return sink(/* Push */Block.__(1, [value]));
}),
/* complete */(function (param) {
return sink(/* End */0);
})
]);
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
return teardown();
} else {
return /* () */0;
}
})]));
});
}
var fromArray = Wonka_source_fromArray.fromArray;
function fromList(ls) {
return (function (sink) {
var state = /* record */[
/* value */ls,
/* ended */false,
/* looping */false,
/* pull */false
];
return sink(/* Start */Block.__(0, [(function (signal) {
var match = state[/* looping */2];
if (signal) {
state[/* ended */1] = true;
return /* () */0;
} else if (match) {
state[/* pull */3] = true;
return /* () */0;
} else {
state[/* pull */3] = true;
state[/* looping */2] = true;
while(state[/* pull */3] && !state[/* ended */1]) {
var match$1 = state[/* value */0];
if (match$1) {
state[/* value */0] = match$1[1];
state[/* pull */3] = false;
sink(/* Push */Block.__(1, [match$1[0]]));
} else {
state[/* ended */1] = true;
sink(/* End */0);
}
};
state[/* looping */2] = false;
return /* () */0;
}
})]));
});
}
var fromList = Wonka_source_fromList.fromList;
function fromArray(arr) {
return (function (sink) {
var size = arr.length;
var state = /* record */[
/* index */0,
/* ended */false,
/* looping */false,
/* pull */false
];
return sink(/* Start */Block.__(0, [(function (signal) {
var match = state[/* looping */2];
if (signal) {
state[/* ended */1] = true;
return /* () */0;
} else if (match) {
state[/* pull */3] = true;
return /* () */0;
} else {
state[/* pull */3] = true;
state[/* looping */2] = true;
while(state[/* pull */3] && !state[/* ended */1]) {
var index = state[/* index */0];
if (index < size) {
var x = arr[index];
state[/* index */0] = index + 1 | 0;
state[/* pull */3] = false;
sink(/* Push */Block.__(1, [x]));
} else {
state[/* ended */1] = true;
sink(/* End */0);
}
};
state[/* looping */2] = false;
return /* () */0;
}
})]));
});
}
var fromValue = Wonka_source_fromValue.fromValue;
function fromValue(x) {
return (function (sink) {
var ended = /* record */[/* contents */false];
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal || ended[0]) {
return /* () */0;
} else {
ended[0] = true;
sink(/* Push */Block.__(1, [x]));
return sink(/* End */0);
}
})]));
});
}
var make = Wonka_source_make.make;
function empty(sink) {
sink(/* Start */Block.__(0, [Wonka_helpers.talkbackPlaceholder]));
return sink(/* End */0);
}
var makeSubject = Wonka_source_makeSubject.makeSubject;
function never(sink) {
return sink(/* Start */Block.__(0, [Wonka_helpers.talkbackPlaceholder]));
}
var empty = Wonka_source_primitives.empty;
function tap(f) {
return (function (source) {
return (function (sink) {
return Curry._1(source, (function (signal) {
if (typeof signal !== "number") {
if (signal.tag) {
f(signal[0]);
}
}
return sink(signal);
}));
});
});
}
var never = Wonka_source_primitives.never;
function map(f) {
return (function (source) {
return (function (sink) {
return Curry._1(source, (function (signal) {
var tmp;
tmp = typeof signal === "number" ? /* End */0 : (
signal.tag ? /* Push */Block.__(1, [f(signal[0])]) : /* Start */Block.__(0, [signal[0]])
);
return sink(tmp);
}));
});
});
}
var combine = Wonka_operator_combine.combine;
function filter(f) {
return (function (source) {
return (function (sink) {
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && !f(signal[0]))) {
return sink(signal);
} else {
return talkback(/* Pull */0);
}
}));
});
});
}
var concatMap = Wonka_operator_concatMap.concatMap;
function scan(f, seed) {
return (function (source) {
return (function (sink) {
var acc = /* record */[/* contents */seed];
return Curry._1(source, (function (signal) {
var tmp;
if (typeof signal === "number") {
tmp = /* End */0;
} else if (signal.tag) {
acc[0] = Curry._2(f, acc[0], signal[0]);
tmp = /* Push */Block.__(1, [acc[0]]);
} else {
tmp = /* Start */Block.__(0, [signal[0]]);
}
return sink(tmp);
}));
});
});
}
var concat = Wonka_operator_concatMap.concat;
function mergeMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkbacks */new Array(),
/* ended */false
];
var applyInnerSource = function (innerSource) {
var talkback = /* record */[/* contents */Wonka_helpers.talkbackPlaceholder];
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerTalkbacks */1] = state[/* innerTalkbacks */1].filter((function (x) {
return x !== talkback[0];
}));
if (state[/* ended */2] && state[/* innerTalkbacks */1].length === 0) {
return sink(/* End */0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[/* innerTalkbacks */1].length !== 0) {
sink(/* Push */Block.__(1, [signal[0]]));
return talkback[0](/* Pull */0);
} else {
return /* () */0;
}
} else {
var tb = signal[0];
talkback[0] = tb;
state[/* innerTalkbacks */1] = state[/* innerTalkbacks */1].concat(tb);
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* ended */2] = true;
if (state[/* innerTalkbacks */1].length === 0) {
return sink(/* End */0);
} else {
return 0;
}
}
} else if (signal.tag) {
if (state[/* ended */2]) {
return /* () */0;
} else {
applyInnerSource(f(signal[0]));
return state[/* outerTalkback */0](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */0] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* ended */2] = true;
state[/* outerTalkback */0](/* Close */1);
state[/* innerTalkbacks */1].forEach((function (talkback) {
return talkback(/* Close */1);
}));
state[/* innerTalkbacks */1] = new Array();
return /* () */0;
}
} else if (state[/* ended */2]) {
return /* () */0;
} else {
state[/* innerTalkbacks */1].forEach((function (talkback) {
return talkback(/* Pull */0);
}));
return /* () */0;
}
})]));
});
});
}
var concatAll = Wonka_operator_concatMap.concatAll;
function merge(sources) {
return mergeMap((function (x) {
return x;
}))(fromArray(sources));
}
var filter = Wonka_operator_filter.filter;
function mergeAll(source) {
return mergeMap((function (x) {
return x;
}))(source);
}
var map = Wonka_operator_map.map;
function concatMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* inputQueue */new Array(),
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerActive */false,
/* closed */false,
/* ended */false
];
var applyInnerSource = function (innerSource) {
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerActive */3] = false;
state[/* innerTalkback */2] = Wonka_helpers.talkbackPlaceholder;
var match = state[/* inputQueue */0].shift();
if (match !== undefined) {
return applyInnerSource(f(Caml_option.valFromOption(match)));
} else if (state[/* ended */5]) {
return sink(/* End */0);
} else {
return /* () */0;
}
} else if (signal.tag) {
if (state[/* closed */4]) {
return /* () */0;
} else {
sink(/* Push */Block.__(1, [signal[0]]));
return state[/* innerTalkback */2](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* innerActive */3] = true;
state[/* innerTalkback */2] = tb;
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */5]) {
return /* () */0;
} else {
state[/* ended */5] = true;
if (!state[/* innerActive */3] && MutableQueue_js.isEmpty(state[/* inputQueue */0])) {
return sink(/* End */0);
} else {
return 0;
}
}
} else if (signal.tag) {
if (state[/* ended */5]) {
return /* () */0;
} else {
var x = signal[0];
if (state[/* innerActive */3]) {
state[/* inputQueue */0].push(x);
} else {
applyInnerSource(f(x));
}
return state[/* outerTalkback */1](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */1] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */5]) {
return /* () */0;
} else {
state[/* ended */5] = true;
state[/* closed */4] = true;
state[/* outerTalkback */1](/* Close */1);
return state[/* innerTalkback */2](/* Close */1);
}
} else if (state[/* ended */5]) {
return 0;
} else {
return state[/* innerTalkback */2](/* Pull */0);
}
})]));
});
});
}
var mergeMap = Wonka_operator_mergeMap.mergeMap;
function concatAll(source) {
return concatMap((function (x) {
return x;
}))(source);
}
var merge = Wonka_operator_mergeMap.merge;
function concat(sources) {
return concatMap((function (x) {
return x;
}))(fromArray(sources));
}
var mergeAll = Wonka_operator_mergeMap.mergeAll;
function switchMap(f) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* outerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerTalkback */Wonka_helpers.talkbackPlaceholder,
/* innerActive */false,
/* closed */false,
/* ended */false
];
var applyInnerSource = function (innerSource) {
return Curry._1(innerSource, (function (signal) {
if (typeof signal === "number") {
state[/* innerActive */2] = false;
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
if (state[/* ended */4]) {
return sink(/* End */0);
} else {
return 0;
}
} else if (signal.tag) {
if (state[/* closed */3]) {
return /* () */0;
} else {
sink(/* Push */Block.__(1, [signal[0]]));
return state[/* innerTalkback */1](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* innerActive */2] = true;
state[/* innerTalkback */1] = tb;
return tb(/* Pull */0);
}
}));
};
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */4]) {
return /* () */0;
} else {
state[/* ended */4] = true;
if (state[/* innerActive */2]) {
return 0;
} else {
return sink(/* End */0);
}
}
} else if (signal.tag) {
if (state[/* ended */4]) {
return /* () */0;
} else {
if (state[/* innerActive */2]) {
state[/* innerTalkback */1](/* Close */1);
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
}
applyInnerSource(f(signal[0]));
return state[/* outerTalkback */0](/* Pull */0);
}
} else {
var tb = signal[0];
state[/* outerTalkback */0] = tb;
return tb(/* Pull */0);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* ended */4]) {
return /* () */0;
} else {
state[/* ended */4] = true;
state[/* closed */3] = true;
state[/* outerTalkback */0](/* Close */1);
state[/* innerTalkback */1](/* Close */1);
state[/* innerTalkback */1] = Wonka_helpers.talkbackPlaceholder;
return /* () */0;
}
} else {
return state[/* innerTalkback */1](/* Pull */0);
}
})]));
});
});
}
var flatten = Wonka_operator_mergeMap.flatten;
function share(source) {
var state = /* record */[
/* sinks */new Array(),
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* gotSignal */false
];
return (function (sink) {
state[/* sinks */0] = state[/* sinks */0].concat(sink);
if (state[/* sinks */0].length === 1) {
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* sinks */0].forEach((function (sink) {
return sink(/* End */0);
}));
state[/* sinks */0] = new Array();
return /* () */0;
} else if (signal.tag) {
state[/* gotSignal */2] = false;
state[/* sinks */0].forEach((function (sink) {
return sink(signal);
}));
return /* () */0;
} else {
state[/* talkback */1] = signal[0];
return /* () */0;
}
}));
}
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
state[/* sinks */0] = state[/* sinks */0].filter((function (x) {
return x !== sink;
}));
if (state[/* sinks */0].length === 0) {
return state[/* talkback */1](/* Close */1);
} else {
return 0;
}
} else if (state[/* gotSignal */2]) {
return /* () */0;
} else {
state[/* gotSignal */2] = true;
return state[/* talkback */1](signal);
}
})]));
});
}
var scan = Wonka_operator_scan.scan;
function combine(sourceA, sourceB) {
return (function (sink) {
var state = /* record */[
/* talkbackA */Wonka_helpers.talkbackPlaceholder,
/* talkbackB */Wonka_helpers.talkbackPlaceholder,
/* lastValA */undefined,
/* lastValB */undefined,
/* gotSignal */false,
/* endCounter */0,
/* ended */false
];
Curry._1(sourceA, (function (signal) {
var match = state[/* lastValB */3];
if (typeof signal === "number") {
if (state[/* endCounter */5] < 1) {
state[/* endCounter */5] = state[/* endCounter */5] + 1 | 0;
return /* () */0;
} else if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* ended */6] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
var a = signal[0];
if (match !== undefined) {
if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* lastValA */2] = Caml_option.some(a);
state[/* gotSignal */4] = false;
return sink(/* Push */Block.__(1, [/* tuple */[
a,
Caml_option.valFromOption(match)
]]));
}
} else {
state[/* lastValA */2] = Caml_option.some(a);
state[/* gotSignal */4] = false;
return /* () */0;
}
} else {
state[/* talkbackA */0] = signal[0];
return /* () */0;
}
}));
Curry._1(sourceB, (function (signal) {
var match = state[/* lastValA */2];
if (typeof signal === "number") {
if (state[/* endCounter */5] < 1) {
state[/* endCounter */5] = state[/* endCounter */5] + 1 | 0;
return /* () */0;
} else if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* ended */6] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
var b = signal[0];
if (match !== undefined) {
if (state[/* ended */6]) {
return /* () */0;
} else {
state[/* lastValB */3] = Caml_option.some(b);
state[/* gotSignal */4] = false;
return sink(/* Push */Block.__(1, [/* tuple */[
Caml_option.valFromOption(match),
b
]]));
}
} else {
state[/* lastValB */3] = Caml_option.some(b);
state[/* gotSignal */4] = false;
return /* () */0;
}
} else {
state[/* talkbackB */1] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* ended */6]) {
return 0;
} else if (signal) {
state[/* ended */6] = true;
state[/* talkbackA */0](/* Close */1);
return state[/* talkbackB */1](/* Close */1);
} else if (state[/* gotSignal */4]) {
return /* () */0;
} else {
state[/* gotSignal */4] = true;
state[/* talkbackA */0](signal);
return state[/* talkbackB */1](signal);
}
})]));
});
}
var share = Wonka_operator_share.share;
function take(max) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* taken */0,
/* talkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* taken */0] < max) {
state[/* taken */0] = max;
return sink(/* End */0);
} else {
return /* () */0;
}
} else if (signal.tag) {
if (state[/* taken */0] < max) {
state[/* taken */0] = state[/* taken */0] + 1 | 0;
sink(signal);
if (state[/* taken */0] === max) {
sink(/* End */0);
return state[/* talkback */1](/* Close */1);
} else {
return 0;
}
} else {
return /* () */0;
}
} else {
state[/* talkback */1] = signal[0];
return /* () */0;
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* taken */0] < max) {
if (signal) {
state[/* taken */0] = max;
return state[/* talkback */1](/* Close */1);
} else {
return state[/* talkback */1](/* Pull */0);
}
} else {
return 0;
}
})]));
});
});
}
var skip = Wonka_operator_skip.skip;
function takeLast(max) {
return (function (source) {
return (function (sink) {
var queue = new Array();
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number") {
return Wonka_helpers.makeTrampoline(sink, (function () {
return queue.shift();
}));
} else if (signal.tag) {
var size = queue.length;
if (size >= max && max > 0) {
queue.shift();
}
queue.push(signal[0]);
return talkback(/* Pull */0);
} else {
return talkback(/* Pull */0);
}
}));
});
});
}
var skipUntil = Wonka_operator_skipUntil.skipUntil;
function takeWhile(f) {
return (function (source) {
return (function (sink) {
var ended = /* record */[/* contents */false];
var talkback = /* record */[/* contents */Wonka_helpers.talkbackPlaceholder];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (ended[0]) {
return /* () */0;
} else {
ended[0] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
if (ended[0]) {
return /* () */0;
} else if (f(signal[0])) {
return sink(signal);
} else {
ended[0] = true;
sink(/* End */0);
return talkback[0](/* Close */1);
}
} else {
talkback[0] = signal[0];
return sink(signal);
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (ended[0]) {
return 0;
} else if (signal) {
ended[0] = true;
return talkback[0](/* Close */1);
} else {
return talkback[0](/* Pull */0);
}
})]));
});
});
}
var skipWhile = Wonka_operator_skipWhile.skipWhile;
function takeUntil(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* ended */false,
/* sourceTalkback */Wonka_helpers.talkbackPlaceholder,
/* notifierTalkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* ended */0]) {
return /* () */0;
} else {
state[/* notifierTalkback */2](/* Close */1);
state[/* ended */0] = true;
return sink(/* End */0);
}
} else if (signal.tag) {
if (state[/* ended */0]) {
return /* () */0;
} else {
return sink(signal);
}
} else {
state[/* sourceTalkback */1] = signal[0];
return Curry._1(notifier, (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
state[/* ended */0] = true;
state[/* notifierTalkback */2](/* Close */1);
state[/* sourceTalkback */1](/* Close */1);
return sink(/* End */0);
} else {
var innerTb = signal[0];
state[/* notifierTalkback */2] = innerTb;
return innerTb(/* Pull */0);
}
}));
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (state[/* ended */0]) {
return 0;
} else if (signal) {
state[/* sourceTalkback */1](/* Close */1);
return state[/* notifierTalkback */2](/* Close */1);
} else {
return state[/* sourceTalkback */1](/* Pull */0);
}
})]));
});
});
}
var switchMap = Wonka_operator_switchMap.switchMap;
function skip(wait) {
return (function (source) {
return (function (sink) {
var rest = /* record */[/* contents */wait];
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && rest[0] > 0)) {
return sink(signal);
} else {
rest[0] = rest[0] - 1 | 0;
return talkback(/* Pull */0);
}
}));
});
});
}
var take = Wonka_operator_take.take;
function skipWhile(f) {
return (function (source) {
return (function (sink) {
var skip = /* record */[/* contents */true];
return Wonka_helpers.captureTalkback(source, (function (signal, talkback) {
if (typeof signal === "number" || !(signal.tag && skip[0])) {
return sink(signal);
} else if (f(signal[0])) {
return talkback(/* Pull */0);
} else {
skip[0] = false;
return sink(signal);
}
}));
});
});
}
var takeLast = Wonka_operator_takeLast.takeLast;
function skipUntil(notifier) {
return (function (source) {
return (function (sink) {
var state = /* record */[
/* skip */true,
/* ended */false,
/* gotSignal */false,
/* sourceTalkback */Wonka_helpers.talkbackPlaceholder,
/* notifierTalkback */Wonka_helpers.talkbackPlaceholder
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
if (state[/* skip */0]) {
state[/* notifierTalkback */4](/* Close */1);
}
state[/* ended */1] = true;
return sink(/* End */0);
} else if (signal.tag) {
if (state[/* skip */0] && !state[/* ended */1]) {
return state[/* sourceTalkback */3](/* Pull */0);
} else if (state[/* ended */1]) {
return /* () */0;
} else {
state[/* gotSignal */2] = false;
return sink(signal);
}
} else {
var tb = signal[0];
state[/* sourceTalkback */3] = tb;
return Curry._1(notifier, (function (signal) {
if (typeof signal === "number") {
return /* () */0;
} else if (signal.tag) {
state[/* skip */0] = false;
return state[/* notifierTalkback */4](/* Close */1);
} else {
var innerTb = signal[0];
state[/* notifierTalkback */4] = innerTb;
innerTb(/* Pull */0);
return tb(/* Pull */0);
}
}));
}
}));
return sink(/* Start */Block.__(0, [(function (signal) {
if (signal) {
if (state[/* skip */0]) {
state[/* notifierTalkback */4](/* Close */1);
}
state[/* ended */1] = true;
return state[/* sourceTalkback */3](/* Close */1);
} else if (!state[/* gotSignal */2] && !state[/* ended */1]) {
state[/* gotSignal */2] = true;
return state[/* sourceTalkback */3](/* Pull */0);
} else {
return /* () */0;
}
})]));
});
});
}
var takeUntil = Wonka_operator_takeUntil.takeUntil;
function publish(source) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* ended */false
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */1] = true;
return /* () */0;
} else if (signal.tag) {
if (state[/* ended */1]) {
return 0;
} else {
return state[/* talkback */0](/* Pull */0);
}
} else {
var x = signal[0];
state[/* talkback */0] = x;
return x(/* Pull */0);
}
}));
return /* record */[/* unsubscribe */(function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
return state[/* talkback */0](/* Close */1);
}
})];
}
var takeWhile = Wonka_operator_takeWhile.takeWhile;
function subscribe(f) {
return (function (source) {
var state = /* record */[
/* talkback */Wonka_helpers.talkbackPlaceholder,
/* ended */false
];
Curry._1(source, (function (signal) {
if (typeof signal === "number") {
state[/* ended */1] = true;
return /* () */0;
} else if (signal.tag) {
if (state[/* ended */1]) {
return /* () */0;
} else {
f(signal[0]);
return state[/* talkback */0](/* Pull */0);
}
} else {
var x = signal[0];
state[/* talkback */0] = x;
return x(/* Pull */0);
}
}));
return /* record */[/* unsubscribe */(function (param) {
if (state[/* ended */1]) {
return 0;
} else {
state[/* ended */1] = true;
return state[/* talkback */0](/* Close */1);
}
})];
});
}
var tap = Wonka_operator_tap.tap;
function forEach(f) {
return (function (source) {
subscribe(f)(source);
return /* () */0;
});
}
var publish = Wonka_sink_publish.publish;
var Types = 0;
var subscribe = Wonka_sink_subscribe.subscribe;
var flatten = mergeAll;
var forEach = Wonka_sink_subscribe.forEach;
var debounce = WonkaJs.debounce;
var delay = WonkaJs.delay;
var interval = WonkaJs.interval;
var sample = WonkaJs.sample;
var throttle = WonkaJs.throttle;
var toPromise = WonkaJs.toPromise;
var fromDomEvent = WonkaJs.fromDomEvent;
var fromListener = WonkaJs.fromListener;
var fromPromise = WonkaJs.fromPromise;
export {
Types ,
makeSubject ,
make ,
fromArray ,
fromList ,
fromArray ,
fromValue ,
make ,
makeSubject ,
empty ,
never ,
tap ,
combine ,
concatMap ,
concat ,
concatAll ,
filter ,
map ,
filter ,
scan ,
mergeMap ,
switchMap ,
concatMap ,
merge ,
concat ,
mergeAll ,
flatten ,
concatAll ,
scan ,
share ,
combine ,
skip ,
skipUntil ,
skipWhile ,
switchMap ,
take ,
takeLast ,
takeUntil ,
takeWhile ,
takeUntil ,
skip ,
skipWhile ,
skipUntil ,
tap ,
publish ,
subscribe ,
forEach ,
subscribe ,
debounce ,
delay ,
interval ,
sample ,
throttle ,
toPromise ,
fromDomEvent ,
fromListener ,
fromPromise ,
}
/* No side effect */

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc