@reactive-js/async-iterator-resource
Advanced tools
Comparing version 0.0.2 to 0.0.3
@@ -43,3 +43,3 @@ "use strict"; | ||
exports.pipe = pipe; | ||
exports.createEvent = () => { | ||
exports.createEventEmitter = () => { | ||
const subject = observable_1.createSubject(); | ||
@@ -56,2 +56,10 @@ const dispatcher = (req) => subject.next(req); | ||
}; | ||
exports.createPersistentStateStore = (persistentStore, initialState, scheduler, equals) => { | ||
const subject = observable_1.createSubject(); | ||
const dispatcher = (req) => subject.next(req); | ||
const onPersistentStoreChangedStream = observable_1.pipe(persistentStore, observable_1.onNext(dispatcher), observable_1.ignoreElements()); | ||
const stateObs = observable_1.pipe(subject, observable_1.scan((acc, next) => next(acc), initialState), observable_1.distinctUntilChanged(equals), observable_1.onNext(next => persistentStore.dispatch(next))); | ||
const observable = observable_1.pipe(observable_1.merge(onPersistentStoreChangedStream, stateObs), observable_1.share(scheduler, 1)); | ||
return new AsyncIteratorResourceImpl(dispatcher, subject, observable); | ||
}; | ||
exports.concatAll = (maxBufferSize = Number.MAX_SAFE_INTEGER) => exports.lift(observable_1.concatAll(maxBufferSize)); | ||
@@ -58,0 +66,0 @@ exports.distinctUntilChanged = (equals) => exports.lift(observable_1.distinctUntilChanged(equals)); |
@@ -1,2 +0,2 @@ | ||
import { concatAll as concatAllObs, connect, createSubject, distinctUntilChanged as distinctUntilChangedObs, endWith as endWithObs, exhaust as exhaustObs, ignoreElements as ignoreElementsObs, keep as keepObs, map as mapObs, mergeAll as mergeAllObs, observe as observeObs, onComplete as onCompleteObs, onError as onErrorObs, onNext as onNextObs, pipe as pipeObs, repeat as repeatObs, retry as retryObs, scan as scanObs, share as shareObs, startWith as startWithObs, subscribeOn as subscribeOnObs, switchAll as switchAllObs, take as takeObs, takeLast as takeLastObs, takeWhile as takeWhileObs, throttle as throttleObs, throttleFirst as throttleFirstObs, throttleFirstTime as throttleFirstTimeObs, throttleLast as throttleLastObs, throttleLastTime as throttleLastTimeObs, throttleTime as throttleTimeObs, timeout as timeoutObs, withLatestFrom as withLatestFromObs, } from "@reactive-js/observable"; | ||
import { concatAll as concatAllObs, connect, createSubject, distinctUntilChanged as distinctUntilChangedObs, endWith as endWithObs, exhaust as exhaustObs, ignoreElements as ignoreElementsObs, keep as keepObs, map as mapObs, merge, mergeAll as mergeAllObs, observe as observeObs, onComplete as onCompleteObs, onError as onErrorObs, onNext as onNextObs, pipe as pipeObs, repeat as repeatObs, retry as retryObs, scan as scanObs, share as shareObs, startWith as startWithObs, subscribeOn as subscribeOnObs, switchAll as switchAllObs, take as takeObs, takeLast as takeLastObs, takeWhile as takeWhileObs, throttle as throttleObs, throttleFirst as throttleFirstObs, throttleFirstTime as throttleFirstTimeObs, throttleLast as throttleLastObs, throttleLastTime as throttleLastTimeObs, throttleTime as throttleTimeObs, timeout as timeoutObs, withLatestFrom as withLatestFromObs, } from "@reactive-js/observable"; | ||
class AsyncIteratorResourceImpl { | ||
@@ -40,3 +40,3 @@ constructor(dispatcher, disposable, observable) { | ||
} | ||
export const createEvent = () => { | ||
export const createEventEmitter = () => { | ||
const subject = createSubject(); | ||
@@ -53,2 +53,10 @@ const dispatcher = (req) => subject.next(req); | ||
}; | ||
export const createPersistentStateStore = (persistentStore, initialState, scheduler, equals) => { | ||
const subject = createSubject(); | ||
const dispatcher = (req) => subject.next(req); | ||
const onPersistentStoreChangedStream = pipeObs(persistentStore, onNextObs(dispatcher), ignoreElementsObs()); | ||
const stateObs = pipeObs(subject, scanObs((acc, next) => next(acc), initialState), distinctUntilChangedObs(equals), onNextObs(next => persistentStore.dispatch(next))); | ||
const observable = pipeObs(merge(onPersistentStoreChangedStream, stateObs), shareObs(scheduler, 1)); | ||
return new AsyncIteratorResourceImpl(dispatcher, subject, observable); | ||
}; | ||
export const concatAll = (maxBufferSize = Number.MAX_SAFE_INTEGER) => lift(concatAllObs(maxBufferSize)); | ||
@@ -55,0 +63,0 @@ export const distinctUntilChanged = (equals) => lift(distinctUntilChangedObs(equals)); |
@@ -1,2 +0,2 @@ | ||
import { AsyncIteratorResourceLike } from "@reactive-js/ix"; | ||
import { AsyncIteratorLike, AsyncIteratorResourceLike, EventEmitterResourceLike, StateStoreResourceLike, StateUpdaterLike } from "@reactive-js/ix"; | ||
import { ErrorLike, ObservableLike, ObserverLike } from "@reactive-js/rx"; | ||
@@ -19,7 +19,5 @@ import { ObservableOperator } from "@reactive-js/observable"; | ||
export declare function pipe<TSrcReq, TSrc, TReqA, TA, TReqB, TB, TReqC, TC, TReqD, TD, TReqE, TE, TReqF, TF, TReqG, TG, TReqH, TH, TReqI, TI>(src: AsyncIteratorResourceLike<TSrcReq, TSrc>, op1: AsyncIteratorResourceOperator<TSrcReq, TSrc, TReqA, TA>, op2: AsyncIteratorResourceOperator<TReqA, TA, TReqB, TB>, op3: AsyncIteratorResourceOperator<TReqB, TB, TReqC, TC>, op4: AsyncIteratorResourceOperator<TReqC, TC, TReqD, TD>, op5: AsyncIteratorResourceOperator<TReqD, TD, TReqE, TE>, op6: AsyncIteratorResourceOperator<TReqE, TE, TReqF, TF>, op7: AsyncIteratorResourceOperator<TReqF, TF, TReqG, TG>, op8: AsyncIteratorResourceOperator<TReqG, TG, TReqH, TH>, op9: AsyncIteratorResourceOperator<TReqH, TH, TReqI, TI>): AsyncIteratorResourceLike<TReqI, TI>; | ||
export declare const createEvent: <T>() => AsyncIteratorResourceLike<T, T>; | ||
export interface StateUpdater<T> { | ||
(oldState: T): T; | ||
} | ||
export declare const createStateStore: <T>(initialState: T, scheduler: SchedulerLike, equals?: ((a: T, b: T) => boolean) | undefined) => AsyncIteratorResourceLike<StateUpdater<T>, T>; | ||
export declare const createEventEmitter: <T>() => EventEmitterResourceLike<T>; | ||
export declare const createStateStore: <T>(initialState: T, scheduler: SchedulerLike, equals?: ((a: T, b: T) => boolean) | undefined) => StateStoreResourceLike<T>; | ||
export declare const createPersistentStateStore: <T>(persistentStore: AsyncIteratorLike<T, StateUpdaterLike<T>>, initialState: T, scheduler: SchedulerLike, equals?: ((a: T, b: T) => boolean) | undefined) => StateStoreResourceLike<T>; | ||
export declare const concatAll: <TReq, T>(maxBufferSize?: number) => AsyncIteratorResourceOperator<TReq, ObservableLike<T>, TReq, T>; | ||
@@ -26,0 +24,0 @@ export declare const distinctUntilChanged: <TReq, T>(equals?: ((a: T, b: T) => boolean) | undefined) => AsyncIteratorResourceOperator<TReq, T, TReq, T>; |
@@ -10,3 +10,2 @@ [@reactive-js/async-iterator-resource](README.md) | ||
* [AsyncIteratorResourceOperator](interfaces/asynciteratorresourceoperator.md) | ||
* [StateUpdater](interfaces/stateupdater.md) | ||
@@ -16,3 +15,4 @@ ### Functions | ||
* [concatAll](README.md#const-concatall) | ||
* [createEvent](README.md#const-createevent) | ||
* [createEventEmitter](README.md#const-createeventemitter) | ||
* [createPersistentStateStore](README.md#const-createpersistentstatestore) | ||
* [createStateStore](README.md#const-createstatestore) | ||
@@ -74,5 +74,5 @@ * [distinctUntilChanged](README.md#const-distinctuntilchanged) | ||
### `Const` createEvent | ||
### `Const` createEventEmitter | ||
▸ **createEvent**<**T**>(): *AsyncIteratorResourceLike‹T, T›* | ||
▸ **createEventEmitter**<**T**>(): *EventEmitterResourceLike‹T›* | ||
@@ -83,9 +83,30 @@ **Type parameters:** | ||
**Returns:** *AsyncIteratorResourceLike‹T, T›* | ||
**Returns:** *EventEmitterResourceLike‹T›* | ||
___ | ||
### `Const` createPersistentStateStore | ||
▸ **createPersistentStateStore**<**T**>(`persistentStore`: AsyncIteratorLike‹T, StateUpdaterLike‹T››, `initialState`: T, `scheduler`: SchedulerLike, `equals?`: undefined | function): *StateStoreResourceLike‹T›* | ||
**Type parameters:** | ||
▪ **T** | ||
**Parameters:** | ||
Name | Type | | ||
------ | ------ | | ||
`persistentStore` | AsyncIteratorLike‹T, StateUpdaterLike‹T›› | | ||
`initialState` | T | | ||
`scheduler` | SchedulerLike | | ||
`equals?` | undefined | function | | ||
**Returns:** *StateStoreResourceLike‹T›* | ||
___ | ||
### `Const` createStateStore | ||
▸ **createStateStore**<**T**>(`initialState`: T, `scheduler`: SchedulerLike, `equals?`: undefined | function): *AsyncIteratorResourceLike‹[StateUpdater](interfaces/stateupdater.md)‹T›, T›* | ||
▸ **createStateStore**<**T**>(`initialState`: T, `scheduler`: SchedulerLike, `equals?`: undefined | function): *StateStoreResourceLike‹T›* | ||
@@ -104,3 +125,3 @@ **Type parameters:** | ||
**Returns:** *AsyncIteratorResourceLike‹[StateUpdater](interfaces/stateupdater.md)‹T›, T›* | ||
**Returns:** *StateStoreResourceLike‹T›* | ||
@@ -107,0 +128,0 @@ ___ |
{ | ||
"name": "@reactive-js/async-iterator-resource", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"main": "dist/cjs/index.js", | ||
@@ -20,9 +20,9 @@ "module": "dist/esm5/index.js", | ||
"dependencies": { | ||
"@reactive-js/async-iterator": "^0.0.2", | ||
"@reactive-js/disposable": "^0.0.2", | ||
"@reactive-js/ix": "^0.0.2", | ||
"@reactive-js/observable": "^0.0.2", | ||
"@reactive-js/observable-resource": "^0.0.2", | ||
"@reactive-js/rx": "^0.0.2", | ||
"@reactive-js/scheduler": "^0.0.2", | ||
"@reactive-js/async-iterator": "^0.0.3", | ||
"@reactive-js/disposable": "^0.0.3", | ||
"@reactive-js/ix": "^0.0.3", | ||
"@reactive-js/observable": "^0.0.3", | ||
"@reactive-js/observable-resource": "^0.0.3", | ||
"@reactive-js/rx": "^0.0.3", | ||
"@reactive-js/scheduler": "^0.0.3", | ||
"tslib": "^1.10.0" | ||
@@ -40,3 +40,3 @@ }, | ||
}, | ||
"gitHead": "900b8250606308140b72784e35b22301fcc10010" | ||
"gitHead": "c8b86e65e44ab3857d6242aaa29ea7716d842240" | ||
} |
import { DisposableLike, DisposableOrTeardown } from "@reactive-js/disposable"; | ||
import { AsyncIteratorResourceLike } from "@reactive-js/ix"; | ||
import { | ||
AsyncIteratorLike, | ||
AsyncIteratorResourceLike, | ||
EventEmitterResourceLike, | ||
StateStoreResourceLike, | ||
StateUpdaterLike, | ||
} from "@reactive-js/ix"; | ||
import { | ||
ErrorLike, | ||
@@ -20,2 +26,3 @@ ObservableLike, | ||
map as mapObs, | ||
merge, | ||
mergeAll as mergeAllObs, | ||
@@ -51,10 +58,5 @@ ObservableOperator, | ||
implements AsyncIteratorResourceLike<TReq, T> { | ||
get isDisposed(): boolean { | ||
return this.disposable.isDisposed; | ||
} | ||
readonly dispatcher: (req: TReq) => void; | ||
readonly disposable: DisposableLike; | ||
readonly observable: ObservableLike<T>; | ||
constructor( | ||
@@ -70,2 +72,6 @@ dispatcher: (req: TReq) => void, | ||
get isDisposed(): boolean { | ||
return this.disposable.isDisposed; | ||
} | ||
add( | ||
@@ -301,3 +307,3 @@ disposable: DisposableOrTeardown, | ||
export const createEvent = <T>(): AsyncIteratorResourceLike<T, T> => { | ||
export const createEventEmitter = <T>(): EventEmitterResourceLike<T> => { | ||
const subject = createSubject(); | ||
@@ -309,6 +315,2 @@ const dispatcher = (req: T) => subject.next(req); | ||
export interface StateUpdater<T> { | ||
(oldState: T): T; | ||
} | ||
export const createStateStore = <T>( | ||
@@ -318,5 +320,5 @@ initialState: T, | ||
equals?: (a: T, b: T) => boolean, | ||
): AsyncIteratorResourceLike<StateUpdater<T>, T> => { | ||
const subject: SubjectResourceLike<StateUpdater<T>> = createSubject(); | ||
const dispatcher = (req: StateUpdater<T>) => subject.next(req); | ||
): StateStoreResourceLike<T> => { | ||
const subject: SubjectResourceLike<StateUpdaterLike<T>> = createSubject(); | ||
const dispatcher = (req: StateUpdaterLike<T>) => subject.next(req); | ||
const observable = pipeObs( | ||
@@ -335,2 +337,32 @@ subject, | ||
export const createPersistentStateStore = <T>( | ||
persistentStore: AsyncIteratorLike<T, StateUpdaterLike<T>>, | ||
initialState: T, | ||
scheduler: SchedulerLike, | ||
equals?: (a: T, b: T) => boolean, | ||
): StateStoreResourceLike<T> => { | ||
const subject: SubjectResourceLike<StateUpdaterLike<T>> = createSubject(); | ||
const dispatcher = (req: StateUpdaterLike<T>) => subject.next(req); | ||
const onPersistentStoreChangedStream = pipeObs( | ||
persistentStore, | ||
onNextObs(dispatcher), | ||
ignoreElementsObs(), | ||
); | ||
const stateObs = pipeObs( | ||
subject, | ||
scanObs((acc: T, next: StateUpdaterLike<T>) => next(acc), initialState), | ||
distinctUntilChangedObs(equals), | ||
onNextObs(next => persistentStore.dispatch(next)), | ||
); | ||
const observable = pipeObs( | ||
merge(onPersistentStoreChangedStream, stateObs), | ||
shareObs(scheduler, 1), | ||
); | ||
return new AsyncIteratorResourceImpl(dispatcher, subject, observable); | ||
}; | ||
export const concatAll = <TReq, T>( | ||
@@ -337,0 +369,0 @@ maxBufferSize = Number.MAX_SAFE_INTEGER, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
93473
755
17
+ Added@reactive-js/async-iterator@0.0.3(transitive)
+ Added@reactive-js/disposable@0.0.3(transitive)
+ Added@reactive-js/ix@0.0.3(transitive)
+ Added@reactive-js/observable@0.0.3(transitive)
+ Added@reactive-js/observable-resource@0.0.3(transitive)
+ Added@reactive-js/rx@0.0.3(transitive)
+ Added@reactive-js/scheduler@0.0.3(transitive)
- Removed@reactive-js/async-iterator@0.0.2(transitive)
- Removed@reactive-js/disposable@0.0.2(transitive)
- Removed@reactive-js/ix@0.0.2(transitive)
- Removed@reactive-js/observable@0.0.2(transitive)
- Removed@reactive-js/observable-resource@0.0.2(transitive)
- Removed@reactive-js/rx@0.0.2(transitive)
- Removed@reactive-js/scheduler@0.0.2(transitive)
Updated@reactive-js/ix@^0.0.3
Updated@reactive-js/rx@^0.0.3