UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

104 lines 2.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.wrap = exports.Profunctor = exports.Functor = exports.URI = exports.promap = exports.local = exports.map = exports.listenToEvents = exports.getEvents = exports.getSendEvent = exports.sendEvent = void 0; const tslib_1 = require("tslib"); /** * RefAdapter is an abstraction over [Ref](./Ref.ts.md) and [Adapter](./Adapter.ts.md) * @since 0.11.0 */ const function_1 = require("fp-ts/function"); const Tuple2_1 = require("fp-ts/Tuple2"); const A = (0, tslib_1.__importStar)(require("./Adapter")); const E = (0, tslib_1.__importStar)(require("./Env")); const function_2 = require("./function"); const RS = (0, tslib_1.__importStar)(require("./ReaderStream")); const Ref = (0, tslib_1.__importStar)(require("./Ref")); /** * @since 0.12.0 * @category Combinator */ function sendEvent(event) { return (ra) => (0, function_2.pipe)(ra.get, E.chainIOK(([send]) => () => send(event))); } exports.sendEvent = sendEvent; /** * @since 0.11.0 * @category Combinator */ function getSendEvent(ra) { return (0, function_2.pipe)(ra.get, E.map(Tuple2_1.fst)); } exports.getSendEvent = getSendEvent; /** * @since 0.11.0 * @category Combinator */ function getEvents(ra) { return (0, function_2.pipe)(ra.get, E.map(Tuple2_1.snd), RS.fromEnv, RS.chainStreamK(function_1.identity)); } exports.getEvents = getEvents; /** * @since 0.12.0 * @category Combinator */ function listenToEvents(f) { return (ra) => (0, function_2.pipe)(ra, getEvents, RS.chainEnvK(f)); } exports.listenToEvents = listenToEvents; /** * @since 0.11.0 * @category Combinator */ function map(f) { return (ra) => (0, function_2.pipe)(ra, Ref.map(A.map(f))); } exports.map = map; /** * @since 0.11.0 * @category Combinator */ function local(f) { return (ra) => (0, function_2.pipe)(ra, Ref.map(A.local(f))); } exports.local = local; /** * @since 0.11.0 * @category Combinator */ const promap = (f, g) => (adapter) => (0, function_2.pipe)(adapter, local(f), map(g)); exports.promap = promap; /** * @since 0.11.0 * @category URI */ exports.URI = '@typed/fp/RefAdapter'; /** * @since 0.11.0 * @category Instance */ exports.Functor = { map, }; /** * @since 0.11.0 * @category Instance */ exports.Profunctor = { map, promap: exports.promap, }; /** * @since 0.13.5 * @category Instance */ function wrap(ra) { return { ...ra, sendEvent: (event) => (0, function_2.pipe)(ra, sendEvent(event)), getSendEvent: getSendEvent(ra), events: getEvents(ra), listenToEvents: (f) => (0, function_2.pipe)(ra, listenToEvents(f)), }; } exports.wrap = wrap; //# sourceMappingURL=RefAdapter.js.map