evg_observable 1.1.33 → 1.2.34
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/README.md
CHANGED
|
@@ -25,9 +25,14 @@ EVG Observable - is a small library for serving asynchronous events.
|
|
|
25
25
|
import {Observable} from "evg_observable/src/outLib/Observable";
|
|
26
26
|
|
|
27
27
|
const observable$ = new Observable('Some typed data (not only string)');
|
|
28
|
+
|
|
28
29
|
const listener1 = (value: string) => console.log('listener1:', value);
|
|
30
|
+
const errorHandler1 = (errorData: any, errorMessage: any) => {
|
|
31
|
+
console.log(`listener1 catch ERROR: data ${errorData}`, errorMessage);
|
|
32
|
+
};
|
|
33
|
+
const subscriber1 = observable$.subscribe(listener1, errorHandler1);
|
|
34
|
+
|
|
29
35
|
const listener2 = (value: string) => console.log('listener2:', value);
|
|
30
|
-
const subscriber1 = observable$.subscribe(listener1);
|
|
31
36
|
const subscriber2 = observable$.subscribe(listener2);
|
|
32
37
|
|
|
33
38
|
console.log(observable$.getValue());
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ICallback, IListener, IMarkedForUnsubscribe, IObserver, ISetup, ISubscribe, ISubscribeObject, ISubscriptionLike } from "./Types";
|
|
1
|
+
import { ICallback, IErrorCallback, IListener, IMarkedForUnsubscribe, IObserver, ISetup, ISubscribe, ISubscribeObject, ISubscriptionLike } from "./Types";
|
|
2
2
|
export declare class SubscribeObject<T> implements ISubscribeObject<T>, IMarkedForUnsubscribe {
|
|
3
3
|
isMarkedForUnsubscribe: boolean;
|
|
4
4
|
protected observable: IObserver<T> | undefined;
|
|
5
5
|
protected listener: IListener<T> | undefined;
|
|
6
|
+
protected errorHandler: IErrorCallback;
|
|
6
7
|
protected _order: number;
|
|
7
8
|
private isListenPaused;
|
|
8
9
|
private once;
|
|
@@ -12,9 +13,9 @@ export declare class SubscribeObject<T> implements ISubscribeObject<T>, IMarkedF
|
|
|
12
13
|
private emitByPositiveCondition;
|
|
13
14
|
private emitMatchCondition;
|
|
14
15
|
protected isPipe: boolean;
|
|
15
|
-
constructor(observable?: IObserver<T>,
|
|
16
|
+
constructor(observable?: IObserver<T>, isPipe?: boolean);
|
|
16
17
|
private static callbackSend;
|
|
17
|
-
subscribe(listener: IListener<T
|
|
18
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike<T>;
|
|
18
19
|
unsubscribe(): void;
|
|
19
20
|
send(value: T): void;
|
|
20
21
|
setOnce(): ISubscribe<T>;
|
|
@@ -46,7 +47,7 @@ export declare class Observable<T> implements IObserver<T> {
|
|
|
46
47
|
unsubscribeAll(): void;
|
|
47
48
|
getValue(): T | undefined;
|
|
48
49
|
size(): number;
|
|
49
|
-
subscribe(listener: IListener<T
|
|
50
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike<T> | undefined;
|
|
50
51
|
pipe(): ISetup<T> | undefined;
|
|
51
52
|
get isDestroyed(): boolean;
|
|
52
53
|
}
|
package/src/outLib/Observable.js
CHANGED
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Observable = exports.SubscribeObject = void 0;
|
|
4
4
|
const FunctionLibs_1 = require("./FunctionLibs");
|
|
5
5
|
class SubscribeObject {
|
|
6
|
-
constructor(observable,
|
|
6
|
+
constructor(observable, isPipe) {
|
|
7
7
|
this.isMarkedForUnsubscribe = false;
|
|
8
|
+
this.errorHandler = (errorData, errorMessage) => {
|
|
9
|
+
console.log(`(Unit of SubscribeObject).send(${errorData}) ERROR:`, errorMessage);
|
|
10
|
+
};
|
|
8
11
|
this._order = 0;
|
|
9
12
|
this.isListenPaused = false;
|
|
10
13
|
this.once = { isOnce: false, isFinished: false };
|
|
@@ -15,16 +18,18 @@ class SubscribeObject {
|
|
|
15
18
|
this.emitMatchCondition = null;
|
|
16
19
|
this.isPipe = false;
|
|
17
20
|
this.observable = observable;
|
|
18
|
-
this.listener = listener;
|
|
19
21
|
this.isPipe = !!isPipe;
|
|
20
22
|
}
|
|
21
23
|
static callbackSend(value, subsObj) {
|
|
22
24
|
const listener = subsObj.listener;
|
|
23
|
-
if (!listener
|
|
25
|
+
if (!listener) {
|
|
24
26
|
subsObj.unsubscribe();
|
|
25
27
|
return;
|
|
26
28
|
}
|
|
27
29
|
switch (true) {
|
|
30
|
+
case !subsObj.observable:
|
|
31
|
+
subsObj.unsubscribe();
|
|
32
|
+
return;
|
|
28
33
|
case subsObj.isListenPaused:
|
|
29
34
|
return;
|
|
30
35
|
case !subsObj.isPipe:
|
|
@@ -62,8 +67,9 @@ class SubscribeObject {
|
|
|
62
67
|
break;
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
|
-
subscribe(listener) {
|
|
70
|
+
subscribe(listener, errorHandler) {
|
|
66
71
|
this.listener = listener;
|
|
72
|
+
errorHandler && (this.errorHandler = errorHandler);
|
|
67
73
|
return this;
|
|
68
74
|
}
|
|
69
75
|
unsubscribe() {
|
|
@@ -78,7 +84,7 @@ class SubscribeObject {
|
|
|
78
84
|
SubscribeObject.callbackSend(value, this);
|
|
79
85
|
}
|
|
80
86
|
catch (err) {
|
|
81
|
-
|
|
87
|
+
this.errorHandler(value, err);
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
90
|
setOnce() {
|
|
@@ -110,9 +116,9 @@ class SubscribeObject {
|
|
|
110
116
|
return this;
|
|
111
117
|
}
|
|
112
118
|
emitMatch(condition) {
|
|
113
|
-
if (typeof condition !== "function")
|
|
114
|
-
condition =
|
|
115
|
-
|
|
119
|
+
if (typeof condition !== "function") {
|
|
120
|
+
condition = () => `ERROR CONDITION TYPE ${typeof condition}, CONTROL STATE ${this.observable && !this.observable.getValue()}`;
|
|
121
|
+
}
|
|
116
122
|
this.emitMatchCondition = condition;
|
|
117
123
|
return this;
|
|
118
124
|
}
|
|
@@ -153,12 +159,11 @@ class Observable {
|
|
|
153
159
|
return;
|
|
154
160
|
if (!this._isEnable)
|
|
155
161
|
return;
|
|
156
|
-
this.value = value;
|
|
157
162
|
this.isNextProcess = true;
|
|
163
|
+
this.value = value;
|
|
158
164
|
const length = this.listeners.length;
|
|
159
165
|
for (let i = 0; i < length; i++) {
|
|
160
|
-
|
|
161
|
-
listener.send(value);
|
|
166
|
+
this.listeners[i].send(value);
|
|
162
167
|
}
|
|
163
168
|
this.isNextProcess = false;
|
|
164
169
|
this.listenersForUnsubscribe.length && this.handleListenersForUnsubscribe();
|
|
@@ -203,19 +208,20 @@ class Observable {
|
|
|
203
208
|
return 0;
|
|
204
209
|
return this.listeners.length;
|
|
205
210
|
}
|
|
206
|
-
subscribe(listener) {
|
|
211
|
+
subscribe(listener, errorHandler) {
|
|
207
212
|
if (this._isDestroyed)
|
|
208
213
|
return undefined;
|
|
209
214
|
if (!listener)
|
|
210
215
|
return undefined;
|
|
211
|
-
const subscribeObject = new SubscribeObject(this,
|
|
216
|
+
const subscribeObject = new SubscribeObject(this, false);
|
|
217
|
+
subscribeObject.subscribe(listener, errorHandler);
|
|
212
218
|
this.listeners.push(subscribeObject);
|
|
213
219
|
return subscribeObject;
|
|
214
220
|
}
|
|
215
221
|
pipe() {
|
|
216
222
|
if (this._isDestroyed)
|
|
217
223
|
return undefined;
|
|
218
|
-
const subscribeObject = new SubscribeObject(this,
|
|
224
|
+
const subscribeObject = new SubscribeObject(this, true);
|
|
219
225
|
this.listeners.push(subscribeObject);
|
|
220
226
|
return subscribeObject;
|
|
221
227
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Observable, SubscribeObject } from "./Observable";
|
|
2
|
-
import { ICallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscribe, IOrderedSubscriptionLike } from "./Types";
|
|
2
|
+
import { ICallback, IErrorCallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscribe, IOrderedSubscriptionLike } from "./Types";
|
|
3
3
|
export declare class OrderedSubscribeObject<T> extends SubscribeObject<T> {
|
|
4
|
-
constructor(observable: OrderedObservable<T> | IOrdered<T>,
|
|
4
|
+
constructor(observable: OrderedObservable<T> | IOrdered<T>, isPipe?: boolean);
|
|
5
5
|
get order(): number;
|
|
6
6
|
set order(value: number);
|
|
7
|
-
subscribe(listener: IListener<T
|
|
7
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike<T>;
|
|
8
8
|
setOnce(): IOrderedSubscribe<T>;
|
|
9
9
|
unsubscribeByNegative(condition: ICallback<any>): IOrderedSubscribe<T>;
|
|
10
10
|
unsubscribeByPositive(condition: ICallback<any>): IOrderedSubscribe<T>;
|
|
@@ -14,6 +14,6 @@ export declare class OrderedSubscribeObject<T> extends SubscribeObject<T> {
|
|
|
14
14
|
}
|
|
15
15
|
export declare class OrderedObservable<T> extends Observable<T> implements IOrdered<T> {
|
|
16
16
|
sortByOrder(): boolean;
|
|
17
|
-
subscribe(listener: IListener<T
|
|
17
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike<T> | undefined;
|
|
18
18
|
pipe(): IOrderedSetup<T> | undefined;
|
|
19
19
|
}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OrderedObservable = exports.OrderedSubscribeObject = void 0;
|
|
4
4
|
const Observable_1 = require("./Observable");
|
|
5
5
|
class OrderedSubscribeObject extends Observable_1.SubscribeObject {
|
|
6
|
-
constructor(observable,
|
|
7
|
-
super(observable,
|
|
6
|
+
constructor(observable, isPipe) {
|
|
7
|
+
super(observable, isPipe);
|
|
8
8
|
}
|
|
9
9
|
get order() {
|
|
10
10
|
return this._order;
|
|
@@ -18,8 +18,9 @@ class OrderedSubscribeObject extends Observable_1.SubscribeObject {
|
|
|
18
18
|
this._order = value;
|
|
19
19
|
this.observable.sortByOrder();
|
|
20
20
|
}
|
|
21
|
-
subscribe(listener) {
|
|
21
|
+
subscribe(listener, errorHandler) {
|
|
22
22
|
this.listener = listener;
|
|
23
|
+
errorHandler && (this.errorHandler = errorHandler);
|
|
23
24
|
return this;
|
|
24
25
|
}
|
|
25
26
|
setOnce() {
|
|
@@ -55,19 +56,20 @@ class OrderedObservable extends Observable_1.Observable {
|
|
|
55
56
|
});
|
|
56
57
|
return true;
|
|
57
58
|
}
|
|
58
|
-
subscribe(listener) {
|
|
59
|
+
subscribe(listener, errorHandler) {
|
|
59
60
|
if (this._isDestroyed)
|
|
60
61
|
return undefined;
|
|
61
62
|
if (!listener)
|
|
62
63
|
return undefined;
|
|
63
|
-
const subscribeObject = new OrderedSubscribeObject(this,
|
|
64
|
+
const subscribeObject = new OrderedSubscribeObject(this, false);
|
|
65
|
+
subscribeObject.subscribe(listener, errorHandler);
|
|
64
66
|
this.listeners.push(subscribeObject);
|
|
65
67
|
return subscribeObject;
|
|
66
68
|
}
|
|
67
69
|
pipe() {
|
|
68
70
|
if (this._isDestroyed)
|
|
69
71
|
return undefined;
|
|
70
|
-
const subscribeObject = new OrderedSubscribeObject(this,
|
|
72
|
+
const subscribeObject = new OrderedSubscribeObject(this, true);
|
|
71
73
|
this.listeners.push(subscribeObject);
|
|
72
74
|
return subscribeObject;
|
|
73
75
|
}
|
package/src/outLib/Types.d.ts
CHANGED
|
@@ -2,8 +2,9 @@ export type ICallback<T> = (value?: T) => any;
|
|
|
2
2
|
export type IMarkedForUnsubscribe = {
|
|
3
3
|
isMarkedForUnsubscribe: boolean;
|
|
4
4
|
};
|
|
5
|
+
export type IErrorCallback = (errorData: any, errorMessage: any) => void;
|
|
5
6
|
export type ISubscribe<T> = {
|
|
6
|
-
subscribe(listener: IListener<T
|
|
7
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike<T> | undefined;
|
|
7
8
|
};
|
|
8
9
|
export type IListener<T> = ICallback<T>;
|
|
9
10
|
export type IDestroy = {
|
|
@@ -96,7 +97,7 @@ export type IOrderedObservable = {
|
|
|
96
97
|
export type IOrdered<T> = IObserver<T> & IOrderedObservable;
|
|
97
98
|
export type IOrderedSubscriptionLike<T> = (ISubscriptionLike<T> & IOrder);
|
|
98
99
|
export type IOrderedSubscribe<T> = {
|
|
99
|
-
subscribe(listener: IListener<T
|
|
100
|
+
subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike<T>;
|
|
100
101
|
};
|
|
101
102
|
export type IGroup = ICollector & {
|
|
102
103
|
name: string;
|