EventStream

trait EventStream[+A] extends Observable[A] with BaseObservable[EventStream, A] with EventSource[A]
Companion:
object
trait EventSource[A]
trait Observable[A]
trait Named
trait Source[A]
class Object
trait Matchable
class Any
class MergeStream[A]
trait MultiParentStream[I, O]
class CombineStreamN[A, Out]
class SampleCombineStreamN[A, Out]
trait SingleParentStream[I, O]
class CollectStream[A, B]
class DropStream[A]
class FilterStream[A]
class MapStream[I, O]
class TakeStream[A]
class DelayStream[A]
class SwitchStream[I, O]

Value members

Concrete methods

def collect[B](pf: PartialFunction[A, B]): EventStream[B]

Apply pf to event and emit the resulting value, or emit nothing if pf is not defined for that event.

Apply pf to event and emit the resulting value, or emit nothing if pf is not defined for that event.

Value parameters:
pf

Note: guarded against exceptions

def collectOpt[B](fn: A => Option[B]): EventStream[B]

Apply fn to parent stream event, and emit resulting x if it returns Some(x)

Apply fn to parent stream event, and emit resulting x if it returns Some(x)

Value parameters:
fn

Note: guarded against exceptions

def collectSome[B](implicit ev: A <:< Option[B]): EventStream[B]

Emit x if parent stream emits Some(x), nothing otherwise

Emit x if parent stream emits Some(x), nothing otherwise

