wonka
Version:
A fast push & pull stream library for Reason, loosely following the [callbag spec](https://github.com/callbag/callbag)
64 lines (57 loc) • 2.3 kB
JavaScript
import * as Block from "bs-platform/lib/es6/block.js";
import * as Curry from "bs-platform/lib/es6/curry.js";
import * as Wonka_helpers from "../wonka_helpers.js";
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);
}
})]));
});
});
}
export {
delay ,
}
/* No side effect */