UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

102 lines 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOrCreate = exports.upsertAt = exports.updateAt = exports.pop = exports.modifyAt = exports.insertAt = exports.filterWithIndex = exports.filter = exports.deleteAt = void 0; const tslib_1 = require("tslib"); const RM = (0, tslib_1.__importStar)(require("fp-ts/ReadonlyMap")); const Tuple2_1 = require("fp-ts/Tuple2"); const E = (0, tslib_1.__importStar)(require("./Env")); const EO = (0, tslib_1.__importStar)(require("./EnvOption")); const function_1 = require("./function"); /** * @since 0.12.0 * @category Combinator */ const deleteAt = (Eq) => { return (key) => { const deleteAtKey = RM.deleteAt(Eq)(key); return (rm) => (0, function_1.pipe)(rm.get, E.map(deleteAtKey), EO.chainFirstEnvK(rm.set)); }; }; exports.deleteAt = deleteAt; /** * @since 0.12.0 * @category Combinator */ function filter(predicate) { return (rm) => rm.update((0, function_1.flow)(RM.filter(predicate), E.of)); } exports.filter = filter; /** * @since 0.12.0 * @category Combinator */ function filterWithIndex(predicate) { return (rm) => rm.update((0, function_1.flow)(RM.filterWithIndex(predicate), E.of)); } exports.filterWithIndex = filterWithIndex; /** * @since 0.12.0 * @category Combinator */ const insertAt = (Eq) => { return (key, value) => { const insertAtKey = RM.insertAt(Eq)(key, value); return (rm) => (0, function_1.pipe)(rm.get, E.map(insertAtKey), EO.chainFirstEnvK(rm.set)); }; }; exports.insertAt = insertAt; /** * @since 0.12.0 * @category Combinator */ const modifyAt = (Eq) => { return (key, f) => { const modifyAtKey = RM.modifyAt(Eq)(key, f); return (rm) => (0, function_1.pipe)(rm.get, E.map(modifyAtKey), EO.chainFirstEnvK(rm.set)); }; }; exports.modifyAt = modifyAt; /** * @since 0.12.0 * @category Combinator */ const pop = (Eq) => (k) => { const popWithKey = RM.pop(Eq)(k); return (rm) => (0, function_1.pipe)(rm.get, E.map(popWithKey), EO.chainFirstEnvK((0, function_1.flow)(Tuple2_1.snd, rm.set)), EO.map(Tuple2_1.fst)); }; exports.pop = pop; /** * @since 0.12.0 * @category Combinator */ const updateAt = (Eq) => { return (key, value) => { const updateAtKey = RM.updateAt(Eq)(key, value); return (rm) => (0, function_1.pipe)(rm.get, E.map(updateAtKey), EO.chainFirstEnvK(rm.set)); }; }; exports.updateAt = updateAt; /** * @since 0.12.0 * @category Combinator */ const upsertAt = (Eq) => { return (key, value) => { const upsertAtKey = RM.upsertAt(Eq)(key, value); return (rm) => rm.update((0, function_1.flow)(upsertAtKey, E.of)); }; }; exports.upsertAt = upsertAt; /** * @since 0.12.1 * @category Combinator */ const getOrCreate = (Eq) => { return (key, create) => { const lookup = RM.lookup(Eq)(key); const upsert = (0, exports.upsertAt)(Eq); return (rm) => (0, function_1.pipe)(rm.get, E.map(lookup), EO.matchEW(() => (0, function_1.pipe)(create, E.chainFirstW((v) => (0, function_1.pipe)(rm, upsert(key, v)))), E.of)); }; }; exports.getOrCreate = getOrCreate; //# sourceMappingURL=RefMap.js.map