def combineWith[T1](s1: EventSource[T1])(implicit c: Composition[A, T1]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2](s1: EventSource[T1], s2: EventSource[T2])(implicit c: Composition[A, (T1, T2)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3])(implicit c: Composition[A, (T1, T2, T3)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3, T4](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4])(implicit c: Composition[A, (T1, T2, T3, T4)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3, T4, T5](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5])(implicit c: Composition[A, (T1, T2, T3, T4, T5)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3, T4, T5, T6](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3, T4, T5, T6, T7](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6], s7: EventSource[T7])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6, T7)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWith[T1, T2, T3, T4, T5, T6, T7, T8](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6], s7: EventSource[T7], s8: EventSource[T8])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6, T7, T8)]): EventStream[Composed]
Implicitly added by toCombinableStream
def combineWithFn[T1, Out](s1: EventSource[T1])(combinator: (A, T1) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, Out](s1: EventSource[T1], s2: EventSource[T2])(combinator: (A, T1, T2) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3])(combinator: (A, T1, T2, T3) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, T4, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4])(combinator: (A, T1, T2, T3, T4) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, T4, T5, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5])(combinator: (A, T1, T2, T3, T4, T5) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, T4, T5, T6, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6])(combinator: (A, T1, T2, T3, T4, T5, T6) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, T4, T5, T6, T7, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6], s7: EventSource[T7])(combinator: (A, T1, T2, T3, T4, T5, T6, T7) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def combineWithFn[T1, T2, T3, T4, T5, T6, T7, T8, Out](s1: EventSource[T1], s2: EventSource[T2], s3: EventSource[T3], s4: EventSource[T4], s5: EventSource[T5], s6: EventSource[T6], s7: EventSource[T7], s8: EventSource[T8])(combinator: (A, T1, T2, T3, T4, T5, T6, T7, T8) => Out): EventStream[Out]
Implicitly added by toCombinableStream
Value parameters:
combinator

Must not throw!

def compose[B](operator: EventStream[A] => EventStream[B]): EventStream[B]
def debounce(ms: Int): EventStream[A]

See docs for DebounceStream

See docs for DebounceStream

override def debugWith(debugger: Debugger[A]): EventStream[A]

See also debug convenience method in BaseObservable

See also debug convenience method in BaseObservable

Definition Classes
def delay(ms: Int): EventStream[A]
Value parameters:
ms

milliseconds of delay

def delaySync(after: EventStream[_]): EventStream[A]

Make a stream that emits this stream's values but waits for after stream to emit first in a given transaction. You can use this for Signals too with Signal.composeChanges (see docs for more details)

Make a stream that emits this stream's values but waits for after stream to emit first in a given transaction. You can use this for Signals too with Signal.composeChanges (see docs for more details)

override def distinctTry(isSame: (Try[A], Try[A]) => Boolean): EventStream[A]

Distinct all values (both events and errors) using a comparison function

Distinct all values (both events and errors) using a comparison function

Definition Classes
def drop(numEvents: Int, resetOnStop: Boolean): EventStream[A]

Drop (skip) the first numEvents events from this stream. Note: errors are NOT dropped.

Drop (skip) the first numEvents events from this stream. Note: errors are NOT dropped.

Value parameters:
resetOnStop

Reset the count if the stream stops

def dropUntil(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Drop (skip) events from this stream as long as they do NOT pass the test (as soon as they start passing, stop dropping) Note: errors are NOT dropped.

Drop (skip) events from this stream as long as they do NOT pass the test (as soon as they start passing, stop dropping) Note: errors are NOT dropped.

Value parameters:
passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

def dropWhile(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Drop (skip) events from this stream as long as they pass the test (as soon as they stop passing, stop dropping) Note: errors are NOT dropped.

Drop (skip) events from this stream as long as they pass the test (as soon as they stop passing, stop dropping) Note: errors are NOT dropped.

Value parameters:
passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

def filter(passes: A => Boolean): EventStream[A]
Value parameters:
passes

Note: guarded against exceptions

def filterN(passes: (T1, T2) => Boolean): EventStream[(T1, T2)]
Implicitly added by toTupleStream2
def filterN(passes: (T1, T2, T3) => Boolean): EventStream[(T1, T2, T3)]
Implicitly added by toTupleStream3
def filterN(passes: (T1, T2, T3, T4) => Boolean): EventStream[(T1, T2, T3, T4)]
Implicitly added by toTupleStream4
def filterN(passes: (T1, T2, T3, T4, T5) => Boolean): EventStream[(T1, T2, T3, T4, T5)]
Implicitly added by toTupleStream5
def filterN(passes: (T1, T2, T3, T4, T5, T6) => Boolean): EventStream[(T1, T2, T3, T4, T5, T6)]
Implicitly added by toTupleStream6
def filterN(passes: (T1, T2, T3, T4, T5, T6, T7) => Boolean): EventStream[(T1, T2, T3, T4, T5, T6, T7)]
Implicitly added by toTupleStream7
def filterN(passes: (T1, T2, T3, T4, T5, T6, T7, T8) => Boolean): EventStream[(T1, T2, T3, T4, T5, T6, T7, T8)]
Implicitly added by toTupleStream8
def filterN(passes: (T1, T2, T3, T4, T5, T6, T7, T8, T9) => Boolean): EventStream[(T1, T2, T3, T4, T5, T6, T7, T8, T9)]
Implicitly added by toTupleStream9
def filterNot(predicate: A => Boolean): EventStream[A]
def filterWith[B](source: SignalSource[B], passes: B => Boolean): EventStream[A]

stream.filterWith(otherSignal, passes = _ == false) is essentially like stream.filter(_ => otherSignal.now() == false) (but it compiles)

stream.filterWith(otherSignal, passes = _ == false) is essentially like stream.filter(_ => otherSignal.now() == false) (but it compiles)

override def map[B](project: A => B): EventStream[B]
Value parameters:
project

Note: guarded against exceptions

Definition Classes
def mapN[Out](project: (T1, T2) => Out): EventStream[Out]
Implicitly added by toTupleStream2
def mapN[Out](project: (T1, T2, T3) => Out): EventStream[Out]
Implicitly added by toTupleStream3
def mapN[Out](project: (T1, T2, T3, T4) => Out): EventStream[Out]
Implicitly added by toTupleStream4
def mapN[Out](project: (T1, T2, T3, T4, T5) => Out): EventStream[Out]
Implicitly added by toTupleStream5
def mapN[Out](project: (T1, T2, T3, T4, T5, T6) => Out): EventStream[Out]
Implicitly added by toTupleStream6
def mapN[Out](project: (T1, T2, T3, T4, T5, T6, T7) => Out): EventStream[Out]
Implicitly added by toTupleStream7
def mapN[Out](project: (T1, T2, T3, T4, T5, T6, T7, T8) => Out): EventStream[Out]
Implicitly added by toTupleStream8
def mapN[Out](project: (T1, T2, T3, T4, T5, T6, T7, T8, T9) => Out): EventStream[Out]
Implicitly added by toTupleStream9
def mergeWith[B >: A](streams: EventStream[B]*): EventStream[B]

Returns a stream that emits events from this stream AND all off the streams, interleaved. Note: For other types of combination, see combineWith, withCurrentValueOf, sample etc.

Returns a stream that emits events from this stream AND all off the streams, interleaved. Note: For other types of combination, see combineWith, withCurrentValueOf, sample etc.

override def recover[B >: A](pf: PartialFunction[Throwable, Option[B]]): EventStream[B]

See docs for MapStream

See docs for MapStream

Value parameters:
pf

Note: guarded against exceptions

Definition Classes
override def recoverToTry: EventStream[Try[A]]

Convert this to an observable that emits Failure(err) instead of erroring

Convert this to an observable that emits Failure(err) instead of erroring

Definition Classes
def sample[T1](s1: SignalSource[T1]): EventStream[T1]
Implicitly added by toCombinableStream
def sample[T1, T2](s1: SignalSource[T1], s2: SignalSource[T2]): EventStream[(T1, T2)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3]): EventStream[(T1, T2, T3)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3, T4](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4]): EventStream[(T1, T2, T3, T4)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3, T4, T5](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5]): EventStream[(T1, T2, T3, T4, T5)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3, T4, T5, T6](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6]): EventStream[(T1, T2, T3, T4, T5, T6)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3, T4, T5, T6, T7](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6], s7: SignalSource[T7]): EventStream[(T1, T2, T3, T4, T5, T6, T7)]
Implicitly added by toCombinableStream
def sample[T1, T2, T3, T4, T5, T6, T7, T8](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6], s7: SignalSource[T7], s8: SignalSource[T8]): EventStream[(T1, T2, T3, T4, T5, T6, T7, T8)]
Implicitly added by toCombinableStream
def scanLeft[B](initial: B)(fn: (B, A) => B): Signal[B]

