UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

949 lines 25.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromReaderK = exports.chainReaderK = exports.chainFirstReaderK = exports.asks = exports.ask = exports.FromReader = exports.MonadRec = exports.ChainRec = exports.Monad = exports.bindEnvW = exports.bindEnv = exports.bindW = exports.bind = exports.chainFirstW = exports.chainFirst = exports.Chain = exports.getApplicativeMonoid = exports.Applicative = exports.apTEnv = exports.apTEnvW = exports.apSEnvW = exports.apSEnv = exports.getApplySemigroup = exports.apTW = exports.apT = exports.apSecondW = exports.apSecond = exports.apSW = exports.apS = exports.apFirstW = exports.apFirst = exports.Apply = exports.tupled = exports.flap = exports.bindTo = exports.Functor = exports.Pointed = exports.URI = exports.chainRec = exports.of = exports.constant = exports.map = exports.fromReader = exports.switchFirst = exports.switchMapW = exports.switchMap = exports.chainW = exports.chain = exports.apW = exports.ap = void 0; exports.provideAllWith = exports.askAndUse = exports.askAndProvide = exports.Provide = exports.UseAll = exports.ProvideAll = exports.UseSome = exports.ProvideSome = exports.useAll = exports.provideAll = exports.useSome = exports.provideSome = exports.periodic = exports.never = exports.empty = exports.recoverWith = exports.concatMap = exports.mergeArray = exports.mergeFirst = exports.merge = exports.filter = exports.asksTask = exports.asksIO = exports.asksEnv = exports.fromStreamK = exports.chainStreamK = exports.chainFirstStreamK = exports.fromStream = exports.FromStream = exports.fromTaskK = exports.chainTaskK = exports.chainFirstTaskK = exports.fromTask = exports.FromTask = exports.Do = exports.fromIOK = exports.chainIOK = exports.chainFirstIOK = exports.fromIO = exports.FromIO = exports.fromEnvK = exports.chainFirstEnvK = exports.chainEnvK = exports.fromEnv = exports.FromEnv = exports.fromResumeK = exports.chainResumeK = exports.chainFirstResumeK = exports.fromResume = exports.FromResume = void 0; exports.zero = exports.until = exports.throwError = exports.throttle = exports.takeWhile = exports.switchLatest = exports.slice = exports.skipWhile = exports.skipAfter = exports.since = exports.separate = exports.race = exports.partitionMap = exports.partition = exports.multicast = exports.mergeConcurrently = exports.loop = exports.filterMap = exports.during = exports.join = exports.delay = exports.debounce = exports.continueWith = exports.compact = exports.skipRepeats = exports.skipRepeatsWith = exports.scan = exports.at = exports.now = exports.collectEvents = exports.onDispose = exports.exhaustMapLatestEnv = exports.exhaustLatestEnv = exports.exhaustMapLatest = exports.exhaustLatest = exports.startWith = exports.skip = exports.take = exports.tap = exports.withStream = exports.struct = exports.combineAll = exports.combine = exports.useAllWithEnv = exports.useSomeWithEnv = exports.provideAllWithEnv = exports.provideSomeWithEnv = exports.useSomeWith = exports.useAllWith = exports.provideSomeWith = void 0; exports.hold = exports.toEnv = exports.mergeMapWhen = exports.keyed = exports.Compactable = exports.Filterable = void 0; const tslib_1 = require("tslib"); const H = (0, tslib_1.__importStar)(require("@most/hold")); const App = (0, tslib_1.__importStar)(require("fp-ts/Applicative")); const Ap = (0, tslib_1.__importStar)(require("fp-ts/Apply")); const Ch = (0, tslib_1.__importStar)(require("fp-ts/Chain")); const Either_1 = require("fp-ts/Either"); const FIO = (0, tslib_1.__importStar)(require("fp-ts/FromIO")); const FR = (0, tslib_1.__importStar)(require("fp-ts/FromReader")); const FT = (0, tslib_1.__importStar)(require("fp-ts/FromTask")); const function_1 = require("fp-ts/function"); const F = (0, tslib_1.__importStar)(require("fp-ts/Functor")); const Predicate_1 = require("fp-ts/Predicate"); const RT = (0, tslib_1.__importStar)(require("fp-ts/ReaderT")); const RA = (0, tslib_1.__importStar)(require("fp-ts/ReadonlyArray")); const Disposable_1 = require("./Disposable"); const Eq_1 = require("./Eq"); const FE = (0, tslib_1.__importStar)(require("./FromEnv")); const FRe = (0, tslib_1.__importStar)(require("./FromResume")); const FS = (0, tslib_1.__importStar)(require("./FromStream")); const FN = (0, tslib_1.__importStar)(require("./function")); const P = (0, tslib_1.__importStar)(require("./Provide")); const Resume_1 = require("./Resume"); const S = (0, tslib_1.__importStar)(require("./Stream")); const St = (0, tslib_1.__importStar)(require("./struct")); /** * @since 0.9.2 * @category Combinator */ exports.ap = RT.ap(S.Apply); /** * @since 0.9.2 * @category Combinator */ exports.apW = exports.ap; /** * @since 0.9.2 * @category Combinator */ exports.chain = RT.chain(S.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainW = exports.chain; /** * @since 0.9.2 * @category Combinator */ exports.switchMap = RT.chain({ map: S.map, chain: (f) => FN.flow(S.map(f), S.switchLatest), }); /** * @since 0.9.2 * @category Combinator */ exports.switchMapW = exports.switchMap; /** * @since 0.9.2 * @category Combinator */ const switchFirst = (second) => (first) => (r) => (0, function_1.pipe)(first, (0, exports.withStream)(S.switchFirst(second(r))))(r); exports.switchFirst = switchFirst; /** * @since 0.9.2 * @category Constructor */ exports.fromReader = RT.fromReader(S.Pointed); /** * @since 0.9.2 * @category Combinator */ exports.map = RT.map(S.Functor); /** * @since 0.9.2 * @category Combinator */ const constant = (b) => (0, exports.map)(() => b); exports.constant = constant; /** * @since 0.9.2 * @category Constructor */ exports.of = RT.of(S.Pointed); /** * @since 0.9.2 * @category Combinator */ function chainRec(f) { return (value) => (env) => S.chainRec((a) => f(a)(env))(value); } exports.chainRec = chainRec; /** * @since 0.9.2 * @category URI */ exports.URI = '@typed/fp/ReaderStream'; /** * @since 0.9.2 * @category Instance */ exports.Pointed = { of: exports.of, }; /** * @since 0.9.2 * @category Instance */ exports.Functor = { map: exports.map, }; /** * @since 0.9.2 * @category Combinator */ exports.bindTo = F.bindTo(exports.Functor); /** * @since 0.9.2 * @category Combinator */ exports.flap = F.flap(exports.Functor); /** * @since 0.9.2 * @category Combinator */ exports.tupled = F.tupled(exports.Functor); /** * @since 0.9.2 * @category Instance */ exports.Apply = { ...exports.Functor, ap: exports.ap, }; /** * @since 0.9.2 * @category Combinator */ exports.apFirst = Ap.apFirst(exports.Apply); /** * @since 0.9.2 * @category Combinator */ exports.apFirstW = exports.apFirst; /** * @since 0.9.2 * @category Combinator */ exports.apS = Ap.apS(exports.Apply); /** * @since 0.9.2 * @category Combinator */ exports.apSW = exports.apS; /** * @since 0.9.2 * @category Combinator */ exports.apSecond = Ap.apSecond(exports.Apply); /** * @since 0.9.2 * @category Combinator */ exports.apSecondW = exports.apSecond; /** * @since 0.9.2 * @category Combinator */ exports.apT = Ap.apT(exports.Apply); /** * @since 0.9.2 * @category Combinator */ exports.apTW = exports.apT; /** * @since 0.9.2 * @category Typeclass Constructor */ exports.getApplySemigroup = Ap.getApplySemigroup(exports.Apply); /** * @since 0.9.2 * @category Combinator */ const apSEnv = (name, fb) => (0, exports.apS)(name, FN.pipe(fb, exports.fromEnv)); exports.apSEnv = apSEnv; /** * @since 0.9.2 * @category Combinator */ exports.apSEnvW = exports.apSEnv; /** * @since 0.9.2 * @category Combinator */ const apTEnvW = (fb) => FN.pipe(fb, exports.fromEnv, exports.apTW); exports.apTEnvW = apTEnvW; /** * @since 0.9.2 * @category Combinator */ exports.apTEnv = exports.apTEnvW; /** * @since 0.9.2 * @category Instance */ exports.Applicative = { ...exports.Apply, ...exports.Pointed, }; /** * @since 0.9.2 * @category Typeclass Constructor */ exports.getApplicativeMonoid = App.getApplicativeMonoid(exports.Applicative); /** * @since 0.9.2 * @category Instance */ exports.Chain = { ...exports.Functor, chain: exports.chain, }; /** * @since 0.9.2 * @category Combinator */ exports.chainFirst = Ch.chainFirst(exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainFirstW = exports.chainFirst; /** * @since 0.9.2 * @category Combinator */ exports.bind = Ch.bind(exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.bindW = exports.bind; /** * @since 0.9.2 * @category Combinator */ const bindEnv = (name, f) => (0, exports.bind)(name, FN.flow(f, exports.fromEnv)); exports.bindEnv = bindEnv; /** * @since 0.9.2 * @category Combinator */ const bindEnvW = (name, f) => (0, exports.bindW)(name, FN.flow(f, exports.fromEnv)); exports.bindEnvW = bindEnvW; /** * @since 0.9.2 * @category Instance */ exports.Monad = { ...exports.Chain, ...exports.Pointed, }; /** * @since 0.9.2 * @category Instance */ exports.ChainRec = { chainRec, }; /** * @since 0.9.2 * @category Instance */ exports.MonadRec = { ...exports.Monad, chainRec, }; /** * @since 0.9.2 * @category Instance */ exports.FromReader = { fromReader: exports.fromReader, }; /** * @since 0.9.2 * @category Constructor */ exports.ask = FR.ask(exports.FromReader); /** * @since 0.9.2 * @category Constructor */ exports.asks = FR.asks(exports.FromReader); /** * @since 0.9.2 * @category Combinator */ exports.chainFirstReaderK = FR.chainFirstReaderK(exports.FromReader, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainReaderK = FR.chainReaderK(exports.FromReader, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromReaderK = FR.fromReaderK(exports.FromReader); /** * @since 0.9.2 * @category Instance */ exports.FromResume = { fromResume: (r) => () => S.fromResume(r), }; /** * @since 0.9.2 * @category Constructor */ exports.fromResume = exports.FromResume.fromResume; /** * @since 0.9.2 * @category Combinator */ exports.chainFirstResumeK = FRe.chainFirstResumeK(exports.FromResume, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainResumeK = FRe.chainResumeK(exports.FromResume, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromResumeK = FRe.fromResumeK(exports.FromResume); /** * @since 0.9.2 * @category Instance */ exports.FromEnv = { fromEnv: (env) => FN.flow(env, S.fromResume), }; /** * @since 0.9.2 * @category Constructor */ exports.fromEnv = exports.FromEnv.fromEnv; /** * @since 0.9.2 * @category Combinator */ exports.chainEnvK = FE.chainEnvK(exports.FromEnv, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainFirstEnvK = FE.chainFirstEnvK(exports.FromEnv, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromEnvK = FE.fromEnvK(exports.FromEnv); /** * @since 0.9.2 * @category Instance */ exports.FromIO = { fromIO: (io) => () => S.fromIO(io), }; /** * @since 0.9.2 * @category Constructor */ exports.fromIO = exports.FromIO.fromIO; /** * @since 0.9.2 * @category Combinator */ exports.chainFirstIOK = FIO.chainFirstIOK(exports.FromIO, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainIOK = FIO.chainIOK(exports.FromIO, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromIOK = FIO.fromIOK(exports.FromIO); /** * @since 0.9.2 * @category Constructor */ exports.Do = (0, exports.fromIO)(() => Object.create(null)); /** * @since 0.9.2 * @category Instance */ exports.FromTask = { ...exports.FromIO, fromTask: (task) => () => S.fromTask(task), }; /** * @since 0.9.2 * @category Constructor */ exports.fromTask = exports.FromTask.fromTask; /** * @since 0.9.2 * @category Combinator */ exports.chainFirstTaskK = FT.chainFirstTaskK(exports.FromTask, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainTaskK = FT.chainTaskK(exports.FromTask, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromTaskK = FT.fromTaskK(exports.FromTask); /** * @since 0.9.2 * @category Instance */ exports.FromStream = { fromStream: FN.constant, }; /** * @since 0.9.2 * @category Constructor */ exports.fromStream = exports.FromStream.fromStream; /** * @since 0.9.2 * @category Combinator */ exports.chainFirstStreamK = FS.chainFirstStreamK(exports.FromStream, exports.Chain); /** * @since 0.9.2 * @category Combinator */ exports.chainStreamK = FS.chainStreamK(exports.FromStream, exports.Chain); /** * @since 0.9.2 * @category Constructor */ exports.fromStreamK = FS.fromStreamK(exports.FromStream); /** * @since 0.9.2 * @category Constructor */ const asksEnv = (f) => (r) => FN.pipe(r, f(r), S.fromResume); exports.asksEnv = asksEnv; /** * @since 0.9.2 * @category Constructor */ const asksIO = (f) => (r) => FN.pipe(r, f, S.fromIO); exports.asksIO = asksIO; /** * @since 0.9.2 * @category Constructor */ const asksTask = (f) => (r) => FN.pipe(r, f, S.fromTask); exports.asksTask = asksTask; function filter(predicate) { return (rs) => (r) => FN.pipe(r, rs, S.filter(predicate)); } exports.filter = filter; /** * @since 0.9.2 * @category Combinator */ function merge(a) { return (b) => (r) => FN.pipe(a(r), S.merge(b(r))); } exports.merge = merge; /** * @since 0.9.2 * @category Combinator */ function mergeFirst(a) { return (b) => (r) => FN.pipe(r, b, S.mergeFirst(a(r))); } exports.mergeFirst = mergeFirst; /** * @since 0.9.2 * @category Combinator */ function mergeArray(streams) { return (r) => S.mergeArray(streams.map((rs) => rs(r))); } exports.mergeArray = mergeArray; /** * @since 0.9.2 * @category Combinator */ function concatMap(f) { return (rs) => (r) => FN.pipe(r, rs, S.concatMap((a) => FN.pipe(r, f(a)))); } exports.concatMap = concatMap; /** * @since 0.9.2 * @category Combinator */ const recoverWith = (f) => (rs) => (r) => FN.pipe(r, rs, S.recoverWith((e) => FN.pipe(r, f(e)))); exports.recoverWith = recoverWith; /** * @since 0.9.2 * @category Constructor */ exports.empty = (0, exports.fromStreamK)(S.empty); /** * @since 0.9.2 * @category Constructor */ exports.never = (0, exports.fromStreamK)(S.never); /** * @since 0.9.2 * @category Constructor */ exports.periodic = (0, exports.fromStreamK)(S.periodic); /** * @since 0.9.2 * @category Combinator */ const provideSome = (provided) => (rs) => (e2) => rs({ ...provided, ...e2 }); exports.provideSome = provideSome; /** * @since 0.9.2 * @category Combinator */ const useSome = (provided) => (rs) => (e2) => rs({ ...e2, ...provided }); exports.useSome = useSome; /** * @since 0.9.2 * @category Combinator */ const provideAll = (provided) => (rs) => (e2) => rs({ ...provided, ...e2 }); exports.provideAll = provideAll; /** * @since 0.9.2 * @category Combinator */ const useAll = (provided) => (rs) => () => rs(provided); exports.useAll = useAll; /** * @since 0.9.2 * @category Instance */ exports.ProvideSome = { provideSome: exports.provideSome, }; /** * @since 0.9.2 * @category Instance */ exports.UseSome = { useSome: exports.useSome, }; /** * @since 0.9.2 * @category Instance */ exports.ProvideAll = { provideAll: exports.provideAll, }; /** * @since 0.9.2 * @category Instance */ exports.UseAll = { useAll: exports.useAll, }; /** * @since 0.9.2 * @category Instance */ exports.Provide = { provideAll: exports.provideAll, provideSome: exports.provideSome, useAll: exports.useAll, useSome: exports.useSome, }; /** * @since 0.9.2 * @category Combinator */ exports.askAndProvide = P.askAndProvide({ ...exports.ProvideAll, ...exports.Chain, ...exports.FromReader }); /** * @since 0.9.2 * @category Combinator */ exports.askAndUse = P.askAndUse({ ...exports.UseAll, ...exports.Chain, ...exports.FromReader }); /** * @since 0.9.2 * @category Combinator */ exports.provideAllWith = P.provideAllWith({ ...exports.ProvideAll, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.provideSomeWith = P.provideSomeWith({ ...exports.ProvideSome, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.useAllWith = P.useAllWith({ ...exports.UseAll, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.useSomeWith = P.useSomeWith({ ...exports.UseSome, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.provideSomeWithEnv = FE.provideSomeWithEnv({ ...exports.FromEnv, ...exports.ProvideSome, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.provideAllWithEnv = FE.provideAllWithEnv({ ...exports.FromEnv, ...exports.ProvideAll, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.useSomeWithEnv = FE.useSomeWithEnv({ ...exports.FromEnv, ...exports.UseSome, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ exports.useAllWithEnv = FE.useAllWithEnv({ ...exports.FromEnv, ...exports.UseAll, ...exports.Chain }); /** * @since 0.9.2 * @category Combinator */ const combine = (f) => (rsa) => (rsb) => (e) => S.combine(f, rsa(e), rsb(e)); exports.combine = combine; /** * @since 0.9.2 * @category Combinator */ const combineAll = (...rss) => (e) => S.combineAll(...rss.map((rs) => rs(e))); exports.combineAll = combineAll; /** * @since 0.13.2 * @category Combinator */ const struct = (props) => (0, function_1.pipe)((0, exports.combineAll)(...(0, function_1.pipe)(Object.entries(props), RA.map(([k, stream]) => (0, function_1.pipe)(stream, (0, exports.map)((v) => St.make(k, v)))))), (0, exports.map)((o) => Object.assign({}, ...o))); exports.struct = struct; /** * @since 0.9.2 * @category Combinator */ const withStream = (f) => (rs) => (e) => FN.pipe(e, rs, f); exports.withStream = withStream; /** * @since 0.9.2 * @category Combinator */ const tap = (f) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.tap(f))); exports.tap = tap; /** * @since 0.9.2 * @category Combinator */ exports.take = FN.flow(S.take, exports.withStream); /** * @since 0.9.2 * @category Combinator */ exports.skip = FN.flow(S.skip, exports.withStream); /** * @since 0.9.2 * @category Combinator */ const startWith = (value) => (stream) => (0, exports.withStream)(S.startWith(value))(stream); exports.startWith = startWith; /** * @since 0.9.2 * @category Combinator */ const exhaustLatest = (rs) => (e) => S.exhaustMapLatest((rs) => rs(e))(rs(e)); exports.exhaustLatest = exhaustLatest; /** * @since 0.9.2 * @category Combinator */ const exhaustMapLatest = (f) => (rs) => (e) => S.exhaustMapLatest((a) => f(a)(e))(rs(e)); exports.exhaustMapLatest = exhaustMapLatest; /** * @since 0.9.2 * @category Combinator */ const exhaustLatestEnv = (env) => (rs) => (0, exports.exhaustMapLatest)(() => (0, exports.fromEnv)(env))(rs); exports.exhaustLatestEnv = exhaustLatestEnv; /** * @since 0.9.2 * @category Combinator */ const exhaustMapLatestEnv = (f) => (rs) => (0, exports.exhaustMapLatest)((a) => (0, exports.fromEnv)(f(a)))(rs); exports.exhaustMapLatestEnv = exhaustMapLatestEnv; /** * @since 0.9.2 * @category Combinator */ const onDispose = (disposable) => (0, exports.withStream)(S.onDispose(disposable)); exports.onDispose = onDispose; /** * @since 0.9.2 * @category Combinator */ const collectEvents = (scheduler) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.collectEvents(scheduler))); exports.collectEvents = collectEvents; /** * @since 0.9.2 * @category Constructor */ exports.now = FN.flow(S.now, exports.fromStream); /** * @since 0.9.2 * @category Constructor */ exports.at = FN.flow(S.at, exports.fromStream); /** * @since 0.9.2 * @category Combinator */ const scan = (f, seed) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.scan(f, seed))); exports.scan = scan; /** * @since 0.9.2 * @category Combinator */ const skipRepeatsWith = (Eq) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.skipRepeatsWith((a, b) => Eq.equals(a)(b)))); exports.skipRepeatsWith = skipRepeatsWith; /** * @since 0.9.2 * @category Combinator */ exports.skipRepeats = (0, exports.skipRepeatsWith)(Eq_1.deepEqualsEq); /** * @since 0.9.2 * @category Combinator */ exports.compact = (0, exports.withStream)(S.compact); /** * @since 0.9.2 * @category Combinator */ const continueWith = (f) => (rs) => (e) => FN.pipe(e, rs, S.continueWith(() => f()(e))); exports.continueWith = continueWith; /** * @since 0.9.2 * @category Combinator */ const debounce = (delay) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.debounce(delay))); exports.debounce = debounce; /** * @since 0.9.2 * @category Combinator */ const delay = (delay) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.delay(delay))); exports.delay = delay; /** * @since 0.9.2 * @category Combinator */ const join = (rs) => (e) => FN.pipe(e, rs, S.chain((f) => f(e))); exports.join = join; /** * @since 0.9.2 * @category Combinator */ const during = (timeWindow) => (values) => (e) => FN.pipe(e, values, S.during((0, exports.join)(timeWindow)(e))); exports.during = during; /** * @since 0.9.2 * @category Combinator */ const filterMap = (f) => (fa) => FN.pipe(fa, (0, exports.withStream)(S.filterMap(f))); exports.filterMap = filterMap; /** * @since 0.9.2 * @category Combinator */ const loop = (f, seed) => (fa) => (e) => FN.pipe(e, fa, S.loop(f, seed)); exports.loop = loop; /** * @since 0.9.2 * @category Combinator */ const mergeConcurrently = (concurrency) => (rs) => (e) => FN.pipe(e, rs, S.mergeMapConcurrently((rs) => rs(e), concurrency)); exports.mergeConcurrently = mergeConcurrently; /** * @since 0.9.2 * @category Combinator */ const multicast = (rs) => FN.pipe(rs, (0, exports.withStream)(S.multicast)); exports.multicast = multicast; /** * @since 0.9.2 * @category Combinator */ const partition = (predicate) => (fa) => ({ left: FN.pipe(fa, filter((0, Predicate_1.not)(predicate))), right: FN.pipe(fa, filter(predicate)), }); exports.partition = partition; /** * @since 0.9.2 * @category Combinator */ const partitionMap = (f) => (fa) => ({ left: FN.pipe(fa, (0, exports.map)(f), filter(Either_1.isLeft), (0, exports.map)((x) => x.left)), right: FN.pipe(fa, (0, exports.map)(f), filter(Either_1.isRight), (0, exports.map)((x) => x.right)), }); exports.partitionMap = partitionMap; /** * @since 0.9.2 * @category Combinator */ const race = (second) => (first) => (e) => FN.pipe(e, first, S.race(() => second(e))); exports.race = race; /** * @since 0.9.2 * @category Combinator */ const separate = (rs) => FN.pipe(rs, (0, exports.partitionMap)((e) => e)); exports.separate = separate; /** * @since 0.9.2 * @category Combinator */ const since = (timeWindow) => (values) => (e) => FN.pipe(e, values, S.since(timeWindow(e))); exports.since = since; /** * @since 0.9.2 * @category Combinator */ const skipAfter = (p) => (s) => FN.pipe(s, (0, exports.withStream)(S.skipAfter(p))); exports.skipAfter = skipAfter; /** * @since 0.9.2 * @category Combinator */ const skipWhile = (p) => (s) => FN.pipe(s, (0, exports.withStream)(S.skipWhile(p))); exports.skipWhile = skipWhile; /** * @since 0.9.2 * @category Combinator */ const slice = (skip, take) => (rs) => FN.pipe(rs, (0, exports.withStream)(S.slice(skip, take))); exports.slice = slice; /** * @since 0.9.2 * @category Combinator */ const switchLatest = (rs) => (e) => FN.pipe(e, rs, S.map((f) => f(e)), S.switchLatest); exports.switchLatest = switchLatest; /** * @since 0.9.2 * @category Combinator */ const takeWhile = (p) => (s) => FN.pipe(s, (0, exports.withStream)(S.takeWhile(p))); exports.takeWhile = takeWhile; /** * @since 0.9.2 * @category Combinator */ const throttle = (period) => (s) => FN.pipe(s, (0, exports.withStream)(S.throttle(period))); exports.throttle = throttle; /** * @since 0.9.2 * @category Combinator */ exports.throwError = (0, exports.fromStreamK)(S.throwError); /** * @since 0.9.2 * @category Combinator */ const until = (timeWindow) => (values) => (e) => FN.pipe(e, values, S.until(timeWindow(e))); exports.until = until; /** * @since 0.9.2 * @category Combinator */ exports.zero = FN.flow(S.zero, exports.fromStream); /** * @since 0.9.2 * @category Instance */ exports.Filterable = { partitionMap: exports.partitionMap, partition: exports.partition, filterMap: exports.filterMap, filter, }; /** * @since 0.9.2 * @category Instance */ exports.Compactable = { compact: exports.compact, separate: exports.separate, }; /** * @since 0.9.2 * @category Combinator */ const keyed = (Eq) => (rs) => (0, function_1.pipe)(rs, (0, exports.withStream)(S.keyed(Eq))); exports.keyed = keyed; /** * @since 0.9.2 * @category Combinator */ const mergeMapWhen = (Eq = Eq_1.deepEqualsEq) => (f) => (values) => (e) => (0, function_1.pipe)(values, (0, exports.withStream)(S.mergeMapWhen(Eq)((v) => f(v)(e))))(e); exports.mergeMapWhen = mergeMapWhen; /** * Listens to the next value of a stream. */ /** * @since 0.9.2 * @category Natural Transformation */ const toEnv = (rs) => (e) => (0, Resume_1.async)((resume) => { const disposable = (0, Disposable_1.settable)(); disposable.addDisposable((0, function_1.pipe)(e, rs, S.take(1)).run(S.createSink({ event: (_, x) => disposable.addDisposable(resume(x)) }), e.scheduler)); return disposable; }); exports.toEnv = toEnv; /** * @since 0.9.2 * @category Combinator */ const hold = (rs) => (0, function_1.pipe)(rs, (0, exports.withStream)(H.hold)); exports.hold = hold; //# sourceMappingURL=ReaderStream.js.map