rxjs-rails 0.0.1 → 2.2.13
Sign up to get free protection for your applications and to get access to all the features.
- 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++) {
|