A signal that emits the accumulated value every time that the parent stream emits.

A signal that emits the accumulated value every time that the parent stream emits.

Value parameters:
fn

Note: guarded against exceptions

def scanLeftRecover[B](initial: Try[B])(fn: (Try[B], Try[A]) => Try[B]): Signal[B]

A signal that emits the accumulated value every time that the parent stream emits.

A signal that emits the accumulated value every time that the parent stream emits.

Value parameters:
fn

Note: Must not throw!

def split[Output, Key](key: Input => Key, distinctCompose: Signal[Input] => Signal[Input], duplicateKeys: DuplicateKeysConfig)(project: (Key, Input, Signal[Input]) => Output)(implicit splittable: Splittable[M]): Signal[M[Output]]
Implicitly added by toSplittableStream
def splitByIndex[Output](project: (Int, Input, Signal[Input]) => Output)(implicit splittable: Splittable[M]): Signal[M[Output]]
Implicitly added by toSplittableStream

Like split, but uses index of the item in the list as the key.

Like split, but uses index of the item in the list as the key.

def splitOne[Output, Key](key: Input => Key, distinctCompose: Signal[Input] => Signal[Input])(project: (Key, Input, Signal[Input]) => Output): EventStream[Output]
Implicitly added by toSplittableOneStream
def splitOption[Output](project: (Input, Signal[Input]) => Output, ifEmpty: => Output): Signal[Output]
Implicitly added by toSplittableOptionStream

