{"version":3,"file":"Observable.mjs","sourceRoot":"","sources":["../../src/Observable.ts"],"names":[],"mappings":"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","sourcesContent":["import ObservableShim, { ObservableObject, Subscribable, SubscriptionObserver } from '@dojo/shim/Observable';\nimport Promise from '@dojo/shim/Promise';\nimport { Iterable } from '@dojo/shim/iterator';\n\nfunction isSubscribable(object: any): object is Subscribable<any> {\n\treturn object && object.subscribe !== undefined;\n}\n\nexport default class Observable<T> extends ObservableShim<T> {\n\tstatic of<T>(...items: T[]): Observable<T> {\n\t\treturn <Observable<T>>super.of(...items);\n\t}\n\n\tstatic from<T>(item: Iterable<T> | ArrayLike<T> | ObservableObject): Observable<T> {\n\t\treturn <Observable<T>>super.from(item);\n\t}\n\n\tstatic defer<T>(deferFunction: () => Subscribable<T>): Observable<T> {\n\t\treturn new Observable<T>((observer) => {\n\t\t\tconst trueObservable = deferFunction();\n\n\t\t\treturn trueObservable.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\treturn observer.next(value);\n\t\t\t\t},\n\t\t\t\terror(errorValue?: any) {\n\t\t\t\t\treturn observer.error(errorValue);\n\t\t\t\t},\n\t\t\t\tcomplete(completeValue?: any) {\n\t\t\t\t\tobserver.complete(completeValue);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\ttoPromise(): Promise<T> {\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\tthis.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\tresolve(value);\n\t\t\t\t},\n\t\t\t\terror(error: any) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tmap<U>(mapFunction: (x: T) => U): Observable<U> {\n\t\tconst self = this;\n\n\t\tif (typeof mapFunction !== 'function') {\n\t\t\tthrow new TypeError('Map parameter must be a function');\n\t\t}\n\n\t\treturn new Observable<U>((observer: SubscriptionObserver<U>) => {\n\t\t\tself.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result: U = mapFunction(value);\n\t\t\t\t\t\treturn observer.next(result);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn observer.error(e);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror(errorValue?: any) {\n\t\t\t\t\treturn observer.error(errorValue);\n\t\t\t\t},\n\t\t\t\tcomplete(completeValue?: any) {\n\t\t\t\t\treturn observer.complete(completeValue);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfilter(filterFunction: (x: T) => boolean): Observable<T> {\n\t\tconst self = this;\n\n\t\tif (typeof filterFunction !== 'function') {\n\t\t\tthrow new TypeError('Filter argument must be a function');\n\t\t}\n\n\t\treturn new Observable<T>((observer: SubscriptionObserver<T>) => {\n\t\t\tself.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (filterFunction(value)) {\n\t\t\t\t\t\t\treturn observer.next(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn observer.error(e);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror(errorValue?: any) {\n\t\t\t\t\treturn observer.error(errorValue);\n\t\t\t\t},\n\t\t\t\tcomplete(completeValue?: any) {\n\t\t\t\t\treturn observer.complete(completeValue);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\ttoArray(): Observable<T[]> {\n\t\tconst self = this;\n\n\t\treturn new Observable<T[]>((observer) => {\n\t\t\tconst values: T[] = [];\n\n\t\t\tself.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\tvalues.push(value);\n\t\t\t\t},\n\t\t\t\terror(errorValue?: any) {\n\t\t\t\t\treturn observer.error(errorValue);\n\t\t\t\t},\n\t\t\t\tcomplete(completeValue?: any) {\n\t\t\t\t\tobserver.next(values);\n\t\t\t\t\tobserver.complete(completeValue);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tmergeAll(concurrent: number): Observable<any> {\n\t\tconst self = this;\n\n\t\treturn new Observable<Observable<any>>((observer) => {\n\t\t\tlet active: any[] = [];\n\t\t\tlet queue: any[] = [];\n\n\t\t\tfunction checkForComplete() {\n\t\t\t\tif (active.length === 0 && queue.length === 0) {\n\t\t\t\t\tobserver.complete();\n\t\t\t\t} else if (queue.length > 0 && active.length < concurrent) {\n\t\t\t\t\tconst item = queue.shift();\n\n\t\t\t\t\tif (isSubscribable(item)) {\n\t\t\t\t\t\tconst itemIndex = active.length;\n\t\t\t\t\t\tactive.push(item);\n\n\t\t\t\t\t\titem.subscribe({\n\t\t\t\t\t\t\tnext(value: any) {\n\t\t\t\t\t\t\t\tobserver.next(value);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcomplete() {\n\t\t\t\t\t\t\t\tactive.splice(itemIndex, 1);\n\t\t\t\t\t\t\t\tcheckForComplete();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobserver.next(item);\n\t\t\t\t\t\tcheckForComplete();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.subscribe({\n\t\t\t\tnext(value: T) {\n\t\t\t\t\tqueue.push(value);\n\t\t\t\t},\n\t\t\t\tcomplete() {\n\t\t\t\t\tcheckForComplete();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\n// for convienence, re-export some interfaces from shim\nexport { Observable, Subscribable, SubscriptionObserver as Observer };\n"]}