@typed/fp
Version:
Data Structures and Resources for fp-ts
33 lines • 865 B
JavaScript
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