@typed/fp
Version:
Data Structures and Resources for fp-ts
38 lines • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Semigroup = exports.Eq = exports.Show = exports.progress = void 0;
const tslib_1 = require("tslib");
const O = (0, tslib_1.__importStar)(require("fp-ts/Option"));
const Eq_1 = require("./Eq");
const function_1 = require("./function");
/**
* @since 0.9.2
* @category Constructor
*/
const progress = (loaded, total = O.none) => ({
loaded,
total,
});
exports.progress = progress;
/**
* @since 0.9.2
* @category Instance
*/
exports.Show = {
show: (p) => (0, function_1.pipe)(p.total, O.matchW(() => `${p.loaded}`, () => `${p.loaded}/${p.total}`)),
};
/**
* @since 0.9.2
* @category Instance
*/
exports.Eq = {
equals: (s) => (f) => Eq_1.deepEqualsEq.equals(s)(f),
};
/**
* @since 0.9.2
* @category Instance
*/
exports.Semigroup = {
concat: (s) => (f) => (0, function_1.pipe)(O.Do, O.apS('sTotal', s.total), O.apS('fTotal', f.total), O.map(({ sTotal, fTotal }) => (0, exports.progress)(f.loaded + s.loaded, O.some(fTotal + sTotal))), O.getOrElse(() => (0, exports.progress)(f.loaded + s.loaded))),
};
//# sourceMappingURL=Progress.js.map