evg_observable 1.6.44 → 1.7.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evg_observable",
3
- "version": "1.6.44",
3
+ "version": "1.7.44",
4
4
  "description": "Alternative fast and light library version - observable.",
5
5
  "directories": {
6
6
  "test": "test"
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "homepage": "https://github.com/BarushevEA/light-observable-ts#readme",
23
23
  "devDependencies": {
24
- "typescript": "^5.4.2",
24
+ "typescript": "^5.4.5",
25
25
  "@testdeck/mocha": "^0.3.3",
26
26
  "@types/chai": "^4.3.4",
27
27
  "chai": "^4.3.7",
@@ -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",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
+ (()=>{"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,8 +1,6 @@
1
- import { ISubscribeObject } from "./Types";
1
+ import { IListener, ISetObservableValue, ISubscribeObject } from "./Types";
2
+ export declare const sortAscending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 0 | 1 | -1;
3
+ export declare const sortDescending: (a: ISubscribeObject<any>, b: ISubscribeObject<any>) => 0 | 1 | -1;
2
4
  export declare function deleteFromArray<T>(arr: T[], component: T): boolean;
3
5
  export declare function quickDeleteFromArray<T>(arr: T[], component: T): boolean;
4
- export declare const negativeCallback: () => boolean;
5
- export declare const positiveCallback: () => boolean;
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;
6
+ export declare function getListener<T>(listener: IListener<T> | ISetObservableValue): any;
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sortDescending = exports.sortAscending = exports.randomCallback = exports.positiveCallback = exports.negativeCallback = exports.quickDeleteFromArray = exports.deleteFromArray = void 0;
3
+ exports.getListener = exports.quickDeleteFromArray = exports.deleteFromArray = exports.sortDescending = exports.sortAscending = void 0;
4
+ const sortAscending = (a, b) => {
5
+ if (a.order > b.order)
6
+ return 1;
7
+ if (a.order < b.order)
8
+ return -1;
9
+ return 0;
10
+ };
11
+ exports.sortAscending = sortAscending;
12
+ const sortDescending = (a, b) => {
13
+ if (a.order > b.order)
14
+ return -1;
15
+ if (a.order < b.order)
16
+ return 1;
17
+ return 0;
18
+ };
19
+ exports.sortDescending = sortDescending;
4
20
  function deleteFromArray(arr, component) {
5
21
  const index = arr.indexOf(component);
6
22
  if (index === -1)
@@ -18,25 +34,9 @@ function quickDeleteFromArray(arr, component) {
18
34
  return true;
19
35
  }
20
36
  exports.quickDeleteFromArray = quickDeleteFromArray;
21
- const negativeCallback = () => false;
22
- exports.negativeCallback = negativeCallback;
23
- const positiveCallback = () => true;
24
- exports.positiveCallback = positiveCallback;
25
- const randomCallback = () => "772716b8-e6e2-47ac-95e9-e8d99ce35124";
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;
37
+ function getListener(listener) {
38
+ if ("next" in listener)
39
+ return (value) => listener.next(value);
40
+ return listener;
41
+ }
42
+ exports.getListener = getListener;
@@ -1,34 +1,5 @@
1
- import { ICallback, IErrorCallback, IListener, IMarkedForUnsubscribe, IObserver, ISetup, IStream, ISubscribe, ISubscribeObject, ISubscriptionLike } from "./Types";
2
- export declare class SubscribeObject<T> implements ISubscribeObject<T>, IMarkedForUnsubscribe {
3
- isMarkedForUnsubscribe: boolean;
4
- protected observable: IObserver<T> | undefined;
5
- protected listener: IListener<T> | undefined;
6
- protected errorHandler: IErrorCallback;
7
- protected _order: number;
8
- private isListenPaused;
9
- private once;
10
- private unsubscribeByNegativeCondition;
11
- private unsubscribeByPositiveCondition;
12
- private emitByNegativeCondition;
13
- private emitByPositiveCondition;
14
- private emitMatchCondition;
15
- protected isPipe: boolean;
16
- constructor(observable?: IObserver<T>, isPipe?: boolean);
17
- private static callbackSend;
18
- subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike;
19
- unsubscribe(): void;
20
- send(value: T): void;
21
- setOnce(): ISubscribe<T>;
22
- unsubscribeByNegative(condition: ICallback<T>): ISubscribe<T>;
23
- unsubscribeByPositive(condition: ICallback<T>): ISubscribe<T>;
24
- emitByNegative(condition: ICallback<T>): ISubscribe<T>;
25
- emitByPositive(condition: ICallback<T>): ISubscribe<T>;
26
- emitMatch(condition: ICallback<T>): ISubscribe<T>;
27
- resume(): void;
28
- pause(): void;
29
- get order(): number;
30
- set order(value: number);
31
- }
1
+ import { IErrorCallback, IListener, IObserver, ISetObservableValue, ISetup, IStream, ISubscribeObject, ISubscriptionLike } from "./Types";
2
+ import { SubscribeObject } from "./SubscribeObject";
32
3
  export declare class Observable<T> implements IObserver<T>, IStream<T> {
33
4
  private value;
34
5
  protected listeners: ISubscribeObject<T>[];
@@ -48,7 +19,9 @@ export declare class Observable<T> implements IObserver<T>, IStream<T> {
48
19
  unsubscribeAll(): void;
49
20
  getValue(): T | undefined;
50
21
  size(): number;
51
- subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
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;
52
25
  pipe(): ISetup<T> | undefined;
53
26
  get isDestroyed(): boolean;
54
27
  }
@@ -1,121 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Observable = exports.SubscribeObject = void 0;
3
+ exports.Observable = void 0;
4
4
  const FunctionLibs_1 = require("./FunctionLibs");
5
- class SubscribeObject {
6
- isMarkedForUnsubscribe = false;
7
- observable;
8
- listener;
9
- errorHandler = (errorData, errorMessage) => {
10
- console.log(`(Unit of SubscribeObject).send(${errorData}) ERROR:`, errorMessage);
11
- };
12
- _order = 0;
13
- isListenPaused = false;
14
- once = { isOnce: false, isFinished: false };
15
- unsubscribeByNegativeCondition = null;
16
- unsubscribeByPositiveCondition = null;
17
- emitByNegativeCondition = null;
18
- emitByPositiveCondition = null;
19
- emitMatchCondition = null;
20
- isPipe = false;
21
- constructor(observable, isPipe) {
22
- this.observable = observable;
23
- this.isPipe = !!isPipe;
24
- }
25
- static callbackSend(value, subsObj) {
26
- const listener = subsObj.listener;
27
- if (!listener)
28
- return subsObj.unsubscribe();
29
- if (!subsObj.observable)
30
- return subsObj.unsubscribe();
31
- if (subsObj.isListenPaused)
32
- return;
33
- if (!subsObj.isPipe)
34
- return listener(value);
35
- if (subsObj.emitByPositiveCondition && subsObj.emitByPositiveCondition(value))
36
- return listener(value);
37
- if (subsObj.emitByNegativeCondition && !subsObj.emitByNegativeCondition(value))
38
- return listener(value);
39
- if (subsObj.once.isOnce) {
40
- subsObj.once.isFinished = true;
41
- listener(value);
42
- return subsObj.unsubscribe();
43
- }
44
- if (subsObj.unsubscribeByNegativeCondition) {
45
- if (!subsObj.unsubscribeByNegativeCondition(value)) {
46
- subsObj.unsubscribeByNegativeCondition = null;
47
- return subsObj.unsubscribe();
48
- }
49
- return listener(value);
50
- }
51
- if (subsObj.unsubscribeByPositiveCondition) {
52
- if (subsObj.unsubscribeByPositiveCondition(value)) {
53
- subsObj.unsubscribeByPositiveCondition = null;
54
- return subsObj.unsubscribe();
55
- }
56
- return listener(value);
57
- }
58
- if (subsObj.emitMatchCondition && (subsObj.emitMatchCondition(value) === value))
59
- return listener(value);
60
- }
61
- subscribe(listener, errorHandler) {
62
- this.listener = listener;
63
- errorHandler && (this.errorHandler = errorHandler);
64
- return this;
65
- }
66
- unsubscribe() {
67
- if (!this.observable)
68
- return;
69
- this.observable.unSubscribe(this);
70
- this.observable = null;
71
- this.listener = null;
72
- }
73
- send(value) {
74
- try {
75
- SubscribeObject.callbackSend(value, this);
76
- }
77
- catch (err) {
78
- this.errorHandler(value, err);
79
- }
80
- }
81
- setOnce() {
82
- this.once.isOnce = true;
83
- return this;
84
- }
85
- unsubscribeByNegative(condition) {
86
- this.unsubscribeByNegativeCondition = condition ?? FunctionLibs_1.negativeCallback;
87
- return this;
88
- }
89
- unsubscribeByPositive(condition) {
90
- this.unsubscribeByPositiveCondition = condition ?? FunctionLibs_1.positiveCallback;
91
- return this;
92
- }
93
- emitByNegative(condition) {
94
- this.emitByNegativeCondition = condition ?? FunctionLibs_1.positiveCallback;
95
- return this;
96
- }
97
- emitByPositive(condition) {
98
- this.emitByPositiveCondition = condition ?? FunctionLibs_1.negativeCallback;
99
- return this;
100
- }
101
- emitMatch(condition) {
102
- this.emitMatchCondition = condition ?? FunctionLibs_1.randomCallback;
103
- return this;
104
- }
105
- resume() {
106
- this.isListenPaused = false;
107
- }
108
- pause() {
109
- this.isListenPaused = true;
110
- }
111
- get order() {
112
- return this._order;
113
- }
114
- set order(value) {
115
- this._order = value;
116
- }
117
- }
118
- exports.SubscribeObject = SubscribeObject;
5
+ const SubscribeObject_1 = require("./SubscribeObject");
119
6
  class Observable {
120
7
  value;
121
8
  listeners = [];
@@ -193,20 +80,26 @@ class Observable {
193
80
  return 0;
194
81
  return this.listeners.length;
195
82
  }
196
- subscribe(listener, errorHandler) {
197
- if (this._isDestroyed)
198
- return undefined;
199
- if (!listener)
83
+ subscribe(observer, errorHandler) {
84
+ if (!this.isSubsValid(observer))
200
85
  return undefined;
201
- const subscribeObject = new SubscribeObject(this, false);
202
- subscribeObject.subscribe(listener, errorHandler);
203
- this.listeners.push(subscribeObject);
86
+ const subscribeObject = new SubscribeObject_1.SubscribeObject(this, false);
87
+ this.addObserver(subscribeObject, observer, errorHandler);
204
88
  return subscribeObject;
205
89
  }
90
+ addObserver(subscribeObject, observer, errorHandler) {
91
+ subscribeObject.subscribe(observer, errorHandler);
92
+ this.listeners.push(subscribeObject);
93
+ }
94
+ isSubsValid(listener) {
95
+ if (this._isDestroyed)
96
+ return false;
97
+ return !!listener;
98
+ }
206
99
  pipe() {
207
100
  if (this._isDestroyed)
208
101
  return undefined;
209
- const subscribeObject = new SubscribeObject(this, true);
102
+ const subscribeObject = new SubscribeObject_1.SubscribeObject(this, true);
210
103
  this.listeners.push(subscribeObject);
211
104
  return subscribeObject;
212
105
  }
@@ -1,23 +1,11 @@
1
- import { Observable, SubscribeObject } from "./Observable";
2
- import { ICallback, IErrorCallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscribe, IOrderedSubscriptionLike, ISubscriptionLike } from "./Types";
3
- export declare class OrderedSubscribeObject<T> extends SubscribeObject<T> {
4
- constructor(observable: OrderedObservable<T> | IOrdered<T>, isPipe?: boolean);
5
- get order(): number;
6
- set order(value: number);
7
- subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike;
8
- setOnce(): IOrderedSubscribe<T>;
9
- unsubscribeByNegative(condition: ICallback<any>): IOrderedSubscribe<T>;
10
- unsubscribeByPositive(condition: ICallback<any>): IOrderedSubscribe<T>;
11
- emitByNegative(condition: ICallback<any>): IOrderedSubscribe<T>;
12
- emitByPositive(condition: ICallback<any>): IOrderedSubscribe<T>;
13
- emitMatch(condition: ICallback<any>): IOrderedSubscribe<T>;
14
- }
1
+ import { Observable } from "./Observable";
2
+ import { IErrorCallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscriptionLike, ISetObservableValue, ISubscriptionLike } from "./Types";
15
3
  export declare class OrderedObservable<T> extends Observable<T> implements IOrdered<T> {
16
4
  private sortDirection;
17
5
  setAscendingSort(): boolean;
18
6
  setDescendingSort(): boolean;
19
7
  sortByOrder(): boolean;
20
- subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike | undefined;
8
+ subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): IOrderedSubscriptionLike | undefined;
21
9
  pipe(): IOrderedSetup<T> | undefined;
22
10
  unSubscribe(listener: ISubscriptionLike): void;
23
11
  }
@@ -1,49 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrderedObservable = exports.OrderedSubscribeObject = void 0;
3
+ exports.OrderedObservable = void 0;
4
4
  const Observable_1 = require("./Observable");
5
5
  const FunctionLibs_1 = require("./FunctionLibs");
6
- class OrderedSubscribeObject extends Observable_1.SubscribeObject {
7
- constructor(observable, isPipe) {
8
- super(observable, isPipe);
9
- }
10
- get order() {
11
- return this._order;
12
- }
13
- set order(value) {
14
- if (!this.observable ||
15
- (this.observable && this.observable.isDestroyed)) {
16
- this._order = undefined;
17
- return;
18
- }
19
- this._order = value;
20
- this.observable.sortByOrder();
21
- }
22
- subscribe(listener, errorHandler) {
23
- this.listener = listener;
24
- errorHandler && (this.errorHandler = errorHandler);
25
- return this;
26
- }
27
- setOnce() {
28
- return super.setOnce();
29
- }
30
- unsubscribeByNegative(condition) {
31
- return super.unsubscribeByNegative(condition);
32
- }
33
- unsubscribeByPositive(condition) {
34
- return super.unsubscribeByPositive(condition);
35
- }
36
- emitByNegative(condition) {
37
- return super.emitByNegative(condition);
38
- }
39
- emitByPositive(condition) {
40
- return super.emitByPositive(condition);
41
- }
42
- emitMatch(condition) {
43
- return super.emitMatch(condition);
44
- }
45
- }
46
- exports.OrderedSubscribeObject = OrderedSubscribeObject;
6
+ const OrderedSubscribeObject_1 = require("./OrderedSubscribeObject");
47
7
  class OrderedObservable extends Observable_1.Observable {
48
8
  sortDirection = FunctionLibs_1.sortAscending;
49
9
  setAscendingSort() {
@@ -61,19 +21,16 @@ class OrderedObservable extends Observable_1.Observable {
61
21
  return true;
62
22
  }
63
23
  subscribe(listener, errorHandler) {
64
- if (this._isDestroyed)
24
+ if (!this.isSubsValid(listener))
65
25
  return undefined;
66
- if (!listener)
67
- return undefined;
68
- const subscribeObject = new OrderedSubscribeObject(this, false);
69
- subscribeObject.subscribe(listener, errorHandler);
70
- this.listeners.push(subscribeObject);
26
+ const subscribeObject = new OrderedSubscribeObject_1.OrderedSubscribeObject(this, false);
27
+ this.addObserver(subscribeObject, listener, errorHandler);
71
28
  return subscribeObject;
72
29
  }
73
30
  pipe() {
74
31
  if (this._isDestroyed)
75
32
  return undefined;
76
- const subscribeObject = new OrderedSubscribeObject(this, true);
33
+ const subscribeObject = new OrderedSubscribeObject_1.OrderedSubscribeObject(this, true);
77
34
  this.listeners.push(subscribeObject);
78
35
  return subscribeObject;
79
36
  }
@@ -0,0 +1,15 @@
1
+ import { SubscribeObject } from "./SubscribeObject";
2
+ import { ICallback, IErrorCallback, IListener, IOrdered, IOrderedSetup, IOrderedSubscribe, IOrderedSubscriptionLike, ISetObservableValue } from "./Types";
3
+ import { OrderedObservable } from "./OrderedObservable";
4
+ export declare class OrderedSubscribeObject<T> extends SubscribeObject<T> implements IOrderedSetup<T> {
5
+ constructor(observable: OrderedObservable<T> | IOrdered<T>, isPipe?: boolean);
6
+ get order(): number;
7
+ set order(value: number);
8
+ subscribe(observer: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): IOrderedSubscriptionLike;
9
+ setOnce(): IOrderedSubscribe<T>;
10
+ unsubscribeByNegative(condition: ICallback<any>): IOrderedSetup<T>;
11
+ unsubscribeByPositive(condition: ICallback<any>): IOrderedSetup<T>;
12
+ emitByNegative(condition: ICallback<any>): IOrderedSetup<T>;
13
+ emitByPositive(condition: ICallback<any>): IOrderedSetup<T>;
14
+ emitMatch(condition: ICallback<any>): IOrderedSetup<T>;
15
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderedSubscribeObject = void 0;
4
+ const SubscribeObject_1 = require("./SubscribeObject");
5
+ class OrderedSubscribeObject extends SubscribeObject_1.SubscribeObject {
6
+ constructor(observable, isPipe) {
7
+ super(observable, isPipe);
8
+ }
9
+ get order() {
10
+ return this._order;
11
+ }
12
+ set order(value) {
13
+ if (!this.observable ||
14
+ (this.observable && this.observable.isDestroyed)) {
15
+ this._order = undefined;
16
+ return;
17
+ }
18
+ this._order = value;
19
+ this.observable.sortByOrder();
20
+ }
21
+ subscribe(observer, errorHandler) {
22
+ super.subscribe(observer, errorHandler);
23
+ return this;
24
+ }
25
+ setOnce() {
26
+ return super.setOnce();
27
+ }
28
+ unsubscribeByNegative(condition) {
29
+ return super.unsubscribeByNegative(condition);
30
+ }
31
+ unsubscribeByPositive(condition) {
32
+ return super.unsubscribeByPositive(condition);
33
+ }
34
+ emitByNegative(condition) {
35
+ return super.emitByNegative(condition);
36
+ }
37
+ emitByPositive(condition) {
38
+ return super.emitByPositive(condition);
39
+ }
40
+ emitMatch(condition) {
41
+ return super.emitMatch(condition);
42
+ }
43
+ }
44
+ exports.OrderedSubscribeObject = OrderedSubscribeObject;
@@ -0,0 +1,20 @@
1
+ import { ICallback, IChainCallback, IErrorCallback, IListener, IPipeCase, IPipePayload, ISetObservableValue, ISetup, ISubscribe, ISubscriptionLike } from "./Types";
2
+ export declare abstract class Pipe<T> implements ISubscribe<T> {
3
+ chainHandlers: IChainCallback[];
4
+ pipeData: IPipePayload;
5
+ abstract subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
6
+ setOnce(): ISubscribe<T>;
7
+ unsubscribeByNegative(condition: ICallback<T>): ISetup<T>;
8
+ unsubscribeByPositive(condition: ICallback<T>): ISetup<T>;
9
+ emitByNegative(condition: ICallback<T>): ISetup<T>;
10
+ emitByPositive(condition: ICallback<T>): ISetup<T>;
11
+ emitMatch(condition: ICallback<T>): ISetup<T>;
12
+ switch(): SwitchCase<T>;
13
+ }
14
+ export declare class SwitchCase<T> implements ISubscribe<T>, IPipeCase<T> {
15
+ private pipe;
16
+ private caseCounter;
17
+ constructor(pipe: Pipe<T>);
18
+ subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
19
+ case(condition: ICallback<any>): IPipeCase<T> & ISubscribe<T>;
20
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwitchCase = exports.Pipe = void 0;
4
+ class Pipe {
5
+ chainHandlers = [];
6
+ pipeData = { isBreakChain: false, isNeedUnsubscribe: false, isAvailable: false, payload: null };
7
+ setOnce() {
8
+ const data = this.pipeData;
9
+ this.chainHandlers.push(() => {
10
+ this.listener(data.payload);
11
+ data.isNeedUnsubscribe = true;
12
+ });
13
+ return this;
14
+ }
15
+ unsubscribeByNegative(condition) {
16
+ const data = this.pipeData;
17
+ this.chainHandlers.push(() => {
18
+ data.isAvailable = true;
19
+ if (!condition(data.payload))
20
+ data.isNeedUnsubscribe = true;
21
+ });
22
+ return this;
23
+ }
24
+ unsubscribeByPositive(condition) {
25
+ const data = this.pipeData;
26
+ this.chainHandlers.push(() => {
27
+ data.isAvailable = true;
28
+ if (condition(data.payload))
29
+ data.isNeedUnsubscribe = true;
30
+ });
31
+ return this;
32
+ }
33
+ emitByNegative(condition) {
34
+ const data = this.pipeData;
35
+ this.chainHandlers.push(() => {
36
+ if (!condition(data.payload))
37
+ data.isAvailable = true;
38
+ });
39
+ return this;
40
+ }
41
+ emitByPositive(condition) {
42
+ const data = this.pipeData;
43
+ this.chainHandlers.push(() => {
44
+ if (condition(data.payload))
45
+ data.isAvailable = true;
46
+ });
47
+ return this;
48
+ }
49
+ emitMatch(condition) {
50
+ const data = this.pipeData;
51
+ this.chainHandlers.push(() => {
52
+ if (condition(data.payload) == data.payload)
53
+ data.isAvailable = true;
54
+ });
55
+ return this;
56
+ }
57
+ switch() {
58
+ return new SwitchCase(this);
59
+ }
60
+ }
61
+ exports.Pipe = Pipe;
62
+ class SwitchCase {
63
+ pipe;
64
+ caseCounter = 0;
65
+ constructor(pipe) {
66
+ this.pipe = pipe;
67
+ }
68
+ subscribe(listener, errorHandler) {
69
+ return this.pipe.subscribe(listener, errorHandler);
70
+ }
71
+ case(condition) {
72
+ this.caseCounter++;
73
+ const id = this.caseCounter;
74
+ const data = this.pipe.pipeData;
75
+ const chain = this.pipe.chainHandlers;
76
+ chain.push(() => {
77
+ data.isAvailable = true;
78
+ if (condition(data.payload))
79
+ data.isBreakChain = true;
80
+ if (id === chain.length && !data.isBreakChain)
81
+ data.isAvailable = false;
82
+ });
83
+ return this;
84
+ }
85
+ }
86
+ exports.SwitchCase = SwitchCase;
@@ -0,0 +1,19 @@
1
+ import { IErrorCallback, IListener, IMarkedForUnsubscribe, IObserver, ISetObservableValue, ISubscribeObject, ISubscriptionLike } from "./Types";
2
+ import { Pipe } from "./Pipe";
3
+ export declare class SubscribeObject<T> extends Pipe<T> implements ISubscribeObject<T>, IMarkedForUnsubscribe {
4
+ isMarkedForUnsubscribe: boolean;
5
+ observable: IObserver<T> | undefined;
6
+ listener: IListener<T> | undefined;
7
+ errorHandler: IErrorCallback;
8
+ _order: number;
9
+ isPaused: boolean;
10
+ isPipe: boolean;
11
+ constructor(observable?: IObserver<T>, isPipe?: boolean);
12
+ subscribe(observer: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike;
13
+ unsubscribe(): void;
14
+ send(value: T): void;
15
+ resume(): void;
16
+ pause(): void;
17
+ get order(): number;
18
+ set order(value: number);
19
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubscribeObject = void 0;
4
+ const Pipe_1 = require("./Pipe");
5
+ const FunctionLibs_1 = require("./FunctionLibs");
6
+ class SubscribeObject extends Pipe_1.Pipe {
7
+ isMarkedForUnsubscribe = false;
8
+ observable;
9
+ listener;
10
+ errorHandler = (errorData, errorMessage) => {
11
+ console.log(`(Unit of SubscribeObject).send(${errorData}) ERROR:`, errorMessage);
12
+ };
13
+ _order = 0;
14
+ isPaused = false;
15
+ isPipe = false;
16
+ constructor(observable, isPipe) {
17
+ super();
18
+ this.observable = observable;
19
+ this.isPipe = !!isPipe;
20
+ }
21
+ subscribe(observer, errorHandler) {
22
+ this.listener = (0, FunctionLibs_1.getListener)(observer);
23
+ errorHandler && (this.errorHandler = errorHandler);
24
+ return this;
25
+ }
26
+ unsubscribe() {
27
+ if (!this.observable)
28
+ return;
29
+ this.observable.unSubscribe(this);
30
+ this.observable = null;
31
+ this.listener = null;
32
+ this.chainHandlers.length = 0;
33
+ }
34
+ send(value) {
35
+ try {
36
+ this.pipeData.payload = value;
37
+ this.pipeData.isBreakChain = false;
38
+ processValue(value, this);
39
+ }
40
+ catch (err) {
41
+ this.errorHandler(value, err);
42
+ }
43
+ }
44
+ resume() {
45
+ this.isPaused = false;
46
+ }
47
+ pause() {
48
+ this.isPaused = true;
49
+ }
50
+ get order() {
51
+ return this._order;
52
+ }
53
+ set order(value) {
54
+ this._order = value;
55
+ }
56
+ }
57
+ exports.SubscribeObject = SubscribeObject;
58
+ function processValue(value, subsObj) {
59
+ const listener = subsObj.listener;
60
+ if (!listener)
61
+ return subsObj.unsubscribe();
62
+ if (!subsObj.observable)
63
+ return subsObj.unsubscribe();
64
+ if (subsObj.isPaused)
65
+ return;
66
+ if (!subsObj.isPipe)
67
+ return listener(value);
68
+ for (let i = 0; i < subsObj.chainHandlers.length; i++) {
69
+ subsObj.pipeData.isNeedUnsubscribe = false;
70
+ subsObj.pipeData.isAvailable = false;
71
+ subsObj.chainHandlers[i]();
72
+ if (subsObj.pipeData.isNeedUnsubscribe)
73
+ return subsObj.unsubscribe();
74
+ if (!subsObj.pipeData.isAvailable)
75
+ return;
76
+ if (subsObj.pipeData.isBreakChain)
77
+ break;
78
+ }
79
+ return listener(subsObj.pipeData.payload);
80
+ }
@@ -1,23 +1,26 @@
1
+ import { SwitchCase } from "./Pipe";
1
2
  export type ICallback<T> = (value?: T) => any;
2
3
  export type IMarkedForUnsubscribe = {
3
4
  isMarkedForUnsubscribe: boolean;
4
5
  };
5
6
  export type IErrorCallback = (errorData: any, errorMessage: any) => void;
6
7
  export type ISubscribe<T> = {
7
- subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
8
+ subscribe(listener: IListener<T> | ISetObservableValue, errorHandler?: IErrorCallback): ISubscriptionLike | undefined;
8
9
  };
9
10
  export type IListener<T> = ICallback<T>;
10
11
  export type IDestroy = {
11
12
  destroy(): void;
12
13
  isDestroyed: boolean;
13
14
  };
14
- export type IOnceMarker = {
15
- isOnce: boolean;
16
- isFinished: boolean;
17
- };
18
15
  export type IOrder = {
19
16
  order: number;
20
17
  };
18
+ export type ISwitch<T> = {
19
+ switch(): SwitchCase<T>;
20
+ };
21
+ export type IOrderedSwitch<T> = {
22
+ switch(): SwitchCase<T>;
23
+ };
21
24
  export type IOnce<T> = {
22
25
  setOnce(): ISubscribe<T>;
23
26
  };
@@ -30,8 +33,8 @@ export type ISetObservableValue = {
30
33
  export type ISubscriptionLike = {
31
34
  unsubscribe(): void;
32
35
  };
33
- export type ISetup<T> = IUnsubscribeByNegative<T> & IUnsubscribeByPositive<T> & IEmitByNegative<T> & IEmitByPositive<T> & IEmitMatchCondition<T> & IOnce<T> & ISubscribe<T>;
34
- export type IOrderedSetup<T> = IOrderedUnsubscribeByNegative<T> & IOrderedUnsubscribeByPositive<T> & IOrderedEmitByNegative<T> & IOrderedEmitByPositive<T> & IOrderedEmitMatchCondition<T> & IOrderedOnce<T> & IOrderedSubscribe<T>;
36
+ export type ISetup<T> = IUnsubscribeByNegative<T> & IUnsubscribeByPositive<T> & IEmitByNegative<T> & IEmitByPositive<T> & IEmitMatchCondition<T> & IOnce<T> & ISwitch<T> & ISubscribe<T>;
37
+ export type IOrderedSetup<T> = IOrderedUnsubscribeByNegative<T> & IOrderedUnsubscribeByPositive<T> & IOrderedEmitByNegative<T> & IOrderedEmitByPositive<T> & IOrderedEmitMatchCondition<T> & IOrderedOnce<T> & IOrderedSwitch<T> & IOrderedSubscribe<T>;
35
38
  export type ISubscribeObject<T> = ISubscriptionLike & IPause & IOrder & ISend<T> & ISetup<T>;
36
39
  export type ISubscribeCounter = {
37
40
  size(): number;
@@ -56,38 +59,41 @@ export type IPause = {
56
59
  export type IObservablePipe<T> = {
57
60
  pipe(): ISetup<T> | undefined;
58
61
  };
62
+ export type IOrderedObservablePipe<T> = {
63
+ pipe(): ISetup<T> | undefined;
64
+ };
59
65
  export type ISend<T> = {
60
66
  send(value: T): void;
61
67
  };
62
68
  export type IUnsubscribeByNegative<T> = {
63
- unsubscribeByNegative(condition: ICallback<any>): ISubscribe<T>;
69
+ unsubscribeByNegative(condition: ICallback<any>): ISetup<T>;
64
70
  };
65
71
  export type IOrderedUnsubscribeByNegative<T> = {
66
- unsubscribeByNegative(condition: ICallback<any>): IOrderedSubscribe<T>;
72
+ unsubscribeByNegative(condition: ICallback<any>): IOrderedSetup<T>;
67
73
  };
68
74
  export type IUnsubscribeByPositive<T> = {
69
- unsubscribeByPositive(condition: ICallback<any>): ISubscribe<T>;
75
+ unsubscribeByPositive(condition: ICallback<any>): ISetup<T>;
70
76
  };
71
77
  export type IOrderedUnsubscribeByPositive<T> = {
72
- unsubscribeByPositive(condition: ICallback<any>): IOrderedSubscribe<T>;
78
+ unsubscribeByPositive(condition: ICallback<any>): IOrderedSetup<T>;
73
79
  };
74
80
  export type IEmitByNegative<T> = {
75
- emitByNegative(condition: ICallback<any>): ISubscribe<T>;
81
+ emitByNegative(condition: ICallback<any>): ISetup<T>;
76
82
  };
77
83
  export type IOrderedEmitByNegative<T> = {
78
- emitByNegative(condition: ICallback<any>): IOrderedSubscribe<T>;
84
+ emitByNegative(condition: ICallback<any>): IOrderedSetup<T>;
79
85
  };
80
86
  export type IEmitByPositive<T> = {
81
- emitByPositive(condition: ICallback<any>): ISubscribe<T>;
87
+ emitByPositive(condition: ICallback<any>): ISetup<T>;
82
88
  };
83
89
  export type IOrderedEmitByPositive<T> = {
84
- emitByPositive(condition: ICallback<any>): IOrderedSubscribe<T>;
90
+ emitByPositive(condition: ICallback<any>): IOrderedSetup<T>;
85
91
  };
86
92
  export type IEmitMatchCondition<T> = {
87
- emitMatch(condition: ICallback<any>): ISubscribe<T>;
93
+ emitMatch(condition: ICallback<any>): ISetup<T>;
88
94
  };
89
95
  export type IOrderedEmitMatchCondition<T> = {
90
- emitMatch(condition: ICallback<any>): IOrderedSubscribe<T>;
96
+ emitMatch(condition: ICallback<any>): IOrderedSetup<T>;
91
97
  };
92
98
  export type ICollector = IDestroy & ISubscribeCounter & {
93
99
  collect(...subscriptionLikeList: ISubscriptionLike[]): void;
@@ -97,12 +103,18 @@ export type ICollector = IDestroy & ISubscribeCounter & {
97
103
  export type IOrderedObservable = {
98
104
  sortByOrder(): boolean;
99
105
  };
100
- export type IOrdered<T> = IObserver<T> & IOrderedObservable;
106
+ export type IOrdered<T> = IObserver<T> & IOrderedObservable & IOrderedObservablePipe<T>;
101
107
  export type IOrderedSubscriptionLike = (ISubscriptionLike & IOrder);
102
108
  export type IOrderedSubscribe<T> = {
103
109
  subscribe(listener: IListener<T>, errorHandler?: IErrorCallback): IOrderedSubscriptionLike;
104
110
  };
105
- export type IGroup = ICollector & {
106
- name: string;
107
- order: number;
111
+ export type IPipePayload = {
112
+ isBreakChain: boolean;
113
+ isNeedUnsubscribe: boolean;
114
+ isAvailable: boolean;
115
+ payload: any;
116
+ };
117
+ export type IChainCallback = () => void;
118
+ export type IPipeCase<T> = {
119
+ case(condition: ICallback<any>): IPipeCase<T> & ISubscribe<T>;
108
120
  };