@fncts/observable 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BehaviorSubject.d.ts +2 -2
- package/Notification.d.ts +4 -4
- package/Observable/api/connect.d.ts +2 -2
- package/Observable/api/connectable.d.ts +2 -2
- package/Observable/api/fromEvent.d.ts +4 -0
- package/Observable/api/race.d.ts +2 -1
- package/Observable/api/raceWith.d.ts +2 -2
- package/Observable/api/repeatWhen.d.ts +5 -2
- package/Observable/api/retryWhen.d.ts +2 -3
- package/Observable/api/share.d.ts +5 -4
- package/Observable/api/window.d.ts +2 -2
- package/Observable/api/windowCount.d.ts +2 -2
- package/Observable/api/windowTime.d.ts +5 -5
- package/Observable/api/windowToggle.d.ts +3 -3
- package/Observable/api/windowWhen.d.ts +3 -3
- package/Observable/api.d.ts +189 -195
- package/Observable/definition.d.ts +8 -6
- package/ObservableRef/api.d.ts +63 -0
- package/ObservableRef/atomic.d.ts +32 -0
- package/ObservableRef/definition.d.ts +52 -0
- package/Operator.d.ts +2 -2
- package/_cjs/Action.cjs +0 -7
- package/_cjs/Action.cjs.map +1 -1
- package/_cjs/AnimationFrameAction.cjs +0 -12
- package/_cjs/AnimationFrameAction.cjs.map +1 -1
- package/_cjs/AnimationFrameScheduler.cjs +0 -12
- package/_cjs/AnimationFrameScheduler.cjs.map +1 -1
- package/_cjs/AsyncAction.cjs +0 -25
- package/_cjs/AsyncAction.cjs.map +1 -1
- package/_cjs/AsyncScheduler.cjs +2 -16
- package/_cjs/AsyncScheduler.cjs.map +1 -1
- package/_cjs/BehaviorSubject.cjs +1 -13
- package/_cjs/BehaviorSubject.cjs.map +1 -1
- package/_cjs/Notification.cjs +21 -40
- package/_cjs/Notification.cjs.map +1 -1
- package/_cjs/Observable/api/connect.cjs +12 -17
- package/_cjs/Observable/api/connect.cjs.map +1 -1
- package/_cjs/Observable/api/connectable.cjs +6 -18
- package/_cjs/Observable/api/connectable.cjs.map +1 -1
- package/_cjs/Observable/api/fromCallback.cjs +0 -15
- package/_cjs/Observable/api/fromCallback.cjs.map +1 -1
- package/_cjs/Observable/api/fromEvent.cjs +3 -5
- package/_cjs/Observable/api/fromEvent.cjs.map +1 -1
- package/_cjs/Observable/api/index.cjs +0 -28
- package/_cjs/Observable/api/index.cjs.map +1 -1
- package/_cjs/Observable/api/race.cjs +2 -12
- package/_cjs/Observable/api/race.cjs.map +1 -1
- package/_cjs/Observable/api/raceWith.cjs +8 -11
- package/_cjs/Observable/api/raceWith.cjs.map +1 -1
- package/_cjs/Observable/api/repeatWhen.cjs +44 -55
- package/_cjs/Observable/api/repeatWhen.cjs.map +1 -1
- package/_cjs/Observable/api/retryWhen.cjs +29 -45
- package/_cjs/Observable/api/retryWhen.cjs.map +1 -1
- package/_cjs/Observable/api/share.cjs +61 -77
- package/_cjs/Observable/api/share.cjs.map +1 -1
- package/_cjs/Observable/api/window.cjs +33 -39
- package/_cjs/Observable/api/window.cjs.map +1 -1
- package/_cjs/Observable/api/windowCount.cjs +40 -48
- package/_cjs/Observable/api/windowCount.cjs.map +1 -1
- package/_cjs/Observable/api/windowTime.cjs +60 -73
- package/_cjs/Observable/api/windowTime.cjs.map +1 -1
- package/_cjs/Observable/api/windowToggle.cjs +55 -71
- package/_cjs/Observable/api/windowToggle.cjs.map +1 -1
- package/_cjs/Observable/api/windowWhen.cjs +42 -52
- package/_cjs/Observable/api/windowWhen.cjs.map +1 -1
- package/_cjs/Observable/api.cjs +1260 -1485
- package/_cjs/Observable/api.cjs.map +1 -1
- package/_cjs/Observable/definition.cjs +9 -37
- package/_cjs/Observable/definition.cjs.map +1 -1
- package/_cjs/Observable/dom/animationFrames.cjs +0 -12
- package/_cjs/Observable/dom/animationFrames.cjs.map +1 -1
- package/_cjs/Observable.cjs +0 -38
- package/_cjs/Observable.cjs.map +1 -1
- package/_cjs/ObservableRef/api.cjs +160 -0
- package/_cjs/ObservableRef/api.cjs.map +1 -0
- package/_cjs/ObservableRef/atomic.cjs +93 -0
- package/_cjs/ObservableRef/atomic.cjs.map +1 -0
- package/_cjs/ObservableRef/definition.cjs +24 -0
- package/_cjs/ObservableRef/definition.cjs.map +1 -0
- package/_cjs/Operator.cjs +11 -21
- package/_cjs/Operator.cjs.map +1 -1
- package/_cjs/Scheduler.cjs +0 -18
- package/_cjs/Scheduler.cjs.map +1 -1
- package/_cjs/Subject.cjs +3 -50
- package/_cjs/Subject.cjs.map +1 -1
- package/_cjs/Subscriber.cjs +0 -32
- package/_cjs/Subscriber.cjs.map +1 -1
- package/_cjs/Subscription.cjs +0 -37
- package/_cjs/Subscription.cjs.map +1 -1
- package/_cjs/index.cjs +0 -28
- package/_cjs/internal/animationFrameProvider.cjs +0 -9
- package/_cjs/internal/animationFrameProvider.cjs.map +1 -1
- package/_cjs/internal/args.cjs +0 -6
- package/_cjs/internal/args.cjs.map +1 -1
- package/_cjs/internal/intervalProvider.cjs +0 -2
- package/_cjs/internal/intervalProvider.cjs.map +1 -1
- package/_cjs/internal/performanceTimestampProvider.cjs +0 -1
- package/_cjs/internal/performanceTimestampProvider.cjs.map +1 -1
- package/_cjs/internal/timeoutProvider.cjs +0 -2
- package/_cjs/internal/timeoutProvider.cjs.map +1 -1
- package/_cjs/internal/timestampProvider.cjs +0 -1
- package/_cjs/internal/timestampProvider.cjs.map +1 -1
- package/_cjs/internal/util.cjs +2 -21
- package/_cjs/internal/util.cjs.map +1 -1
- package/_mjs/Action.mjs +0 -3
- package/_mjs/Action.mjs.map +1 -1
- package/_mjs/AnimationFrameAction.mjs +0 -6
- package/_mjs/AnimationFrameAction.mjs.map +1 -1
- package/_mjs/AnimationFrameScheduler.mjs +0 -7
- package/_mjs/AnimationFrameScheduler.mjs.map +1 -1
- package/_mjs/AsyncAction.mjs +0 -17
- package/_mjs/AsyncAction.mjs.map +1 -1
- package/_mjs/AsyncScheduler.mjs +2 -10
- package/_mjs/AsyncScheduler.mjs.map +1 -1
- package/_mjs/BehaviorSubject.mjs +1 -8
- package/_mjs/BehaviorSubject.mjs.map +1 -1
- package/_mjs/Notification.mjs +18 -26
- package/_mjs/Notification.mjs.map +1 -1
- package/_mjs/Observable/api/connect.mjs +12 -11
- package/_mjs/Observable/api/connect.mjs.map +1 -1
- package/_mjs/Observable/api/connectable.mjs +6 -9
- package/_mjs/Observable/api/connectable.mjs.map +1 -1
- package/_mjs/Observable/api/fromCallback.mjs +0 -10
- package/_mjs/Observable/api/fromCallback.mjs.map +1 -1
- package/_mjs/Observable/api/fromEvent.mjs +3 -1
- package/_mjs/Observable/api/fromEvent.mjs.map +1 -1
- package/_mjs/Observable/api/index.mjs.map +1 -1
- package/_mjs/Observable/api/race.mjs +2 -6
- package/_mjs/Observable/api/race.mjs.map +1 -1
- package/_mjs/Observable/api/raceWith.mjs +7 -6
- package/_mjs/Observable/api/raceWith.mjs.map +1 -1
- package/_mjs/Observable/api/repeatWhen.mjs +44 -48
- package/_mjs/Observable/api/repeatWhen.mjs.map +1 -1
- package/_mjs/Observable/api/retryWhen.mjs +29 -37
- package/_mjs/Observable/api/retryWhen.mjs.map +1 -1
- package/_mjs/Observable/api/share.mjs +60 -70
- package/_mjs/Observable/api/share.mjs.map +1 -1
- package/_mjs/Observable/api/window.mjs +32 -33
- package/_mjs/Observable/api/window.mjs.map +1 -1
- package/_mjs/Observable/api/windowCount.mjs +39 -43
- package/_mjs/Observable/api/windowCount.mjs.map +1 -1
- package/_mjs/Observable/api/windowTime.mjs +59 -63
- package/_mjs/Observable/api/windowTime.mjs.map +1 -1
- package/_mjs/Observable/api/windowToggle.mjs +54 -62
- package/_mjs/Observable/api/windowToggle.mjs.map +1 -1
- package/_mjs/Observable/api/windowWhen.mjs +41 -45
- package/_mjs/Observable/api/windowWhen.mjs.map +1 -1
- package/_mjs/Observable/api.mjs +1186 -1311
- package/_mjs/Observable/api.mjs.map +1 -1
- package/_mjs/Observable/definition.mjs +9 -24
- package/_mjs/Observable/definition.mjs.map +1 -1
- package/_mjs/Observable/dom/animationFrames.mjs +0 -5
- package/_mjs/Observable/dom/animationFrames.mjs.map +1 -1
- package/_mjs/Observable.mjs +4 -4
- package/_mjs/Observable.mjs.map +1 -1
- package/_mjs/ObservableRef/api.mjs +141 -0
- package/_mjs/ObservableRef/api.mjs.map +1 -0
- package/_mjs/ObservableRef/atomic.mjs +82 -0
- package/_mjs/ObservableRef/atomic.mjs.map +1 -0
- package/_mjs/ObservableRef/definition.mjs +16 -0
- package/_mjs/ObservableRef/definition.mjs.map +1 -0
- package/_mjs/Operator.mjs +11 -12
- package/_mjs/Operator.mjs.map +1 -1
- package/_mjs/Scheduler.mjs +0 -9
- package/_mjs/Scheduler.mjs.map +1 -1
- package/_mjs/Subject.mjs +3 -37
- package/_mjs/Subject.mjs.map +1 -1
- package/_mjs/Subscriber.mjs +0 -20
- package/_mjs/Subscriber.mjs.map +1 -1
- package/_mjs/Subscription.mjs +0 -26
- package/_mjs/Subscription.mjs.map +1 -1
- package/_mjs/index.mjs.map +1 -1
- package/_mjs/internal/animationFrameProvider.mjs +0 -5
- package/_mjs/internal/animationFrameProvider.mjs.map +1 -1
- package/_mjs/internal/args.mjs +0 -2
- package/_mjs/internal/args.mjs.map +1 -1
- package/_mjs/internal/intervalProvider.mjs +0 -2
- package/_mjs/internal/intervalProvider.mjs.map +1 -1
- package/_mjs/internal/performanceTimestampProvider.mjs +0 -1
- package/_mjs/internal/performanceTimestampProvider.mjs.map +1 -1
- package/_mjs/internal/timeoutProvider.mjs +0 -2
- package/_mjs/internal/timeoutProvider.mjs.map +1 -1
- package/_mjs/internal/timestampProvider.mjs +0 -1
- package/_mjs/internal/timestampProvider.mjs.map +1 -1
- package/_mjs/internal/util.mjs +2 -7
- package/_mjs/internal/util.mjs.map +1 -1
- package/_src/Action.ts +0 -1
- package/_src/AnimationFrameAction.ts +0 -2
- package/_src/AnimationFrameScheduler.ts +2 -7
- package/_src/BehaviorSubject.ts +3 -3
- package/_src/Notification.ts +21 -23
- package/_src/Observable/api/connect.ts +12 -9
- package/_src/Observable/api/connectable.ts +6 -7
- package/_src/Observable/api/fromCallback.ts +0 -1
- package/_src/Observable/api/fromEvent.ts +3 -0
- package/_src/Observable/api/race.ts +15 -13
- package/_src/Observable/api/raceWith.ts +15 -14
- package/_src/Observable/api/repeatWhen.ts +51 -56
- package/_src/Observable/api/retryWhen.ts +38 -43
- package/_src/Observable/api/share.ts +63 -71
- package/_src/Observable/api/window.ts +36 -41
- package/_src/Observable/api/windowCount.ts +44 -51
- package/_src/Observable/api/windowTime.ts +69 -81
- package/_src/Observable/api/windowToggle.ts +69 -73
- package/_src/Observable/api/windowWhen.ts +49 -55
- package/_src/Observable/api.ts +1493 -1498
- package/_src/Observable/definition.ts +24 -18
- package/_src/Observable/dom/animationFrames.ts +16 -6
- package/_src/Observable/instances.ts +0 -23
- package/_src/Observable.ts +0 -2
- package/_src/ObservableRef/api.ts +169 -0
- package/_src/ObservableRef/atomic.ts +85 -0
- package/_src/ObservableRef/definition.ts +57 -0
- package/_src/Operator.ts +20 -15
- package/_src/Scheduler.ts +0 -6
- package/_src/Subject.ts +1 -1
- package/_src/Subscriber.ts +3 -2
- package/_src/global.ts +5 -1
- package/_src/internal/util.ts +8 -4
- package/global.d.ts +5 -1
- package/package.json +2 -2
|
@@ -30,13 +30,14 @@ export class Observable<R, E, A> implements Subscribable<E, A>, AsyncIterable<A>
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
[Symbol.asyncIterator]() {
|
|
33
|
+
[Symbol.asyncIterator]<E, A>(this: Observable<never, E, A>) {
|
|
34
34
|
let done = false;
|
|
35
35
|
const queue: A[] = [];
|
|
36
|
-
let error: Cause<E>;
|
|
37
36
|
|
|
37
|
+
let error: Cause<E>;
|
|
38
38
|
let resolveCurrent: ((a: A) => void) | undefined;
|
|
39
39
|
let rejectCurrent: ((err: unknown) => void) | undefined;
|
|
40
|
+
|
|
40
41
|
this.subscribe({
|
|
41
42
|
next: (value) => {
|
|
42
43
|
if (resolveCurrent) {
|
|
@@ -86,30 +87,37 @@ export class Observable<R, E, A> implements Subscribable<E, A>, AsyncIterable<A>
|
|
|
86
87
|
return observable;
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
observable
|
|
90
|
+
provideEnvironment(environment: Environment<R>): Observable<never, E, A>;
|
|
91
|
+
provideEnvironment<In>(environment: Environment<In>): Observable<Exclude<R, In>, E, A>;
|
|
92
|
+
provideEnvironment<In>(environment: Environment<In>): Observable<Exclude<R, In>, E, A> {
|
|
93
|
+
const observable = new Observable<never, E, A>(this.subscribeInternal);
|
|
94
|
+
observable.source = this.source;
|
|
95
|
+
observable.operator = this.operator;
|
|
96
|
+
observable.environment = this.environment.union(environment);
|
|
93
97
|
return observable;
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
subscribe(
|
|
97
|
-
subscribe
|
|
98
|
-
subscribe(
|
|
100
|
+
subscribe<E, A>(this: Observable<never, E, A>, observer?: Subscriber<E, A>): Subscription;
|
|
101
|
+
subscribe<E, A>(this: Observable<never, E, A>, observer?: Partial<Observer<E, A>>): Subscription;
|
|
102
|
+
subscribe<E, A>(this: Observable<never, E, A>, observer?: (value: A) => void): Subscription;
|
|
103
|
+
subscribe<E, A>(
|
|
104
|
+
this: Observable<never, E, A>,
|
|
105
|
+
observer?: Partial<Observer<E, A>> | ((value: A) => void),
|
|
106
|
+
): Subscription {
|
|
99
107
|
const subscriber: Subscriber<E, A> = isSubscriber(observer) ? observer : new SafeSubscriber(observer);
|
|
100
108
|
|
|
101
109
|
subscriber.add(
|
|
102
110
|
this.operator
|
|
103
|
-
? this.operator.call(subscriber, this.source,
|
|
111
|
+
? this.operator.call(subscriber, this.source, this.environment)
|
|
104
112
|
: this.source
|
|
105
|
-
? this.subscribeInternal(subscriber,
|
|
106
|
-
: this.trySubscribe(subscriber,
|
|
113
|
+
? this.subscribeInternal(subscriber, this.environment)
|
|
114
|
+
: this.trySubscribe(subscriber, this.environment),
|
|
107
115
|
);
|
|
108
116
|
|
|
109
117
|
return subscriber;
|
|
110
118
|
}
|
|
111
119
|
|
|
112
|
-
protected trySubscribe(subscriber: Subscriber<E, A>, environment: Environment<
|
|
120
|
+
protected trySubscribe(subscriber: Subscriber<E, A>, environment: Environment<any>): Finalizer {
|
|
113
121
|
try {
|
|
114
122
|
return this.subscribeInternal(subscriber, environment);
|
|
115
123
|
} catch (err) {
|
|
@@ -118,8 +126,8 @@ export class Observable<R, E, A> implements Subscribable<E, A>, AsyncIterable<A>
|
|
|
118
126
|
}
|
|
119
127
|
}
|
|
120
128
|
|
|
121
|
-
protected subscribeInternal(subscriber: Subscriber<E, A>, environment: Environment<
|
|
122
|
-
this.source?.subscribe(subscriber
|
|
129
|
+
protected subscribeInternal(subscriber: Subscriber<E, A>, environment: Environment<any>): Finalizer {
|
|
130
|
+
this.source?.provideEnvironment(environment).subscribe(subscriber);
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
133
|
|
|
@@ -130,13 +138,11 @@ export class EnvironmentWith<R0, R, E, A> extends Observable<R0 | R, E, A> {
|
|
|
130
138
|
if (!this.map.has(environment)) {
|
|
131
139
|
this.map.set(environment, f(environment as Environment<R0>));
|
|
132
140
|
}
|
|
133
|
-
return this.map.get(environment)!.subscribe(subsciber);
|
|
141
|
+
return this.map.get(environment)!.provideEnvironment(environment).subscribe(subsciber);
|
|
134
142
|
});
|
|
135
143
|
}
|
|
136
144
|
}
|
|
137
|
-
|
|
138
145
|
export const EMPTY: Observable<never, never, never> = new Observable((subscriber) => subscriber.complete());
|
|
139
|
-
|
|
140
146
|
export function isObservable(u: unknown): u is Observable<unknown, unknown, unknown> {
|
|
141
147
|
return isObject(u) && ObservableTypeId in u;
|
|
142
148
|
}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import { animationFrameProvider } from "@fncts/observable/internal/animationFrameProvider";
|
|
2
2
|
import { performanceTimestampProvider } from "@fncts/observable/internal/performanceTimestampProvider";
|
|
3
3
|
|
|
4
|
-
export function animationFrames(
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export function animationFrames(timestampProvider?: TimestampProvider): Observable<
|
|
5
|
+
never,
|
|
6
|
+
never,
|
|
7
|
+
{
|
|
8
|
+
timestamp: number;
|
|
9
|
+
elapsed: number;
|
|
10
|
+
}
|
|
11
|
+
> {
|
|
7
12
|
return timestampProvider ? animationFramesInternal(timestampProvider) : DEFAULT_ANIMATION_FRAMES;
|
|
8
13
|
}
|
|
9
14
|
|
|
10
|
-
function animationFramesInternal(
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
function animationFramesInternal(timestampProvider?: TimestampProvider): Observable<
|
|
16
|
+
never,
|
|
17
|
+
never,
|
|
18
|
+
{
|
|
19
|
+
timestamp: number;
|
|
20
|
+
elapsed: number;
|
|
21
|
+
}
|
|
22
|
+
> {
|
|
13
23
|
const { schedule } = animationFrameProvider;
|
|
14
24
|
return new Observable((subscriber) => {
|
|
15
25
|
const subscription = new Subscription();
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
// import type * as HKT from "@principia/base/HKT";
|
|
2
|
-
|
|
3
2
|
// import * as P from "@principia/base/prelude";
|
|
4
|
-
|
|
5
3
|
// import * as O from "./core.js";
|
|
6
|
-
|
|
7
4
|
// export interface ObservableF extends HKT.HKT {
|
|
8
5
|
// readonly type: O.Observable<this["E"], this["A"]>;
|
|
9
6
|
// readonly index: number;
|
|
@@ -12,43 +9,33 @@
|
|
|
12
9
|
// A: "+";
|
|
13
10
|
// };
|
|
14
11
|
// }
|
|
15
|
-
|
|
16
12
|
// export const Functor: P.Functor<ObservableF> = P.Functor({
|
|
17
13
|
// map_: O.map_,
|
|
18
14
|
// });
|
|
19
|
-
|
|
20
15
|
// export const FunctorWithIndex: P.FunctorWithIndex<ObservableF> = P.FunctorWithIndex({
|
|
21
16
|
// imap_: O.mapWithIndex,
|
|
22
17
|
// });
|
|
23
|
-
|
|
24
18
|
// export const SemimonoidalFunctor: P.SemimonoidalFunctor<ObservableF> = P.SemimonoidalFunctor({
|
|
25
19
|
// map_: O.map_,
|
|
26
20
|
// cross_: O.cross_,
|
|
27
21
|
// crossWith_: O.crossWith_,
|
|
28
22
|
// });
|
|
29
|
-
|
|
30
23
|
// export const Apply: P.Apply<ObservableF> = P.Apply({
|
|
31
24
|
// map_: O.map_,
|
|
32
25
|
// cross_: O.cross_,
|
|
33
26
|
// crossWith_: O.crossWith_,
|
|
34
27
|
// ap_: O.ap_,
|
|
35
28
|
// });
|
|
36
|
-
|
|
37
29
|
// export const apS = P.apSF(Apply);
|
|
38
|
-
|
|
39
30
|
// export const apT = P.apTF(Apply);
|
|
40
|
-
|
|
41
31
|
// export const sequenceS = P.sequenceSF(Apply);
|
|
42
|
-
|
|
43
32
|
// export const sequenceT = P.sequenceTF(Apply);
|
|
44
|
-
|
|
45
33
|
// export const MonoidalFunctor: P.MonoidalFunctor<ObservableF> = P.MonoidalFunctor({
|
|
46
34
|
// map_: O.map_,
|
|
47
35
|
// cross_: O.cross_,
|
|
48
36
|
// crossWith_: O.crossWith_,
|
|
49
37
|
// unit: O.unit,
|
|
50
38
|
// });
|
|
51
|
-
|
|
52
39
|
// export const Applicative: P.Applicative<ObservableF> = P.Applicative({
|
|
53
40
|
// map_: O.map_,
|
|
54
41
|
// cross_: O.cross_,
|
|
@@ -56,7 +43,6 @@
|
|
|
56
43
|
// unit: O.unit,
|
|
57
44
|
// pure: O.pure,
|
|
58
45
|
// });
|
|
59
|
-
|
|
60
46
|
// export const Monad: P.Monad<ObservableF> = P.Monad({
|
|
61
47
|
// map_: O.map_,
|
|
62
48
|
// cross_: O.cross_,
|
|
@@ -66,19 +52,12 @@
|
|
|
66
52
|
// chain_: O.concatMap_,
|
|
67
53
|
// flatten: O.flatten,
|
|
68
54
|
// });
|
|
69
|
-
|
|
70
55
|
// const _do = O.pure({});
|
|
71
|
-
|
|
72
56
|
// export { _do as do };
|
|
73
|
-
|
|
74
57
|
// export const chainS_ = P.chainSF_(Monad);
|
|
75
|
-
|
|
76
58
|
// export const chainS = P.chainSF(Monad);
|
|
77
|
-
|
|
78
59
|
// export const pureS_ = P.pureSF_(Monad);
|
|
79
|
-
|
|
80
60
|
// export const pureS = P.pureSF(Monad);
|
|
81
|
-
|
|
82
61
|
// export const MonadSwitch: P.Monad<ObservableF> = P.Monad({
|
|
83
62
|
// map_: O.map_,
|
|
84
63
|
// cross_: O.cross_,
|
|
@@ -88,7 +67,6 @@
|
|
|
88
67
|
// chain_: O.switchMap_,
|
|
89
68
|
// flatten: O.switchFlatten,
|
|
90
69
|
// });
|
|
91
|
-
|
|
92
70
|
// export const Filterable: P.Filterable<ObservableF> = P.Filterable({
|
|
93
71
|
// map_: O.map_,
|
|
94
72
|
// filter_: O.filter_,
|
|
@@ -96,7 +74,6 @@
|
|
|
96
74
|
// partition_: O.partition_,
|
|
97
75
|
// partitionMap_: O.partitionMap_,
|
|
98
76
|
// });
|
|
99
|
-
|
|
100
77
|
// export const FilterableWithIndex: P.FilterableWithIndex<ObservableF> = P.FilterableWithIndex({
|
|
101
78
|
// imap_: O.mapWithIndex,
|
|
102
79
|
// ifilter_: O.ifilter_,
|
package/_src/Observable.ts
CHANGED
|
@@ -3,7 +3,6 @@ export * from "./Observable/api.js";
|
|
|
3
3
|
export * from "./Observable/definition.js";
|
|
4
4
|
export * from "./Observable/instances.js";
|
|
5
5
|
// codegen:end
|
|
6
|
-
|
|
7
6
|
// codegen:start { preset: barrel, include: Observable/api/*.ts }
|
|
8
7
|
export * from "./Observable/api/connect.js";
|
|
9
8
|
export * from "./Observable/api/connectable.js";
|
|
@@ -21,7 +20,6 @@ export * from "./Observable/api/windowTime.js";
|
|
|
21
20
|
export * from "./Observable/api/windowToggle.js";
|
|
22
21
|
export * from "./Observable/api/windowWhen.js";
|
|
23
22
|
// codegen:end
|
|
24
|
-
|
|
25
23
|
// codegen:start { preset: barrel, include: Observable/dom/*.ts }
|
|
26
24
|
export * from "./Observable/dom/animationFrames.js";
|
|
27
25
|
// codegen:end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { Lens } from "@fncts/base/optics/Lens";
|
|
2
|
+
import type { URIO } from "@fncts/io/IO";
|
|
3
|
+
import type { Observable } from "@fncts/observable/Observable";
|
|
4
|
+
import type { Store } from "@fncts/observable/ObservableRef/atomic";
|
|
5
|
+
|
|
6
|
+
import { Atomic } from "@fncts/observable/ObservableRef/atomic";
|
|
7
|
+
import { ObservableRef, ObservableRefDescriptor } from "@fncts/observable/ObservableRef/definition";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @tsplus static fncts.observable.ObservableRefOps make
|
|
11
|
+
* @tsplus static fncts.observable.ObservableRefOps __call
|
|
12
|
+
*/
|
|
13
|
+
export function make<A>(initial: A, /** @fncts id */ id?: string): ObservableRef<Store, A, A> {
|
|
14
|
+
if (id === undefined) {
|
|
15
|
+
throw new Error("ObservableRef.make: the `id` argument must be provided if not using typescript transformers");
|
|
16
|
+
}
|
|
17
|
+
return new Atomic(new ObservableRefDescriptor(Symbol.for(id!), initial));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @tsplus pipeable fncts.observable.ObservableRef update
|
|
22
|
+
*/
|
|
23
|
+
export function update<R, A>(f: (a: A) => A) {
|
|
24
|
+
return (self: ObservableRef<R, A, A>): URIO<R, void> => self.modify((a) => [undefined, f(a)]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @tsplus pipeable fncts.observable.ObservableRef getAndUpdate
|
|
29
|
+
*/
|
|
30
|
+
export function getAndUpdate<R, A>(f: (a: A) => A) {
|
|
31
|
+
return (self: ObservableRef<R, A, A>): URIO<R, A> => {
|
|
32
|
+
return self.modify((a) => {
|
|
33
|
+
const value = f(a);
|
|
34
|
+
return [a, value];
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @tsplus pipeable fncts.observable.ObservableRef updateAndGet
|
|
41
|
+
*/
|
|
42
|
+
export function updateAndGet<R, A>(f: (a: A) => A) {
|
|
43
|
+
return (self: ObservableRef<R, A, A>): URIO<R, A> => {
|
|
44
|
+
return self.modify((a) => {
|
|
45
|
+
const value = f(a);
|
|
46
|
+
return [value, value];
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @tsplus pipeable fncts.observable.ObservableRef modify
|
|
53
|
+
*/
|
|
54
|
+
export function modify<R, A, B>(f: (a: A) => readonly [B, A]) {
|
|
55
|
+
return (self: ObservableRef<R, A, A>): URIO<R, B> => {
|
|
56
|
+
return self.get.flatMap((value) => {
|
|
57
|
+
const [b, a] = f(value);
|
|
58
|
+
return self.set(a) > IO.succeedNow(b);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
class Map<R, A, B, C> extends ObservableRef<R, A, C> {
|
|
64
|
+
constructor(readonly source: ObservableRef<R, A, B>, readonly f: (b: B) => C) {
|
|
65
|
+
super(source.descriptor);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
get: URIO<R, C> = this.source.get.map(this.f);
|
|
69
|
+
|
|
70
|
+
set(a: A): URIO<R, void> {
|
|
71
|
+
return this.source.set(a);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
has: URIO<R, boolean> = this.source.has;
|
|
75
|
+
|
|
76
|
+
delete: URIO<R, boolean> = this.source.delete;
|
|
77
|
+
|
|
78
|
+
observable: Observable<R, never, C> = this.source.observable.map(this.f);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @tsplus pipeable fncts.observable.ObservableRef map
|
|
83
|
+
*/
|
|
84
|
+
export function map<R, A, B, C>(f: (a: B) => C) {
|
|
85
|
+
return (self: ObservableRef<R, A, B>): ObservableRef<R, A, C> => {
|
|
86
|
+
return new Map(self, f);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
class ContramapIn<R, A, B, C> extends ObservableRef<R, C, B> {
|
|
91
|
+
constructor(readonly source: ObservableRef<R, A, B>, readonly f: (c: C) => A) {
|
|
92
|
+
super(source.descriptor);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
get: URIO<R, B> = this.source.get;
|
|
96
|
+
|
|
97
|
+
set(c: C): URIO<R, void> {
|
|
98
|
+
return this.source.set(this.f(c));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
has: URIO<R, boolean> = this.source.has;
|
|
102
|
+
|
|
103
|
+
delete: URIO<R, boolean> = this.source.delete;
|
|
104
|
+
|
|
105
|
+
observable: Observable<R, never, B> = this.source.observable;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @tsplus pipeable fncts.observable.ObservableRef contramapIn
|
|
110
|
+
*/
|
|
111
|
+
export function contramapIn<R, A, B, C>(f: (inp: C) => A) {
|
|
112
|
+
return (self: ObservableRef<R, A, B>): ObservableRef<R, C, B> => {
|
|
113
|
+
return new ContramapIn(self, f);
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
class Focus<R, A, B> extends ObservableRef<R, B, B> {
|
|
118
|
+
constructor(readonly source: ObservableRef<R, A, A>, readonly lens: Lens<A, B>) {
|
|
119
|
+
super(source.descriptor);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
get: URIO<R, B> = this.source.get.map(this.lens.get);
|
|
123
|
+
|
|
124
|
+
set(b: B): URIO<R, void> {
|
|
125
|
+
return this.source.get.flatMap((a) => this.source.set(this.lens.set(b)(a)));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
has: URIO<R, boolean> = this.source.has;
|
|
129
|
+
|
|
130
|
+
delete: URIO<R, boolean> = this.source.delete;
|
|
131
|
+
|
|
132
|
+
observable: Observable<R, never, B> = this.source.observable.map(this.lens.get);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @tsplus pipeable fncts.observable.ObservableRef focus
|
|
137
|
+
*/
|
|
138
|
+
export function focus<R, A, B>(lens: Lens<A, B>) {
|
|
139
|
+
return (self: ObservableRef<R, A, A>): ObservableRef<R, B, B> => {
|
|
140
|
+
return new Focus(self, lens);
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export class ZipWith<R, A, R1, B, C> implements ObservableRef.Readable<R | R1, C> {
|
|
145
|
+
declare _R: (_: never) => R | R1;
|
|
146
|
+
declare _Out: (_: never) => C;
|
|
147
|
+
constructor(
|
|
148
|
+
readonly sourceA: ObservableRef.Readable<R, A>,
|
|
149
|
+
readonly sourceB: ObservableRef.Readable<R1, B>,
|
|
150
|
+
readonly f: (a: A, b: B) => C,
|
|
151
|
+
) {}
|
|
152
|
+
|
|
153
|
+
get: URIO<R | R1, C> = this.sourceA.get.zipWith(this.sourceB.get, this.f);
|
|
154
|
+
|
|
155
|
+
has: URIO<R | R1, boolean> = this.sourceA.has.zipWith(this.sourceB.has, (a, b) => a && b);
|
|
156
|
+
|
|
157
|
+
delete: URIO<R | R1, void> = this.sourceA.delete > this.sourceB.delete;
|
|
158
|
+
|
|
159
|
+
observable: Observable<R | R1, never, C> = this.sourceA.observable.zipWithLatest(this.sourceB.observable, this.f);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @tsplus pipeable fncts.observable.ObservableRef.Readable zipWith
|
|
164
|
+
*/
|
|
165
|
+
export function zipWith<R, A, R1, B, C>(that: ObservableRef.Readable<R1, B>, f: (a: A, b: B) => C) {
|
|
166
|
+
return (self: ObservableRef.Readable<R, A>): ObservableRef.Readable<R | R1, C> => {
|
|
167
|
+
return new ZipWith(self, that, f);
|
|
168
|
+
};
|
|
169
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ObservableRefDescriptor } from "@fncts/observable/ObservableRef/definition";
|
|
2
|
+
|
|
3
|
+
import { BehaviorSubject } from "@fncts/observable/BehaviorSubject";
|
|
4
|
+
|
|
5
|
+
export class Atomic<A> extends ObservableRef<Store, A, A> {
|
|
6
|
+
get: URIO<Store, A> = IO.serviceWithIO((reactor) => reactor.get(this.descriptor), Store.Tag);
|
|
7
|
+
|
|
8
|
+
set(a: A): URIO<Store, void> {
|
|
9
|
+
return IO.serviceWithIO((reactor) => reactor.set(this.descriptor, a), Store.Tag);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
has: URIO<Store, boolean> = IO.serviceWithIO((reactor) => reactor.has(this.descriptor), Store.Tag);
|
|
13
|
+
|
|
14
|
+
delete: URIO<Store, boolean> = IO.serviceWithIO((reactor) => reactor.delete(this.descriptor), Store.Tag);
|
|
15
|
+
|
|
16
|
+
observable: Observable<Store, never, A> = Observable.serviceWithObservable(
|
|
17
|
+
(reactor) =>
|
|
18
|
+
new Observable((subscriber) => {
|
|
19
|
+
return reactor.unsafeSubscribe(this.descriptor, subscriber);
|
|
20
|
+
}),
|
|
21
|
+
Store.Tag,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @tsplus type fncts.observable.Store
|
|
27
|
+
* @tsplus companion fncts.observable.StoreOps
|
|
28
|
+
*/
|
|
29
|
+
export class Store {
|
|
30
|
+
subjectMap = new Map<symbol, BehaviorSubject<any>>();
|
|
31
|
+
get<A>(ref: ObservableRefDescriptor<A>): UIO<A> {
|
|
32
|
+
return IO(() => {
|
|
33
|
+
if (this.subjectMap.has(ref.id)) {
|
|
34
|
+
return this.subjectMap.get(ref.id)!.value;
|
|
35
|
+
} else {
|
|
36
|
+
this.subjectMap.set(ref.id, new BehaviorSubject(ref.initial));
|
|
37
|
+
return ref.initial;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
set<A>(ref: ObservableRefDescriptor<A>, value: A): UIO<A> {
|
|
43
|
+
return IO(() => {
|
|
44
|
+
if (this.subjectMap.has(ref.id)) {
|
|
45
|
+
this.subjectMap.get(ref.id)!.next(value);
|
|
46
|
+
} else {
|
|
47
|
+
this.subjectMap.set(ref.id, new BehaviorSubject(value));
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
has<A>(ref: ObservableRefDescriptor<A>): UIO<boolean> {
|
|
54
|
+
return IO(() => this.subjectMap.has(ref.id));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
delete<A>(ref: ObservableRefDescriptor<A>): UIO<boolean> {
|
|
58
|
+
return IO(() => {
|
|
59
|
+
if (this.subjectMap.has(ref.id)) {
|
|
60
|
+
this.subjectMap.delete(ref.id);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
unsafeSubscribe<A>(ref: ObservableRefDescriptor<A>, subscriber: Subscriber<never, A>): Subscription {
|
|
68
|
+
if (this.subjectMap.has(ref.id)) {
|
|
69
|
+
const subject = this.subjectMap.get(ref.id)!;
|
|
70
|
+
const subscription = subject.subscribe(subscriber);
|
|
71
|
+
return subscription;
|
|
72
|
+
} else {
|
|
73
|
+
const subject = new BehaviorSubject<A>(ref.initial);
|
|
74
|
+
const subscription = subject.subscribe(subscriber);
|
|
75
|
+
this.subjectMap.set(ref.id, subject);
|
|
76
|
+
return subscription;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @tsplus static fncts.observable.StoreOps Tag
|
|
83
|
+
* @tsplus implicit
|
|
84
|
+
*/
|
|
85
|
+
export const StoreTag = Tag<Store>("fncts.observable.ObservableRef.StoreTag");
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { URIO } from "@fncts/io/IO";
|
|
2
|
+
import type { Observable } from "@fncts/observable/Observable";
|
|
3
|
+
|
|
4
|
+
type Readable_<R, A> = Readable<R, A>;
|
|
5
|
+
type Writable_<R, A> = Writable<R, A>;
|
|
6
|
+
|
|
7
|
+
export declare namespace ObservableRef {
|
|
8
|
+
type Readable<R, A> = Readable_<R, A>;
|
|
9
|
+
type Writable<R, A> = Writable_<R, A>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class ObservableRefDescriptor<A> {
|
|
13
|
+
constructor(readonly id: symbol, readonly initial: A) {}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface CommonObservableRef<out R> {
|
|
17
|
+
readonly _R: (_: never) => R;
|
|
18
|
+
readonly has: URIO<R, boolean>;
|
|
19
|
+
readonly delete: URIO<R, void>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @tsplus type fncts.observable.ObservableRef.Readable
|
|
24
|
+
*/
|
|
25
|
+
export interface Readable<out R, out A> extends CommonObservableRef<R> {
|
|
26
|
+
readonly _R: (_: never) => R;
|
|
27
|
+
readonly _Out: (_: never) => A;
|
|
28
|
+
readonly get: URIO<R, A>;
|
|
29
|
+
readonly observable: Observable<R, never, A>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @tsplus type fncts.observable.ObservableRef.Writable
|
|
34
|
+
*/
|
|
35
|
+
export interface Writable<out R, in A> extends CommonObservableRef<R> {
|
|
36
|
+
readonly _R: (_: never) => R;
|
|
37
|
+
readonly _In: (_: A) => void;
|
|
38
|
+
set(a: A): URIO<R, void>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @tsplus type fncts.observable.ObservableRef
|
|
43
|
+
* @tsplus companion fncts.observable.ObservableRefOps
|
|
44
|
+
*/
|
|
45
|
+
export abstract class ObservableRef<out R, in A, out B> implements Readable<R, B>, Writable<R, A> {
|
|
46
|
+
declare _R: (_: never) => R;
|
|
47
|
+
declare _In: (_: A) => void;
|
|
48
|
+
declare _Out: (_: never) => B;
|
|
49
|
+
|
|
50
|
+
constructor(readonly descriptor: ObservableRefDescriptor<any>) {}
|
|
51
|
+
|
|
52
|
+
abstract readonly get: URIO<R, B>;
|
|
53
|
+
abstract set(a: A): URIO<R, void>;
|
|
54
|
+
abstract readonly delete: URIO<R, boolean>;
|
|
55
|
+
abstract readonly has: URIO<R, boolean>;
|
|
56
|
+
abstract readonly observable: Observable<R, never, B>;
|
|
57
|
+
}
|
package/_src/Operator.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export interface Operator<E, A> {
|
|
2
2
|
call(subscriber: Subscriber<E, A>, source: any, environment: Environment<any>): Finalizer;
|
|
3
3
|
}
|
|
4
|
-
|
|
5
4
|
export class OperatorSubscriber<E, A> extends Subscriber<E, A> {
|
|
6
5
|
constructor(destination: Subscriber<any, any>, observer: Partial<Observer<E, A>>, private onFinalize?: () => void) {
|
|
7
6
|
super(destination);
|
|
@@ -40,14 +39,12 @@ export class OperatorSubscriber<E, A> extends Subscriber<E, A> {
|
|
|
40
39
|
}
|
|
41
40
|
: super.complete;
|
|
42
41
|
}
|
|
43
|
-
|
|
44
42
|
unsubscribe() {
|
|
45
43
|
const { closed } = this;
|
|
46
44
|
super.unsubscribe();
|
|
47
45
|
!closed && this.onFinalize?.();
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
|
-
|
|
51
48
|
export function operatorSubscriber<E, A, E1, A1>(
|
|
52
49
|
destination: Subscriber<E1, A1>,
|
|
53
50
|
observer: Partial<Observer<E, A>>,
|
|
@@ -55,19 +52,27 @@ export function operatorSubscriber<E, A, E1, A1>(
|
|
|
55
52
|
): OperatorSubscriber<E, A> {
|
|
56
53
|
return new OperatorSubscriber(destination, observer, onFinalize);
|
|
57
54
|
}
|
|
58
|
-
|
|
59
55
|
/**
|
|
60
|
-
* @tsplus
|
|
56
|
+
* @tsplus pipeable fncts.observable.Observable operate
|
|
61
57
|
*/
|
|
62
58
|
export function operate_<R, E, A, R1, E1, A1>(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
59
|
+
f: (
|
|
60
|
+
source: Observable<R, E, A>,
|
|
61
|
+
subscriber: Subscriber<E1, A1>,
|
|
62
|
+
environment: Environment<R | R1>,
|
|
63
|
+
) => (() => void) | void,
|
|
64
|
+
) {
|
|
65
|
+
return (source: Observable<R, E, A>): Observable<R1, E1, A1> => {
|
|
66
|
+
return source.lift(function (
|
|
67
|
+
this: Subscriber<E1, A1>,
|
|
68
|
+
liftedSource: Observable<R, E, A>,
|
|
69
|
+
environment: Environment<R | R1>,
|
|
70
|
+
) {
|
|
71
|
+
try {
|
|
72
|
+
f(liftedSource, this, environment);
|
|
73
|
+
} catch (err) {
|
|
74
|
+
this.error(Cause.halt(err));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
73
78
|
}
|
package/_src/Scheduler.ts
CHANGED
|
@@ -8,12 +8,6 @@ export interface SchedulerAction<T> extends Subscription {
|
|
|
8
8
|
schedule(state?: T, delay?: number): Subscription;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
/*
|
|
12
|
-
* -------------------------------------------------------------------------------------------------
|
|
13
|
-
* Scheduler
|
|
14
|
-
* -------------------------------------------------------------------------------------------------
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
11
|
export const SchedulerTypeId = Symbol.for("fncts.observable.Scheduler");
|
|
18
12
|
export type SchedulerTypeId = typeof SchedulerTypeId;
|
|
19
13
|
|
package/_src/Subject.ts
CHANGED
|
@@ -118,7 +118,7 @@ export class AnonymousSubject<R, E, A> extends Subject<R, E, A> {
|
|
|
118
118
|
|
|
119
119
|
/** @internal */
|
|
120
120
|
protected subscribeInternal<E, A>(subscriber: Subscriber<E, A>) {
|
|
121
|
-
return this.source?.subscribe(subscriber) ?? Subscription.empty;
|
|
121
|
+
return this.source?.provideEnvironment(this.environment).subscribe(subscriber) ?? Subscription.empty;
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
|
package/_src/Subscriber.ts
CHANGED
|
@@ -63,7 +63,6 @@ export class Subscriber<E, A> extends Subscription implements Observer<E, A> {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
|
|
67
66
|
export class SafeSubscriber<E, A> extends Subscriber<E, A> {
|
|
68
67
|
constructor(observer?: Partial<Observer<E, A>> | ((value: A) => void)) {
|
|
69
68
|
super();
|
|
@@ -118,7 +117,9 @@ function defaultErrorHandler(error: any) {
|
|
|
118
117
|
throw error;
|
|
119
118
|
}
|
|
120
119
|
|
|
121
|
-
export const EMPTY_OBSERVER: Readonly<Observer<any, any>> & {
|
|
120
|
+
export const EMPTY_OBSERVER: Readonly<Observer<any, any>> & {
|
|
121
|
+
closed: true;
|
|
122
|
+
} = {
|
|
122
123
|
closed: true,
|
|
123
124
|
next: noop,
|
|
124
125
|
error: defaultErrorHandler,
|
package/_src/global.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { isDate, isFunction, isIterable, isObject, isPlain } from "@fncts/base/u
|
|
|
18
18
|
/**
|
|
19
19
|
* @tsplus global
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
21
|
+
import { FiberRuntime } from "@fncts/io/Fiber";
|
|
22
22
|
/**
|
|
23
23
|
* @tsplus global
|
|
24
24
|
*/
|
|
@@ -76,6 +76,10 @@ import { Notification } from "@fncts/observable/Notification";
|
|
|
76
76
|
* @tsplus global
|
|
77
77
|
*/
|
|
78
78
|
import { Observable, ObservableInput, Subscribable } from "@fncts/observable/Observable";
|
|
79
|
+
/**
|
|
80
|
+
* @tsplus global
|
|
81
|
+
*/
|
|
82
|
+
import { ObservableRef } from "@fncts/observable/ObservableRef/definition";
|
|
79
83
|
/**
|
|
80
84
|
* @tsplus global
|
|
81
85
|
*/
|