react-obsidian 2.1.0 → 2.2.0

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
@@ -1,7 +1,7 @@
1
1
  [![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://vshymanskyy.github.io/StandWithUkraine)
2
2
 
3
3
  <p align="center">
4
- </br><img width="300px" src=".github/logo.svg"></br>
4
+ </br><img width="300px" src=".github/logo.svg"></br></br>
5
5
  <a href="https://npmjs.com/package/react-obsidian"><img src="https://img.shields.io/npm/v/react-obsidian.svg" alt="npm package"></a>
6
6
  <a href="https://www.npmjs.com/package/react-obsidian"><img src="https://img.shields.io/npm/dm/react-obsidian.svg" alt="NPM downloads"></a>
7
7
  <a href="https://github.com/wix-incubator/react-obsidian/actions/workflows/ci.yml"><img src="https://github.com/wix-incubator/react-obsidian/actions/workflows/ci.yml/badge.svg?branch=master" alt="build status"></a>
@@ -1,8 +1,9 @@
1
1
  import { Observable } from '../Observable';
2
- import { Mapper, MultiMapper, Observables, OnNext, Observable as IObservable } from '../types';
2
+ import { Mapper, MultiMapper, Observables, OnNext, Observable as IObservable, OnMultiNext } from '../types';
3
3
  export declare class MediatorObservable<T> extends Observable<T> {
4
4
  mapSource<Source, Result extends T>(source: Observable<Source>, mapNext: Mapper<Source, Result>): this;
5
5
  addSource<S>(source: IObservable<S>, onNext: OnNext<S>): this;
6
+ addSources<S1, S2, S3, S4, S5>(sources: Observables<S1, S2, S3, S4, S5>, onNext: OnMultiNext<S1, S2, S3, S4, S5>): this;
6
7
  mapSources<S1, S2, S3, S4, S5>(sources: Observables<S1, S2, S3, S4, S5>, mapNext: MultiMapper<T, S1, S2, S3, S4, S5>): this;
7
8
  }
8
9
  //# sourceMappingURL=MediatorObservable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,IAAI,WAAW,EAE1B,MAAM,UAAU,CAAC;AAElB,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ/F,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAQtD,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAsB9C"}
1
+ {"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,IAAI,WAAW,EAEzB,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/F,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAQtD,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAuBzC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAsB9C"}
@@ -6,8 +6,7 @@ const Observable_1 = require("../Observable");
6
6
  class MediatorObservable extends Observable_1.Observable {
7
7
  mapSource(source, mapNext) {
8
8
  this.addSource(source, (next) => {
9
- const mapped = mapNext(next, this.value);
10
- this.value = mapped;
9
+ this.value = mapNext(next, this.value);
11
10
  });
12
11
  return this;
13
12
  }
@@ -18,6 +17,26 @@ class MediatorObservable extends Observable_1.Observable {
18
17
  }
19
18
  return this;
20
19
  }
20
+ addSources(sources, onNext) {
21
+ const values = new Array(sources.length);
22
+ sources
23
+ .filter(notNull_1.notNull)
24
+ .forEach((source, index) => {
25
+ this.addSource(source, (next) => {
26
+ if (values[index] === next)
27
+ return;
28
+ if (values[index] === undefined) {
29
+ values[index] = next;
30
+ }
31
+ else {
32
+ values[index] = next;
33
+ onNext(values);
34
+ }
35
+ });
36
+ });
37
+ onNext(values);
38
+ return this;
39
+ }
21
40
  mapSources(sources, mapNext) {
22
41
  const values = new Array(sources.length);
23
42
  sources
@@ -1 +1 @@
1
- {"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,8CAA2C;AAU3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAA2B,MAA0B,EAAE,OAA+B;QAC7F,IAAI,CAAC,SAAS,CAAS,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAe,CAAW,CAAC;YAC7D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAI,MAAsB,EAAE,MAAiB;QACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAAwC,EACxC,OAA2C;QAE3C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAA6B,CAAC;QAErE,OAAO;aACJ,MAAM,CAAC,iBAAO,CAAC;aACf,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,MAA0B,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAM,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzCD,gDAyCC"}
1
+ {"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,8CAA2C;AAW3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAA2B,MAA0B,EAAE,OAA+B;QAC7F,IAAI,CAAC,SAAS,CAAS,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAe,CAAW,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAI,MAAsB,EAAE,MAAiB;QACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAAwC,EACxC,MAAuC;QAEvC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAA6B,CAAC;QAErE,OAAO;aACJ,MAAM,CAAC,iBAAO,CAAC;aACf,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,MAA0B,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACrB,MAAM,CAAC,MAAM,CAAC,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAAwC,EACxC,OAA2C;QAE3C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAA6B,CAAC;QAErE,OAAO;aACJ,MAAM,CAAC,iBAAO,CAAC;aACf,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,MAA0B,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAM,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjED,gDAiEC"}
@@ -1,4 +1,5 @@
1
1
  export type OnNext<T> = (value: T) => void | undefined;
2
+ export type OnMultiNext<S1, S2, S3, S4, S5> = ([S1, S2, S3, S4, S5]: Args<S1, S2, S3, S4, S5>) => void | undefined;
2
3
  export type Mapper<Other, Mine> = (next: Other, currentValue: Mine) => Mine extends void ? 'A map function must return a value. Check your map function and ensure it has a valid return statement.' : Mine;
3
4
  export type Unsubscribe = () => void;
4
5
  export interface Observable<T> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,GACtF,yGAAyG,GACzG,IAAI,CAAC;AACP,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC;AAEjG,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAClD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,YAAY,EAAE,IAAI,KACf,IAAI,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACxC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChD;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChE;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,CAAC;AAEnF,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACjC;IAAC,EAAE;IAAE,EAAE;CAAC,GACR;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GACZ;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GAChB;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEnH,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,GACtF,yGAAyG,GACzG,IAAI,CAAC;AACP,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC;AAEjG,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAClD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,YAAY,EAAE,IAAI,KACf,IAAI,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACxC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChD;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChE;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,CAAC;AAEnF,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACjC;IAAC,EAAE;IAAE,EAAE;CAAC,GACR;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GACZ;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GAChB;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "scripts": {
6
6
  "prepack": "npm run lint && tsc --project tsconfig.prod.json",
@@ -7,13 +7,13 @@ import {
7
7
  OnNext,
8
8
  Observable as IObservable,
9
9
  Args,
10
+ OnMultiNext,
10
11
  } from '../types';
11
12
 
12
13
  export class MediatorObservable<T> extends Observable<T> {
13
14
  mapSource<Source, Result extends T>(source: Observable<Source>, mapNext: Mapper<Source, Result>) {
14
15
  this.addSource<Source>(source, (next) => {
15
- const mapped = mapNext(next, this.value as Result) as Result;
16
- this.value = mapped;
16
+ this.value = mapNext(next, this.value as Result) as Result;
17
17
  });
18
18
  return this;
19
19
  }
@@ -26,6 +26,31 @@ export class MediatorObservable<T> extends Observable<T> {
26
26
  return this;
27
27
  }
28
28
 
29
+ addSources<S1, S2, S3, S4, S5>(
30
+ sources: Observables<S1, S2, S3, S4, S5>,
31
+ onNext: OnMultiNext<S1, S2, S3, S4, S5>,
32
+ ) {
33
+ const values = new Array(sources.length) as Args<S1, S2, S3, S4, S5>;
34
+
35
+ sources
36
+ .filter(notNull)
37
+ .forEach((source, index) => {
38
+ this.addSource(source as IObservable<any>, (next) => {
39
+ if (values[index] === next) return;
40
+
41
+ if (values[index] === undefined) {
42
+ values[index] = next;
43
+ } else {
44
+ values[index] = next;
45
+ onNext(values);
46
+ }
47
+ });
48
+ });
49
+
50
+ onNext(values);
51
+ return this;
52
+ }
53
+
29
54
  mapSources<S1, S2, S3, S4, S5>(
30
55
  sources: Observables<S1, S2, S3, S4, S5>,
31
56
  mapNext: MultiMapper<T, S1, S2, S3, S4, S5>,
@@ -1,5 +1,7 @@
1
1
  export type OnNext<T> = (value: T) => void | undefined; // OnNext callbacks should never return a value
2
2
 
3
+ export type OnMultiNext<S1, S2, S3, S4, S5> = ([S1, S2, S3, S4, S5]: Args<S1, S2, S3, S4, S5>) => void | undefined;
4
+
3
5
  export type Mapper<Other, Mine> = (next: Other, currentValue: Mine) => Mine extends void ?
4
6
  'A map function must return a value. Check your map function and ensure it has a valid return statement.' :
5
7
  Mine;