fp-ts-std
Version:
The missing pseudo-standard library for fp-ts.
25 lines (24 loc) • 1.11 kB
JavaScript
import * as T from "fp-ts/Task";
import { constVoid, flow } from "fp-ts/function";
import { pass as _pass, unless as _unless, when as _when } from "./Applicative";
import { fieldMilliseconds, now, unMilliseconds, } from "./Date";
import { until as _until } from "./Monad";
export const sleep = (n) => () => new Promise(resolve => {
setTimeout(resolve, Math.floor(unMilliseconds(n)));
});
export const elapsed = (f) => (x) => async () => {
const start = now();
const y = await x();
const duration = fieldMilliseconds.sub(now(), start);
f(duration)();
return y;
};
export const execute = (x) => x();
export const when = _when(T.ApplicativePar);
export const unless = _unless(T.ApplicativePar);
export const sequenceArray_ = flow(T.sequenceArray, T.map(constVoid));
export const sequenceSeqArray_ = flow(T.sequenceSeqArray, T.map(constVoid));
export const traverseArray_ = f => flow(T.traverseArray(f), T.map(constVoid));
export const traverseSeqArray_ = f => flow(T.traverseSeqArray(f), T.map(constVoid));
export const pass = _pass(T.ApplicativePar);
export const until = _until(T.Monad);