rxjs-rails 2.2.14 → 2.2.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -36
- data/lib/rxjs/rails/version.rb +1 -1
- data/rxjs_license.txt +15 -0
- data/vendor/assets/javascripts/rx.backpressure.js +259 -6
- data/vendor/assets/javascripts/rx.backpressure.min.js +1 -1
- data/vendor/assets/javascripts/rx.js +4407 -0
- data/vendor/assets/javascripts/rx.lite.compat.js +253 -0
- data/vendor/assets/javascripts/rx.lite.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.lite.js +253 -0
- data/vendor/assets/javascripts/rx.lite.min.js +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08f8912e5ff1fe9be57e06ba7535186bb33d166f
|
4
|
+
data.tar.gz: 053e4f0cd0222ef7e3b7bef4b0aaedef548020b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d5c035e39050e723cac22d48ae265923d840270bc7dfb67f87ba39126b4de8008351a396e72f98a45c6384f389232360bf2bc50af588a3912780e79df8d1f9c
|
7
|
+
data.tar.gz: 494f7a3ea7c1338eeb53e1372e102ca9bce2bb5f0f9346dce9b103a6d5e0c0f7b5b0c717b5bf504cdb1a6e56992aec5bfa9b3dc31d2099340ba4487ce510b3a5
|
data/README.md
CHANGED
@@ -12,40 +12,17 @@ Reference the appropriate rx.js file in your application.js eg:
|
|
12
12
|
|
13
13
|
`*= require rx.lite`
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
rx.compat.min.js
|
29
|
-
rx.experimental.js
|
30
|
-
rx.experimental.min.js
|
31
|
-
rx.joinpatterns.js
|
32
|
-
rx.joinpatterns.min.js
|
33
|
-
rx.lite.compat.js
|
34
|
-
rx.lite.compat.min.js
|
35
|
-
rx.lite.js
|
36
|
-
rx.lite.min.js
|
37
|
-
rx.min.js
|
38
|
-
rx.node.js
|
39
|
-
rx.testing.js
|
40
|
-
rx.testing.min.js
|
41
|
-
rx.time.js
|
42
|
-
rx.time.min.js
|
43
|
-
rx.virtualtime.js
|
44
|
-
rx.virtualtime.min.js
|
45
|
-
|
46
|
-
## versions
|
47
|
-
|
48
|
-
```
|
49
|
-
Version now mirrors RxJS release
|
50
|
-
```
|
15
|
+
For available files look in [vendor/assets](https://github.com/jdeseno/rxjs-rails/tree/master/vendor/assets/javascripts)
|
16
|
+
|
17
|
+
## Version
|
18
|
+
|
19
|
+
Version mirrors RxJS release
|
20
|
+
|
21
|
+
## License
|
22
|
+
|
23
|
+
Gem is licensed MIT.
|
24
|
+
|
25
|
+
Copyright and license for RxJS content is under it's own terms.
|
26
|
+
See the [RxJS website](https://github.com/Reactive-Extensions/RxJS#license) for information.
|
27
|
+
A copy of the RxJS license is distributed as [rxjs_license.txt](https://github.com/jdeseno/rxjs-rails/tree/master/rxjs_license.txt).
|
51
28
|
|
data/lib/rxjs/rails/version.rb
CHANGED
data/rxjs_license.txt
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
2
|
+
Microsoft Open Technologies would like to thank its contributors, a list
|
3
|
+
of whom are at http://rx.codeplex.com/wikipage?title=Contributors.
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you
|
6
|
+
may not use this file except in compliance with the License. You may
|
7
|
+
obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
14
|
+
implied. See the License for the specific language governing permissions
|
15
|
+
and limitations under the License.
|
@@ -36,19 +36,19 @@
|
|
36
36
|
// References
|
37
37
|
var Observable = Rx.Observable,
|
38
38
|
observableProto = Observable.prototype,
|
39
|
-
AnonymousObservable = Rx.
|
39
|
+
AnonymousObservable = Rx.AnonymousObservable,
|
40
|
+
CompositeDisposable = Rx.CompositeDisposable,
|
40
41
|
Subject = Rx.Subject,
|
41
42
|
Observer = Rx.Observer,
|
42
43
|
disposableEmpty = Rx.Disposable.empty,
|
43
44
|
disposableCreate = Rx.Disposable.create,
|
44
|
-
inherits = Rx.
|
45
|
-
addProperties = Rx.
|
45
|
+
inherits = Rx.internals.inherits,
|
46
|
+
addProperties = Rx.internals.addProperties,
|
46
47
|
timeoutScheduler = Rx.Scheduler.timeout;
|
47
48
|
|
48
49
|
var objectDisposed = 'Object has been disposed';
|
49
|
-
function checkDisposed() {
|
50
|
-
|
51
|
-
}
|
50
|
+
function checkDisposed() { if (this.isDisposed) { throw new Error(objectDisposed); } }
|
51
|
+
function identity (x) { return x; }
|
52
52
|
|
53
53
|
/**
|
54
54
|
* Pauses the underlying observable sequence based upon the observable sequence which yields true/false.
|
@@ -77,5 +77,258 @@
|
|
77
77
|
return new CompositeDisposable(subscription, connection, pausable);
|
78
78
|
});
|
79
79
|
};
|
80
|
+
function combineLatestSource(source, subject, resultSelector) {
|
81
|
+
return new AnonymousObservable(function (observer) {
|
82
|
+
var n = 2,
|
83
|
+
hasValue = [false, false],
|
84
|
+
hasValueAll = false,
|
85
|
+
isDone = false,
|
86
|
+
values = new Array(n);
|
87
|
+
|
88
|
+
function next(x, i) {
|
89
|
+
values[i] = x
|
90
|
+
var res;
|
91
|
+
hasValue[i] = true;
|
92
|
+
if (hasValueAll || (hasValueAll = hasValue.every(identity))) {
|
93
|
+
try {
|
94
|
+
res = resultSelector.apply(null, values);
|
95
|
+
} catch (ex) {
|
96
|
+
observer.onError(ex);
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
observer.onNext(res);
|
100
|
+
} else if (isDone) {
|
101
|
+
observer.onCompleted();
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
return new CompositeDisposable(
|
106
|
+
source.subscribe(
|
107
|
+
function (x) {
|
108
|
+
next(x, 0);
|
109
|
+
},
|
110
|
+
observer.onError.bind(observer),
|
111
|
+
function () {
|
112
|
+
isDone = true;
|
113
|
+
observer.onCompleted();
|
114
|
+
}),
|
115
|
+
subject.subscribe(
|
116
|
+
function (x) {
|
117
|
+
next(x, 1);
|
118
|
+
},
|
119
|
+
observer.onError.bind(observer))
|
120
|
+
);
|
121
|
+
});
|
122
|
+
}
|
123
|
+
|
124
|
+
/**
|
125
|
+
* Pauses the underlying observable sequence based upon the observable sequence which yields true/false,
|
126
|
+
* and yields the values that were buffered while paused.
|
127
|
+
* @example
|
128
|
+
* var pauser = new Rx.Subject();
|
129
|
+
* var source = Rx.Observable.interval(100).pausableBuffered(pauser);
|
130
|
+
* @param {Observable} pauser The observable sequence used to pause the underlying sequence.
|
131
|
+
* @returns {Observable} The observable sequence which is paused based upon the pauser.
|
132
|
+
*/
|
133
|
+
observableProto.pausableBuffered = function (subject) {
|
134
|
+
var source = this;
|
135
|
+
return new AnonymousObservable(function (observer) {
|
136
|
+
var q = [], previous = true;
|
137
|
+
|
138
|
+
var subscription =
|
139
|
+
combineLatestSource(
|
140
|
+
source,
|
141
|
+
subject.distinctUntilChanged(),
|
142
|
+
function (data, shouldFire) {
|
143
|
+
return { data: data, shouldFire: shouldFire };
|
144
|
+
})
|
145
|
+
.subscribe(
|
146
|
+
function (results) {
|
147
|
+
if (results.shouldFire && previous) {
|
148
|
+
observer.onNext(results.data);
|
149
|
+
}
|
150
|
+
if (results.shouldFire && !previous) {
|
151
|
+
while (q.length > 0) {
|
152
|
+
observer.onNext(q.shift());
|
153
|
+
}
|
154
|
+
previous = true;
|
155
|
+
} else if (!results.shouldFire && !previous) {
|
156
|
+
q.push(results.data);
|
157
|
+
} else if (!results.shouldFire && previous) {
|
158
|
+
previous = false;
|
159
|
+
}
|
160
|
+
|
161
|
+
},
|
162
|
+
observer.onError.bind(observer),
|
163
|
+
observer.onCompleted.bind(observer)
|
164
|
+
);
|
165
|
+
|
166
|
+
subject.onNext(false);
|
167
|
+
|
168
|
+
return subscription;
|
169
|
+
});
|
170
|
+
};
|
171
|
+
|
172
|
+
/**
|
173
|
+
* Attaches a controller to the observable sequence with the ability to queue.
|
174
|
+
* @example
|
175
|
+
* var source = Rx.Observable.interval(100).controlled();
|
176
|
+
* source.request(3); // Reads 3 values
|
177
|
+
* @param {Observable} pauser The observable sequence used to pause the underlying sequence.
|
178
|
+
* @returns {Observable} The observable sequence which is paused based upon the pauser.
|
179
|
+
*/
|
180
|
+
observableProto.controlled = function (enableQueue) {
|
181
|
+
if (enableQueue == null) { enableQueue = true; }
|
182
|
+
return new ControlledObservable(this, enableQueue);
|
183
|
+
};
|
184
|
+
var ControlledObservable = (function (_super) {
|
185
|
+
|
186
|
+
inherits(ControlledObservable, _super);
|
187
|
+
|
188
|
+
function subscribe (observer) {
|
189
|
+
return this.source.subscribe(observer);
|
190
|
+
}
|
191
|
+
|
192
|
+
function ControlledObservable (source, enableQueue) {
|
193
|
+
_super.call(this, subscribe);
|
194
|
+
this.subject = new ControlledSubject(enableQueue);
|
195
|
+
this.source = source.multicast(this.subject).refCount();
|
196
|
+
}
|
197
|
+
|
198
|
+
ControlledObservable.prototype.request = function (numberOfItems) {
|
199
|
+
if (numberOfItems == null) { numberOfItems = -1; }
|
200
|
+
return this.subject.request(numberOfItems);
|
201
|
+
};
|
202
|
+
|
203
|
+
return ControlledObservable;
|
204
|
+
|
205
|
+
}(Observable));
|
206
|
+
|
207
|
+
var ControlledSubject = Rx.ControlledSubject = (function (_super) {
|
208
|
+
|
209
|
+
function subscribe (observer) {
|
210
|
+
return this.subject.subscribe(observer);
|
211
|
+
}
|
212
|
+
|
213
|
+
inherits(ControlledSubject, _super);
|
214
|
+
|
215
|
+
function ControlledSubject(enableQueue) {
|
216
|
+
if (enableQueue == null) {
|
217
|
+
enableQueue = true;
|
218
|
+
}
|
219
|
+
|
220
|
+
_super.call(this, subscribe);
|
221
|
+
this.subject = new Subject();
|
222
|
+
this.enableQueue = enableQueue;
|
223
|
+
this.queue = enableQueue ? [] : null;
|
224
|
+
this.requestedCount = 0;
|
225
|
+
this.requestedDisposable = disposableEmpty;
|
226
|
+
this.error = null;
|
227
|
+
this.hasFailed = false;
|
228
|
+
this.hasCompleted = false;
|
229
|
+
this.controlledDisposable = disposableEmpty;
|
230
|
+
}
|
231
|
+
|
232
|
+
addProperties(ControlledSubject.prototype, Observer, {
|
233
|
+
onCompleted: function () {
|
234
|
+
checkDisposed.call(this);
|
235
|
+
this.hasCompleted = true;
|
236
|
+
|
237
|
+
if (!this.enableQueue || this.queue.length === 0) {
|
238
|
+
this.subject.onCompleted();
|
239
|
+
}
|
240
|
+
},
|
241
|
+
onError: function (error) {
|
242
|
+
checkDisposed.call(this);
|
243
|
+
this.hasFailed = true;
|
244
|
+
this.error = error;
|
245
|
+
|
246
|
+
if (!this.enableQueue || this.queue.length === 0) {
|
247
|
+
this.subject.onError(error);
|
248
|
+
}
|
249
|
+
},
|
250
|
+
onNext: function (value) {
|
251
|
+
checkDisposed.call(this);
|
252
|
+
var hasRequested = false;
|
253
|
+
|
254
|
+
if (this.requestedCount === 0) {
|
255
|
+
if (this.enableQueue) {
|
256
|
+
this.queue.push(value);
|
257
|
+
}
|
258
|
+
} else {
|
259
|
+
if (this.requestedCount !== -1) {
|
260
|
+
if (this.requestedCount-- === 0) {
|
261
|
+
this.disposeCurrentRequest();
|
262
|
+
}
|
263
|
+
}
|
264
|
+
hasRequested = true;
|
265
|
+
}
|
266
|
+
|
267
|
+
if (hasRequested) {
|
268
|
+
this.subject.onNext(value);
|
269
|
+
}
|
270
|
+
},
|
271
|
+
_processRequest: function (numberOfItems) {
|
272
|
+
if (this.enableQueue) {
|
273
|
+
//console.log('queue length', this.queue.length);
|
274
|
+
|
275
|
+
while (this.queue.length >= numberOfItems && numberOfItems > 0) {
|
276
|
+
//console.log('number of items', numberOfItems);
|
277
|
+
this.subject.onNext(this.queue.shift());
|
278
|
+
numberOfItems--;
|
279
|
+
}
|
280
|
+
|
281
|
+
if (this.queue.length !== 0) {
|
282
|
+
return { numberOfItems: numberOfItems, returnValue: true };
|
283
|
+
} else {
|
284
|
+
return { numberOfItems: numberOfItems, returnValue: false };
|
285
|
+
}
|
286
|
+
}
|
287
|
+
|
288
|
+
if (this.hasFailed) {
|
289
|
+
this.subject.onError(this.error);
|
290
|
+
this.controlledDisposable.dispose();
|
291
|
+
this.controlledDisposable = disposableEmpty;
|
292
|
+
} else if (this.hasCompleted) {
|
293
|
+
this.subject.onCompleted();
|
294
|
+
this.controlledDisposable.dispose();
|
295
|
+
this.controlledDisposable = disposableEmpty;
|
296
|
+
}
|
297
|
+
|
298
|
+
return { numberOfItems: numberOfItems, returnValue: false };
|
299
|
+
},
|
300
|
+
request: function (number) {
|
301
|
+
checkDisposed.call(this);
|
302
|
+
this.disposeCurrentRequest();
|
303
|
+
var self = this,
|
304
|
+
r = this._processRequest(number);
|
305
|
+
|
306
|
+
number = r.numberOfItems;
|
307
|
+
if (!r.returnValue) {
|
308
|
+
this.requestedCount = number;
|
309
|
+
this.requestedDisposable = disposableCreate(function () {
|
310
|
+
self.requestedCount = 0;
|
311
|
+
});
|
312
|
+
|
313
|
+
return this.requestedDisposable
|
314
|
+
} else {
|
315
|
+
return disposableEmpty;
|
316
|
+
}
|
317
|
+
},
|
318
|
+
disposeCurrentRequest: function () {
|
319
|
+
this.requestedDisposable.dispose();
|
320
|
+
this.requestedDisposable = disposableEmpty;
|
321
|
+
},
|
322
|
+
|
323
|
+
dispose: function () {
|
324
|
+
this.isDisposed = true;
|
325
|
+
this.error = null;
|
326
|
+
this.subject.dispose();
|
327
|
+
this.requestedDisposable.dispose();
|
328
|
+
}
|
329
|
+
});
|
330
|
+
|
331
|
+
return ControlledSubject;
|
332
|
+
}(Observable));
|
80
333
|
return Rx;
|
81
334
|
}));
|
@@ -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){{var d=c.Observable,
|
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){function d(){if(this.isDisposed)throw new Error(q)}function e(a){return a}function f(a,b,c){return new i(function(d){function f(a,b){l[b]=a;var f;if(h[b]=!0,i||(i=h.every(e))){try{f=c.apply(null,l)}catch(g){return d.onError(g),void 0}d.onNext(f)}else k&&d.onCompleted()}var g=2,h=[!1,!1],i=!1,k=!1,l=new Array(g);return new j(a.subscribe(function(a){f(a,0)},d.onError.bind(d),function(){k=!0,d.onCompleted()}),b.subscribe(function(a){f(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,"Object has been disposed");h.pausable=function(a){var b=this;return new i(function(c){var d=b.publish(),e=d.subscribe(c),f=m,g=a.distinctUntilChanged().subscribe(function(a){a?f=d.connect():(f.dispose(),f=m)});return new j(e,f,g)})},h.pausableBuffered=function(a){var b=this;return new i(function(c){var d=[],e=!0,g=f(b,a.distinctUntilChanged(),function(a,b){return{data:a,shouldFire:b}}).subscribe(function(a){if(a.shouldFire&&e&&c.onNext(a.data),a.shouldFire&&!e){for(;d.length>0;)c.onNext(d.shift());e=!0}else a.shouldFire||e?!a.shouldFire&&e&&(e=!1):d.push(a.data)},c.onError.bind(c),c.onCompleted.bind(c));return a.onNext(!1),g})},h.controlled=function(a){return null==a&&(a=!0),new r(this,a)};var r=function(a){function b(a){return this.source.subscribe(a)}function c(c,d){a.call(this,b),this.subject=new s(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),s=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(){d.call(this),this.hasCompleted=!0,this.enableQueue&&0!==this.queue.length||this.subject.onCompleted()},onError:function(a){d.call(this),this.hasFailed=!0,this.error=a,this.enableQueue&&0!==this.queue.length||this.subject.onError(a)},onNext:function(a){d.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){d.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});
|