Add mapStream
Lint / lint (push) Successful in 25s

This commit is contained in:
Julien Valverdé
2026-07-16 23:51:29 +02:00
parent fc2ff685f4
commit deb23997c5
2 changed files with 38 additions and 0 deletions
+19
View File
@@ -99,6 +99,25 @@ export const mapOptionEffect: {
onNone: () => Effect.succeed(Option.none()),
})))
/**
* Allows transforming only the `changes` stream of a `View`.
*/
export const mapStream: {
<A, E, R>(
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): (self: View<A, E, R>) => View<A, E, R>
<A, E, R>(
self: View<A, E, R>,
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): View<A, E, R>
} = Function.dual(2, <A, E, R>(
self: View<A, E, R>,
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): View<A, E, R> => make({
get get() { return self.get },
get changes() { return f(self.changes) },
}))
/** Converts typed failures from both channels into `Result` values. */
export const result = <A, E, R>(
self: View<A, E, R>,
+19
View File
@@ -40,6 +40,25 @@ export const mapOptionEffect: {
onNone: () => Effect.succeed(Option.none()),
})))
/**
* Allows transforming only the `changes` stream of a `Subscribable`.
*/
export const mapStream: {
<A, E, R>(
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): (self: Subscribable.Subscribable<A, E, R>) => Subscribable.Subscribable<A, E, R>
<A, E, R>(
self: Subscribable.Subscribable<A, E, R>,
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): Subscribable.Subscribable<A, E, R>
} = Function.dual(2, <A, E, R>(
self: Subscribable.Subscribable<A, E, R>,
f: (changes: Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>) => Stream.Stream<NoInfer<A>, NoInfer<E>, NoInfer<R>>,
): Subscribable.Subscribable<A, E, R> => Subscribable.make({
get get() { return self.get },
get changes() { return f(self.changes) },
}))
/**
* Combines the current values and streams of changes from multiple `Subscribable` values.
*/