evg_observable 1.5.44 → 1.6.44

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
@@ -294,6 +294,8 @@ observable$.next('SOME DATA');
294
294
  // Print to console - listener2: SOME DATA
295
295
  // Print to console - listener1: SOME DATA
296
296
 
297
+ // Also we can use observable$.setDescendingSort() or observable$.setAscendingSort()
298
+
297
299
  //Thus, we can control the order in which the data is received by the listeners.
298
300
  ```
299
301
 
@@ -388,12 +390,18 @@ Has the same methods as Observable.
388
390
 
389
391
  ### Ordered observable subscriber
390
392
 
391
- Has the same methods as subscriber. But there is an "order" field.
393
+ Has the same methods as subscriber. But there is an "order" field and two new methods.
392
394
 
393
395
  | field | type | description |
394
396
  | :--- | :--- | :--- |
395
397
  | `.order` | number | Determines the order in which the subscriber is called, the subscriber with the lowest ordinal number is called first, the subscriber with the highest ordinal number is called last. |
396
398
 
399
+
400
+ | method | will return | description |
401
+ | :--- | :--- |:-----------------------------|
402
+ | `.setAscendingSort()` | boolean | set order by ascending sort |
403
+ | `.setDescendingSort()` | boolean | set order by descending sort |
404
+
397
405
  ### Collector
398
406
 
399
407
  | method | will return | description |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evg_observable",
3
- "version": "1.5.44",
3
+ "version": "1.6.44",
4
4
  "description": "Alternative fast and light library version - observable.",
5
5
  "directories": {
6
6
  "test": "test"
@@ -1 +1 @@
1
- (()=>{"use strict";function s(s,e){const i=s.indexOf(e);return-1!==i&&(s[i]=s[s.length-1],s.length=s.length-1,!0)}const e=()=>!1,i=()=>!0,t=()=>"772716b8-e6e2-47ac-95e9-e8d99ce35124";class r{constructor(s,e){this.isMarkedForUnsubscribe=!1,this.errorHandler=(s,e)=>{console.log(`(Unit of SubscribeObject).send(${s}) ERROR:`,e)},this._order=0,this.isListenPaused=!1,this.once={isOnce:!1,isFinished:!1},this.unsubscribeByNegativeCondition=null,this.unsubscribeByPositiveCondition=null,this.emitByNegativeCondition=null,this.emitByPositiveCondition=null,this.emitMatchCondition=null,this.isPipe=!1,this.observable=s,this.isPipe=!!e}static callbackSend(s,e){const i=e.listener;return i&&e.observable?e.isListenPaused?void 0:e.isPipe?e.emitByPositiveCondition&&e.emitByPositiveCondition(s)||e.emitByNegativeCondition&&!e.emitByNegativeCondition(s)?i(s):e.once.isOnce?(e.once.isFinished=!0,i(s),e.unsubscribe()):e.unsubscribeByNegativeCondition?e.unsubscribeByNegativeCondition(s)?i(s):(e.unsubscribeByNegativeCondition=null,e.unsubscribe()):e.unsubscribeByPositiveCondition?e.unsubscribeByPositiveCondition(s)?(e.unsubscribeByPositiveCondition=null,e.unsubscribe()):i(s):e.emitMatchCondition&&e.emitMatchCondition(s)===s?i(s):void 0:i(s):e.unsubscribe()}subscribe(s,e){return this.listener=s,e&&(this.errorHandler=e),this}unsubscribe(){this.observable&&(this.observable.unSubscribe(this),this.observable=null,this.listener=null)}send(s){try{r.callbackSend(s,this)}catch(e){this.errorHandler(s,e)}}setOnce(){return this.once.isOnce=!0,this}unsubscribeByNegative(s){return this.unsubscribeByNegativeCondition=s??e,this}unsubscribeByPositive(s){return this.unsubscribeByPositiveCondition=s??i,this}emitByNegative(s){return this.emitByNegativeCondition=s??i,this}emitByPositive(s){return this.emitByPositiveCondition=s??e,this}emitMatch(s){return this.emitMatchCondition=s??t,this}resume(){this.isListenPaused=!1}pause(){this.isListenPaused=!0}get order(){return this._order}set order(s){this._order=s}}class n{constructor(s){this.value=s,this.listeners=[],this._isEnable=!0,this._isDestroyed=!1,this.isNextProcess=!1,this.listenersForUnsubscribe=[]}disable(){this._isEnable=!1}enable(){this._isEnable=!0}get isEnable(){return this._isEnable}next(s){if(!this._isDestroyed&&this._isEnable){this.isNextProcess=!0,this.value=s;for(let e=0;e<this.listeners.length;e++)this.listeners[e].send(s);this.isNextProcess=!1,this.listenersForUnsubscribe.length&&this.handleListenersForUnsubscribe()}}stream(s){if(!this._isDestroyed&&this._isEnable)for(let e=0;e<s.length;e++)this.next(s[e])}handleListenersForUnsubscribe(){const s=this.listenersForUnsubscribe.length;for(let e=0;e<s;e++)this.unSubscribe(this.listenersForUnsubscribe[e]);this.listenersForUnsubscribe.length=0}unSubscribe(e){if(!this._isDestroyed){if(this.isNextProcess&&e){const s=e;return!s.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(e),void(s.isMarkedForUnsubscribe=!0)}this.listeners&&s(this.listeners,e)}}destroy(){this.value=null,this.unsubscribeAll(),this.listeners=null,this._isDestroyed=!0}unsubscribeAll(){this._isDestroyed||(this.listeners.length=0)}getValue(){if(!this._isDestroyed)return this.value}size(){return this._isDestroyed?0:this.listeners.length}subscribe(s,e){if(this._isDestroyed)return;if(!s)return;const i=new r(this,!1);return i.subscribe(s,e),this.listeners.push(i),i}pipe(){if(this._isDestroyed)return;const s=new r(this,!0);return this.listeners.push(s),s}get isDestroyed(){return this._isDestroyed}}class o extends r{constructor(s,e){super(s,e)}get order(){return this._order}set order(s){!this.observable||this.observable&&this.observable.isDestroyed?this._order=void 0:(this._order=s,this.observable.sortByOrder())}subscribe(s,e){return this.listener=s,e&&(this.errorHandler=e),this}setOnce(){return super.setOnce()}unsubscribeByNegative(s){return super.unsubscribeByNegative(s)}unsubscribeByPositive(s){return super.unsubscribeByPositive(s)}emitByNegative(s){return super.emitByNegative(s)}emitByPositive(s){return super.emitByPositive(s)}emitMatch(s){return super.emitMatch(s)}}const u=window;u.Observable=n,u.Collector=class{constructor(){this.list=[],this._isDestroyed=!1}collect(...s){this._isDestroyed||this.list.push(...s)}unsubscribe(e){this._isDestroyed||(e?.unsubscribe(),s(this.list,e))}unsubscribeAll(){if(!this._isDestroyed)for(;this.list.length>0;)this.unsubscribe(this.list.pop())}size(){return this._isDestroyed?0:this.list.length}destroy(){this.unsubscribeAll(),this.list.length=0,this.list=0,this._isDestroyed=!0}get isDestroyed(){return this._isDestroyed}},u.OrderedObservable=class extends n{sortByOrder(){return!this._isDestroyed&&(this.listeners.sort(((s,e)=>s.order>e.order?1:s.order<e.order?-1:0)),!0)}subscribe(s,e){if(this._isDestroyed)return;if(!s)return;const i=new o(this,!1);return i.subscribe(s,e),this.listeners.push(i),i}pipe(){if(this._isDestroyed)return;const s=new o(this,!0);return this.listeners.push(s),s}unSubscribe(s){if(!this._isDestroyed){if(this.isNextProcess&&s){const e=s;return!e.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(s),void(e.isMarkedForUnsubscribe=!0)}this.listeners&&function(s,e){const i=s.indexOf(e);-1!==i&&s.splice(i,1)}(this.listeners,s)}}}})();
1
+ (()=>{"use strict";function s(s,e){const i=s.indexOf(e);return-1!==i&&(s[i]=s[s.length-1],s.length=s.length-1,!0)}const e=()=>!1,i=()=>!0,t=()=>"772716b8-e6e2-47ac-95e9-e8d99ce35124",r=(s,e)=>s.order>e.order?1:s.order<e.order?-1:0,n=(s,e)=>s.order>e.order?-1:s.order<e.order?1:0;class o{get order(){return this._order}constructor(s,e){this.isMarkedForUnsubscribe=!1,this.isPipe=!1,this._order=0,this.isListenPaused=!1,this.once={isOnce:!1,isFinished:!1},this.unsubscribeByNegativeCondition=null,this.unsubscribeByPositiveCondition=null,this.emitByNegativeCondition=null,this.emitByPositiveCondition=null,this.emitMatchCondition=null,this.errorHandler=(s,e)=>{console.log(`(Unit of SubscribeObject).send(${s}) ERROR:`,e)},this.observable=s,this.isPipe=!!e}static callbackSend(s,e){const i=e.listener;return i&&e.observable?e.isListenPaused?void 0:e.isPipe?e.emitByPositiveCondition&&e.emitByPositiveCondition(s)||e.emitByNegativeCondition&&!e.emitByNegativeCondition(s)?i(s):e.once.isOnce?(e.once.isFinished=!0,i(s),e.unsubscribe()):e.unsubscribeByNegativeCondition?e.unsubscribeByNegativeCondition(s)?i(s):(e.unsubscribeByNegativeCondition=null,e.unsubscribe()):e.unsubscribeByPositiveCondition?e.unsubscribeByPositiveCondition(s)?(e.unsubscribeByPositiveCondition=null,e.unsubscribe()):i(s):e.emitMatchCondition&&e.emitMatchCondition(s)===s?i(s):void 0:i(s):e.unsubscribe()}subscribe(s,e){return this.listener=s,e&&(this.errorHandler=e),this}unsubscribe(){this.observable&&(this.observable.unSubscribe(this),this.observable=null,this.listener=null)}send(s){try{o.callbackSend(s,this)}catch(e){this.errorHandler(s,e)}}setOnce(){return this.once.isOnce=!0,this}unsubscribeByNegative(s){return this.unsubscribeByNegativeCondition=s??e,this}unsubscribeByPositive(s){return this.unsubscribeByPositiveCondition=s??i,this}emitByNegative(s){return this.emitByNegativeCondition=s??i,this}emitByPositive(s){return this.emitByPositiveCondition=s??e,this}emitMatch(s){return this.emitMatchCondition=s??t,this}resume(){this.isListenPaused=!1}pause(){this.isListenPaused=!0}set order(s){this._order=s}}class u{get isEnable(){return this._isEnable}constructor(s){this.value=s,this.listeners=[],this._isEnable=!0,this.isNextProcess=!1,this.listenersForUnsubscribe=[],this._isDestroyed=!1}disable(){this._isEnable=!1}enable(){this._isEnable=!0}next(s){if(!this._isDestroyed&&this._isEnable){this.isNextProcess=!0,this.value=s;for(let e=0;e<this.listeners.length;e++)this.listeners[e].send(s);this.isNextProcess=!1,this.listenersForUnsubscribe.length&&this.handleListenersForUnsubscribe()}}stream(s){if(!this._isDestroyed&&this._isEnable)for(let e=0;e<s.length;e++)this.next(s[e])}get isDestroyed(){return this._isDestroyed}unSubscribe(e){if(!this._isDestroyed){if(this.isNextProcess&&e){const s=e;return!s.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(e),void(s.isMarkedForUnsubscribe=!0)}this.listeners&&s(this.listeners,e)}}destroy(){this.value=null,this.unsubscribeAll(),this.listeners=null,this._isDestroyed=!0}unsubscribeAll(){this._isDestroyed||(this.listeners.length=0)}getValue(){if(!this._isDestroyed)return this.value}size(){return this._isDestroyed?0:this.listeners.length}subscribe(s,e){if(this._isDestroyed)return;if(!s)return;const i=new o(this,!1);return i.subscribe(s,e),this.listeners.push(i),i}pipe(){if(this._isDestroyed)return;const s=new o(this,!0);return this.listeners.push(s),s}handleListenersForUnsubscribe(){const s=this.listenersForUnsubscribe.length;for(let e=0;e<s;e++)this.unSubscribe(this.listenersForUnsubscribe[e]);this.listenersForUnsubscribe.length=0}}class h extends o{constructor(s,e){super(s,e)}get order(){return this._order}set order(s){!this.observable||this.observable&&this.observable.isDestroyed?this._order=void 0:(this._order=s,this.observable.sortByOrder())}subscribe(s,e){return this.listener=s,e&&(this.errorHandler=e),this}setOnce(){return super.setOnce()}unsubscribeByNegative(s){return super.unsubscribeByNegative(s)}unsubscribeByPositive(s){return super.unsubscribeByPositive(s)}emitByNegative(s){return super.emitByNegative(s)}emitByPositive(s){return super.emitByPositive(s)}emitMatch(s){return super.emitMatch(s)}}const b=window;b.Observable=u,b.Collector=class{constructor(){this.list=[],this._isDestroyed=!1}collect(...s){this._isDestroyed||this.list.push(...s)}unsubscribe(e){this._isDestroyed||(e?.unsubscribe(),s(this.list,e))}unsubscribeAll(){if(!this._isDestroyed)for(;this.list.length>0;)this.unsubscribe(this.list.pop())}size(){return this._isDestroyed?0:this.list.length}destroy(){this.unsubscribeAll(),this.list.length=0,this.list=0,this._isDestroyed=!0}get isDestroyed(){return this._isDestroyed}},b.OrderedObservable=class extends u{constructor(){super(...arguments),this.sortDirection=r}setAscendingSort(){return this.sortDirection=r,this.sortByOrder()}setDescendingSort(){return this.sortDirection=n,this.sortByOrder()}sortByOrder(){return!this._isDestroyed&&(this.listeners.sort(this.sortDirection),!0)}subscribe(s,e){if(this._isDestroyed)return;if(!s)return;const i=new h(this,!1);return i.subscribe(s,e),this.listeners.push(i),i}pipe(){if(this._isDestroyed)return;const s=new h(this,!0);return this.listeners.push(s),s}unSubscribe(s){if(!this._isDestroyed){if(this.isNextProcess&&s){const e=s;return!e.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(s),void(e.isMarkedForUnsubscribe=!0)}this.listeners&&function(s,e){const i=s.indexOf(e);-1!==i&&s.splice(i,1)}(this.listeners,s)}}}})();
@@ -1,5 +1,8 @@
1
+ import { ISubscribeObject } from "./Types";
1
2
  export declare function deleteFromArray<T>(arr: T[], component: T): boolean;
2
3
  export declare function quickDeleteFromArray<T>(arr: T[], component: T): boolean;
3
4
  export declare const negativeCallback: () => boolean;
4
5
  export declare const positiveCallback: () => boolean;
5
6
  export declare const randomCallback: () => string;
7
+ export declare const sortAscending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 1 | -1 | 0;
8
+ export declare const sortDescending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 1 | -1 | 0;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.randomCallback = exports.positiveCallback = exports.negativeCallback = exports.quickDeleteFromArray = exports.deleteFromArray = void 0;
3
+ exports.sortDescending = exports.sortAscending = exports.randomCallback = exports.positiveCallback = exports.negativeCallback = exports.quickDeleteFromArray = exports.deleteFromArray = void 0;
4
4
  function deleteFromArray(arr, component) {
5
5
  const index = arr.indexOf(component);
6
6
  if (index === -1)
@@ -24,3 +24,19 @@ const positiveCallback = () => true;
24
24
  exports.positiveCallback = positiveCallback;
25
25
  const randomCallback = () => "772716b8-e6e2-47ac-95e9-e8d99ce35124";
26
26
  exports.randomCallback = randomCallback;
27
+ const sortAscending = (a, b) => {
28
+ if (a.order > b.order)
29
+ return 1;
30
+ if (a.order < b.order)
31
+ return -1;
32
+ return 0;
33
+ };
34
+ exports.sortAscending = sortAscending;
35
+ const sortDescending = (a, b) => {
36
+ if (a.order > b.order)
37
+ return -1;
38
+ if (a.order < b.order)
39
+ return 1;
40
+ return 0;
41
+ };
42
+ exports.sortDescending = sortDescending;
@@ -13,6 +13,9 @@ 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
+ private sortDirection;
17
+ setAscendingSort(): boolean;
18
+ setDescendingSort(): boolean;
16
19
  sortByOrder(): boolean;
17
20
  subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike | undefined;
18
21
  pipe(): IOrderedSetup<T> | undefined;
@@ -45,16 +45,19 @@ class OrderedSubscribeObject extends Observable_1.SubscribeObject {
45
45
  }
46
46
  exports.OrderedSubscribeObject = OrderedSubscribeObject;
47
47
  class OrderedObservable extends Observable_1.Observable {
48
+ sortDirection = FunctionLibs_1.sortAscending;
49
+ setAscendingSort() {
50
+ this.sortDirection = FunctionLibs_1.sortAscending;
51
+ return this.sortByOrder();
52
+ }
53
+ setDescendingSort() {
54
+ this.sortDirection = FunctionLibs_1.sortDescending;
55
+ return this.sortByOrder();
56
+ }
48
57
  sortByOrder() {
49
58
  if (this._isDestroyed)
50
59
  return false;
51
- this.listeners.sort((a, b) => {
52
- if (a.order > b.order)
53
- return 1;
54
- if (a.order < b.order)
55
- return -1;
56
- return 0;
57
- });
60
+ this.listeners.sort(this.sortDirection);
58
61
  return true;
59
62
  }
60
63
  subscribe(listener, errorHandler) {