rxjs-rails 0.0.1 → 2.2.13
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +38 -1
- data/lib/rxjs/rails/version.rb +1 -2
- data/vendor/assets/javascripts/rx.async.compat.js +87 -66
- data/vendor/assets/javascripts/rx.async.compat.min.js +1 -1
- data/vendor/assets/javascripts/rx.async.js +87 -66
- data/vendor/assets/javascripts/rx.async.min.js +1 -1
- data/vendor/assets/javascripts/rx.binding.js +1 -1
- data/vendor/assets/javascripts/rx.binding.min.js +1 -1
- data/vendor/assets/javascripts/rx.compat.js +86 -62
- data/vendor/assets/javascripts/rx.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.lite.compat.js +171 -126
- data/vendor/assets/javascripts/rx.lite.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.lite.js +165 -120
- data/vendor/assets/javascripts/rx.lite.min.js +2 -2
- data/vendor/assets/javascripts/rx.min.js +2 -2
- data/vendor/assets/javascripts/rx.node.js +1 -1
- data/vendor/assets/javascripts/rx.testing.js +5 -3
- data/vendor/assets/javascripts/rx.testing.min.js +1 -1
- metadata +11 -9
| @@ -42,16 +42,6 @@ | |
| 42 42 | 
             
                    }
         | 
| 43 43 | 
             
                }
         | 
| 44 44 |  | 
| 45 | 
            -
                /** Used to determine if values are of the language type Object */
         | 
| 46 | 
            -
                var objectTypes = {
         | 
| 47 | 
            -
                    'boolean': false,
         | 
| 48 | 
            -
                    'function': true,
         | 
| 49 | 
            -
                    'object': true,
         | 
| 50 | 
            -
                    'number': false,
         | 
| 51 | 
            -
                    'string': false,
         | 
| 52 | 
            -
                    'undefined': false
         | 
| 53 | 
            -
                };
         | 
| 54 | 
            -
             | 
| 55 45 | 
             
                /** `Object#toString` result shortcuts */
         | 
| 56 46 | 
             
                var argsClass = '[object Arguments]',
         | 
| 57 47 | 
             
                    arrayClass = '[object Array]',
         | 
