@typed/fp
Version:
Data Structures and Resources for fp-ts
71 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Profunctor = exports.Functor = exports.filter = exports.promap = exports.map = exports.local = exports.create = exports.adapt = exports.URI = void 0;
const tslib_1 = require("tslib");
/**
* Adapter is based on [@most/adapter](https://github.com/mostjs/adapter), and adds
* some fp-ts instances.
* @since 0.9.2
*/
const MA = (0, tslib_1.__importStar)(require("@most/adapter"));
const M = (0, tslib_1.__importStar)(require("@most/core"));
const function_1 = require("fp-ts/function");
/**
* @since 0.9.2
* @category URI
*/
exports.URI = '@most/adapter';
/**
* Apply a stream transformation to an Adapter
* @since 0.9.2
* @category Combinator
*/
const adapt = (f) => ([send, stream]) => [send, M.multicast(f(stream))];
exports.adapt = adapt;
function create(f) {
const [send, stream] = MA.createAdapter();
return [send, f ? f(stream) : stream];
}
exports.create = create;
/**
* @since 0.9.2
* @category Combinator
*/
function local(f) {
return ([send, stream]) => [(0, function_1.flow)(f, send), stream];
}
exports.local = local;
/**
* @since 0.9.2
* @category Combinator
*/
function map(f) {
return (0, exports.adapt)(M.map(f));
}
exports.map = map;
/**
* @since 0.9.2
* @category Combinator
*/
const promap = (f, g) => (adapter) => (0, function_1.pipe)(adapter, local(f), map(g));
exports.promap = promap;
function filter(f) {
return (0, exports.adapt)(M.filter(f));
}
exports.filter = filter;
/**
* @since 0.9.2
* @category Instance
*/
exports.Functor = {
map,
};
/**
* @since 0.9.2
* @category Instance
*/
exports.Profunctor = {
...exports.Functor,
promap: exports.promap,
};
//# sourceMappingURL=Adapter.js.map