evg_observable 1.7.44 → 1.8.45

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.7.44",
3
+ "version": "1.8.45",
4
4
  "description": "Alternative fast and light library version - observable.",
5
5
  "directories": {
6
6
  "test": "test"
@@ -1 +1 @@
1
- (()=>{"use strict";const s=(s,e)=>s.order>e.order?1:s.order<e.order?-1:0,e=(s,e)=>s.order>e.order?-1:s.order<e.order?1:0;function i(s,e){const i=s.indexOf(e);return-1!==i&&(s[i]=s[s.length-1],s.length=s.length-1,!0)}class t{constructor(){this.chainHandlers=[],this.pipeData={isBreakChain:!1,isNeedUnsubscribe:!1,isAvailable:!1,payload:null}}setOnce(){const s=this.pipeData;return this.chainHandlers.push((()=>{this.listener(s.payload),s.isNeedUnsubscribe=!0})),this}unsubscribeByNegative(s){const e=this.pipeData;return this.chainHandlers.push((()=>{e.isAvailable=!0,s(e.payload)||(e.isNeedUnsubscribe=!0)})),this}unsubscribeByPositive(s){const e=this.pipeData;return this.chainHandlers.push((()=>{e.isAvailable=!0,s(e.payload)&&(e.isNeedUnsubscribe=!0)})),this}emitByNegative(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)||(e.isAvailable=!0)})),this}emitByPositive(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)&&(e.isAvailable=!0)})),this}emitMatch(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)==e.payload&&(e.isAvailable=!0)})),this}switch(){return new r(this)}}class r{constructor(s){this.caseCounter=0,this.pipe=s}subscribe(s,e){return this.pipe.subscribe(s,e)}case(s){this.caseCounter++;const e=this.caseCounter,i=this.pipe.pipeData,t=this.pipe.chainHandlers;return t.push((()=>{i.isAvailable=!0,s(i.payload)&&(i.isBreakChain=!0),e!==t.length||i.isBreakChain||(i.isAvailable=!1)})),this}}class n extends t{constructor(s,e){super(),this.isMarkedForUnsubscribe=!1,this.errorHandler=(s,e)=>{console.log(`(Unit of SubscribeObject).send(${s}) ERROR:`,e)},this._order=0,this.isPaused=!1,this.isPipe=!1,this.observable=s,this.isPipe=!!e}subscribe(s,e){var i;return this.listener="next"in(i=s)?s=>i.next(s):i,e&&(this.errorHandler=e),this}unsubscribe(){this.observable&&(this.observable.unSubscribe(this),this.observable=null,this.listener=null,this.chainHandlers.length=0)}send(s){try{this.pipeData.payload=s,this.pipeData.isBreakChain=!1,function(s,e){const i=e.listener;if(!i)return e.unsubscribe();if(!e.observable)return e.unsubscribe();if(!e.isPaused){if(!e.isPipe)return i(s);for(let s=0;s<e.chainHandlers.length;s++){if(e.pipeData.isNeedUnsubscribe=!1,e.pipeData.isAvailable=!1,e.chainHandlers[s](),e.pipeData.isNeedUnsubscribe)return e.unsubscribe();if(!e.pipeData.isAvailable)return;if(e.pipeData.isBreakChain)break}i(e.pipeData.payload)}}(s,this)}catch(e){this.errorHandler(s,e)}}resume(){this.isPaused=!1}pause(){this.isPaused=!0}get order(){return this._order}set order(s){this._order=s}}class h{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(s){if(!this._isDestroyed){if(this.isNextProcess&&s){const e=s;return!e.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(s),void(e.isMarkedForUnsubscribe=!0)}this.listeners&&i(this.listeners,s)}}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.isSubsValid(s))return;const i=new n(this,!1);return this.addObserver(i,s,e),i}addObserver(s,e,i){s.subscribe(e,i),this.listeners.push(s)}isSubsValid(s){return!this._isDestroyed&&!!s}pipe(){if(this._isDestroyed)return;const s=new n(this,!0);return this.listeners.push(s),s}get isDestroyed(){return this._isDestroyed}}class a extends n{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 super.subscribe(s,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=h,u.Collector=class{constructor(){this.list=[],this._isDestroyed=!1}collect(...s){this._isDestroyed||this.list.push(...s)}unsubscribe(s){this._isDestroyed||(s?.unsubscribe(),i(this.list,s))}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 h{constructor(){super(...arguments),this.sortDirection=s}setAscendingSort(){return this.sortDirection=s,this.sortByOrder()}setDescendingSort(){return this.sortDirection=e,this.sortByOrder()}sortByOrder(){return!this._isDestroyed&&(this.listeners.sort(this.sortDirection),!0)}subscribe(s,e){if(!this.isSubsValid(s))return;const i=new a(this,!1);return this.addObserver(i,s,e),i}pipe(){if(this._isDestroyed)return;const s=new a(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";const s=(s,e)=>s.order>e.order?1:s.order<e.order?-1:0,e=(s,e)=>s.order>e.order?-1:s.order<e.order?1:0;function i(s,e){const i=s.indexOf(e);return-1!==i&&(s[i]=s[s.length-1],s.length=s.length-1,!0)}class t{constructor(){this.chainHandlers=[],this.pipeData={isBreakChain:!1,isNeedUnsubscribe:!1,isAvailable:!1,payload:null}}setOnce(){const s=this.pipeData;return this.chainHandlers.push((()=>{this.listener(s.payload),s.isNeedUnsubscribe=!0})),this}unsubscribeByNegative(s){const e=this.pipeData;return this.chainHandlers.push((()=>{e.isAvailable=!0,s(e.payload)||(e.isNeedUnsubscribe=!0)})),this}unsubscribeByPositive(s){const e=this.pipeData;return this.chainHandlers.push((()=>{e.isAvailable=!0,s(e.payload)&&(e.isNeedUnsubscribe=!0)})),this}emitByNegative(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)||(e.isAvailable=!0)})),this}emitByPositive(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)&&(e.isAvailable=!0)})),this}emitMatch(s){const e=this.pipeData;return this.chainHandlers.push((()=>{s(e.payload)==e.payload&&(e.isAvailable=!0)})),this}switch(){return new r(this)}}class r{constructor(s){this.pipe=s,this.caseCounter=s.chainHandlers.length?s.chainHandlers.length:0}subscribe(s,e){return this.pipe.subscribe(s,e)}case(s){this.caseCounter++;const e=this.caseCounter,i=this.pipe.pipeData,t=this.pipe.chainHandlers;return t.push((()=>{i.isAvailable=!0,s(i.payload)&&(i.isBreakChain=!0),e!==t.length||i.isBreakChain||(i.isAvailable=!1)})),this}}class n extends t{constructor(s,e){super(),this.isMarkedForUnsubscribe=!1,this.errorHandler=(s,e)=>{console.log(`(Unit of SubscribeObject).send(${s}) ERROR:`,e)},this._order=0,this.isPaused=!1,this.isPipe=!1,this.observable=s,this.isPipe=!!e}subscribe(s,e){var i;return this.listener="next"in(i=s)?s=>i.next(s):i,e&&(this.errorHandler=e),this}unsubscribe(){this.observable&&(this.observable.unSubscribe(this),this.observable=null,this.listener=null,this.chainHandlers.length=0)}send(s){try{this.pipeData.payload=s,this.pipeData.isBreakChain=!1,function(s,e){const i=e.listener;if(!i)return e.unsubscribe();if(!e.observable)return e.unsubscribe();if(!e.isPaused){if(!e.isPipe)return i(s);for(let s=0;s<e.chainHandlers.length;s++){if(e.pipeData.isNeedUnsubscribe=!1,e.pipeData.isAvailable=!1,e.chainHandlers[s](),e.pipeData.isNeedUnsubscribe)return e.unsubscribe();if(!e.pipeData.isAvailable)return;if(e.pipeData.isBreakChain)break}i(e.pipeData.payload)}}(s,this)}catch(e){this.errorHandler(s,e)}}resume(){this.isPaused=!1}pause(){this.isPaused=!0}get order(){return this._order}set order(s){this._order=s}}class h{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(s){if(!this._isDestroyed){if(this.isNextProcess&&s){const e=s;return!e.isMarkedForUnsubscribe&&this.listenersForUnsubscribe.push(s),void(e.isMarkedForUnsubscribe=!0)}this.listeners&&i(this.listeners,s)}}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.isSubsValid(s))return;const i=new n(this,!1);return this.addObserver(i,s,e),i}addObserver(s,e,i){s.subscribe(e,i),this.listeners.push(s)}isSubsValid(s){return!this._isDestroyed&&!!s}pipe(){if(this._isDestroyed)return;const s=new n(this,!0);return this.listeners.push(s),s}get isDestroyed(){return this._isDestroyed}}class a extends n{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 super.subscribe(s,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=h,u.Collector=class{constructor(){this.list=[],this._isDestroyed=!1}collect(...s){this._isDestroyed||this.list.push(...s)}unsubscribe(s){this._isDestroyed||(s?.unsubscribe(),i(this.list,s))}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 h{constructor(){super(...arguments),this.sortDirection=s}setAscendingSort(){return this.sortDirection=s,this.sortByOrder()}setDescendingSort(){return this.sortDirection=e,this.sortByOrder()}sortByOrder(){return!this._isDestroyed&&(this.listeners.sort(this.sortDirection),!0)}subscribe(s,e){if(!this.isSubsValid(s))return;const i=new a(this,!1);return this.addObserver(i,s,e),i}pipe(){if(this._isDestroyed)return;const s=new a(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,6 +1,6 @@
1
- import { IListener, ISetObservableValue, ISubscribeObject } from "./Types";
1
+ import { IListener, ISubscribeGroup, ISubscribeObject } from "./Types";
2
2
  export declare const sortAscending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 0 | 1 | -1;
3
3
  export declare const sortDescending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 0 | 1 | -1;
4
4
  export declare function deleteFromArray<T>(arr: T[], component: T): boolean;
5
5
  export declare function quickDeleteFromArray<T>(arr: T[], component: T): boolean;
6
- export declare function getListener<T>(listener: IListener<T> | ISetObservableValue): any;
6
+ export declare function getListener<T>(listener: ISubscribeGroup<T>): IListener<T>;
@@ -35,8 +35,21 @@ function quickDeleteFromArray(arr, component) {
35
35
  }
36
36
  exports.quickDeleteFromArray = quickDeleteFromArray;
37
37
  function getListener(listener) {
38
+ if (Array.isArray(listener)) {
39
+ const group = [];
40
+ for (let i = 0; i < listener.length; i++) {
41
+ group.push(wrapListener(listener[i]));
42
+ }
43
+ return (data) => {
44
+ for (let i = 0; i < group.length; i++)
45
+ group[i](data);
46
+ };
47
+ }
48
+ return wrapListener(listener);
49
+ }
50
+ exports.getListener = getListener;
51
+ function wrapListener(listener) {
38
52
  if ("next" in listener)
39
53
  return (value) => listener.next(value);
40
54
  return listener;
41
55
  }
42
- exports.getListener = getListener;
@@ -1,4 +1,4 @@
1
- import { IErrorCallback, IListener, IObserver, ISetObservableValue, ISetup, IStream, ISubscribeObject, ISubscriptionLike } from "./Types";
1
+ import { IErrorCallback, IObserver, ISetup, IStream, ISubscribeGroup, ISubscribeObject, ISubscriptionLike } from "./Types";
2
2
  import { SubscribeObject } from "./SubscribeObject";
3
3
  export declare class Observable<T> implements IObserver<T>, IStream<T> {
4
4
  private value;
@@ -19,9 +19,9 @@ export declare class Observable<T> implements IObserver<T>, IStream<T> {
19
19
  unsubscribeAll(): void;
20
20
  getValue(): T | undefined;
21
21
  size(): number;
22
- subscribe(observer: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
23
- protected addObserver(subscribeObject: SubscribeObject<T>, observer: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): void;
24
- protected isSubsValid(listener: IListener<T> | ISetObservableValue): boolean;
22
+ subscribe(observer: ISubscribeGroup<T>, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
23
+ protected addObserver(subscribeObject: SubscribeObject<T>, observer: ISubscribeGroup<T>, errorHandler?: IErrorCallback): void;
24
+ protected isSubsValid(listener: ISubscribeGroup<T>): boolean;
25
25
  pipe(): ISetup<T> | undefined;
26
26
  get isDestroyed(): boolean;
27
27
  }
@@ -1,11 +1,11 @@
1
1
  import { Observable } from "./Observable";
2
- import { IErrorCallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscriptionLike, ISetObservableValue, ISubscriptionLike } from "./Types";
2
+ import { IErrorCallback, IOrdered, IOrderedSetup, IOrderedSubscriptionLike, ISubscribeGroup, ISubscriptionLike } from "./Types";
3
3
  export declare class OrderedObservable<T> extends Observable<T> implements IOrdered<T> {
4
4
  private sortDirection;
5
5
  setAscendingSort(): boolean;
6
6
  setDescendingSort(): boolean;
7
7
  sortByOrder(): boolean;
8
- subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): IOrderedSubscriptionLike | undefined;
8
+ subscribe(listener: ISubscribeGroup<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike | undefined;
9
9
  pipe(): IOrderedSetup<T> | undefined;
10
10
  unSubscribe(listener: ISubscriptionLike): void;
11
11
  }
@@ -61,9 +61,10 @@ class Pipe {
61
61
  exports.Pipe = Pipe;
62
62
  class SwitchCase {
63
63
  pipe;
64
- caseCounter = 0;
64
+ caseCounter;
65
65
  constructor(pipe) {
66
66
  this.pipe = pipe;
67
+ this.caseCounter = pipe.chainHandlers.length ? pipe.chainHandlers.length : 0;
67
68
  }
68
69
  subscribe(listener, errorHandler) {
69
70
  return this.pipe.subscribe(listener, errorHandler);
@@ -1,4 +1,4 @@
1
- import { IErrorCallback, IListener, IMarkedForUnsubscribe, IObserver, ISetObservableValue, ISubscribeObject, ISubscriptionLike } from "./Types";
1
+ import { IErrorCallback, IListener, IMarkedForUnsubscribe, IObserver, ISubscribeGroup, ISubscribeObject, ISubscriptionLike } from "./Types";
2
2
  import { Pipe } from "./Pipe";
3
3
  export declare class SubscribeObject<T> extends Pipe<T> implements ISubscribeObject<T>, IMarkedForUnsubscribe {
4
4
  isMarkedForUnsubscribe: boolean;
@@ -9,7 +9,7 @@ export declare class SubscribeObject<T> extends Pipe<T> implements ISubscribeObj
9
9
  isPaused: boolean;
10
10
  isPipe: boolean;
11
11
  constructor(observable?: IObserver<T>, isPipe?: boolean);
12
- subscribe(observer: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike;
12
+ subscribe(observer: ISubscribeGroup<T>, errorHandler?: IErrorCallback): ISubscriptionLike;
13
13
  unsubscribe(): void;
14
14
  send(value: T): void;
15
15
  resume(): void;
@@ -5,7 +5,7 @@ export type IMarkedForUnsubscribe = {
5
5
  };
6
6
  export type IErrorCallback = (errorData: any, errorMessage: any) => void;
7
7
  export type ISubscribe<T> = {
8
- subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
8
+ subscribe(listener: ISubscribeGroup<T>, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
9
9
  };
10
10
  export type IListener<T> = ICallback<T>;
11
11
  export type IDestroy = {
@@ -118,3 +118,5 @@ export type IChainCallback = () => void;
118
118
  export type IPipeCase<T> = {
119
119
  case(condition: ICallback<any>): IPipeCase<T> & ISubscribe<T>;
120
120
  };
121
+ export type ICombinedSubscriber<T> = IListener<T> | ISetObservableValue;
122
+ export type ISubscribeGroup<T> = ICombinedSubscriber<T> | ICombinedSubscriber<T>[];