evg_observable 1.1.30 → 1.1.32

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/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "evg_observable",
3
- "version": "1.1.30",
3
+ "version": "1.1.32",
4
4
  "description": "Light observable",
5
- "main": "index.js",
6
5
  "directories": {
7
6
  "test": "test"
8
7
  },
@@ -16,10 +16,9 @@ class Collector {
16
16
  }
17
17
  }
18
18
  unsubscribe(subscriptionLike) {
19
- if (this._isDestroyed)
20
- return null;
19
+ if (this._isDestroyed) return null;
21
20
  subscriptionLike && subscriptionLike.unsubscribe();
22
- (0, FunctionLibs_1.deleteFromArray)(this.list, subscriptionLike);
21
+ FunctionLibs_1.deleteFromArray(this.list, subscriptionLike);
23
22
  }
24
23
  unsubscribeAll() {
25
24
  if (this._isDestroyed)
@@ -11,7 +11,8 @@ export declare class SubscribeObject<T> implements ISubscribeObject<T>, IMarkedF
11
11
  private emitByNegativeCondition;
12
12
  private emitByPositiveCondition;
13
13
  private emitMatchCondition;
14
- constructor(observable?: IObserver<T>, listener?: IListener<T>);
14
+ protected isPipe: boolean;
15
+ constructor(observable?: IObserver<T>, listener?: IListener<T>, isPipe?: boolean);
15
16
  private static callbackSend;
16
17
  subscribe(listener: IListener<T>): ISubscriptionLike<T>;
17
18
  unsubscribe(): void;
@@ -3,7 +3,7 @@ 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) {
6
+ constructor(observable, listener, isPipe) {
7
7
  this.isMarkedForUnsubscribe = false;
8
8
  this._order = 0;
9
9
  this.isListenPaused = false;
@@ -13,21 +13,26 @@ class SubscribeObject {
13
13
  this.emitByNegativeCondition = null;
14
14
  this.emitByPositiveCondition = null;
15
15
  this.emitMatchCondition = null;
16
+ this.isPipe = false;
16
17
  this.observable = observable;
17
18
  this.listener = listener;
19
+ this.isPipe = !!isPipe;
18
20
  }
19
21
  static callbackSend(value, subsObj) {
20
22
  const listener = subsObj.listener;
23
+ if (!listener || !subsObj.observable) {
24
+ subsObj.unsubscribe();
25
+ return;
26
+ }
21
27
  switch (true) {
22
- case !subsObj.observable:
23
- case !listener:
24
- subsObj.unsubscribe();
25
- return;
26
28
  case subsObj.isListenPaused:
27
29
  return;
30
+ case !subsObj.isPipe:
31
+ listener(value);
32
+ return;
28
33
  case subsObj.once.isOnce:
29
34
  subsObj.once.isFinished = true;
30
- listener && listener((value));
35
+ listener(value);
31
36
  subsObj.unsubscribe();
32
37
  break;
33
38
  case !!subsObj.unsubscribeByNegativeCondition:
@@ -36,7 +41,7 @@ class SubscribeObject {
36
41
  subsObj.unsubscribe();
37
42
  return;
38
43
  }
39
- listener && listener((value));
44
+ listener(value);
40
45
  break;
41
46
  case !!subsObj.unsubscribeByPositiveCondition:
42
47
  if (subsObj.unsubscribeByPositiveCondition()) {
@@ -44,19 +49,17 @@ class SubscribeObject {
44
49
  subsObj.unsubscribe();
45
50
  return;
46
51
  }
47
- listener && listener((value));
52
+ listener(value);
48
53
  break;
49
54
  case !!subsObj.emitByNegativeCondition:
50
- !subsObj.emitByNegativeCondition() && listener && listener(value);
55
+ !subsObj.emitByNegativeCondition() && listener(value);
51
56
  break;
52
57
  case !!subsObj.emitByPositiveCondition:
53
- subsObj.emitByPositiveCondition() && listener && listener(value);
58
+ subsObj.emitByPositiveCondition() && listener(value);
54
59
  break;
55
60
  case !!subsObj.emitMatchCondition:
56
- (subsObj.emitMatchCondition() === value) && listener && listener(value);
61
+ (subsObj.emitMatchCondition() === value) && listener(value);
57
62
  break;
58
- default:
59
- listener && listener((value));
60
63
  }
61
64
  }
62
65
  subscribe(listener) {
@@ -152,13 +155,18 @@ class Observable {
152
155
  return;
153
156
  this.value = value;
154
157
  this.isNextProcess = true;
155
- for (const listener of this.listeners)
156
- listener && listener.send(value);
158
+ const length = this.listeners.length;
159
+ for (let i = 0; i < length; i++) {
160
+ const listener = this.listeners[i];
161
+ listener.send(value);
162
+ }
157
163
  this.isNextProcess = false;
158
- this.handleListenersForUnsubscribe();
164
+ this.listenersForUnsubscribe.length && this.handleListenersForUnsubscribe();
159
165
  }
160
166
  handleListenersForUnsubscribe() {
161
- for (const listener of this.listenersForUnsubscribe) {
167
+ const length = this.listenersForUnsubscribe.length;
168
+ for (let i = 0; i < length; i++) {
169
+ const listener = this.listenersForUnsubscribe[i];
162
170
  this.unSubscribe(listener);
163
171
  }
164
172
  this.listenersForUnsubscribe.length = 0;
@@ -172,8 +180,7 @@ class Observable {
172
180
  marker.isMarkedForUnsubscribe = true;
173
181
  return;
174
182
  }
175
- this.listeners &&
176
- !(0, FunctionLibs_1.deleteFromArray)(this.listeners, listener);
183
+ this.listeners && FunctionLibs_1.deleteFromArray(this.listeners, listener);
177
184
  }
178
185
  destroy() {
179
186
  this.value = 0;
@@ -206,14 +213,14 @@ class Observable {
206
213
  return undefined;
207
214
  if (!listener)
208
215
  return undefined;
209
- const subscribeObject = new SubscribeObject(this, listener);
216
+ const subscribeObject = new SubscribeObject(this, listener, false);
210
217
  this.listeners.push(subscribeObject);
211
218
  return subscribeObject;
212
219
  }
213
220
  pipe() {
214
221
  if (this._isDestroyed)
215
222
  return undefined;
216
- const subscribeObject = new SubscribeObject(this);
223
+ const subscribeObject = new SubscribeObject(this, undefined, true);
217
224
  this.listeners.push(subscribeObject);
218
225
  return subscribeObject;
219
226
  }
@@ -1,7 +1,7 @@
1
1
  import { Observable, SubscribeObject } from "./Observable";
2
2
  import { ICallback, 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>);
4
+ constructor(observable: OrderedObservable<T> | IOrdered<T>, listener?: IListener<T>, isPipe?: boolean);
5
5
  get order(): number;
6
6
  set order(value: number);
7
7
  subscribe(listener: IListener<T>): IOrderedSubscriptionLike<T>;
@@ -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) {
7
- super(observable, listener);
6
+ constructor(observable, listener, isPipe) {
7
+ super(observable, listener, isPipe);
8
8
  }
9
9
  get order() {
10
10
  return this._order;
@@ -59,14 +59,14 @@ class OrderedObservable extends Observable_1.Observable {
59
59
  return undefined;
60
60
  if (!listener)
61
61
  return undefined;
62
- const subscribeObject = new OrderedSubscribeObject(this, listener);
62
+ const subscribeObject = new OrderedSubscribeObject(this, listener, false);
63
63
  this.listeners.push(subscribeObject);
64
64
  return subscribeObject;
65
65
  }
66
66
  pipe() {
67
67
  if (this._isDestroyed)
68
68
  return undefined;
69
- const subscribeObject = new OrderedSubscribeObject(this);
69
+ const subscribeObject = new OrderedSubscribeObject(this, undefined, true);
70
70
  this.listeners.push(subscribeObject);
71
71
  return subscribeObject;
72
72
  }
File without changes