This .split-s a Stream of an Option by the Option's isDefined property. If you want a different key, use the .split operator directly.

This .split-s a Stream of an Option by the Option's isDefined property. If you want a different key, use the .split operator directly.

Value parameters:
ifEmpty
  • returned if Option is empty, or if the parent stream has not emitted any events yet. Re-evaluated whenever the parent stream switches from Some(a) to None. ifEmpty is NOT re-evaluated when the parent stream emits None if the last event it emitted was also a None.
project
  • (initialInput, signalOfInput) => output project is called whenever signal switches from None to Some(). signalOfInput starts with initialInput value, and updates when the parent signal updates from Some(a) to Some(b).
def startWith[B >: A](initial: => B, cacheInitialValue: Boolean): Signal[B]
Value parameters:
cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

def startWithNone: Signal[Option[A]]
def startWithTry[B >: A](initial: => Try[B], cacheInitialValue: Boolean): Signal[B]
Value parameters:
cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

def take(numEvents: Int, resetOnStop: Boolean): EventStream[A]

Take the first numEvents events from this stream, ignore the rest. Note: As long as events are being taken, ALL errors are also taken

Take the first numEvents events from this stream, ignore the rest. Note: As long as events are being taken, ALL errors are also taken

Value parameters:
resetOnStop

Reset the count if the stream stops

def takeUntil(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Imitate parent stream as long as events to NOT pass the test; stop emitting after that.

Imitate parent stream as long as events to NOT pass the test; stop emitting after that.

Value parameters:
passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

def takeWhile(passes: A => Boolean, resetOnStop: Boolean): EventStream[A]

Imitate parent stream as long as events pass the test; stop emitting after that.

Imitate parent stream as long as events pass the test; stop emitting after that.

Value parameters:
passes

Note: MUST NOT THROW!

resetOnStop

Forget everything and start dropping again if the stream stops

def throttle(ms: Int, leading: Boolean): EventStream[A]

See docs for ThrottleStream

See docs for ThrottleStream

override def toObservable: EventStream[A]
Definition Classes
def toSignal[B >: A](initial: => B, cacheInitialValue: Boolean): Signal[B]
Value parameters:
cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

def toSignalWithTry[B >: A](initial: => Try[B], cacheInitialValue: Boolean): Signal[B]
Value parameters:
cacheInitialValue

if false, signal's initial value will be re-evaluated on every restart (so long as the parent stream does not emit any values)

def withCurrentValueOf[T1](s1: SignalSource[T1])(implicit c: Composition[A, T1]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2](s1: SignalSource[T1], s2: SignalSource[T2])(implicit c: Composition[A, (T1, T2)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3])(implicit c: Composition[A, (T1, T2, T3)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3, T4](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4])(implicit c: Composition[A, (T1, T2, T3, T4)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3, T4, T5](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5])(implicit c: Composition[A, (T1, T2, T3, T4, T5)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3, T4, T5, T6](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3, T4, T5, T6, T7](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6], s7: SignalSource[T7])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6, T7)]): EventStream[Composed]
Implicitly added by toCombinableStream
def withCurrentValueOf[T1, T2, T3, T4, T5, T6, T7, T8](s1: SignalSource[T1], s2: SignalSource[T2], s3: SignalSource[T3], s4: SignalSource[T4], s5: SignalSource[T5], s6: SignalSource[T6], s7: SignalSource[T7], s8: SignalSource[T8])(implicit c: Composition[A, (T1, T2, T3, T4, T5, T6, T7, T8)]): EventStream[Composed]
Implicitly added by toCombinableStream

Deprecated methods

def foldLeft[B](initial: B)(fn: (B, A) => B): Signal[B]
Deprecated
def foldLeftRecover[B](initial: Try[B])(fn: (Try[B], Try[A]) => Try[B]): Signal[B]
Deprecated

Inherited methods

def addObserver(observer: Observer[A])(implicit owner: Owner): Subscription

Subscribe an external observer to this observable

Subscribe an external observer to this observable

