Package detail

most-subject

mostjs-community9.9kMIT6.0.0

Subjects for @most/core

readme

most-subject

Subjects for @most/core

Get it

yarn add most-subject
# or
npm install --save most-subject

API Documentation

create\<A\>(): Subject\<A, A\>

create\<A, B\>(f: (stream: Stream\<A\>) => Stream\<B\>): Subject\<A, B\>

Returns an tuple containing a AttachSink and a Stream. AttachSink can be used to imperatively control the events flowing through the Stream or declaratively using attach. Optionally, a function can be applied to the Stream, and the return value of that function will be returned as the second tuple value.

<summary>See an example</summary> typescript import { create, event } from 'most-subject' import { runEffects, propagateEventTask } from '@most/core' import { newDefaultScheduler, currentTime } from '@most/scheduler' // Create a new `Scheduler` for use in our application. // Usually, you will want to only have one Scheduler, and it should be shared // across your application const scheduler = newDefaultScheduler() // Create our sink and our stream. // NOTE: stream is the resulting value of tap(console.log, stream). const [ sink, stream ] = create(tap<number>(console.log)) // Pushes events into our stream. const next = (n: number) => event(currentTime(scheduler), n, sink) // Activate our stream. runEffects(stream, scheduler) // Simulate asynchronous data fetching, // and then push values into our stream. Promise.resolve([ 1, 2, 3 ]) .then(data => data.forEach(next))

attach\<A\>(attachSink: AttachSink\<A\>, stream: Stream\<A\>): Stream\<A\>

Create circular dependencies with additional logic to help avoid memory leaks.

WARNING: There isn't any logic for breaking infinite loops.

<summary>See an example</summary> typescript import { Stream } from '@most/types' import { create, attach } from 'most-subject' import { periodic, scan, take, runEffects } from '@most/core' import { newDefaultScheduler } from '@most/scheduler' // Create a new Scheduler for use in our application. // Usually, you will want to only have one Scheduler, and it should be shared // across your application. const scheduler = newDefaultScheduler() const [ sink, stream ] = create<number>() // Listen to our stream. // It will log 1, 2, and 3. runEffects(tap(console.log, take(3, stream)), scheduler) const origin = scan(x => x + 1, 0, periodic(100)) attach(origin)

event\<A\>(time: Time, value: A, sink: Sink\<A\>): void

A curried function for calling Sink.event(time, value).

error(time: Time, error: Error, sink: Sink\<any\>): void

A curried function for calling Sink.error(time, error).

end(time: Time, sink: Sink\<any\>): void

A curried function for calling Sink.end(time).

Subject\<A, B\>

import { Sink, Stream } from '@most/types'

export type Subject<A, B> = [AttachSink<A>, Stream<B>]

AttachSink\<A\>

import { Sink } from '@most/types'

export AttachSink<A> extends Sink<A> {
  attach(stream: Stream<A>): Stream<A>
}

changelog

6.0.0 (2017-10-17)

1.0.0 (2017-10-17)

Bug Fixes

Features

5.3.0 (2016-12-11)

Bug Fixes

  • tsconfig: build es2015 modules to es5 source code (5f1b94f)

5.2.0 (2016-11-12)

5.1.0 (2016-11-10)

Bug Fixes

  • error: fix type signature (4534e42)

5.0.0 (2016-11-09)

Bug Fixes

  • holdSubject: Fix holdSubject to buffer without consumer (332827b)
  • next: remove unused imports (c608fe0)
  • SubjectSource: allow source to be run after being disposed (9caae7c)
  • test: Isolate test-related babel config (7e778c5)

Features

  • combinators: improve typings (9035acf)
  • exports: export BasicSubjectSource and HoldSubjectSource (aa06c61)
  • most-subject: Rewrite for better typings, tree-shakable, and async subjects. (b3408fe)

4.1.1 (2016-05-29)

4.1.0 (2016-05-29)

Bug Fixes

Features

  • src: rewrite in typescript (1398833)

4.0.2 (2016-05-17)

4.0.1 (2016-05-17)

4.0.0 (2016-05-16)

Features

  • rewrite to boost performance (eccb337)

3.0.2 (2016-03-24)

3.0.1 (2016-03-22)

Features

1.0.0 (2015-11-30)