| @@ -319,13 +309,13 @@ | |
| 319 309 | 
             
                if (!Array.prototype.every) {
         | 
| 320 310 | 
             
                    Array.prototype.every = function every(fun /*, thisp */) {
         | 
| 321 311 | 
             
                        var object = Object(this),
         | 
| 322 | 
            -
                            self = splitString && {}.toString.call(this) ==  | 
| 312 | 
            +
                            self = splitString && {}.toString.call(this) == stringClass ?
         | 
| 323 313 | 
             
                                this.split("") :
         | 
| 324 314 | 
             
                                object,
         | 
| 325 315 | 
             
                            length = self.length >>> 0,
         | 
| 326 316 | 
             
                            thisp = arguments[1];
         | 
| 327 317 |  | 
| 328 | 
            -
                        if ({}.toString.call(fun) !=  | 
| 318 | 
            +
                        if ({}.toString.call(fun) != funcClass) {
         | 
| 329 319 | 
             
                            throw new TypeError(fun + " is not a function");
         | 
| 330 320 | 
             
                        }
         | 
| 331 321 |  | 
| @@ -341,14 +331,14 @@ | |
| 341 331 | 
             
                if (!Array.prototype.map) {
         | 
| 342 332 | 
             
                    Array.prototype.map = function map(fun /*, thisp*/) {
         | 
| 343 333 | 
             
                        var object = Object(this),
         | 
| 344 | 
            -
                            self = splitString && {}.toString.call(this) ==  | 
| 334 | 
            +
                            self = splitString && {}.toString.call(this) == stringClass ?
         | 
| 345 335 | 
             
                                this.split("") :
         | 
| 346 336 | 
             
                                object,
         | 
| 347 337 | 
             
                            length = self.length >>> 0,
         | 
| 348 338 | 
             
                            result = Array(length),
         | 
| 349 339 | 
             
                            thisp = arguments[1];
         | 
| 350 340 |  | 
| 351 | 
            -
                        if ({}.toString.call(fun) !=  | 
| 341 | 
            +
                        if ({}.toString.call(fun) != funcClass) {
         | 
| 352 342 | 
             
                            throw new TypeError(fun + " is not a function");
         | 
| 353 343 | 
             
                        }
         | 
| 354 344 |  | 
| @@ -375,10 +365,10 @@ | |
| 375 365 |  | 
| 376 366 | 
             
                if (!Array.isArray) {
         | 
| 377 367 | 
             
                    Array.isArray = function (arg) {
         | 
| 378 | 
            -
                        return Object.prototype.toString.call(arg) ==  | 
| 368 | 
            +
                        return Object.prototype.toString.call(arg) == arrayClass;
         | 
| 379 369 | 
             
                    };
         | 
| 380 370 | 
             
                }
         | 
| 381 | 
            -
             | 
| 371 | 
            +
             | 
| 382 372 | 
             
                if (!Array.prototype.indexOf) {
         | 
| 383 373 | 
             
                    Array.prototype.indexOf = function indexOf(searchElement) {
         | 
| 384 374 | 
             
                        var t = Object(this);
         | 
| @@ -1074,44 +1064,38 @@ | |
| 1074 1064 | 
             
                var currentThreadScheduler = Scheduler.currentThread = (function () {
         | 
| 1075 1065 | 
             
                    var queue;
         | 
| 1076 1066 |  | 
| 1077 | 
            -
                    function  | 
| 1078 | 
            -
                        queue = new PriorityQueue(4);
         | 
| 1079 | 
            -
                    }
         | 
| 1080 | 
            -
             | 
| 1081 | 
            -
                    Trampoline.prototype.dispose = function () {
         | 
| 1082 | 
            -
                        queue = null;
         | 
| 1083 | 
            -
                    };
         | 
| 1084 | 
            -
             | 
| 1085 | 
            -
                    Trampoline.prototype.run = function () {
         | 
| 1067 | 
            +
                    function runTrampoline (q) {
         | 
| 1086 1068 | 
             
                        var item;
         | 
| 1087 | 
            -
                        while ( | 
| 1088 | 
            -
                            item =  | 
| 1069 | 
            +
                        while (q.length > 0) {
         | 
| 1070 | 
            +
                            item = q.dequeue();
         | 
| 1089 1071 | 
             
                            if (!item.isCancelled()) {
         | 
| 1090 | 
            -
                                 | 
| 1072 | 
            +
                                // Note, do not schedule blocking work!
         | 
| 1073 | 
            +
                                while (item.dueTime - Scheduler.now() > 0) {
         | 
| 1074 | 
            +
                                }
         | 
| 1091 1075 | 
             
                                if (!item.isCancelled()) {
         | 
| 1092 1076 | 
             
                                    item.invoke();
         | 
| 1093 1077 | 
             
                                }
         | 
| 1094 1078 | 
             
                            }
         | 
| 1095 | 
            -
                        }
         | 
| 1096 | 
            -
                    } | 
| 1079 | 
            +
                        }            
         | 
| 1080 | 
            +
                    }
         | 
| 1097 1081 |  | 
| 1098 1082 | 
             
                    function scheduleNow(state, action) {
         | 
| 1099 1083 | 
             
                        return this.scheduleWithRelativeAndState(state, 0, action);
         | 
| 1100 1084 | 
             
                    }
         | 
| 1101 1085 |  | 
| 1102 1086 | 
             
                    function scheduleRelative(state, dueTime, action) {
         | 
| 1103 | 
            -
                        var dt = this.now() +  | 
| 1087 | 
            +
                        var dt = this.now() + Scheduler.normalize(dueTime),
         | 
| 1104 1088 | 
             
                                si = new ScheduledItem(this, state, action, dt),
         | 
| 1105 1089 | 
             
                                t;
         | 
| 1106 1090 | 
             
                        if (!queue) {
         | 
| 1107 | 
            -
                             | 
| 1091 | 
            +
                            queue = new PriorityQueue(4);
         | 
| 1092 | 
            +
                            queue.enqueue(si);
         | 
| 1108 1093 | 
             
                            try {
         | 
| 1109 | 
            -
                                queue | 
| 1110 | 
            -
                                t.run();
         | 
| 1094 | 
            +
                                runTrampoline(queue);
         | 
| 1111 1095 | 
             
                            } catch (e) { 
         | 
| 1112 1096 | 
             
                                throw e;
         | 
| 1113 1097 | 
             
                            } finally {
         | 
| 1114 | 
            -
                                 | 
| 1098 | 
            +
                                queue = null;
         | 
| 1115 1099 | 
             
                            }
         | 
| 1116 1100 | 
             
                        } else {
         | 
| 1117 1101 | 
             
                            queue.enqueue(si);
         | 
| @@ -1166,19 +1150,22 @@ | |
| 1166 1150 | 
             
                }());
         | 
| 1167 1151 |  | 
| 1168 1152 |  | 
| 1169 | 
            -
                var reNative = RegExp('^' +
         | 
| 1170 | 
            -
                  String(toString)
         | 
| 1171 | 
            -
                    .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
         | 
| 1172 | 
            -
                    .replace(/toString| for [^\]]+/g, '.*?') + '$'
         | 
| 1173 | 
            -
                );
         | 
| 1174 | 
            -
             | 
| 1175 | 
            -
                var setImmediate = typeof (setImmediate = freeGlobal && moduleExports && freeGlobal.setImmediate) == 'function' &&
         | 
| 1176 | 
            -
                    !reNative.test(setImmediate) && setImmediate,
         | 
| 1177 | 
            -
                    clearImmediate = typeof (clearImmediate = freeGlobal && moduleExports && freeGlobal.clearImmediate) == 'function' &&
         | 
| 1178 | 
            -
                    !reNative.test(clearImmediate) && clearImmediate;
         | 
| 1179 | 
            -
             | 
| 1180 1153 | 
             
                var scheduleMethod, clearMethod = noop;
         | 
| 1181 1154 | 
             
                (function () {
         | 
| 1155 | 
            +
             | 
| 1156 | 
            +
                    var reNative = RegExp('^' +
         | 
| 1157 | 
            +
                      String(toString)
         | 
| 1158 | 
            +
                        .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
         | 
| 1159 | 
            +
                        .replace(/toString| for [^\]]+/g, '.*?') + '$'
         | 
| 1160 | 
            +
                    );
         | 
| 1161 | 
            +
             | 
| 1162 | 
            +
                    var setImmediate = typeof (setImmediate = freeGlobal && moduleExports && freeGlobal.setImmediate) == 'function' &&
         | 
| 1163 | 
            +
                        !reNative.test(setImmediate) && setImmediate,
         | 
| 1164 | 
            +
                        clearImmediate = typeof (clearImmediate = freeGlobal && moduleExports && freeGlobal.clearImmediate) == 'function' &&
         | 
| 1165 | 
            +
                        !reNative.test(clearImmediate) && clearImmediate;
         | 
| 1166 | 
            +
             | 
| 1167 | 
            +
                    var BrowserMutationObserver = root.MutationObserver || root.WebKitMutationObserver;
         | 
| 1168 | 
            +
             | 
| 1182 1169 | 
             
                    function postMessageSupported () {
         | 
| 1183 1170 | 
             
                        // Ensure not in a worker
         | 
| 1184 1171 | 
             
                        if (!root.postMessage || root.importScripts) { return false; }
         | 
| @@ -1192,12 +1179,44 @@ | |
| 1192 1179 | 
             
                        return isAsync;
         | 
| 1193 1180 | 
             
                    }
         | 
| 1194 1181 |  | 
| 1195 | 
            -
                    //  | 
| 1196 | 
            -
                    if ( | 
| 1197 | 
            -
             | 
| 1198 | 
            -
                         | 
| 1182 | 
            +
                    // Use in order, MutationObserver, nextTick, setImmediate, postMessage, MessageChannel, script readystatechanged, setTimeout
         | 
| 1183 | 
            +
                    if (!!BrowserMutationObserver) {
         | 
| 1184 | 
            +
             | 
| 1185 | 
            +
                        var mutationQueue = {}, mutationId = 0;
         | 
| 1186 | 
            +
             | 
| 1187 | 
            +
                        function drainQueue (mutations) {
         | 
| 1188 | 
            +
                            for (var i = 0, len = mutations.length; i < len; i++) {
         | 
| 1189 | 
            +
                                var id = mutations[i].target.getAttribute('drainQueue');
         | 
| 1190 | 
            +
                                mutationQueue[id]();
         | 
| 1191 | 
            +
                                delete mutationQueue[id];
         | 
| 1192 | 
            +
                            }
         | 
| 1193 | 
            +
                        }
         | 
| 1194 | 
            +
             | 
| 1195 | 
            +
                        var observer = new BrowserMutationObserver(drainQueue),
         | 
| 1196 | 
            +
                            elem = document.createElement('div');
         | 
| 1197 | 
            +
                        observer.observe(elem, { attributes: true });
         | 
| 1198 | 
            +
             | 
| 1199 | 
            +
                        root.addEventListener('unload', function () {
         | 
| 1200 | 
            +
                            observer.disconnect();
         | 
| 1201 | 
            +
                            observer = null;
         | 
| 1202 | 
            +
                        });
         | 
| 1203 | 
            +
             | 
| 1204 | 
            +
                        scheduleMethod = function (action) {
         | 
| 1205 | 
            +
                            var id = mutationId++;
         | 
| 1206 | 
            +
                            mutationQueue[id] = action;
         | 
| 1207 | 
            +
                            elem.setAttribute('drainQueue', id);
         | 
| 1208 | 
            +
                            return id;                
         | 
| 1209 | 
            +
                        };
         | 
| 1210 | 
            +
             | 
| 1211 | 
            +
                        clearMethod = function (id) {
         | 
| 1212 | 
            +
                            delete mutationQueue[id];
         | 
| 1213 | 
            +
                        }
         | 
| 1214 | 
            +
             | 
| 1199 1215 | 
             
                    } else if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
         | 
| 1200 1216 | 
             
                        scheduleMethod = process.nextTick;
         | 
| 1217 | 
            +
                    } else if (typeof setImmediate === 'function') {
         | 
| 1218 | 
            +
                        scheduleMethod = setImmediate;
         | 
| 1219 | 
            +
                        clearMethod = clearImmediate;
         | 
| 1201 1220 | 
             
                    } else if (postMessageSupported()) {
         | 
| 1202 1221 | 
             
                        var MSG_PREFIX = 'ms.rx.schedule' + Math.random(),
         | 
| 1203 1222 | 
             
                            tasks = {},
         | 
| @@ -2610,7 +2629,7 @@ | |
| 2610 2629 | 
             
                 * @returns {Observable} An observable sequence containing lists of elements at corresponding indexes.
         | 
| 2611 2630 | 
             
                 */
         | 
| 2612 2631 | 
             
                Observable.zipArray = function () {
         | 
| 2613 | 
            -
                    var sources =  | 
| 2632 | 
            +
                    var sources = argsOrArray(arguments, 0);
         | 
| 2614 2633 | 
             
                    return new AnonymousObservable(function (observer) {
         | 
| 2615 2634 | 
             
                        var n = sources.length,
         | 
| 2616 2635 | 
             
                          queues = arrayInitialize(n, function () { return []; }),
         | 
| @@ -3225,37 +3244,36 @@ | |
| 3225 3244 | 
             
                 * @returns {Function} A function, when executed with the required parameters minus the callback, produces an Observable sequence with a single value of the arguments to the callback as an array.
         | 
| 3226 3245 | 
             
                 */
         | 
| 3227 3246 | 
             
                Observable.fromCallback = function (func, scheduler, context, selector) {
         | 
| 3228 | 
            -
                    scheduler || (scheduler =  | 
| 3247 | 
            +
                    scheduler || (scheduler = immediateScheduler);
         | 
| 3229 3248 | 
             
                    return function () {
         | 
| 3230 | 
            -
                        var args = slice.call(arguments, 0) | 
| 3231 | 
            -
                            subject = new AsyncSubject();
         | 
| 3249 | 
            +
                        var args = slice.call(arguments, 0);
         | 
| 3232 3250 |  | 
| 3233 | 
            -
                         | 
| 3234 | 
            -
                            function  | 
| 3235 | 
            -
                                 | 
| 3236 | 
            -
             | 
| 3237 | 
            -
             | 
| 3238 | 
            -
                                     | 
| 3239 | 
            -
                                         | 
| 3240 | 
            -
             | 
| 3241 | 
            -
                                         | 
| 3242 | 
            -
             | 
| 3243 | 
            -
             | 
| 3244 | 
            -
             | 
| 3245 | 
            -
                                     | 
| 3246 | 
            -
                                        results  | 
| 3251 | 
            +
                        return new AnonymousObservable(function (observer) {
         | 
| 3252 | 
            +
                            return scheduler.schedule(function () {
         | 
| 3253 | 
            +
                                function handler(e) {
         | 
| 3254 | 
            +
                                    var results = e;
         | 
| 3255 | 
            +
                                    
         | 
| 3256 | 
            +
                                    if (selector) {
         | 
| 3257 | 
            +
                                        try {
         | 
| 3258 | 
            +
                                            results = selector(arguments);
         | 
| 3259 | 
            +
                                        } catch (err) {
         | 
| 3260 | 
            +
                                            observer.onError(err);
         | 
| 3261 | 
            +
                                            return;
         | 
| 3262 | 
            +
                                        }
         | 
| 3263 | 
            +
                                    } else {
         | 
| 3264 | 
            +
                                        if (results.length === 1) {
         | 
| 3265 | 
            +
                                            results = results[0];
         | 
| 3266 | 
            +
                                        }
         | 
| 3247 3267 | 
             
                                    }
         | 
| 3248 | 
            -
                                }
         | 
| 3249 3268 |  | 
| 3250 | 
            -
             | 
| 3251 | 
            -
             | 
| 3252 | 
            -
             | 
| 3269 | 
            +
                                    observer.onNext(results);
         | 
| 3270 | 
            +
                                    observer.onCompleted();
         | 
| 3271 | 
            +
                                }
         | 
| 3253 3272 |  | 
| 3254 | 
            -
             | 
| 3255 | 
            -
             | 
| 3273 | 
            +
                                args.push(handler);
         | 
| 3274 | 
            +
                                func.apply(context, args);
         | 
| 3275 | 
            +
                            });
         | 
| 3256 3276 | 
             
                        });
         | 
| 3257 | 
            -
             | 
| 3258 | 
            -
                        return subject.asObservable();
         | 
| 3259 3277 | 
             
                    };
         | 
| 3260 3278 | 
             
                };
         | 
| 3261 3279 |  | 
| @@ -3268,42 +3286,42 @@ | |
| 3268 3286 | 
             
                 * @returns {Function} An async function which when applied, returns an observable sequence with the callback arguments as an array.
         | 
| 3269 3287 | 
             
                 */
         | 
| 3270 3288 | 
             
                Observable.fromNodeCallback = function (func, scheduler, context, selector) {
         | 
| 3271 | 
            -
                    scheduler || (scheduler =  | 
| 3289 | 
            +
                    scheduler || (scheduler = immediateScheduler);
         | 
| 3272 3290 | 
             
                    return function () {
         | 
| 3273 | 
            -
                        var args = slice.call(arguments, 0) | 
| 3274 | 
            -
                            subject = new AsyncSubject();
         | 
| 3275 | 
            -
             | 
| 3276 | 
            -
                        scheduler.schedule(function () {
         | 
| 3277 | 
            -
                            function handler(err) {
         | 
| 3278 | 
            -
                                if (err) {
         | 
| 3279 | 
            -
                                    subject.onError(err);
         | 
| 3280 | 
            -
                                    return;
         | 
| 3281 | 
            -
                                }
         | 
| 3291 | 
            +
                        var args = slice.call(arguments, 0);
         | 
| 3282 3292 |  | 
| 3283 | 
            -
             | 
| 3293 | 
            +
                        return new AnonymousObservable(function (observer) {
         | 
| 3294 | 
            +
                            return scheduler.schedule(function () {
         | 
| 3284 3295 |  | 
| 3285 | 
            -
                                 | 
| 3286 | 
            -
                                     | 
| 3287 | 
            -
                                         | 
| 3288 | 
            -
                                    } catch (e) {
         | 
| 3289 | 
            -
                                        subject.onError(e);
         | 
| 3296 | 
            +
                                function handler(err) {
         | 
| 3297 | 
            +
                                    if (err) {
         | 
| 3298 | 
            +
                                        observer.onError(err);
         | 
| 3290 3299 | 
             
                                        return;
         | 
| 3291 3300 | 
             
                                    }
         | 
| 3292 | 
            -
             | 
| 3293 | 
            -
                                     | 
| 3294 | 
            -
             | 
| 3301 | 
            +
             | 
| 3302 | 
            +
                                    var results = slice.call(arguments, 1);
         | 
| 3303 | 
            +
                                    
         | 
| 3304 | 
            +
                                    if (selector) {
         | 
| 3305 | 
            +
                                        try {
         | 
| 3306 | 
            +
                                            results = selector(results);
         | 
| 3307 | 
            +
                                        } catch (e) {
         | 
| 3308 | 
            +
                                            observer.onError(e);
         | 
| 3309 | 
            +
                                            return;
         | 
| 3310 | 
            +
                                        }
         | 
| 3311 | 
            +
                                    } else {
         | 
| 3312 | 
            +
                                        if (results.length === 1) {
         | 
| 3313 | 
            +
                                            results = results[0];
         | 
| 3314 | 
            +
                                        }
         | 
| 3295 3315 | 
             
                                    }
         | 
| 3296 | 
            -
                                }
         | 
| 3297 3316 |  | 
| 3298 | 
            -
             | 
| 3299 | 
            -
             | 
| 3300 | 
            -
             | 
| 3317 | 
            +
                                    observer.onNext(results);
         | 
| 3318 | 
            +
                                    observer.onCompleted();
         | 
| 3319 | 
            +
                                }
         | 
| 3301 3320 |  | 
| 3302 | 
            -
             | 
| 3303 | 
            -
             | 
| 3321 | 
            +
                                args.push(handler);
         | 
| 3322 | 
            +
                                func.apply(context, args);
         | 
| 3323 | 
            +
                            });
         | 
| 3304 3324 | 
             
                        });
         | 
| 3305 | 
            -
             | 
| 3306 | 
            -
                        return subject.asObservable();
         | 
| 3307 3325 | 
             
                    };
         | 
| 3308 3326 | 
             
                };
         | 
| 3309 3327 |  | 
| @@ -3476,18 +3494,40 @@ | |
| 3476 3494 | 
             
                 * @returns {Observable} An Observable sequence which wraps the existing promise success and failure.
         | 
| 3477 3495 | 
             
                 */
         | 
| 3478 3496 | 
             
                Observable.fromPromise = function (promise) {
         | 
| 3479 | 
            -
                     | 
| 3480 | 
            -
             | 
| 3481 | 
            -
             | 
| 3482 | 
            -
             | 
| 3483 | 
            -
             | 
| 3484 | 
            -
                             | 
| 3485 | 
            -
             | 
| 3486 | 
            -
             | 
| 3487 | 
            -
             | 
| 3497 | 
            +
                    return new AnonymousObservable(function (observer) {
         | 
| 3498 | 
            +
                        promise.then(
         | 
| 3499 | 
            +
                            function (value) {
         | 
| 3500 | 
            +
                                observer.onNext(value);
         | 
| 3501 | 
            +
                                observer.onCompleted();
         | 
| 3502 | 
            +
                            }, 
         | 
| 3503 | 
            +
                            function (reason) {
         | 
| 3504 | 
            +
                               observer.onError(reason);
         | 
| 3505 | 
            +
                            });
         | 
| 3506 | 
            +
                    });
         | 
| 3507 | 
            +
                };
         | 
| 3508 | 
            +
                /*
         | 
| 3509 | 
            +
                 * Converts an existing observable sequence to an ES6 Compatible Promise
         | 
| 3510 | 
            +
                 * @example
         | 
| 3511 | 
            +
                 * var promise = Rx.Observable.return(42).toPromise(RSVP.Promise);
         | 
| 3512 | 
            +
                 * @param {Function} The constructor of the promise
         | 
| 3513 | 
            +
                 * @returns {Promise} An ES6 compatible promise with the last value from the observable sequence.
         | 
| 3514 | 
            +
                 */
         | 
| 3515 | 
            +
                observableProto.toPromise = function (promiseCtor) {
         | 
| 3516 | 
            +
                    var source = this;
         | 
| 3517 | 
            +
                    return new promiseCtor(function (resolve, reject) {
         | 
| 3518 | 
            +
                        // No cancellation can be done
         | 
| 3519 | 
            +
                        var value, hasValue = false;
         | 
| 3520 | 
            +
                        source.subscribe(function (v) {
         | 
| 3521 | 
            +
                            value = v;
         | 
| 3522 | 
            +
                            hasValue = true;
         | 
| 3523 | 
            +
                        }, function (err) {
         | 
| 3524 | 
            +
                            reject(err);
         | 
| 3525 | 
            +
                        }, function () {
         | 
| 3526 | 
            +
                            if (hasValue) {
         | 
| 3527 | 
            +
                                resolve(value);
         | 
| 3528 | 
            +
                            }
         | 
| 3488 3529 | 
             
                        });
         | 
| 3489 | 
            -
             | 
| 3490 | 
            -
                    return subject.asObservable();
         | 
| 3530 | 
            +
                    });
         | 
| 3491 3531 | 
             
                };
         | 
| 3492 3532 | 
             
                /**
         | 
| 3493 3533 | 
             
                 * Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function. Each
         | 
| @@ -3646,7 +3686,7 @@ | |
| 3646 3686 | 
             
                };
         | 
| 3647 3687 |  | 
| 3648 3688 | 
             
                /** @private */
         | 
| 3649 | 
            -
                var ConnectableObservable = (function (_super) {
         | 
| 3689 | 
            +
                var ConnectableObservable = Rx.ConnectableObservable = (function (_super) {
         | 
| 3650 3690 | 
             
                    inherits(ConnectableObservable, _super);
         | 
| 3651 3691 |  | 
| 3652 3692 | 
             
                    /**
         | 
| @@ -4748,13 +4788,16 @@ | |
| 4748 4788 |  | 
| 4749 4789 | 
             
                    function subscribe(observer) {
         | 
| 4750 4790 | 
             
                        checkDisposed.call(this);
         | 
| 4791 | 
            +
                        
         | 
| 4751 4792 | 
             
                        if (!this.isStopped) {
         | 
| 4752 4793 | 
             
                            this.observers.push(observer);
         | 
| 4753 4794 | 
             
                            return new InnerSubscription(this, observer);
         | 
| 4754 4795 | 
             
                        }
         | 
| 4755 | 
            -
             | 
| 4756 | 
            -
                        var  | 
| 4757 | 
            -
             | 
| 4796 | 
            +
             | 
| 4797 | 
            +
                        var ex = this.exception,
         | 
| 4798 | 
            +
                            hv = this.hasValue,
         | 
| 4799 | 
            +
                            v = this.value;
         | 
| 4800 | 
            +
             | 
| 4758 4801 | 
             
                        if (ex) {
         | 
| 4759 4802 | 
             
                            observer.onError(ex);
         | 
| 4760 4803 | 
             
                        } else if (hv) {
         | 
| @@ -4763,6 +4806,7 @@ | |
| 4763 4806 | 
             
                        } else {
         | 
| 4764 4807 | 
             
                            observer.onCompleted();
         | 
| 4765 4808 | 
             
                        }
         | 
| 4809 | 
            +
             | 
| 4766 4810 | 
             
                        return disposableEmpty;
         | 
| 4767 4811 | 
             
                    }
         | 
| 4768 4812 |  | 
| @@ -4775,11 +4819,11 @@ | |
| 4775 4819 | 
             
                    function AsyncSubject() {
         | 
| 4776 4820 | 
             
                        _super.call(this, subscribe);
         | 
| 4777 4821 |  | 
| 4778 | 
            -
                        this.isDisposed = false | 
| 4779 | 
            -
                        this.isStopped = false | 
| 4780 | 
            -
                        this.value = null | 
| 4781 | 
            -
                        this.hasValue = false | 
| 4782 | 
            -
                        this.observers = [] | 
| 4822 | 
            +
                        this.isDisposed = false;
         | 
| 4823 | 
            +
                        this.isStopped = false;
         | 
| 4824 | 
            +
                        this.value = null;
         | 
| 4825 | 
            +
                        this.hasValue = false;
         | 
| 4826 | 
            +
                        this.observers = [];
         | 
| 4783 4827 | 
             
                        this.exception = null;
         | 
| 4784 4828 | 
             
                    }
         | 
| 4785 4829 |  | 
| @@ -4789,6 +4833,7 @@ | |
| 4789 4833 | 
             
                         * @returns {Boolean} Indicates whether the subject has observers subscribed to it.
         | 
| 4790 4834 | 
             
                         */         
         | 
| 4791 4835 | 
             
                        hasObservers: function () {
         | 
| 4836 | 
            +
                            checkDisposed.call(this);
         | 
| 4792 4837 | 
             
                            return this.observers.length > 0;
         | 
| 4793 4838 | 
             
                        },
         | 
| 4794 4839 | 
             
                        /**
         | 
| @@ -4798,10 +4843,10 @@ | |
| 4798 4843 | 
             
                            var o, i, len;
         | 
| 4799 4844 | 
             
                            checkDisposed.call(this);
         | 
| 4800 4845 | 
             
                            if (!this.isStopped) {
         | 
| 4801 | 
            -
                                var os = this.observers.slice(0);
         | 
| 4802 4846 | 
             
                                this.isStopped = true;
         | 
| 4803 | 
            -
                                var  | 
| 4804 | 
            -
             | 
| 4847 | 
            +
                                var os = this.observers.slice(0),
         | 
| 4848 | 
            +
                                    v = this.value,
         | 
| 4849 | 
            +
                                    hv = this.hasValue;
         | 
| 4805 4850 |  | 
| 4806 4851 | 
             
                                if (hv) {
         | 
| 4807 4852 | 
             
                                    for (i = 0, len = os.length; i < len; i++) {
         |