Inherited from:
BaseObservable
def debugBreak(when: Try[A] => Boolean): Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger for emitted events and errors if when passes Note: for Signals this also triggers onStart (with the current value at the time)

Trigger JS debugger for emitted events and errors if when passes Note: for Signals this also triggers onStart (with the current value at the time)

Inherited from:
DebuggableObservable
def debugBreakErrors(when: Throwable => Boolean): Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger for emitted errors (but not events) if when passes Note: for Signals this also triggers onStart (if current value is an error)

Trigger JS debugger for emitted errors (but not events) if when passes Note: for Signals this also triggers onStart (if current value is an error)

Inherited from:
DebuggableObservable
def debugBreakEvents(when: A => Boolean): Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger for emitted events (but not errors) if when passes Note: for Signals this also triggers onStart (if current value is not an error)

Trigger JS debugger for emitted events (but not errors) if when passes Note: for Signals this also triggers onStart (if current value is not an error)

Inherited from:
DebuggableObservable
def debugBreakLifecycle: Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger when the observable starts and stops

Trigger JS debugger when the observable starts and stops

Inherited from:
DebuggableObservable
def debugBreakStarts: Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger when the observable starts

Trigger JS debugger when the observable starts

Inherited from:
DebuggableObservable
def debugBreakStops: Self[A]
Implicitly added by toDebuggableStream

Trigger JS debugger when the observable stops

Trigger JS debugger when the observable stops

Inherited from:
DebuggableObservable
def debugLog(when: Try[A] => Boolean, useJsLogger: Boolean): Self[A]
Implicitly added by toDebuggableStream

Log emitted events and errors if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers on start (with the current value at the time)

Log emitted events and errors if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers on start (with the current value at the time)

Inherited from:
DebuggableObservable
def debugLogErrors(when: Throwable => Boolean): Self[A]
Implicitly added by toDebuggableStream

Log emitted errors (but not regular events) if when condition passes Note: for Signals this also triggers onStart (if current value is an error)

Log emitted errors (but not regular events) if when condition passes Note: for Signals this also triggers onStart (if current value is an error)

Inherited from:
DebuggableObservable
def debugLogEvents(when: A => Boolean, useJsLogger: Boolean): Self[A]
Implicitly added by toDebuggableStream

Log emitted events (but not errors) if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers onStart (if current value is not an error)

Log emitted events (but not errors) if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers onStart (if current value is not an error)

Inherited from:
DebuggableObservable
def debugLogLifecycle(logStarts: Boolean, logStops: Boolean): Self[A]
Implicitly added by toDebuggableStream

Log when the observable starts and stops

Log when the observable starts and stops

Inherited from:
DebuggableObservable
def debugLogStarts: Self[A]
Implicitly added by toDebuggableStream

Log when the observable starts

Log when the observable starts

Inherited from:
DebuggableObservable
def debugLogStops: Self[A]
Implicitly added by toDebuggableStream

Log when the observable stops

Log when the observable stops

