UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

33 lines 865 B
import * as O from 'fp-ts/Option'; import { deepEqualsEq } from './Eq'; import { pipe } from './function'; /** * @since 0.9.2 * @category Constructor */ export const progress = (loaded, total = O.none) => ({ loaded, total, }); /** * @since 0.9.2 * @category Instance */ export const Show = { show: (p) => pipe(p.total, O.matchW(() => `${p.loaded}`, () => `${p.loaded}/${p.total}`)), }; /** * @since 0.9.2 * @category Instance */ export const Eq = { equals: (s) => (f) => deepEqualsEq.equals(s)(f), }; /** * @since 0.9.2 * @category Instance */ export const Semigroup = { concat: (s) => (f) => pipe(O.Do, O.apS('sTotal', s.total), O.apS('fTotal', f.total), O.map(({ sTotal, fTotal }) => progress(f.loaded + s.loaded, O.some(fTotal + sTotal))), O.getOrElse(() => progress(f.loaded + s.loaded))), }; //# sourceMappingURL=Progress.js.map