evg_observable 1.1.31 → 1.1.33

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,6 +1,6 @@
1
1
  {
2
2
  "name": "evg_observable",
3
- "version": "1.1.31",
3
+ "version": "1.1.33",
4
4
  "description": "Light observable",
5
5
  "directories": {
6
6
  "test": "test"
@@ -19,7 +19,7 @@ class Collector {
19
19
  if (this._isDestroyed)
20
20
  return null;
21
21
  subscriptionLike && subscriptionLike.unsubscribe();
22
- (0, FunctionLibs_1.deleteFromArray)(this.list, subscriptionLike);
22
+ FunctionLibs_1.deleteFromArray(this.list, subscriptionLike);
23
23
  }
24
24
  unsubscribeAll() {
25
25
  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,22 +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);
28
32
  return;
29
33
  case subsObj.once.isOnce:
30
34
  subsObj.once.isFinished = true;
31
- listener && listener((value));
35
+ listener(value);
32
36
  subsObj.unsubscribe();
33
37
  break;
34
38
  case !!subsObj.unsubscribeByNegativeCondition:
@@ -37,7 +41,7 @@ class SubscribeObject {
37
41
  subsObj.unsubscribe();
38
42
  return;
39
43
  }
40
- listener && listener((value));
44
+ listener(value);
41
45
  break;
42
46
  case !!subsObj.unsubscribeByPositiveCondition:
43
47
  if (subsObj.unsubscribeByPositiveCondition()) {
@@ -45,19 +49,17 @@ class SubscribeObject {
45
49
  subsObj.unsubscribe();
46
50
  return;
47
51
  }
48
- listener && listener((value));
52
+ listener(value);
49
53
  break;
50
54
  case !!subsObj.emitByNegativeCondition:
51
- !subsObj.emitByNegativeCondition() && listener && listener(value);
55
+ !subsObj.emitByNegativeCondition() && listener(value);
52
56
  break;
53
57
  case !!subsObj.emitByPositiveCondition:
54
- subsObj.emitByPositiveCondition() && listener && listener(value);
58
+ subsObj.emitByPositiveCondition() && listener(value);
55
59
  break;
56
60
  case !!subsObj.emitMatchCondition:
57
- (subsObj.emitMatchCondition() === value) && listener && listener(value);
61
+ (subsObj.emitMatchCondition() === value) && listener(value);
58
62
  break;
59
- default:
60
- listener && listener((value));
61
63
  }
62
64
  }
63
65
  subscribe(listener) {
@@ -156,7 +158,7 @@ class Observable {
156
158
  const length = this.listeners.length;
157
159
  for (let i = 0; i < length; i++) {
158
160
  const listener = this.listeners[i];
159
- listener && listener.send(value);
161
+ listener.send(value);
160
162
  }
161
163
  this.isNextProcess = false;
162
164
  this.listenersForUnsubscribe.length && this.handleListenersForUnsubscribe();
@@ -172,14 +174,13 @@ class Observable {
172
174
  unSubscribe(listener) {
173
175
  if (this._isDestroyed)
174
176
  return;
175
- if (this.isNextProcess) {
177
+ if (this.isNextProcess && listener) {
176
178
  const marker = listener;
177
179
  !marker.isMarkedForUnsubscribe && this.listenersForUnsubscribe.push(listener);
178
180
  marker.isMarkedForUnsubscribe = true;
179
181
  return;
180
182
  }
181
- this.listeners &&
182
- !(0, FunctionLibs_1.deleteFromArray)(this.listeners, listener);
183
+ this.listeners && FunctionLibs_1.deleteFromArray(this.listeners, listener);
183
184
  }
184
185
  destroy() {
185
186
  this.value = 0;
@@ -190,12 +191,7 @@ class Observable {
190
191
  unsubscribeAll() {
191
192
  if (this._isDestroyed)
192
193
  return;
193
- const listeners = this.listeners;
194
- const length = listeners.length;
195
- for (let i = 0; i < length; i++) {
196
- const subscriber = listeners.pop();
197
- subscriber && subscriber.unsubscribe();
198
- }
194
+ this.listeners.length = 0;
199
195
  }
200
196
  getValue() {
201
197
  if (this._isDestroyed)
@@ -212,14 +208,14 @@ class Observable {
212
208
  return undefined;
213
209
  if (!listener)
214
210
  return undefined;
215
- const subscribeObject = new SubscribeObject(this, listener);
211
+ const subscribeObject = new SubscribeObject(this, listener, false);
216
212
  this.listeners.push(subscribeObject);
217
213
  return subscribeObject;
218
214
  }
219
215
  pipe() {
220
216
  if (this._isDestroyed)
221
217
  return undefined;
222
- const subscribeObject = new SubscribeObject(this);
218
+ const subscribeObject = new SubscribeObject(this, undefined, true);
223
219
  this.listeners.push(subscribeObject);
224
220
  return subscribeObject;
225
221
  }
@@ -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>;
@@ -13,7 +13,7 @@ export declare class OrderedSubscribeObject<T> extends SubscribeObject<T> {
13
13
  emitMatch(condition: ICallback<any>): IOrderedSubscribe<T>;
14
14
  }
15
15
  export declare class OrderedObservable<T> extends Observable<T> implements IOrdered<T> {
16
- sortByOrder(): void;
16
+ sortByOrder(): boolean;
17
17
  subscribe(listener: IListener<T>): 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) {
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;
@@ -45,7 +45,7 @@ exports.OrderedSubscribeObject = OrderedSubscribeObject;
45
45
  class OrderedObservable extends Observable_1.Observable {
46
46
  sortByOrder() {
47
47
  if (this._isDestroyed)
48
- return undefined;
48
+ return false;
49
49
  this.listeners.sort((a, b) => {
50
50
  if (a.order > b.order)
51
51
  return 1;
@@ -53,20 +53,21 @@ class OrderedObservable extends Observable_1.Observable {
53
53
  return -1;
54
54
  return 0;
55
55
  });
56
+ return true;
56
57
  }
57
58
  subscribe(listener) {
58
59
  if (this._isDestroyed)
59
60
  return undefined;
60
61
  if (!listener)
61
62
  return undefined;
62
- const subscribeObject = new OrderedSubscribeObject(this, listener);
63
+ const subscribeObject = new OrderedSubscribeObject(this, listener, false);
63
64
  this.listeners.push(subscribeObject);
64
65
  return subscribeObject;
65
66
  }
66
67
  pipe() {
67
68
  if (this._isDestroyed)
68
69
  return undefined;
69
- const subscribeObject = new OrderedSubscribeObject(this);
70
+ const subscribeObject = new OrderedSubscribeObject(this, undefined, true);
70
71
  this.listeners.push(subscribeObject);
71
72
  return subscribeObject;
72
73
  }
@@ -91,7 +91,7 @@ export type ICollector = IDestroy & ISubscribeCounter & {
91
91
  unsubscribeAll(): void;
92
92
  };
93
93
  export type IOrderedObservable = {
94
- sortByOrder(): void;
94
+ sortByOrder(): boolean;
95
95
  };
96
96
  export type IOrdered<T> = IObserver<T> & IOrderedObservable;
97
97
  export type IOrderedSubscriptionLike<T> = (ISubscriptionLike<T> & IOrder);