Inherited from:
DebuggableObservable
def debugSpy(fn: Try[A] => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute fn on every emitted event or error Note: for Signals this also triggers onStart (with the current value at the time)

Execute fn on every emitted event or error Note: for Signals this also triggers onStart (with the current value at the time)

Inherited from:
DebuggableObservable
def debugSpyErrors(fn: Throwable => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute fn on every emitted error (but not regular events) Note: for Signals this also triggers onStart (if current value is an error)

Execute fn on every emitted error (but not regular events) Note: for Signals this also triggers onStart (if current value is an error)

Inherited from:
DebuggableObservable
def debugSpyEvents(fn: A => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute fn on every emitted event (but not error) Note: for Signals this also triggers onStart (if current value is not an error)

Execute fn on every emitted event (but not error) Note: for Signals this also triggers onStart (if current value is not an error)

Inherited from:
DebuggableObservable
def debugSpyLifecycle(startFn: Int => Unit, stopFn: () => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute callbacks on when the observable starts and stops

Execute callbacks on when the observable starts and stops

Value parameters:
startFn

topoRank => ()

Inherited from:
DebuggableObservable
def debugSpyStarts(fn: Int => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute callbacks on when the observable starts

Execute callbacks on when the observable starts

Value parameters:
fn

topoRank => ()

Inherited from:
DebuggableObservable
def debugSpyStops(fn: () => Unit): Self[A]
Implicitly added by toDebuggableStream

Execute callbacks on when the observable stops

Execute callbacks on when the observable stops

Inherited from:
DebuggableObservable
def debugTopoRank: Int
Implicitly added by toDebuggableStream

Return the observable's topoRank. This does not affect the observable in any way.

Return the observable's topoRank. This does not affect the observable in any way.

Inherited from:
DebuggableObservable
def debugWithName(displayName: String): Self[A]
Implicitly added by toDebuggableStream

Create a new observable that listens to the original, and set the displayName of the new observable. This is different from setDisplayName.

Create a new observable that listens to the original, and set the displayName of the new observable. This is different from setDisplayName.

If you say stream.debugWithName("foo").debugLog(), the displayName used by the logger will be "foo" verbatim, whereas if you say stream.setDisplayName("foo").debugLog(), the logger's displayName will be "foo|Debug" – with a suffix – to differentiate it from the "foo" displayName of stream itself.

Inherited from:
DebuggableObservable
protected def defaultDisplayName: String

This is the method that subclasses override to preserve the user's ability to set custom display names.

This is the method that subclasses override to preserve the user's ability to set custom display names.

Inherited from:
Named
final def displayName: String
Inherited from:
Named
def distinct: Self[A]

Distinct events (but keep all errors) by == (equals) comparison

Distinct events (but keep all errors) by == (equals) comparison

Inherited from:
BaseObservable
def distinctBy(isSame: (A, A) => Boolean): Self[A]

Distinct events (but keep all errors) using a comparison function

Distinct events (but keep all errors) using a comparison function

Inherited from:
BaseObservable
def distinctByKey(key: A => Any): Self[A]

Distinct events (but keep all errors) by matching key Note: key(event) might be evaluated more than once for each event

Distinct events (but keep all errors) by matching key Note: key(event) might be evaluated more than once for each event

Inherited from:
BaseObservable
def distinctByRef(implicit ev: A <:< AnyRef): Self[A]

Distinct events (but keep all errors) by reference equality (eq)

Distinct events (but keep all errors) by reference equality (eq)

Inherited from:
BaseObservable
def distinctErrors(isSame: (Throwable, Throwable) => Boolean): Self[A]

Distinct errors only (but keep all events) using a comparison function

Distinct errors only (but keep all events) using a comparison function

Inherited from:
BaseObservable
final override def equals(obj: Any): Boolean

Airstream may internally use Scala library functions which use == or hashCode for equality, for example List.contains. Comparing observables by structural equality pretty much never makes sense, yet it's not that hard to run into that, all you need is to create a case class subclass, and the Scala compiler will generate a structural-equality equals and hashCode methods for you behind the scenes.

Airstream may internally use Scala library functions which use == or hashCode for equality, for example List.contains. Comparing observables by structural equality pretty much never makes sense, yet it's not that hard to run into that, all you need is to create a case class subclass, and the Scala compiler will generate a structural-equality equals and hashCode methods for you behind the scenes.

To prevent that, we make equals and hashCode methods final, using the default implementation (which is reference equality).

Definition Classes
Inherited from:
BaseObservable
def flatMap[B, Inner[_], Output <: (Observable)](compose: A => Inner[B])(implicit strategy: FlattenStrategy[EventStream, Inner, Output]): Output[B]
Value parameters:
compose

Note: guarded against exceptions

Inherited from:
BaseObservable
def foreach(onNext: A => Unit)(implicit owner: Owner): Subscription

Create an external observer from a function and subscribe it to this observable.

Create an external observer from a function and subscribe it to this observable.

Note: since you won't have a reference to the observer, you will need to call Subscription.kill() to unsubscribe

Inherited from:
BaseObservable
final override def hashCode(): Int

Force reference equality checks. See comment for equals.

Force reference equality checks. See comment for equals.

Definition Classes
Inherited from:
BaseObservable
def mapTo[B](value: => B): Self[B]

value is passed by name, so it will be evaluated whenever the Observable fires. Use it to sample mutable values (e.g. myInput.ref.value in Laminar).

value is passed by name, so it will be evaluated whenever the Observable fires. Use it to sample mutable values (e.g. myInput.ref.value in Laminar).

See also: mapToStrict

Value parameters:
value

Note: guarded against exceptions

Inherited from:
BaseObservable
def mapToStrict[B](value: B): Self[B]

value is evaluated strictly, only once, when this method is called.

value is evaluated strictly, only once, when this method is called.

See also: mapTo

Inherited from:
BaseObservable
def mapToUnit: Self[Unit]
Inherited from:
BaseObservable
def matchStreamOrSignal[B](ifStream: EventStream[A] => B, ifSignal: Signal[A] => B): B
Inherited from:
BaseObservable
def recoverIgnoreErrors: Self[A]
Inherited from:
BaseObservable
def setDisplayName(name: String): Named.this.type

Set the display name for this instance (observable or observer).

Set the display name for this instance (observable or observer).

  • This method modifies the instance and returns this. It does not create a new instance.
  • New name you set will override the previous name, if any. This might change in the future. For the sake of sanity, don't call this more than once for the same instance.
  • If display name is set, toString will output it instead of the standard type@hashcode string
Inherited from:
Named
def throwFailure[B](implicit ev: A <:< Try[B]): Self[B]

Unwrap Try to "undo" recoverToTry – Encode Failure(err) as observable errors, and Success(v) as events

Unwrap Try to "undo" recoverToTry – Encode Failure(err) as observable errors, and Success(v) as events

Inherited from:
BaseObservable
def toSignalIfStream[B >: A](ifStream: EventStream[A] => Signal[B]): Signal[B]
Inherited from:
BaseObservable
def toStreamIfSignal[B >: A](ifSignal: Signal[A] => EventStream[B]): EventStream[B]
Inherited from:
BaseObservable
final override def toString: String

Override defaultDisplayName instead of this, if you need to.

Override defaultDisplayName instead of this, if you need to.

Definition Classes
Named -> Any
Inherited from:
Named
def toWeakSignal: Signal[Option[A]]

Convert this observable to a signal of Option[A]. If it is a stream, set initial value to None.

Convert this observable to a signal of Option[A]. If it is a stream, set initial value to None.

Inherited from:
BaseObservable

Concrete fields

override val observable: EventStream[A]
Implicitly added by toDebuggableStream
Implicitly added by toCombinableStream
val stream: EventStream[Input]
Implicitly added by toSplittableOneStream
val stream: EventStream[Option[Input]]
Implicitly added by toSplittableOptionStream
val stream: EventStream[M[Input]]
Implicitly added by toSplittableStream
val stream: EventStream[(T1, T2)]
Implicitly added by toTupleStream2
val stream: EventStream[(T1, T2, T3)]
Implicitly added by toTupleStream3
val stream: EventStream[(T1, T2, T3, T4)]
Implicitly added by toTupleStream4
val stream: EventStream[(T1, T2, T3, T4, T5)]
Implicitly added by toTupleStream5
val stream: EventStream[(T1, T2, T3, T4, T5, T6)]
Implicitly added by toTupleStream6
val stream: EventStream[(T1, T2, T3, T4, T5, T6, T7)]
Implicitly added by toTupleStream7
val stream: EventStream[(T1, T2, T3, T4, T5, T6, T7, T8)]
Implicitly added by toTupleStream8
val stream: EventStream[(T1, T2, T3, T4, T5, T6, T7, T8, T9)]
Implicitly added by toTupleStream9