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,6 +1,6 @@
1
1
  {
2
2
  "name": "evg_observable",
3
- "version": "1.1.33",
3
+ "version": "1.2.34",
4
4
  "description": "Light observable",
5
5
  "directories": {
6
6
  "test": "test"
@@ -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>, listener?: IListener<T>, isPipe?: boolean);
16
+ constructor(observable?: IObserver<T>, isPipe?: boolean);
16
17
  private static callbackSend;
17
- subscribe(listener: IListener<T>): ISubscriptionLike<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>): ISubscriptionLike<T> | undefined;
50
+ subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike<T> | undefined;
50
51
  pipe(): ISetup<T> | undefined;
51
52
  get isDestroyed(): boolean;
52
53
  }
@@ -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, listener, isPipe) {
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 || !subsObj.observable) {
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
- console.log('(Unit of SubscribeObject).send(value: T) ERROR:', err);
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
- () => `ERROR CONDITION TYPE ${typeof condition}, CONTROL STATE ${this.observable && !this.observable.getValue()}`;
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
- const listener = this.listeners[i];
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, listener, false);
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, undefined, true);
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>, listener?: IListener<T>, isPipe?: boolean);
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>): IOrderedSubscriptionLike<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>): IOrderedSubscriptionLike<T> | undefined;
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, listener, isPipe) {
7
- super(observable, listener, isPipe);
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, listener, false);
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, undefined, true);
72
+ const subscribeObject = new OrderedSubscribeObject(this, true);
71
73
  this.listeners.push(subscribeObject);
72
74
  return subscribeObject;
73
75
  }
@@ -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>): ISubscriptionLike<T> | undefined;
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>): IOrderedSubscriptionLike<T>;
100
+ subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike<T>;
100
101
  };
101
102
  export type IGroup = ICollector & {
102
103
  name: string;