wonka
Version:
A fast push & pull stream library for Reason, loosely following the [callbag spec](https://github.com/callbag/callbag)
96 lines (91 loc) • 3.33 kB
JavaScript
;
var Block = require("bs-platform/lib/js/block.js");
var Curry = require("bs-platform/lib/js/curry.js");
function testWithListenable(operator) {
var sink = /* record */[/* contents */(function (param) {
return /* () */0;
})];
var signals = /* array */[];
var source = function (x) {
sink[0] = x;
return x(/* Start */Block.__(0, [(function (signal) {
signals.push(signal);
return /* () */0;
})]));
};
var talkback = /* record */[/* contents */(function (param) {
return /* () */0;
})];
var res = /* array */[];
Curry._2(operator, source, (function (signal) {
if (typeof signal === "number" || signal.tag) {
res.push(signal);
return /* () */0;
} else {
talkback[0] = signal[0];
return /* () */0;
}
}));
return new Promise((function (resolve, param) {
sink[0](/* Push */Block.__(1, [1]));
setTimeout((function (param) {
sink[0](/* Push */Block.__(1, [2]));
setTimeout((function (param) {
sink[0](/* End */0);
setTimeout((function (param) {
return resolve(/* tuple */[
signals,
res
]);
}), 0);
return /* () */0;
}), 0);
return /* () */0;
}), 0);
return /* () */0;
}));
}
function testTalkbackEnd(operator) {
var sink = /* record */[/* contents */(function (param) {
return /* () */0;
})];
var signals = /* array */[];
var source = function (x) {
x(/* Start */Block.__(0, [(function (signal) {
signals.push(signal);
return /* () */0;
})]));
sink[0] = x;
return /* () */0;
};
var talkback = /* record */[/* contents */(function (param) {
return /* () */0;
})];
var res = /* array */[];
Curry._2(operator, source, (function (signal) {
if (typeof signal === "number" || signal.tag) {
res.push(signal);
return /* () */0;
} else {
talkback[0] = signal[0];
return /* () */0;
}
}));
return new Promise((function (resolve, param) {
sink[0](/* Push */Block.__(1, [1]));
setTimeout((function (param) {
talkback[0](/* Close */1);
setTimeout((function (param) {
return resolve(/* tuple */[
signals,
res
]);
}), 0);
return /* () */0;
}), 0);
return /* () */0;
}));
}
exports.testWithListenable = testWithListenable;
exports.testTalkbackEnd = testTalkbackEnd;
/* No side effect */