@typed/fp
Version:
Data Structures and Resources for fp-ts
102 lines • 3.18 kB
JavaScript
;
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