UNPKG

2.84 kBJavaScriptView Raw
1// Copyright (c) Microsoft, All rights reserved. See License.txt in the project root for license information.
2
3;(function (factory) {
4 var objectTypes = {
5 'function': true,
6 'object': true
7 };
8
9 function checkGlobal(value) {
10 return (value && value.Object === Object) ? value : null;
11 }
12
13 var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) ? exports : null;
14 var freeModule = (objectTypes[typeof module] && module && !module.nodeType) ? module : null;
15 var freeGlobal = checkGlobal(freeExports && freeModule && typeof global === 'object' && global);
16 var freeSelf = checkGlobal(objectTypes[typeof self] && self);
17 var freeWindow = checkGlobal(objectTypes[typeof window] && window);
18 var moduleExports = (freeModule && freeModule.exports === freeExports) ? freeExports : null;
19 var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
20 var root = freeGlobal || ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || freeSelf || thisGlobal || Function('return this')();
21
22 // Because of build optimizers
23 if (typeof define === 'function' && define.amd) {
24 define(['./rx'], function (Rx, exports) {
25 return factory(root, exports, Rx);
26 });
27 } else if (typeof module === 'object' && module && module.exports === freeExports) {
28 module.exports = factory(root, module.exports, require('./rx'));
29 } else {
30 root.Rx = factory(root, {}, root.Rx);
31 }
32}.call(this, function (root, exp, Rx, undefined) {
33
34 var Observable = Rx.Observable,
35 observableProto = Observable.prototype,
36 AnonymousObservable = Rx.AnonymousObservable,
37 observableNever = Observable.never,
38 isEqual = Rx.internals.isEqual,
39 defaultSubComparer = Rx.helpers.defaultSubComparer;
40
41 /**
42 * jortSort checks if your inputs are sorted. Note that this is only for a sequence with an end.
43 * See http://jort.technology/ for full details.
44 * @returns {Observable} An observable which has a single value of true if sorted, else false.
45 */
46 observableProto.jortSort = function () {
47 return this.jortSortUntil(observableNever());
48 };
49
50 /**
51 * jortSort checks if your inputs are sorted until another Observable sequence fires.
52 * See http://jort.technology/ for full details.
53 * @returns {Observable} An observable which has a single value of true if sorted, else false.
54 */
55 observableProto.jortSortUntil = function (other) {
56 var source = this;
57 return new AnonymousObservable(function (observer) {
58 var arr = [];
59 return source.takeUntil(other).subscribe(
60 arr.push.bind(arr),
61 observer.onError.bind(observer),
62 function () {
63 var sorted = arr.slice(0).sort(defaultSubComparer);
64 observer.onNext(isEqual(arr, sorted));
65 observer.onCompleted();
66 });
67 }, source);
68 };
69
70 return Rx;
71}));