rxjs-rails 2.3.9 → 2.3.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rxjs/rails/version.rb +1 -1
- data/vendor/assets/javascripts/rx.aggregates.js +174 -204
- data/vendor/assets/javascripts/rx.aggregates.min.js +1 -1
- data/vendor/assets/javascripts/rx.all.compat.js +1626 -1528
- data/vendor/assets/javascripts/rx.all.compat.min.js +3 -3
- data/vendor/assets/javascripts/rx.all.js +1624 -1526
- data/vendor/assets/javascripts/rx.all.min.js +3 -3
- data/vendor/assets/javascripts/rx.async.compat.js +241 -0
- data/vendor/assets/javascripts/rx.async.compat.min.js +1 -1
- data/vendor/assets/javascripts/rx.async.js +241 -0
- data/vendor/assets/javascripts/rx.async.min.js +1 -1
- data/vendor/assets/javascripts/rx.backpressure.js +3 -3
- data/vendor/assets/javascripts/rx.backpressure.min.js +1 -1
- data/vendor/assets/javascripts/rx.binding.js +350 -378
- data/vendor/assets/javascripts/rx.binding.min.js +1 -1
- data/vendor/assets/javascripts/rx.coincidence.js +16 -21
- data/vendor/assets/javascripts/rx.compat.js +633 -683
- data/vendor/assets/javascripts/rx.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.js +633 -683
- data/vendor/assets/javascripts/rx.lite.compat.js +941 -1137
- data/vendor/assets/javascripts/rx.lite.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.lite.extras.js +58 -74
- data/vendor/assets/javascripts/rx.lite.extras.min.js +1 -1
- data/vendor/assets/javascripts/rx.lite.js +941 -1137
- data/vendor/assets/javascripts/rx.lite.min.js +2 -2
- data/vendor/assets/javascripts/rx.min.js +2 -2
- data/vendor/assets/javascripts/rx.time.js +182 -212
- data/vendor/assets/javascripts/rx.time.min.js +1 -1
- metadata +10 -10
@@ -47,6 +47,247 @@
|
|
47
47
|
isScheduler = Rx.helpers.isScheduler,
|
48
48
|
slice = Array.prototype.slice;
|
49
49
|
|
50
|
+
var fnString = 'function';
|
51
|
+
|
52
|
+
function toThunk(obj, ctx) {
|
53
|
+
if (Array.isArray(obj)) {
|
54
|
+
return objectToThunk.call(ctx, obj);
|
55
|
+
}
|
56
|
+
|
57
|
+
if (isGeneratorFunction(obj)) {
|
58
|
+
return observableSpawn(obj.call(ctx));
|
59
|
+
}
|
60
|
+
|
61
|
+
if (isGenerator(obj)) {
|
62
|
+
return observableSpawn(obj);
|
63
|
+
}
|
64
|
+
|
65
|
+
if (isObservable(obj)) {
|
66
|
+
return observableToThunk(obj);
|
67
|
+
}
|
68
|
+
|
69
|
+
if (isPromise(obj)) {
|
70
|
+
return promiseToThunk(obj);
|
71
|
+
}
|
72
|
+
|
73
|
+
if (typeof obj === fnString) {
|
74
|
+
return obj;
|
75
|
+
}
|
76
|
+
|
77
|
+
if (isObject(obj) || Array.isArray(obj)) {
|
78
|
+
return objectToThunk.call(ctx, obj);
|
79
|
+
}
|
80
|
+
|
81
|
+
return obj;
|
82
|
+
}
|
83
|
+
|
84
|
+
function objectToThunk(obj) {
|
85
|
+
var ctx = this;
|
86
|
+
|
87
|
+
return function (done) {
|
88
|
+
var keys = Object.keys(obj),
|
89
|
+
pending = keys.length,
|
90
|
+
results = new obj.constructor(),
|
91
|
+
finished;
|
92
|
+
|
93
|
+
if (!pending) {
|
94
|
+
timeoutScheduler.schedule(function () { done(null, results); });
|
95
|
+
return;
|
96
|
+
}
|
97
|
+
|
98
|
+
for (var i = 0, len = keys.length; i < len; i++) {
|
99
|
+
run(obj[keys[i]], keys[i]);
|
100
|
+
}
|
101
|
+
|
102
|
+
function run(fn, key) {
|
103
|
+
if (finished) { return; }
|
104
|
+
try {
|
105
|
+
fn = toThunk(fn, ctx);
|
106
|
+
|
107
|
+
if (typeof fn !== fnString) {
|
108
|
+
results[key] = fn;
|
109
|
+
return --pending || done(null, results);
|
110
|
+
}
|
111
|
+
|
112
|
+
fn.call(ctx, function(err, res){
|
113
|
+
if (finished) { return; }
|
114
|
+
|
115
|
+
if (err) {
|
116
|
+
finished = true;
|
117
|
+
return done(err);
|
118
|
+
}
|
119
|
+
|
120
|
+
results[key] = res;
|
121
|
+
--pending || done(null, results);
|
122
|
+
});
|
123
|
+
} catch (e) {
|
124
|
+
finished = true;
|
125
|
+
done(e);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
function observableToThink(observable) {
|
132
|
+
return function (fn) {
|
133
|
+
var value, hasValue = false;
|
134
|
+
observable.subscribe(
|
135
|
+
function (v) {
|
136
|
+
value = v;
|
137
|
+
hasValue = true;
|
138
|
+
},
|
139
|
+
fn,
|
140
|
+
function () {
|
141
|
+
hasValue && fn(null, value);
|
142
|
+
});
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
function promiseToThunk(promise) {
|
147
|
+
return function(fn){
|
148
|
+
promise.then(function(res) {
|
149
|
+
fn(null, res);
|
150
|
+
}, fn);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
function isObservable(obj) {
|
155
|
+
return obj && obj.prototype.subscribe === fnString;
|
156
|
+
}
|
157
|
+
|
158
|
+
function isGeneratorFunction(obj) {
|
159
|
+
return obj && obj.constructor && obj.constructor.name === 'GeneratorFunction';
|
160
|
+
}
|
161
|
+
|
162
|
+
function isGenerator(obj) {
|
163
|
+
return obj && typeof obj.next === fnString && typeof obj.throw === fnString;
|
164
|
+
}
|
165
|
+
|
166
|
+
function isObject(val) {
|
167
|
+
return val && val.constructor === Object;
|
168
|
+
}
|
169
|
+
|
170
|
+
/*
|
171
|
+
* Spawns a generator function which allows for Promises, Observable sequences, Arrays, Objects, Generators and functions.
|
172
|
+
* @param {Function} The spawning function.
|
173
|
+
* @returns {Function} a function which has a done continuation.
|
174
|
+
*/
|
175
|
+
var observableSpawn = Rx.spawn = function (fn) {
|
176
|
+
var isGenFun = isGeneratorFunction(fn);
|
177
|
+
|
178
|
+
return function (done) {
|
179
|
+
var ctx = this,
|
180
|
+
gen = fan;
|
181
|
+
|
182
|
+
if (isGenFun) {
|
183
|
+
var args = slice.call(arguments),
|
184
|
+
len = args.length,
|
185
|
+
hasCallback = len && typeof args[len - 1] === fnString;
|
186
|
+
|
187
|
+
done = hasCallback ? args.pop() : error;
|
188
|
+
gen = fn.apply(this, args);
|
189
|
+
} else {
|
190
|
+
done = done || error;
|
191
|
+
}
|
192
|
+
|
193
|
+
next();
|
194
|
+
|
195
|
+
function exit(err, res) {
|
196
|
+
timeoutScheduler.schedule(done.bind(ctx, err, res));
|
197
|
+
}
|
198
|
+
|
199
|
+
function next(err, res) {
|
200
|
+
var ret;
|
201
|
+
|
202
|
+
// multiple args
|
203
|
+
if (arguments.length > 2) res = slice.call(arguments, 1);
|
204
|
+
|
205
|
+
if (err) {
|
206
|
+
try {
|
207
|
+
ret = gen.throw(err);
|
208
|
+
} catch (e) {
|
209
|
+
return exit(e);
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
if (!err) {
|
214
|
+
try {
|
215
|
+
ret = gen.next(res);
|
216
|
+
} catch (e) {
|
217
|
+
return exit(e);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
221
|
+
if (ret.done) {
|
222
|
+
return exit(null, ret.value);
|
223
|
+
}
|
224
|
+
|
225
|
+
ret.value = toThunk(ret.value, ctx);
|
226
|
+
|
227
|
+
if (typeof ret.value === fnString) {
|
228
|
+
var called = false;
|
229
|
+
try {
|
230
|
+
ret.value.call(ctx, function(){
|
231
|
+
if (called) {
|
232
|
+
return;
|
233
|
+
}
|
234
|
+
|
235
|
+
called = true;
|
236
|
+
next.apply(ctx, arguments);
|
237
|
+
});
|
238
|
+
} catch (e) {
|
239
|
+
timeoutScheduler.schedule(function () {
|
240
|
+
if (called) {
|
241
|
+
return;
|
242
|
+
}
|
243
|
+
|
244
|
+
called = true;
|
245
|
+
next.call(ctx, e);
|
246
|
+
});
|
247
|
+
}
|
248
|
+
return;
|
249
|
+
}
|
250
|
+
|
251
|
+
// Not supported
|
252
|
+
next(new TypeError('Rx.spawn only supports a function, Promise, Observable, Object or Array.'));
|
253
|
+
}
|
254
|
+
}
|
255
|
+
};
|
256
|
+
|
257
|
+
/**
|
258
|
+
* Takes a function with a callback and turns it into a thunk.
|
259
|
+
* @param {Function} A function with a callback such as fs.readFile
|
260
|
+
* @returns {Function} A function, when executed will continue the state machine.
|
261
|
+
*/
|
262
|
+
Rx.denodify = function (fn) {
|
263
|
+
return function (){
|
264
|
+
var args = slice.call(arguments),
|
265
|
+
results,
|
266
|
+
called,
|
267
|
+
callback;
|
268
|
+
|
269
|
+
args.push(function(){
|
270
|
+
results = arguments;
|
271
|
+
|
272
|
+
if (callback && !called) {
|
273
|
+
called = true;
|
274
|
+
cb.apply(this, results);
|
275
|
+
}
|
276
|
+
});
|
277
|
+
|
278
|
+
fn.apply(this, args);
|
279
|
+
|
280
|
+
return function (fn){
|
281
|
+
callback = fn;
|
282
|
+
|
283
|
+
if (results && !called) {
|
284
|
+
called = true;
|
285
|
+
fn.apply(this, results);
|
286
|
+
}
|
287
|
+
}
|
288
|
+
}
|
289
|
+
};
|
290
|
+
|
50
291
|
/**
|
51
292
|
* Invokes the specified function asynchronously on the specified scheduler, surfacing the result through an observable sequence.
|
52
293
|
*
|
@@ -1 +1 @@
|
|
1
|
-
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx.binding","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c){function d(b){var c=function(){this.cancelBubble=!0},d=function(){if(this.bubbledKeyCode=this.keyCode,this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0,this.returnValue=!1,this.modified=!0};if(b||(b=a.event),!b.target)switch(b.target=b.target||b.srcElement,"mouseover"==b.type&&(b.relatedTarget=b.fromElement),"mouseout"==b.type&&(b.relatedTarget=b.toElement),b.stopPropagation||(b.stopPropagation=c,b.preventDefault=d),b.type){case"keypress":var e="charCode"in b?b.charCode:b.keyCode;10==e?(e=0,b.keyCode=13):13==e||27==e?e=0:3==e&&(e=99),b.charCode=e,b.keyChar=b.charCode?String.fromCharCode(b.charCode):""}return b}function
|
1
|
+
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx.binding","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c){function d(a,b){return Array.isArray(a)?e.call(b,a):h(a)?y(a.call(b)):i(a)?y(a):g(a)?observableToThunk(a):isPromise(a)?f(a):typeof a===x?a:j(a)||Array.isArray(a)?e.call(b,a):a}function e(a){var b=this;return function(c){function e(a,e){if(!f)try{if(a=d(a,b),typeof a!==x)return i[e]=a,--h||c(null,i);a.call(b,function(a,b){if(!f){if(a)return f=!0,c(a);i[e]=b,--h||c(null,i)}})}catch(g){f=!0,c(g)}}var f,g=Object.keys(a),h=g.length,i=new a.constructor;if(!h)return void u.schedule(function(){c(null,i)});for(var j=0,k=g.length;k>j;j++)e(a[g[j]],g[j])}}function f(a){return function(b){a.then(function(a){b(null,a)},b)}}function g(a){return a&&a.prototype.subscribe===x}function h(a){return a&&a.constructor&&"GeneratorFunction"===a.constructor.name}function i(a){return a&&typeof a.next===x&&typeof a.throw===x}function j(a){return a&&a.constructor===Object}function k(b){var c=function(){this.cancelBubble=!0},d=function(){if(this.bubbledKeyCode=this.keyCode,this.ctrlKey)try{this.keyCode=0}catch(a){}this.defaultPrevented=!0,this.returnValue=!1,this.modified=!0};if(b||(b=a.event),!b.target)switch(b.target=b.target||b.srcElement,"mouseover"==b.type&&(b.relatedTarget=b.fromElement),"mouseout"==b.type&&(b.relatedTarget=b.toElement),b.stopPropagation||(b.stopPropagation=c,b.preventDefault=d),b.type){case"keypress":var e="charCode"in b?b.charCode:b.keyCode;10==e?(e=0,b.keyCode=13):13==e||27==e?e=0:3==e&&(e=99),b.charCode=e,b.keyChar=b.charCode?String.fromCharCode(b.charCode):""}return b}function l(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1),s(function(){a.removeEventListener(b,c,!1)});if(a.attachEvent){var d=function(a){c(k(a))};return a.attachEvent("on"+b,d),s(function(){a.detachEvent("on"+b,d)})}return a["on"+b]=c,s(function(){a["on"+b]=null})}function m(a,b,c){var d=new t;if("[object NodeList]"===Object.prototype.toString.call(a))for(var e=0,f=a.length;f>e;e++)d.add(m(a.item(e),b,c));else a&&d.add(l(a,b,c));return d}var n=c.Observable,o=(n.prototype,n.fromPromise),p=n.throwException,q=c.AnonymousObservable,r=c.AsyncSubject,s=c.Disposable.create,t=c.CompositeDisposable,u=(c.Scheduler.immediate,c.Scheduler.timeout),v=c.helpers.isScheduler,w=Array.prototype.slice,x="function",y=c.spawn=function(a){var b=h(a);return function(c){function e(a,b){u.schedule(c.bind(g,a,b))}function f(a,b){var c;if(arguments.length>2&&(b=w.call(arguments,1)),a)try{c=h.throw(a)}catch(i){return e(i)}if(!a)try{c=h.next(b)}catch(i){return e(i)}if(c.done)return e(null,c.value);if(c.value=d(c.value,g),typeof c.value!==x)f(new TypeError("Rx.spawn only supports a function, Promise, Observable, Object or Array."));else{var j=!1;try{c.value.call(g,function(){j||(j=!0,f.apply(g,arguments))})}catch(i){u.schedule(function(){j||(j=!0,f.call(g,i))})}}}var g=this,h=fan;if(b){var i=w.call(arguments),j=i.length,k=j&&typeof i[j-1]===x;c=k?i.pop():error,h=a.apply(this,i)}else c=c||error;f()}};c.denodify=function(a){return function(){var b,c,d,e=w.call(arguments);return e.push(function(){b=arguments,d&&!c&&(c=!0,cb.apply(this,b))}),a.apply(this,e),function(a){d=a,b&&!c&&(c=!0,a.apply(this,b))}}},n.start=function(a,b,c){return z(a,b,c)()};var z=n.toAsync=function(a,b,c){return v(c)||(c=u),function(){var d=arguments,e=new r;return c.schedule(function(){var c;try{c=a.apply(b,d)}catch(f){return void e.onError(f)}e.onNext(c),e.onCompleted()}),e.asObservable()}};n.fromCallback=function(a,b,c){return function(){var d=w.call(arguments,0);return new q(function(e){function f(a){var b=a;if(c){try{b=c(arguments)}catch(d){return void e.onError(d)}e.onNext(b)}else b.length<=1?e.onNext.apply(e,b):e.onNext(b);e.onCompleted()}d.push(f),a.apply(b,d)}).publishLast().refCount()}},n.fromNodeCallback=function(a,b,c){return function(){var d=w.call(arguments,0);return new q(function(e){function f(a){if(a)return void e.onError(a);var b=w.call(arguments,1);if(c){try{b=c(b)}catch(d){return void e.onError(d)}e.onNext(b)}else b.length<=1?e.onNext.apply(e,b):e.onNext(b);e.onCompleted()}d.push(f),a.apply(b,d)}).publishLast().refCount()}},c.config.useNativeEvents=!1;var A=a.angular&&angular.element?angular.element:a.jQuery?a.jQuery:a.Zepto?a.Zepto:null,B=!!a.Ember&&"function"==typeof a.Ember.addListener,C=!!a.Backbone&&!!a.Backbone.Marionette;n.fromEvent=function(a,b,d){if(a.addListener)return D(function(c){a.addListener(b,c)},function(c){a.removeListener(b,c)},d);if(!c.config.useNativeEvents){if(C)return D(function(c){a.on(b,c)},function(c){a.off(b,c)},d);if(B)return D(function(c){Ember.addListener(a,b,c)},function(c){Ember.removeListener(a,b,c)},d);if(A){var e=A(a);return D(function(a){e.on(b,a)},function(a){e.off(b,a)},d)}}return new q(function(c){return m(a,b,function(a){var b=a;if(d)try{b=d(arguments)}catch(e){return void c.onError(e)}c.onNext(b)})}).publish().refCount()};var D=n.fromEventPattern=function(a,b,c){return new q(function(d){function e(a){var b=a;if(c)try{b=c(arguments)}catch(e){return void d.onError(e)}d.onNext(b)}var f=a(e);return s(function(){b&&b(e,f)})}).publish().refCount()};return n.startAsync=function(a){var b;try{b=a()}catch(c){return p(c)}return o(b)},c});
|
@@ -47,6 +47,247 @@
|
|
47
47
|
isScheduler = Rx.helpers.isScheduler,
|
48
48
|
slice = Array.prototype.slice;
|
49
49
|
|
50
|
+
var fnString = 'function';
|
51
|
+
|
52
|
+
function toThunk(obj, ctx) {
|
53
|
+
if (Array.isArray(obj)) {
|
54
|
+
return objectToThunk.call(ctx, obj);
|
55
|
+
}
|
56
|
+
|
57
|
+
if (isGeneratorFunction(obj)) {
|
58
|
+
return observableSpawn(obj.call(ctx));
|
59
|
+
}
|
60
|
+
|
61
|
+
if (isGenerator(obj)) {
|
62
|
+
return observableSpawn(obj);
|
63
|
+
}
|
64
|
+
|
65
|
+
if (isObservable(obj)) {
|
66
|
+
return observableToThunk(obj);
|
67
|
+
}
|
68
|
+
|
69
|
+
if (isPromise(obj)) {
|
70
|
+
return promiseToThunk(obj);
|
71
|
+
}
|
72
|
+
|
73
|
+
if (typeof obj === fnString) {
|
74
|
+
return obj;
|
75
|
+
}
|
76
|
+
|
77
|
+
if (isObject(obj) || Array.isArray(obj)) {
|
78
|
+
return objectToThunk.call(ctx, obj);
|
79
|
+
}
|
80
|
+
|
81
|
+
return obj;
|
82
|
+
}
|
83
|
+
|
84
|
+
function objectToThunk(obj) {
|
85
|
+
var ctx = this;
|
86
|
+
|
87
|
+
return function (done) {
|
88
|
+
var keys = Object.keys(obj),
|
89
|
+
pending = keys.length,
|
90
|
+
results = new obj.constructor(),
|
91
|
+
finished;
|
92
|
+
|
93
|
+
if (!pending) {
|
94
|
+
timeoutScheduler.schedule(function () { done(null, results); });
|
95
|
+
return;
|
96
|
+
}
|
97
|
+
|
98
|
+
for (var i = 0, len = keys.length; i < len; i++) {
|
99
|
+
run(obj[keys[i]], keys[i]);
|
100
|
+
}
|
101
|
+
|
102
|
+
function run(fn, key) {
|
103
|
+
if (finished) { return; }
|
104
|
+
try {
|
105
|
+
fn = toThunk(fn, ctx);
|
106
|
+
|
107
|
+
if (typeof fn !== fnString) {
|
108
|
+
results[key] = fn;
|
109
|
+
return --pending || done(null, results);
|
110
|
+
}
|
111
|
+
|
112
|
+
fn.call(ctx, function(err, res){
|
113
|
+
if (finished) { return; }
|
114
|
+
|
115
|
+
if (err) {
|
116
|
+
finished = true;
|
117
|
+
return done(err);
|
118
|
+
}
|
119
|
+
|
120
|
+
results[key] = res;
|
121
|
+
--pending || done(null, results);
|
122
|
+
});
|
123
|
+
} catch (e) {
|
124
|
+
finished = true;
|
125
|
+
done(e);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
function observableToThink(observable) {
|
132
|
+
return function (fn) {
|
133
|
+
var value, hasValue = false;
|
134
|
+
observable.subscribe(
|
135
|
+
function (v) {
|
136
|
+
value = v;
|
137
|
+
hasValue = true;
|
138
|
+
},
|
139
|
+
fn,
|
140
|
+
function () {
|
141
|
+
hasValue && fn(null, value);
|
142
|
+
});
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
function promiseToThunk(promise) {
|
147
|
+
return function(fn){
|
148
|
+
promise.then(function(res) {
|
149
|
+
fn(null, res);
|
150
|
+
}, fn);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
function isObservable(obj) {
|
155
|
+
return obj && obj.prototype.subscribe === fnString;
|
156
|
+
}
|
157
|
+
|
158
|
+
function isGeneratorFunction(obj) {
|
159
|
+
return obj && obj.constructor && obj.constructor.name === 'GeneratorFunction';
|
160
|
+
}
|
161
|
+
|
162
|
+
function isGenerator(obj) {
|
163
|
+
return obj && typeof obj.next === fnString && typeof obj.throw === fnString;
|
164
|
+
}
|
165
|
+
|
166
|
+
function isObject(val) {
|
167
|
+
return val && val.constructor === Object;
|
168
|
+
}
|
169
|
+
|
170
|
+
/*
|
171
|
+
* Spawns a generator function which allows for Promises, Observable sequences, Arrays, Objects, Generators and functions.
|
172
|
+
* @param {Function} The spawning function.
|
173
|
+
* @returns {Function} a function which has a done continuation.
|
174
|
+
*/
|
175
|
+
var observableSpawn = Rx.spawn = function (fn) {
|
176
|
+
var isGenFun = isGeneratorFunction(fn);
|
177
|
+
|
178
|
+
return function (done) {
|
179
|
+
var ctx = this,
|
180
|
+
gen = fan;
|
181
|
+
|
182
|
+
if (isGenFun) {
|
183
|
+
var args = slice.call(arguments),
|
184
|
+
len = args.length,
|
185
|
+
hasCallback = len && typeof args[len - 1] === fnString;
|
186
|
+
|
187
|
+
done = hasCallback ? args.pop() : error;
|
188
|
+
gen = fn.apply(this, args);
|
189
|
+
} else {
|
190
|
+
done = done || error;
|
191
|
+
}
|
192
|
+
|
193
|
+
next();
|
194
|
+
|
195
|
+
function exit(err, res) {
|
196
|
+
timeoutScheduler.schedule(done.bind(ctx, err, res));
|
197
|
+
}
|
198
|
+
|
199
|
+
function next(err, res) {
|
200
|
+
var ret;
|
201
|
+
|
202
|
+
// multiple args
|
203
|
+
if (arguments.length > 2) res = slice.call(arguments, 1);
|
204
|
+
|
205
|
+
if (err) {
|
206
|
+
try {
|
207
|
+
ret = gen.throw(err);
|
208
|
+
} catch (e) {
|
209
|
+
return exit(e);
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
if (!err) {
|
214
|
+
try {
|
215
|
+
ret = gen.next(res);
|
216
|
+
} catch (e) {
|
217
|
+
return exit(e);
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
221
|
+
if (ret.done) {
|
222
|
+
return exit(null, ret.value);
|
223
|
+
}
|
224
|
+
|
225
|
+
ret.value = toThunk(ret.value, ctx);
|
226
|
+
|
227
|
+
if (typeof ret.value === fnString) {
|
228
|
+
var called = false;
|
229
|
+
try {
|
230
|
+
ret.value.call(ctx, function(){
|
231
|
+
if (called) {
|
232
|
+
return;
|
233
|
+
}
|
234
|
+
|
235
|
+
called = true;
|
236
|
+
next.apply(ctx, arguments);
|
237
|
+
});
|
238
|
+
} catch (e) {
|
239
|
+
timeoutScheduler.schedule(function () {
|
240
|
+
if (called) {
|
241
|
+
return;
|
242
|
+
}
|
243
|
+
|
244
|
+
called = true;
|
245
|
+
next.call(ctx, e);
|
246
|
+
});
|
247
|
+
}
|
248
|
+
return;
|
249
|
+
}
|
250
|
+
|
251
|
+
// Not supported
|
252
|
+
next(new TypeError('Rx.spawn only supports a function, Promise, Observable, Object or Array.'));
|
253
|
+
}
|
254
|
+
}
|
255
|
+
};
|
256
|
+
|
257
|
+
/**
|
258
|
+
* Takes a function with a callback and turns it into a thunk.
|
259
|
+
* @param {Function} A function with a callback such as fs.readFile
|
260
|
+
* @returns {Function} A function, when executed will continue the state machine.
|
261
|
+
*/
|
262
|
+
Rx.denodify = function (fn) {
|
263
|
+
return function (){
|
264
|
+
var args = slice.call(arguments),
|
265
|
+
results,
|
266
|
+
called,
|
267
|
+
callback;
|
268
|
+
|
269
|
+
args.push(function(){
|
270
|
+
results = arguments;
|
271
|
+
|
272
|
+
if (callback && !called) {
|
273
|
+
called = true;
|
274
|
+
cb.apply(this, results);
|
275
|
+
}
|
276
|
+
});
|
277
|
+
|
278
|
+
fn.apply(this, args);
|
279
|
+
|
280
|
+
return function (fn){
|
281
|
+
callback = fn;
|
282
|
+
|
283
|
+
if (results && !called) {
|
284
|
+
called = true;
|
285
|
+
fn.apply(this, results);
|
286
|
+
}
|
287
|
+
}
|
288
|
+
}
|
289
|
+
};
|
290
|
+
|
50
291
|
/**
|
51
292
|
* Invokes the specified function asynchronously on the specified scheduler, surfacing the result through an observable sequence.
|
52
293
|
*
|
@@ -1 +1 @@
|
|
1
|
-
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx.binding","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c){function d(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1),
|
1
|
+
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx.binding","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c){function d(a,b){return Array.isArray(a)?e.call(b,a):h(a)?x(a.call(b)):i(a)?x(a):g(a)?observableToThunk(a):isPromise(a)?f(a):typeof a===w?a:j(a)||Array.isArray(a)?e.call(b,a):a}function e(a){var b=this;return function(c){function e(a,e){if(!f)try{if(a=d(a,b),typeof a!==w)return i[e]=a,--h||c(null,i);a.call(b,function(a,b){if(!f){if(a)return f=!0,c(a);i[e]=b,--h||c(null,i)}})}catch(g){f=!0,c(g)}}var f,g=Object.keys(a),h=g.length,i=new a.constructor;if(!h)return void t.schedule(function(){c(null,i)});for(var j=0,k=g.length;k>j;j++)e(a[g[j]],g[j])}}function f(a){return function(b){a.then(function(a){b(null,a)},b)}}function g(a){return a&&a.prototype.subscribe===w}function h(a){return a&&a.constructor&&"GeneratorFunction"===a.constructor.name}function i(a){return a&&typeof a.next===w&&typeof a.throw===w}function j(a){return a&&a.constructor===Object}function k(a,b,c){if(a.addEventListener)return a.addEventListener(b,c,!1),r(function(){a.removeEventListener(b,c,!1)});throw new Error("No listener found")}function l(a,b,c){var d=new s;if("[object NodeList]"===Object.prototype.toString.call(a))for(var e=0,f=a.length;f>e;e++)d.add(l(a.item(e),b,c));else a&&d.add(k(a,b,c));return d}var m=c.Observable,n=(m.prototype,m.fromPromise),o=m.throwException,p=c.AnonymousObservable,q=c.AsyncSubject,r=c.Disposable.create,s=c.CompositeDisposable,t=(c.Scheduler.immediate,c.Scheduler.timeout),u=c.helpers.isScheduler,v=Array.prototype.slice,w="function",x=c.spawn=function(a){var b=h(a);return function(c){function e(a,b){t.schedule(c.bind(g,a,b))}function f(a,b){var c;if(arguments.length>2&&(b=v.call(arguments,1)),a)try{c=h.throw(a)}catch(i){return e(i)}if(!a)try{c=h.next(b)}catch(i){return e(i)}if(c.done)return e(null,c.value);if(c.value=d(c.value,g),typeof c.value!==w)f(new TypeError("Rx.spawn only supports a function, Promise, Observable, Object or Array."));else{var j=!1;try{c.value.call(g,function(){j||(j=!0,f.apply(g,arguments))})}catch(i){t.schedule(function(){j||(j=!0,f.call(g,i))})}}}var g=this,h=fan;if(b){var i=v.call(arguments),j=i.length,k=j&&typeof i[j-1]===w;c=k?i.pop():error,h=a.apply(this,i)}else c=c||error;f()}};c.denodify=function(a){return function(){var b,c,d,e=v.call(arguments);return e.push(function(){b=arguments,d&&!c&&(c=!0,cb.apply(this,b))}),a.apply(this,e),function(a){d=a,b&&!c&&(c=!0,a.apply(this,b))}}},m.start=function(a,b,c){return y(a,b,c)()};var y=m.toAsync=function(a,b,c){return u(c)||(c=t),function(){var d=arguments,e=new q;return c.schedule(function(){var c;try{c=a.apply(b,d)}catch(f){return void e.onError(f)}e.onNext(c),e.onCompleted()}),e.asObservable()}};m.fromCallback=function(a,b,c){return function(){var d=v.call(arguments,0);return new p(function(e){function f(a){var b=a;if(c){try{b=c(arguments)}catch(d){return void e.onError(d)}e.onNext(b)}else b.length<=1?e.onNext.apply(e,b):e.onNext(b);e.onCompleted()}d.push(f),a.apply(b,d)}).publishLast().refCount()}},m.fromNodeCallback=function(a,b,c){return function(){var d=v.call(arguments,0);return new p(function(e){function f(a){if(a)return void e.onError(a);var b=v.call(arguments,1);if(c){try{b=c(b)}catch(d){return void e.onError(d)}e.onNext(b)}else b.length<=1?e.onNext.apply(e,b):e.onNext(b);e.onCompleted()}d.push(f),a.apply(b,d)}).publishLast().refCount()}},c.config.useNativeEvents=!1;var z=a.angular&&angular.element?angular.element:a.jQuery?a.jQuery:a.Zepto?a.Zepto:null,A=!!a.Ember&&"function"==typeof a.Ember.addListener,B=!!a.Backbone&&!!a.Backbone.Marionette;m.fromEvent=function(a,b,d){if(a.addListener)return C(function(c){a.addListener(b,c)},function(c){a.removeListener(b,c)},d);if(!c.config.useNativeEvents){if(B)return C(function(c){a.on(b,c)},function(c){a.off(b,c)},d);if(A)return C(function(c){Ember.addListener(a,b,c)},function(c){Ember.removeListener(a,b,c)},d);if(z){var e=z(a);return C(function(a){e.on(b,a)},function(a){e.off(b,a)},d)}}return new p(function(c){return l(a,b,function(a){var b=a;if(d)try{b=d(arguments)}catch(e){return void c.onError(e)}c.onNext(b)})}).publish().refCount()};var C=m.fromEventPattern=function(a,b,c){return new p(function(d){function e(a){var b=a;if(c)try{b=c(arguments)}catch(e){return void d.onError(e)}d.onNext(b)}var f=a(e);return r(function(){b&&b(e,f)})}).publish().refCount()};return m.startAsync=function(a){var b;try{b=a()}catch(c){return o(c)}return n(b)},c});
|
@@ -168,6 +168,7 @@
|
|
168
168
|
.subscribe(
|
169
169
|
function (results) {
|
170
170
|
if (previousShouldFire !== undefined && results.shouldFire != previousShouldFire) {
|
171
|
+
previousShouldFire = results.shouldFire;
|
171
172
|
// change in shouldFire
|
172
173
|
if (results.shouldFire) {
|
173
174
|
while (q.length > 0) {
|
@@ -175,6 +176,7 @@
|
|
175
176
|
}
|
176
177
|
}
|
177
178
|
} else {
|
179
|
+
previousShouldFire = results.shouldFire;
|
178
180
|
// new data
|
179
181
|
if (results.shouldFire) {
|
180
182
|
observer.onNext(results.data);
|
@@ -182,9 +184,7 @@
|
|
182
184
|
q.push(results.data);
|
183
185
|
}
|
184
186
|
}
|
185
|
-
|
186
|
-
|
187
|
-
},
|
187
|
+
},
|
188
188
|
function (err) {
|
189
189
|
// Empty buffer before sending error
|
190
190
|
while (q.length > 0) {
|
@@ -1 +1 @@
|
|
1
|
-
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c,d){function e(){if(this.isDisposed)throw new Error(r)}function f(a,b,c){return new i(function(d){function e(a,b){k[b]=a;var e;if(g[b]=!0,h||(h=g.every(q))){try{e=c.apply(null,k)}catch(f){return void d.onError(f)}d.onNext(e)}else i&&d.onCompleted()}var f=2,g=[!1,!1],h=!1,i=!1,k=new Array(f);return new j(a.subscribe(function(a){e(a,0)},d.onError.bind(d),function(){i=!0,d.onCompleted()}),b.subscribe(function(a){e(a,1)},d.onError.bind(d)))})}var g=c.Observable,h=g.prototype,i=c.AnonymousObservable,j=c.CompositeDisposable,k=c.Subject,l=c.Observer,m=c.Disposable.empty,n=c.Disposable.create,o=c.internals.inherits,p=c.internals.addProperties,q=(c.Scheduler.timeout,c.helpers.identity),r="Object has been disposed",s=function(a){function b(a){var b=this.source.publish(),c=b.subscribe(a),d=m,e=this.pauser.distinctUntilChanged().subscribe(function(a){a?d=b.connect():(d.dispose(),d=m)});return new j(c,d,e)}function c(c,d){this.source=c,this.controller=new k,this.pauser=d&&d.subscribe?this.controller.merge(d):this.controller,a.call(this,b)}return o(c,a),c.prototype.pause=function(){this.controller.onNext(!1)},c.prototype.resume=function(){this.controller.onNext(!0)},c}(g);h.pausable=function(a){return new s(this,a)};var t=function(a){function b(a){var b,c=[],e=f(this.source,this.pauser.distinctUntilChanged().startWith(!1),function(a,b){return{data:a,shouldFire:b}}).subscribe(function(e){if(b!==d&&e.shouldFire!=b){if(e.shouldFire)for(;c.length>0;)a.onNext(c.shift())}else e.shouldFire?a.onNext(e.data):c.push(e.data)
|
1
|
+
(function(a){var b={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},c=b[typeof window]&&window||this,d=b[typeof exports]&&exports&&!exports.nodeType&&exports,e=b[typeof module]&&module&&!module.nodeType&&module,f=(e&&e.exports===d&&d,b[typeof global]&&global);!f||f.global!==f&&f.window!==f||(c=f),"function"==typeof define&&define.amd?define(["rx","exports"],function(b,d){return c.Rx=a(c,d,b),c.Rx}):"object"==typeof module&&module&&module.exports===d?module.exports=a(c,module.exports,require("./rx")):c.Rx=a(c,{},c.Rx)}).call(this,function(a,b,c,d){function e(){if(this.isDisposed)throw new Error(r)}function f(a,b,c){return new i(function(d){function e(a,b){k[b]=a;var e;if(g[b]=!0,h||(h=g.every(q))){try{e=c.apply(null,k)}catch(f){return void d.onError(f)}d.onNext(e)}else i&&d.onCompleted()}var f=2,g=[!1,!1],h=!1,i=!1,k=new Array(f);return new j(a.subscribe(function(a){e(a,0)},d.onError.bind(d),function(){i=!0,d.onCompleted()}),b.subscribe(function(a){e(a,1)},d.onError.bind(d)))})}var g=c.Observable,h=g.prototype,i=c.AnonymousObservable,j=c.CompositeDisposable,k=c.Subject,l=c.Observer,m=c.Disposable.empty,n=c.Disposable.create,o=c.internals.inherits,p=c.internals.addProperties,q=(c.Scheduler.timeout,c.helpers.identity),r="Object has been disposed",s=function(a){function b(a){var b=this.source.publish(),c=b.subscribe(a),d=m,e=this.pauser.distinctUntilChanged().subscribe(function(a){a?d=b.connect():(d.dispose(),d=m)});return new j(c,d,e)}function c(c,d){this.source=c,this.controller=new k,this.pauser=d&&d.subscribe?this.controller.merge(d):this.controller,a.call(this,b)}return o(c,a),c.prototype.pause=function(){this.controller.onNext(!1)},c.prototype.resume=function(){this.controller.onNext(!0)},c}(g);h.pausable=function(a){return new s(this,a)};var t=function(a){function b(a){var b,c=[],e=f(this.source,this.pauser.distinctUntilChanged().startWith(!1),function(a,b){return{data:a,shouldFire:b}}).subscribe(function(e){if(b!==d&&e.shouldFire!=b){if(b=e.shouldFire,e.shouldFire)for(;c.length>0;)a.onNext(c.shift())}else b=e.shouldFire,e.shouldFire?a.onNext(e.data):c.push(e.data)},function(b){for(;c.length>0;)a.onNext(c.shift());a.onError(b)},function(){for(;c.length>0;)a.onNext(c.shift());a.onCompleted()});return e}function c(c,d){this.source=c,this.controller=new k,this.pauser=d&&d.subscribe?this.controller.merge(d):this.controller,a.call(this,b)}return o(c,a),c.prototype.pause=function(){this.controller.onNext(!1)},c.prototype.resume=function(){this.controller.onNext(!0)},c}(g);h.pausableBuffered=function(a){return new t(this,a)},h.controlled=function(a){return null==a&&(a=!0),new u(this,a)};var u=function(a){function b(a){return this.source.subscribe(a)}function c(c,d){a.call(this,b),this.subject=new v(d),this.source=c.multicast(this.subject).refCount()}return o(c,a),c.prototype.request=function(a){return null==a&&(a=-1),this.subject.request(a)},c}(g),v=c.ControlledSubject=function(a){function b(a){return this.subject.subscribe(a)}function c(c){null==c&&(c=!0),a.call(this,b),this.subject=new k,this.enableQueue=c,this.queue=c?[]:null,this.requestedCount=0,this.requestedDisposable=m,this.error=null,this.hasFailed=!1,this.hasCompleted=!1,this.controlledDisposable=m}return o(c,a),p(c.prototype,l,{onCompleted:function(){e.call(this),this.hasCompleted=!0,this.enableQueue&&0!==this.queue.length||this.subject.onCompleted()},onError:function(a){e.call(this),this.hasFailed=!0,this.error=a,this.enableQueue&&0!==this.queue.length||this.subject.onError(a)},onNext:function(a){e.call(this);var b=!1;0===this.requestedCount?this.enableQueue&&this.queue.push(a):(-1!==this.requestedCount&&0===this.requestedCount--&&this.disposeCurrentRequest(),b=!0),b&&this.subject.onNext(a)},_processRequest:function(a){if(this.enableQueue){for(;this.queue.length>=a&&a>0;)this.subject.onNext(this.queue.shift()),a--;return 0!==this.queue.length?{numberOfItems:a,returnValue:!0}:{numberOfItems:a,returnValue:!1}}return this.hasFailed?(this.subject.onError(this.error),this.controlledDisposable.dispose(),this.controlledDisposable=m):this.hasCompleted&&(this.subject.onCompleted(),this.controlledDisposable.dispose(),this.controlledDisposable=m),{numberOfItems:a,returnValue:!1}},request:function(a){e.call(this),this.disposeCurrentRequest();var b=this,c=this._processRequest(a);return a=c.numberOfItems,c.returnValue?m:(this.requestedCount=a,this.requestedDisposable=n(function(){b.requestedCount=0}),this.requestedDisposable)},disposeCurrentRequest:function(){this.requestedDisposable.dispose(),this.requestedDisposable=m},dispose:function(){this.isDisposed=!0,this.error=null,this.subject.dispose(),this.requestedDisposable.dispose()}}),c}(g);return c});
|