| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | "use strict";var root_1 = require('./root');var isArrayLike_1 = require('./isArrayLike');var isPromise_1 = require('./isPromise');var isObject_1 = require('./isObject');var Observable_1 = require('../Observable');var iterator_1 = require('../symbol/iterator');var InnerSubscriber_1 = require('../InnerSubscriber');var observable_1 = require('../symbol/observable');function subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {    var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);    if (destination.closed) {        return null;    }    if (result instanceof Observable_1.Observable) {        if (result._isScalar) {            destination.next(result.value);            destination.complete();            return null;        }        else {            destination.syncErrorThrowable = true;            return result.subscribe(destination);        }    }    else if (isArrayLike_1.isArrayLike(result)) {        for (var i = 0, len = result.length; i < len && !destination.closed; i++) {            destination.next(result[i]);        }        if (!destination.closed) {            destination.complete();        }    }    else if (isPromise_1.isPromise(result)) {        result.then(function (value) {            if (!destination.closed) {                destination.next(value);                destination.complete();            }        }, function (err) { return destination.error(err); })            .then(null, function (err) {            // Escaping the Promise trap: globally throw unhandled errors            root_1.root.setTimeout(function () { throw err; });        });        return destination;    }    else if (result && typeof result[iterator_1.iterator] === 'function') {        var iterator = result[iterator_1.iterator]();        do {            var item = iterator.next();            if (item.done) {                destination.complete();                break;            }            destination.next(item.value);            if (destination.closed) {                break;            }        } while (true);    }    else if (result && typeof result[observable_1.observable] === 'function') {        var obs = result[observable_1.observable]();        if (typeof obs.subscribe !== 'function') {            destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));        }        else {            return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));        }    }    else {        var value = isObject_1.isObject(result) ? 'an invalid object' : "'" + result + "'";        var msg = ("You provided " + value + " where a stream was expected.")            + ' You can provide an Observable, Promise, Array, or Iterable.';        destination.error(new TypeError(msg));    }    return null;}exports.subscribeToResult = subscribeToResult;//# sourceMappingURL=subscribeToResult.js.map
 |