UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

99 lines 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOrCreate = exports.upsertAt = exports.updateAt = exports.modifyAt = exports.insertAt = exports.filterWithIndex = exports.filter = exports.deleteAt = void 0; const tslib_1 = require("tslib"); const O = (0, tslib_1.__importStar)(require("fp-ts/Option")); const E = (0, tslib_1.__importStar)(require("./Env")); const EO = (0, tslib_1.__importStar)(require("./EnvOption")); const function_1 = require("./function"); /** * @since 0.13.4 * @category Combinator */ const deleteAt = (key) => (rm) => (0, function_1.pipe)(rm.get, E.tap((m) => m.delete(key)), E.chainFirstW(rm.set)); exports.deleteAt = deleteAt; /** * @since 0.13.4 * @category Combinator */ function filter(predicate) { return (rm) => rm.update((m) => { m.forEach((value, key) => { if (!predicate(value)) { m.delete(key); } }); return E.of(m); }); } exports.filter = filter; /** * @since 0.13.4 * @category Combinator */ function filterWithIndex(predicate) { return (rm) => rm.update((m) => { m.forEach((value, key) => { if (!predicate(key, value)) { m.delete(key); } }); return E.of(m); }); } exports.filterWithIndex = filterWithIndex; /** * @since 0.13.4 * @category Combinator */ const insertAt = (key, value) => (rm) => (0, function_1.pipe)(rm.get, E.chainW((map) => E.fromIO(() => { if (map.has(key)) { return O.none; } map.set(key, value); return O.some(map); })), EO.chainFirstEnvK(rm.set)); exports.insertAt = insertAt; /** * @since 0.13.4 * @category Combinator */ const modifyAt = (key, f) => { return (rm) => (0, function_1.pipe)(rm.get, E.chainW((map) => E.fromIO(() => { if (!map.has(key)) { return O.none; } const v = map.get(key); return O.some(map.set(key, f(v))); })), EO.chainFirstEnvK(rm.set)); }; exports.modifyAt = modifyAt; /** * @since 0.13.4 * @category Combinator */ const updateAt = (key, value) => { return (rm) => (0, function_1.pipe)(rm.get, E.chainW((map) => E.fromIO(() => { if (!map.has(key)) { return O.none; } return O.some(map.set(key, value)); })), EO.chainFirstEnvK(rm.set)); }; exports.updateAt = updateAt; /** * @since 0.13.4 * @category Combinator */ const upsertAt = (key, value) => (rm) => rm.update((map) => E.fromIO(() => { map.set(key, value); return map; })); exports.upsertAt = upsertAt; /** * @since 0.13.4 * @category Combinator */ const getOrCreate = (key, create) => (rm) => (0, function_1.pipe)(rm.get, E.map((map) => (map.has(key) ? O.some(map.get(key)) : O.none)), EO.matchEW(() => (0, function_1.pipe)(create, E.chainFirstW((v) => (0, function_1.pipe)(rm, (0, exports.upsertAt)(key, v)))), E.of)); exports.getOrCreate = getOrCreate; //# sourceMappingURL=RefMapM.js.map