@typed/fp
Version:
Data Structures and Resources for fp-ts
61 lines • 1.27 kB
JavaScript
/**
* Adapter is based on [@most/adapter](https://github.com/mostjs/adapter), and adds
* some fp-ts instances.
* @since 0.9.2
*/
import * as MA from '@most/adapter';
import * as M from '@most/core';
import { flow, pipe } from 'fp-ts/function';
/**
* @since 0.9.2
* @category URI
*/
export const URI = '@most/adapter';
/**
* Apply a stream transformation to an Adapter
* @since 0.9.2
* @category Combinator
*/
export const adapt = (f) => ([send, stream]) => [send, M.multicast(f(stream))];
export function create(f) {
const [send, stream] = MA.createAdapter();
return [send, f ? f(stream) : stream];
}
/**
* @since 0.9.2
* @category Combinator
*/
export function local(f) {
return ([send, stream]) => [flow(f, send), stream];
}
/**
* @since 0.9.2
* @category Combinator
*/
export function map(f) {
return adapt(M.map(f));
}
/**
* @since 0.9.2
* @category Combinator
*/
export const promap = (f, g) => (adapter) => pipe(adapter, local(f), map(g));
export function filter(f) {
return adapt(M.filter(f));
}
/**
* @since 0.9.2
* @category Instance
*/
export const Functor = {
map,
};
/**
* @since 0.9.2
* @category Instance
*/
export const Profunctor = {
...Functor,
promap,
};
//# sourceMappingURL=Adapter.js.map