rxjs-rails 2.3.14 → 2.3.20
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 +325 -370
- data/vendor/assets/javascripts/rx.aggregates.min.js +1 -1
- data/vendor/assets/javascripts/rx.all.compat.js +1115 -930
- data/vendor/assets/javascripts/rx.all.compat.min.js +4 -3
- data/vendor/assets/javascripts/rx.all.js +1113 -928
- data/vendor/assets/javascripts/rx.all.min.js +3 -3
- data/vendor/assets/javascripts/rx.async.compat.js +16 -20
- data/vendor/assets/javascripts/rx.async.compat.min.js +1 -1
- data/vendor/assets/javascripts/rx.async.js +14 -18
- data/vendor/assets/javascripts/rx.async.min.js +1 -1
- data/vendor/assets/javascripts/rx.backpressure.js +26 -10
- data/vendor/assets/javascripts/rx.backpressure.min.js +1 -1
- data/vendor/assets/javascripts/rx.binding.js +2 -14
- data/vendor/assets/javascripts/rx.binding.min.js +1 -1
- data/vendor/assets/javascripts/rx.coincidence.js +13 -13
- data/vendor/assets/javascripts/rx.coincidence.min.js +1 -1
- data/vendor/assets/javascripts/rx.compat.js +586 -378
- data/vendor/assets/javascripts/rx.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.experimental.js +37 -29
- data/vendor/assets/javascripts/rx.experimental.min.js +1 -1
- data/vendor/assets/javascripts/rx.js +586 -378
- data/vendor/assets/javascripts/rx.lite.compat.js +632 -394
- data/vendor/assets/javascripts/rx.lite.compat.min.js +2 -2
- data/vendor/assets/javascripts/rx.lite.extras.js +29 -25
- data/vendor/assets/javascripts/rx.lite.extras.min.js +1 -1
- data/vendor/assets/javascripts/rx.lite.js +630 -392
- data/vendor/assets/javascripts/rx.lite.min.js +2 -2
- data/vendor/assets/javascripts/rx.min.js +2 -2
- data/vendor/assets/javascripts/rx.sorting.js +72 -0
- data/vendor/assets/javascripts/rx.sorting.min.js +3 -0
- data/vendor/assets/javascripts/rx.testing.js +116 -83
- data/vendor/assets/javascripts/rx.testing.min.js +1 -1
- data/vendor/assets/javascripts/rx.time.js +127 -101
- data/vendor/assets/javascripts/rx.time.min.js +1 -1
- metadata +4 -2
@@ -24,7 +24,7 @@
|
|
24
24
|
var Rx = {
|
25
25
|
internals: {},
|
26
26
|
config: {
|
27
|
-
Promise: root.Promise
|
27
|
+
Promise: root.Promise,
|
28
28
|
},
|
29
29
|
helpers: { }
|
30
30
|
};
|
@@ -66,6 +66,104 @@
|
|
66
66
|
var objectDisposed = 'Object has been disposed';
|
67
67
|
function checkDisposed() { if (this.isDisposed) { throw new Error(objectDisposed); } }
|
68
68
|
|
69
|
+
Rx.config.longStackSupport = false;
|
70
|
+
var hasStacks = false;
|
71
|
+
try {
|
72
|
+
throw new Error();
|
73
|
+
} catch (e) {
|
74
|
+
hasStacks = !!e.stack;
|
75
|
+
}
|
76
|
+
|
77
|
+
// All code after this point will be filtered from stack traces reported by RxJS
|
78
|
+
var rStartingLine = captureLine(), rFileName;
|
79
|
+
|
80
|
+
var STACK_JUMP_SEPARATOR = "From previous event:";
|
81
|
+
|
82
|
+
function makeStackTraceLong(error, observable) {
|
83
|
+
// If possible, transform the error stack trace by removing Node and RxJS
|
84
|
+
// cruft, then concatenating with the stack trace of `observable`.
|
85
|
+
if (hasStacks &&
|
86
|
+
observable.stack &&
|
87
|
+
typeof error === "object" &&
|
88
|
+
error !== null &&
|
89
|
+
error.stack &&
|
90
|
+
error.stack.indexOf(STACK_JUMP_SEPARATOR) === -1
|
91
|
+
) {
|
92
|
+
var stacks = [];
|
93
|
+
for (var o = observable; !!o; o = o.source) {
|
94
|
+
if (o.stack) {
|
95
|
+
stacks.unshift(o.stack);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
stacks.unshift(error.stack);
|
99
|
+
|
100
|
+
var concatedStacks = stacks.join("\n" + STACK_JUMP_SEPARATOR + "\n");
|
101
|
+
error.stack = filterStackString(concatedStacks);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
function filterStackString(stackString) {
|
106
|
+
var lines = stackString.split("\n"),
|
107
|
+
desiredLines = [];
|
108
|
+
for (var i = 0, len = lines.length; i < len; i++) {
|
109
|
+
var line = lines[i];
|
110
|
+
|
111
|
+
if (!isInternalFrame(line) && !isNodeFrame(line) && line) {
|
112
|
+
desiredLines.push(line);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
return desiredLines.join("\n");
|
116
|
+
}
|
117
|
+
|
118
|
+
function isInternalFrame(stackLine) {
|
119
|
+
var fileNameAndLineNumber = getFileNameAndLineNumber(stackLine);
|
120
|
+
if (!fileNameAndLineNumber) {
|
121
|
+
return false;
|
122
|
+
}
|
123
|
+
var fileName = fileNameAndLineNumber[0], lineNumber = fileNameAndLineNumber[1];
|
124
|
+
|
125
|
+
console.log(rFileName, rStartingLine, rEndingLine);
|
126
|
+
|
127
|
+
return fileName === rFileName &&
|
128
|
+
lineNumber >= rStartingLine &&
|
129
|
+
lineNumber <= rEndingLine;
|
130
|
+
}
|
131
|
+
|
132
|
+
function isNodeFrame(stackLine) {
|
133
|
+
return stackLine.indexOf("(module.js:") !== -1 ||
|
134
|
+
stackLine.indexOf("(node.js:") !== -1;
|
135
|
+
}
|
136
|
+
|
137
|
+
function captureLine() {
|
138
|
+
if (!hasStacks) { return; }
|
139
|
+
|
140
|
+
try {
|
141
|
+
throw new Error();
|
142
|
+
} catch (e) {
|
143
|
+
var lines = e.stack.split("\n");
|
144
|
+
var firstLine = lines[0].indexOf("@") > 0 ? lines[1] : lines[2];
|
145
|
+
var fileNameAndLineNumber = getFileNameAndLineNumber(firstLine);
|
146
|
+
if (!fileNameAndLineNumber) { return; }
|
147
|
+
|
148
|
+
rFileName = fileNameAndLineNumber[0];
|
149
|
+
return fileNameAndLineNumber[1];
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
function getFileNameAndLineNumber(stackLine) {
|
154
|
+
// Named functions: "at functionName (filename:lineNumber:columnNumber)"
|
155
|
+
var attempt1 = /at .+ \((.+):(\d+):(?:\d+)\)$/.exec(stackLine);
|
156
|
+
if (attempt1) { return [attempt1[1], Number(attempt1[2])]; }
|
157
|
+
|
158
|
+
// Anonymous functions: "at filename:lineNumber:columnNumber"
|
159
|
+
var attempt2 = /at ([^ ]+):(\d+):(?:\d+)$/.exec(stackLine);
|
160
|
+
if (attempt2) { return [attempt2[1], Number(attempt2[2])]; }
|
161
|
+
|
162
|
+
// Firefox style: "function@filename:lineNumber or @filename:lineNumber"
|
163
|
+
var attempt3 = /.*@(.+):(\d+)$/.exec(stackLine);
|
164
|
+
if (attempt3) { return [attempt3[1], Number(attempt3[2])]; }
|
165
|
+
}
|
166
|
+
|
69
167
|
// Shim in iterator support
|
70
168
|
var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) ||
|
71
169
|
'_es6shim_iterator_';
|
@@ -76,7 +174,21 @@
|
|
76
174
|
|
77
175
|
var doneEnumerator = Rx.doneEnumerator = { done: true, value: undefined };
|
78
176
|
|
79
|
-
Rx.
|
177
|
+
var isIterable = Rx.helpers.isIterable = function (o) {
|
178
|
+
return o[$iterator$] !== undefined;
|
179
|
+
}
|
180
|
+
|
181
|
+
var isArrayLike = Rx.helpers.isArrayLike = function (o) {
|
182
|
+
return o && o.length !== undefined;
|
183
|
+
}
|
184
|
+
|
185
|
+
Rx.helpers.iterator = $iterator$;
|
186
|
+
|
187
|
+
var deprecate = Rx.helpers.deprecate = function (name, alternative) {
|
188
|
+
/*if (typeof console !== "undefined" && typeof console.warn === "function") {
|
189
|
+
console.warn(name + ' is deprecated, use ' + alternative + ' instead.', new Error('').stack);
|
190
|
+
}*/
|
191
|
+
}
|
80
192
|
|
81
193
|
/** `Object#toString` result shortcuts */
|
82
194
|
var argsClass = '[object Arguments]',
|
@@ -93,15 +205,16 @@
|
|
93
205
|
var toString = Object.prototype.toString,
|
94
206
|
hasOwnProperty = Object.prototype.hasOwnProperty,
|
95
207
|
supportsArgsClass = toString.call(arguments) == argsClass, // For less <IE9 && FF<4
|
96
|
-
|
208
|
+
supportNodeClass,
|
97
209
|
errorProto = Error.prototype,
|
98
210
|
objectProto = Object.prototype,
|
211
|
+
stringProto = String.prototype,
|
99
212
|
propertyIsEnumerable = objectProto.propertyIsEnumerable;
|
100
213
|
|
101
214
|
try {
|
102
|
-
|
103
|
-
} catch(e) {
|
104
|
-
|
215
|
+
supportNodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + ''));
|
216
|
+
} catch (e) {
|
217
|
+
supportNodeClass = true;
|
105
218
|
}
|
106
219
|
|
107
220
|
var shadowedProps = [
|
@@ -206,7 +319,7 @@
|
|
206
319
|
return typeof value.toString != 'function' && typeof (value + '') == 'string';
|
207
320
|
}
|
208
321
|
|
209
|
-
|
322
|
+
var isArguments = function(value) {
|
210
323
|
return (value && typeof value == 'object') ? toString.call(value) == argsClass : false;
|
211
324
|
}
|
212
325
|
|
@@ -262,10 +375,10 @@
|
|
262
375
|
|
263
376
|
case numberClass:
|
264
377
|
// treat `NaN` vs. `NaN` as equal
|
265
|
-
return (a != +a)
|
266
|
-
|
378
|
+
return (a != +a) ?
|
379
|
+
b != +b :
|
267
380
|
// but treat `-0` vs. `+0` as not equal
|
268
|
-
|
381
|
+
(a == 0 ? (1 / a == 1 / b) : a == +b);
|
269
382
|
|
270
383
|
case regexpClass:
|
271
384
|
case stringClass:
|
@@ -1024,15 +1137,13 @@
|
|
1024
1137
|
return SchedulePeriodicRecursive;
|
1025
1138
|
}());
|
1026
1139
|
|
1027
|
-
/**
|
1028
|
-
* Gets a scheduler that schedules work immediately on the current thread.
|
1029
|
-
*/
|
1140
|
+
/** Gets a scheduler that schedules work immediately on the current thread. */
|
1030
1141
|
var immediateScheduler = Scheduler.immediate = (function () {
|
1031
1142
|
|
1032
1143
|
function scheduleNow(state, action) { return action(this, state); }
|
1033
1144
|
|
1034
1145
|
function scheduleRelative(state, dueTime, action) {
|
1035
|
-
var dt = normalizeTime(
|
1146
|
+
var dt = normalizeTime(dueTime);
|
1036
1147
|
while (dt - this.now() > 0) { }
|
1037
1148
|
return action(this, state);
|
1038
1149
|
}
|
@@ -1146,24 +1257,24 @@
|
|
1146
1257
|
oldHandler = root.onmessage;
|
1147
1258
|
// Test for async
|
1148
1259
|
root.onmessage = function () { isAsync = true; };
|
1149
|
-
root.postMessage('','*');
|
1260
|
+
root.postMessage('', '*');
|
1150
1261
|
root.onmessage = oldHandler;
|
1151
1262
|
|
1152
1263
|
return isAsync;
|
1153
1264
|
}
|
1154
1265
|
|
1155
|
-
// Use in order,
|
1156
|
-
if (typeof
|
1157
|
-
scheduleMethod = process.nextTick;
|
1158
|
-
} else if (typeof setImmediate === 'function') {
|
1266
|
+
// Use in order, setImmediate, nextTick, postMessage, MessageChannel, script readystatechanged, setTimeout
|
1267
|
+
if (typeof setImmediate === 'function') {
|
1159
1268
|
scheduleMethod = setImmediate;
|
1160
1269
|
clearMethod = clearImmediate;
|
1270
|
+
} else if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
|
1271
|
+
scheduleMethod = process.nextTick;
|
1161
1272
|
} else if (postMessageSupported()) {
|
1162
1273
|
var MSG_PREFIX = 'ms.rx.schedule' + Math.random(),
|
1163
1274
|
tasks = {},
|
1164
1275
|
taskId = 0;
|
1165
1276
|
|
1166
|
-
function
|
1277
|
+
var onGlobalPostMessage = function (event) {
|
1167
1278
|
// Only if we're a match to avoid any other global events
|
1168
1279
|
if (typeof event.data === 'string' && event.data.substring(0, MSG_PREFIX.length) === MSG_PREFIX) {
|
1169
1280
|
var handleId = event.data.substring(MSG_PREFIX.length),
|
@@ -1464,8 +1575,8 @@
|
|
1464
1575
|
var e;
|
1465
1576
|
try {
|
1466
1577
|
e = sources[$iterator$]();
|
1467
|
-
} catch(err) {
|
1468
|
-
observer.onError();
|
1578
|
+
} catch (err) {
|
1579
|
+
observer.onError(err);
|
1469
1580
|
return;
|
1470
1581
|
}
|
1471
1582
|
|
@@ -1506,14 +1617,14 @@
|
|
1506
1617
|
});
|
1507
1618
|
};
|
1508
1619
|
|
1509
|
-
Enumerable.prototype.
|
1620
|
+
Enumerable.prototype.catchError = function () {
|
1510
1621
|
var sources = this;
|
1511
1622
|
return new AnonymousObservable(function (observer) {
|
1512
1623
|
var e;
|
1513
1624
|
try {
|
1514
1625
|
e = sources[$iterator$]();
|
1515
|
-
} catch(err) {
|
1516
|
-
observer.onError();
|
1626
|
+
} catch (err) {
|
1627
|
+
observer.onError(err);
|
1517
1628
|
return;
|
1518
1629
|
}
|
1519
1630
|
|
@@ -1651,7 +1762,7 @@
|
|
1651
1762
|
* @param {Scheduler} scheduler Scheduler to schedule observer messages on.
|
1652
1763
|
* @returns {Observer} Observer whose messages are scheduled on the given scheduler.
|
1653
1764
|
*/
|
1654
|
-
Observer.notifyOn = function (scheduler) {
|
1765
|
+
Observer.prototype.notifyOn = function (scheduler) {
|
1655
1766
|
return new ObserveOnObserver(scheduler, this);
|
1656
1767
|
};
|
1657
1768
|
|
@@ -1832,23 +1943,17 @@
|
|
1832
1943
|
|
1833
1944
|
ScheduledObserver.prototype.next = function (value) {
|
1834
1945
|
var self = this;
|
1835
|
-
this.queue.push(function () {
|
1836
|
-
self.observer.onNext(value);
|
1837
|
-
});
|
1946
|
+
this.queue.push(function () { self.observer.onNext(value); });
|
1838
1947
|
};
|
1839
1948
|
|
1840
|
-
ScheduledObserver.prototype.error = function (
|
1949
|
+
ScheduledObserver.prototype.error = function (e) {
|
1841
1950
|
var self = this;
|
1842
|
-
this.queue.push(function () {
|
1843
|
-
self.observer.onError(err);
|
1844
|
-
});
|
1951
|
+
this.queue.push(function () { self.observer.onError(e); });
|
1845
1952
|
};
|
1846
1953
|
|
1847
1954
|
ScheduledObserver.prototype.completed = function () {
|
1848
1955
|
var self = this;
|
1849
|
-
this.queue.push(function () {
|
1850
|
-
self.observer.onCompleted();
|
1851
|
-
});
|
1956
|
+
this.queue.push(function () { self.observer.onCompleted(); });
|
1852
1957
|
};
|
1853
1958
|
|
1854
1959
|
ScheduledObserver.prototype.ensureActive = function () {
|
@@ -1889,8 +1994,9 @@
|
|
1889
1994
|
var ObserveOnObserver = (function (__super__) {
|
1890
1995
|
inherits(ObserveOnObserver, __super__);
|
1891
1996
|
|
1892
|
-
function ObserveOnObserver() {
|
1893
|
-
__super__.
|
1997
|
+
function ObserveOnObserver(scheduler, observer, cancel) {
|
1998
|
+
__super__.call(this, scheduler, observer);
|
1999
|
+
this._cancel = cancel;
|
1894
2000
|
}
|
1895
2001
|
|
1896
2002
|
ObserveOnObserver.prototype.next = function (value) {
|
@@ -1908,6 +2014,12 @@
|
|
1908
2014
|
this.ensureActive();
|
1909
2015
|
};
|
1910
2016
|
|
2017
|
+
ObserveOnObserver.prototype.dispose = function () {
|
2018
|
+
__super__.prototype.dispose.call(this);
|
2019
|
+
this._cancel && this._cancel.dispose();
|
2020
|
+
this._cancel = null;
|
2021
|
+
};
|
2022
|
+
|
1911
2023
|
return ObserveOnObserver;
|
1912
2024
|
})(ScheduledObserver);
|
1913
2025
|
|
@@ -1919,6 +2031,24 @@
|
|
1919
2031
|
var Observable = Rx.Observable = (function () {
|
1920
2032
|
|
1921
2033
|
function Observable(subscribe) {
|
2034
|
+
if (Rx.config.longStackSupport && hasStacks) {
|
2035
|
+
try {
|
2036
|
+
throw new Error();
|
2037
|
+
} catch (e) {
|
2038
|
+
this.stack = e.stack.substring(e.stack.indexOf("\n") + 1);
|
2039
|
+
}
|
2040
|
+
|
2041
|
+
var self = this;
|
2042
|
+
this._subscribe = function (observer) {
|
2043
|
+
observer.onError = function (err) {
|
2044
|
+
makeStackTraceLong(self, err);
|
2045
|
+
observer.onError(err);
|
2046
|
+
};
|
2047
|
+
|
2048
|
+
subscribe(observer);
|
2049
|
+
};
|
2050
|
+
}
|
2051
|
+
|
1922
2052
|
this._subscribe = subscribe;
|
1923
2053
|
}
|
1924
2054
|
|
@@ -1983,7 +2113,7 @@
|
|
1983
2113
|
var source = this;
|
1984
2114
|
return new AnonymousObservable(function (observer) {
|
1985
2115
|
return source.subscribe(new ObserveOnObserver(scheduler, observer));
|
1986
|
-
});
|
2116
|
+
}, source);
|
1987
2117
|
};
|
1988
2118
|
|
1989
2119
|
/**
|
@@ -2005,7 +2135,7 @@
|
|
2005
2135
|
d.setDisposable(new ScheduledDisposable(scheduler, source.subscribe(observer)));
|
2006
2136
|
}));
|
2007
2137
|
return d;
|
2008
|
-
});
|
2138
|
+
}, source);
|
2009
2139
|
};
|
2010
2140
|
|
2011
2141
|
/**
|
@@ -2019,10 +2149,8 @@
|
|
2019
2149
|
|
2020
2150
|
promise.then(
|
2021
2151
|
function (value) {
|
2022
|
-
|
2023
|
-
|
2024
|
-
subject.onCompleted();
|
2025
|
-
}
|
2152
|
+
subject.onNext(value);
|
2153
|
+
subject.onCompleted();
|
2026
2154
|
},
|
2027
2155
|
subject.onError.bind(subject));
|
2028
2156
|
|
@@ -2058,36 +2186,34 @@
|
|
2058
2186
|
};
|
2059
2187
|
|
2060
2188
|
/**
|
2061
|
-
* Creates
|
2062
|
-
* @returns An observable sequence containing a single element with a list containing all the elements of the source sequence.
|
2189
|
+
* Creates an array from an observable sequence.
|
2190
|
+
* @returns {Observable} An observable sequence containing a single element with a list containing all the elements of the source sequence.
|
2063
2191
|
*/
|
2064
2192
|
observableProto.toArray = function () {
|
2065
|
-
var
|
2193
|
+
var source = this;
|
2066
2194
|
return new AnonymousObservable(function(observer) {
|
2067
2195
|
var arr = [];
|
2068
|
-
return
|
2196
|
+
return source.subscribe(
|
2069
2197
|
arr.push.bind(arr),
|
2070
2198
|
observer.onError.bind(observer),
|
2071
2199
|
function () {
|
2072
2200
|
observer.onNext(arr);
|
2073
2201
|
observer.onCompleted();
|
2074
2202
|
});
|
2075
|
-
});
|
2203
|
+
}, source);
|
2076
2204
|
};
|
2077
2205
|
|
2078
2206
|
/**
|
2079
2207
|
* Creates an observable sequence from a specified subscribe method implementation.
|
2080
|
-
*
|
2081
2208
|
* @example
|
2082
2209
|
* var res = Rx.Observable.create(function (observer) { return function () { } );
|
2083
2210
|
* var res = Rx.Observable.create(function (observer) { return Rx.Disposable.empty; } );
|
2084
2211
|
* var res = Rx.Observable.create(function (observer) { } );
|
2085
|
-
*
|
2086
2212
|
* @param {Function} subscribe Implementation of the resulting observable sequence's subscribe method, returning a function that will be wrapped in a Disposable.
|
2087
2213
|
* @returns {Observable} The observable sequence with the specified implementation for the Subscribe method.
|
2088
2214
|
*/
|
2089
|
-
Observable.create = Observable.createWithDisposable = function (subscribe) {
|
2090
|
-
return new AnonymousObservable(subscribe);
|
2215
|
+
Observable.create = Observable.createWithDisposable = function (subscribe, parent) {
|
2216
|
+
return new AnonymousObservable(subscribe, parent);
|
2091
2217
|
};
|
2092
2218
|
|
2093
2219
|
/**
|
@@ -2131,6 +2257,60 @@
|
|
2131
2257
|
|
2132
2258
|
var maxSafeInteger = Math.pow(2, 53) - 1;
|
2133
2259
|
|
2260
|
+
function StringIterable(str) {
|
2261
|
+
this._s = s;
|
2262
|
+
}
|
2263
|
+
|
2264
|
+
StringIterable.prototype[$iterator$] = function () {
|
2265
|
+
return new StringIterator(this._s);
|
2266
|
+
};
|
2267
|
+
|
2268
|
+
function StringIterator(str) {
|
2269
|
+
this._s = s;
|
2270
|
+
this._l = s.length;
|
2271
|
+
this._i = 0;
|
2272
|
+
}
|
2273
|
+
|
2274
|
+
StringIterator.prototype[$iterator$] = function () {
|
2275
|
+
return this;
|
2276
|
+
};
|
2277
|
+
|
2278
|
+
StringIterator.prototype.next = function () {
|
2279
|
+
if (this._i < this._l) {
|
2280
|
+
var val = this._s.charAt(this._i++);
|
2281
|
+
return { done: false, value: val };
|
2282
|
+
} else {
|
2283
|
+
return doneEnumerator;
|
2284
|
+
}
|
2285
|
+
};
|
2286
|
+
|
2287
|
+
function ArrayIterable(a) {
|
2288
|
+
this._a = a;
|
2289
|
+
}
|
2290
|
+
|
2291
|
+
ArrayIterable.prototype[$iterator$] = function () {
|
2292
|
+
return new ArrayIterator(this._a);
|
2293
|
+
};
|
2294
|
+
|
2295
|
+
function ArrayIterator(a) {
|
2296
|
+
this._a = a;
|
2297
|
+
this._l = toLength(a);
|
2298
|
+
this._i = 0;
|
2299
|
+
}
|
2300
|
+
|
2301
|
+
ArrayIterator.prototype[$iterator$] = function () {
|
2302
|
+
return this;
|
2303
|
+
};
|
2304
|
+
|
2305
|
+
ArrayIterator.prototype.next = function () {
|
2306
|
+
if (this._i < this._l) {
|
2307
|
+
var val = this._a[this._i++];
|
2308
|
+
return { done: false, value: val };
|
2309
|
+
} else {
|
2310
|
+
return doneEnumerator;
|
2311
|
+
}
|
2312
|
+
};
|
2313
|
+
|
2134
2314
|
function numberIsFinite(value) {
|
2135
2315
|
return typeof value === 'number' && root.isFinite(value);
|
2136
2316
|
}
|
@@ -2139,8 +2319,18 @@
|
|
2139
2319
|
return n !== n;
|
2140
2320
|
}
|
2141
2321
|
|
2142
|
-
function
|
2143
|
-
|
2322
|
+
function getIterable(o) {
|
2323
|
+
var i = o[$iterator$], it;
|
2324
|
+
if (!i && typeof o === 'string') {
|
2325
|
+
it = new StringIterable(o);
|
2326
|
+
return it[$iterator$]();
|
2327
|
+
}
|
2328
|
+
if (!i && o.length !== undefined) {
|
2329
|
+
it = new ArrayIterable(o);
|
2330
|
+
return it[$iterator$]();
|
2331
|
+
}
|
2332
|
+
if (!i) { throw new TypeError('Object is not iterable'); }
|
2333
|
+
return o[$iterator$]();
|
2144
2334
|
}
|
2145
2335
|
|
2146
2336
|
function sign(value) {
|
@@ -2160,10 +2350,6 @@
|
|
2160
2350
|
return len;
|
2161
2351
|
}
|
2162
2352
|
|
2163
|
-
function isCallable(f) {
|
2164
|
-
return Object.prototype.toString.call(f) === '[object Function]' && typeof f === 'function';
|
2165
|
-
}
|
2166
|
-
|
2167
2353
|
/**
|
2168
2354
|
* This method creates a new Observable sequence from an array-like or iterable object.
|
2169
2355
|
* @param {Any} arrayLike An array-like or iterable object to convert to an Observable sequence.
|
@@ -2175,66 +2361,52 @@
|
|
2175
2361
|
if (iterable == null) {
|
2176
2362
|
throw new Error('iterable cannot be null.')
|
2177
2363
|
}
|
2178
|
-
if (mapFn && !
|
2364
|
+
if (mapFn && !isFunction(mapFn)) {
|
2179
2365
|
throw new Error('mapFn when provided must be a function');
|
2180
2366
|
}
|
2181
2367
|
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
|
2368
|
+
var list = Object(iterable), it = getIterable(list);
|
2182
2369
|
return new AnonymousObservable(function (observer) {
|
2183
|
-
var
|
2184
|
-
objIsIterable = isIterable(list),
|
2185
|
-
len = objIsIterable ? 0 : toLength(list),
|
2186
|
-
it = objIsIterable ? list[$iterator$]() : null,
|
2187
|
-
i = 0;
|
2370
|
+
var i = 0;
|
2188
2371
|
return scheduler.scheduleRecursive(function (self) {
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2195
|
-
|
2196
|
-
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2200
|
-
observer.onCompleted();
|
2201
|
-
return;
|
2202
|
-
}
|
2372
|
+
var next;
|
2373
|
+
try {
|
2374
|
+
next = it.next();
|
2375
|
+
} catch (e) {
|
2376
|
+
observer.onError(e);
|
2377
|
+
return;
|
2378
|
+
}
|
2379
|
+
if (next.done) {
|
2380
|
+
observer.onCompleted();
|
2381
|
+
return;
|
2382
|
+
}
|
2203
2383
|
|
2204
|
-
|
2205
|
-
} else {
|
2206
|
-
result = !!list.charAt ? list.charAt(i) : list[i];
|
2207
|
-
}
|
2384
|
+
var result = next.value;
|
2208
2385
|
|
2209
|
-
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2213
|
-
|
2214
|
-
|
2215
|
-
}
|
2386
|
+
if (mapFn && isFunction(mapFn)) {
|
2387
|
+
try {
|
2388
|
+
result = mapFn.call(thisArg, result, i);
|
2389
|
+
} catch (e) {
|
2390
|
+
observer.onError(e);
|
2391
|
+
return;
|
2216
2392
|
}
|
2217
|
-
|
2218
|
-
observer.onNext(result);
|
2219
|
-
i++;
|
2220
|
-
self();
|
2221
|
-
} else {
|
2222
|
-
observer.onCompleted();
|
2223
2393
|
}
|
2394
|
+
|
2395
|
+
observer.onNext(result);
|
2396
|
+
i++;
|
2397
|
+
self();
|
2224
2398
|
});
|
2225
2399
|
});
|
2226
2400
|
};
|
2227
2401
|
|
2228
2402
|
/**
|
2229
2403
|
* Converts an array to an observable sequence, using an optional scheduler to enumerate the array.
|
2230
|
-
*
|
2231
|
-
* @example
|
2232
|
-
* var res = Rx.Observable.fromArray([1,2,3]);
|
2233
|
-
* var res = Rx.Observable.fromArray([1,2,3], Rx.Scheduler.timeout);
|
2404
|
+
* @deprecated use Observable.from or Observable.of
|
2234
2405
|
* @param {Scheduler} [scheduler] Scheduler to run the enumeration of the input sequence on.
|
2235
2406
|
* @returns {Observable} The observable sequence whose elements are pulled from the given enumerable sequence.
|
2236
2407
|
*/
|
2237
2408
|
var observableFromArray = Observable.fromArray = function (array, scheduler) {
|
2409
|
+
deprecate('fromArray', 'from');
|
2238
2410
|
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
|
2239
2411
|
return new AnonymousObservable(function (observer) {
|
2240
2412
|
var count = 0, len = array.length;
|
@@ -2302,29 +2474,36 @@
|
|
2302
2474
|
});
|
2303
2475
|
};
|
2304
2476
|
|
2477
|
+
function observableOf (scheduler, array) {
|
2478
|
+
isScheduler(scheduler) || (scheduler = currentThreadScheduler);
|
2479
|
+
return new AnonymousObservable(function (observer) {
|
2480
|
+
var count = 0, len = array.length;
|
2481
|
+
return scheduler.scheduleRecursive(function (self) {
|
2482
|
+
if (count < len) {
|
2483
|
+
observer.onNext(array[count++]);
|
2484
|
+
self();
|
2485
|
+
} else {
|
2486
|
+
observer.onCompleted();
|
2487
|
+
}
|
2488
|
+
});
|
2489
|
+
});
|
2490
|
+
}
|
2491
|
+
|
2305
2492
|
/**
|
2306
2493
|
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
|
2307
|
-
* @example
|
2308
|
-
* var res = Rx.Observable.of(1,2,3);
|
2309
2494
|
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
|
2310
2495
|
*/
|
2311
2496
|
Observable.of = function () {
|
2312
|
-
|
2313
|
-
for(var i = 0; i < len; i++) { args[i] = arguments[i]; }
|
2314
|
-
return observableFromArray(args);
|
2497
|
+
return observableOf(null, arguments);
|
2315
2498
|
};
|
2316
2499
|
|
2317
2500
|
/**
|
2318
2501
|
* This method creates a new Observable instance with a variable number of arguments, regardless of number or type of the arguments.
|
2319
|
-
* @example
|
2320
|
-
* var res = Rx.Observable.of(1,2,3);
|
2321
2502
|
* @param {Scheduler} scheduler A scheduler to use for scheduling the arguments.
|
2322
2503
|
* @returns {Observable} The observable sequence whose elements are pulled from the given arguments.
|
2323
2504
|
*/
|
2324
|
-
|
2325
|
-
|
2326
|
-
for(var i = 0; i < len; i++) { args[i] = arguments[i + 1]; }
|
2327
|
-
return observableFromArray(args, scheduler);
|
2505
|
+
Observable.ofWithScheduler = function (scheduler) {
|
2506
|
+
return observableOf(scheduler, slice.call(arguments, 1));
|
2328
2507
|
};
|
2329
2508
|
|
2330
2509
|
/**
|
@@ -2381,7 +2560,7 @@
|
|
2381
2560
|
* @param {Scheduler} scheduler Scheduler to send the single element on. If not specified, defaults to Scheduler.immediate.
|
2382
2561
|
* @returns {Observable} An observable sequence containing the single specified element.
|
2383
2562
|
*/
|
2384
|
-
var observableReturn = Observable['return'] = Observable.
|
2563
|
+
var observableReturn = Observable['return'] = Observable.just = function (value, scheduler) {
|
2385
2564
|
isScheduler(scheduler) || (scheduler = immediateScheduler);
|
2386
2565
|
return new AnonymousObservable(function (observer) {
|
2387
2566
|
return scheduler.schedule(function () {
|
@@ -2391,6 +2570,12 @@
|
|
2391
2570
|
});
|
2392
2571
|
};
|
2393
2572
|
|
2573
|
+
/** @deprecated use return or just */
|
2574
|
+
Observable.returnValue = function () {
|
2575
|
+
deprecate('returnValue', 'return or just');
|
2576
|
+
return observableReturn.apply(null, arguments);
|
2577
|
+
};
|
2578
|
+
|
2394
2579
|
/**
|
2395
2580
|
* Returns an observable sequence that terminates with an exception, using the specified scheduler to send out the single onError message.
|
2396
2581
|
* There is an alias to this method called 'throwError' for browsers <IE9.
|
@@ -2533,7 +2718,7 @@
|
|
2533
2718
|
}, observer.onCompleted.bind(observer)));
|
2534
2719
|
|
2535
2720
|
return subscription;
|
2536
|
-
});
|
2721
|
+
}, source);
|
2537
2722
|
}
|
2538
2723
|
|
2539
2724
|
/**
|
@@ -2544,19 +2729,35 @@
|
|
2544
2729
|
* @param {Mixed} handlerOrSecond Exception handler function that returns an observable sequence given the error that occurred in the first sequence, or a second observable sequence used to produce results when an error occurred in the first sequence.
|
2545
2730
|
* @returns {Observable} An observable sequence containing the first sequence's elements, followed by the elements of the handler sequence in case an exception occurred.
|
2546
2731
|
*/
|
2547
|
-
observableProto['catch'] = observableProto.catchError =
|
2732
|
+
observableProto['catch'] = observableProto.catchError = function (handlerOrSecond) {
|
2548
2733
|
return typeof handlerOrSecond === 'function' ?
|
2549
2734
|
observableCatchHandler(this, handlerOrSecond) :
|
2550
2735
|
observableCatch([this, handlerOrSecond]);
|
2551
2736
|
};
|
2552
2737
|
|
2738
|
+
/**
|
2739
|
+
* @deprecated use #catch or #catchError instead.
|
2740
|
+
*/
|
2741
|
+
observableProto.catchException = function (handlerOrSecond) {
|
2742
|
+
deprecate('catchException', 'catch or catchError');
|
2743
|
+
return this.catchError(handlerOrSecond);
|
2744
|
+
};
|
2745
|
+
|
2553
2746
|
/**
|
2554
2747
|
* Continues an observable sequence that is terminated by an exception with the next observable sequence.
|
2555
2748
|
* @param {Array | Arguments} args Arguments or an array to use as the next sequence if an error occurs.
|
2556
2749
|
* @returns {Observable} An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully.
|
2557
2750
|
*/
|
2558
|
-
var observableCatch = Observable.
|
2559
|
-
return enumerableOf(argsOrArray(arguments, 0)).
|
2751
|
+
var observableCatch = Observable.catchError = Observable['catch'] = function () {
|
2752
|
+
return enumerableOf(argsOrArray(arguments, 0)).catchError();
|
2753
|
+
};
|
2754
|
+
|
2755
|
+
/**
|
2756
|
+
* @deprecated use #catch or #catchError instead.
|
2757
|
+
*/
|
2758
|
+
Observable.catchException = function () {
|
2759
|
+
deprecate('catchException', 'catch or catchError');
|
2760
|
+
return observableCatch.apply(null, arguments);
|
2560
2761
|
};
|
2561
2762
|
|
2562
2763
|
/**
|
@@ -2640,7 +2841,7 @@
|
|
2640
2841
|
}
|
2641
2842
|
|
2642
2843
|
return new CompositeDisposable(subscriptions);
|
2643
|
-
});
|
2844
|
+
}, this);
|
2644
2845
|
};
|
2645
2846
|
|
2646
2847
|
/**
|
@@ -2666,13 +2867,19 @@
|
|
2666
2867
|
return enumerableOf(argsOrArray(arguments, 0)).concat();
|
2667
2868
|
};
|
2668
2869
|
|
2669
|
-
|
2670
|
-
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2674
|
-
|
2675
|
-
|
2870
|
+
/**
|
2871
|
+
* Concatenates an observable sequence of observable sequences.
|
2872
|
+
* @returns {Observable} An observable sequence that contains the elements of each observed inner sequence, in sequential order.
|
2873
|
+
*/
|
2874
|
+
observableProto.concatAll = function () {
|
2875
|
+
return this.merge(1);
|
2876
|
+
};
|
2877
|
+
|
2878
|
+
/** @deprecated Use `concatAll` instead. */
|
2879
|
+
observableProto.concatObservable = function () {
|
2880
|
+
deprecate('concatObservable', 'concatAll');
|
2881
|
+
return this.merge(1);
|
2882
|
+
};
|
2676
2883
|
|
2677
2884
|
/**
|
2678
2885
|
* Merges an observable sequence of observable sequences into an observable sequence, limiting the number of concurrent subscriptions to inner sequences.
|
@@ -2719,43 +2926,37 @@
|
|
2719
2926
|
activeCount === 0 && observer.onCompleted();
|
2720
2927
|
}));
|
2721
2928
|
return group;
|
2722
|
-
});
|
2929
|
+
}, sources);
|
2723
2930
|
};
|
2724
2931
|
|
2725
|
-
|
2726
|
-
|
2727
|
-
|
2728
|
-
|
2729
|
-
|
2730
|
-
|
2731
|
-
|
2732
|
-
|
2733
|
-
|
2734
|
-
|
2735
|
-
|
2736
|
-
|
2737
|
-
|
2738
|
-
|
2739
|
-
|
2740
|
-
|
2741
|
-
|
2742
|
-
|
2743
|
-
|
2744
|
-
|
2745
|
-
|
2746
|
-
|
2747
|
-
}
|
2748
|
-
if (Array.isArray(sources[0])) {
|
2749
|
-
sources = sources[0];
|
2750
|
-
}
|
2751
|
-
return observableFromArray(sources, scheduler).mergeObservable();
|
2752
|
-
};
|
2932
|
+
/**
|
2933
|
+
* Merges all the observable sequences into a single observable sequence.
|
2934
|
+
* The scheduler is optional and if not specified, the immediate scheduler is used.
|
2935
|
+
* @returns {Observable} The observable sequence that merges the elements of the observable sequences.
|
2936
|
+
*/
|
2937
|
+
var observableMerge = Observable.merge = function () {
|
2938
|
+
var scheduler, sources;
|
2939
|
+
if (!arguments[0]) {
|
2940
|
+
scheduler = immediateScheduler;
|
2941
|
+
sources = slice.call(arguments, 1);
|
2942
|
+
} else if (isScheduler(arguments[0])) {
|
2943
|
+
scheduler = arguments[0];
|
2944
|
+
sources = slice.call(arguments, 1);
|
2945
|
+
} else {
|
2946
|
+
scheduler = immediateScheduler;
|
2947
|
+
sources = slice.call(arguments, 0);
|
2948
|
+
}
|
2949
|
+
if (Array.isArray(sources[0])) {
|
2950
|
+
sources = sources[0];
|
2951
|
+
}
|
2952
|
+
return observableOf(scheduler, sources).mergeAll();
|
2953
|
+
};
|
2753
2954
|
|
2754
2955
|
/**
|
2755
2956
|
* Merges an observable sequence of observable sequences into an observable sequence.
|
2756
2957
|
* @returns {Observable} The observable sequence that merges the elements of the inner sequences.
|
2757
2958
|
*/
|
2758
|
-
observableProto.
|
2959
|
+
observableProto.mergeAll = function () {
|
2759
2960
|
var sources = this;
|
2760
2961
|
return new AnonymousObservable(function (observer) {
|
2761
2962
|
var group = new CompositeDisposable(),
|
@@ -2779,7 +2980,15 @@
|
|
2779
2980
|
group.length === 1 && observer.onCompleted();
|
2780
2981
|
}));
|
2781
2982
|
return group;
|
2782
|
-
});
|
2983
|
+
}, sources);
|
2984
|
+
};
|
2985
|
+
|
2986
|
+
/**
|
2987
|
+
* @deprecated use #mergeAll instead.
|
2988
|
+
*/
|
2989
|
+
observableProto.mergeObservable = function () {
|
2990
|
+
deprecate('mergeObservable', 'mergeAll');
|
2991
|
+
return this.mergeAll.apply(this, arguments);
|
2783
2992
|
};
|
2784
2993
|
|
2785
2994
|
/**
|
@@ -2847,7 +3056,7 @@
|
|
2847
3056
|
}));
|
2848
3057
|
|
2849
3058
|
return disposables;
|
2850
|
-
});
|
3059
|
+
}, source);
|
2851
3060
|
};
|
2852
3061
|
|
2853
3062
|
/**
|
@@ -2886,7 +3095,7 @@
|
|
2886
3095
|
!hasLatest && observer.onCompleted();
|
2887
3096
|
});
|
2888
3097
|
return new CompositeDisposable(subscription, innerSubscription);
|
2889
|
-
});
|
3098
|
+
}, sources);
|
2890
3099
|
};
|
2891
3100
|
|
2892
3101
|
/**
|
@@ -2902,7 +3111,7 @@
|
|
2902
3111
|
source.subscribe(observer),
|
2903
3112
|
other.subscribe(observer.onCompleted.bind(observer), observer.onError.bind(observer), noop)
|
2904
3113
|
);
|
2905
|
-
});
|
3114
|
+
}, source);
|
2906
3115
|
};
|
2907
3116
|
|
2908
3117
|
function zipArray(second, resultSelector) {
|
@@ -2923,7 +3132,7 @@
|
|
2923
3132
|
observer.onCompleted();
|
2924
3133
|
}
|
2925
3134
|
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
2926
|
-
});
|
3135
|
+
}, first);
|
2927
3136
|
}
|
2928
3137
|
|
2929
3138
|
/**
|
@@ -2985,7 +3194,7 @@
|
|
2985
3194
|
}
|
2986
3195
|
|
2987
3196
|
return new CompositeDisposable(subscriptions);
|
2988
|
-
});
|
3197
|
+
}, parent);
|
2989
3198
|
};
|
2990
3199
|
|
2991
3200
|
/**
|
@@ -3055,7 +3264,7 @@
|
|
3055
3264
|
* @returns {Observable} An observable sequence that hides the identity of the source sequence.
|
3056
3265
|
*/
|
3057
3266
|
observableProto.asObservable = function () {
|
3058
|
-
return new AnonymousObservable(this.subscribe.bind(this));
|
3267
|
+
return new AnonymousObservable(this.subscribe.bind(this), this);
|
3059
3268
|
};
|
3060
3269
|
|
3061
3270
|
/**
|
@@ -3079,60 +3288,58 @@
|
|
3079
3288
|
});
|
3080
3289
|
};
|
3081
3290
|
|
3082
|
-
|
3083
|
-
|
3084
|
-
|
3085
|
-
|
3086
|
-
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3091
|
-
|
3092
|
-
});
|
3093
|
-
};
|
3291
|
+
/**
|
3292
|
+
* Dematerializes the explicit notification values of an observable sequence as implicit notifications.
|
3293
|
+
* @returns {Observable} An observable sequence exhibiting the behavior corresponding to the source sequence's notification values.
|
3294
|
+
*/
|
3295
|
+
observableProto.dematerialize = function () {
|
3296
|
+
var source = this;
|
3297
|
+
return new AnonymousObservable(function (observer) {
|
3298
|
+
return source.subscribe(function (x) { return x.accept(observer); }, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3299
|
+
}, this);
|
3300
|
+
};
|
3094
3301
|
|
3095
|
-
|
3096
|
-
|
3097
|
-
|
3098
|
-
|
3099
|
-
|
3100
|
-
|
3101
|
-
|
3102
|
-
|
3103
|
-
|
3104
|
-
|
3105
|
-
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
-
|
3111
|
-
|
3112
|
-
|
3113
|
-
|
3114
|
-
|
3115
|
-
|
3116
|
-
|
3117
|
-
|
3118
|
-
|
3119
|
-
|
3120
|
-
|
3121
|
-
|
3122
|
-
|
3123
|
-
|
3124
|
-
|
3125
|
-
|
3126
|
-
|
3127
|
-
|
3128
|
-
|
3129
|
-
|
3130
|
-
|
3131
|
-
|
3132
|
-
|
3133
|
-
|
3134
|
-
|
3135
|
-
|
3302
|
+
/**
|
3303
|
+
* Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.
|
3304
|
+
*
|
3305
|
+
* var obs = observable.distinctUntilChanged();
|
3306
|
+
* var obs = observable.distinctUntilChanged(function (x) { return x.id; });
|
3307
|
+
* var obs = observable.distinctUntilChanged(function (x) { return x.id; }, function (x, y) { return x === y; });
|
3308
|
+
*
|
3309
|
+
* @param {Function} [keySelector] A function to compute the comparison key for each element. If not provided, it projects the value.
|
3310
|
+
* @param {Function} [comparer] Equality comparer for computed key values. If not provided, defaults to an equality comparer function.
|
3311
|
+
* @returns {Observable} An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.
|
3312
|
+
*/
|
3313
|
+
observableProto.distinctUntilChanged = function (keySelector, comparer) {
|
3314
|
+
var source = this;
|
3315
|
+
keySelector || (keySelector = identity);
|
3316
|
+
comparer || (comparer = defaultComparer);
|
3317
|
+
return new AnonymousObservable(function (observer) {
|
3318
|
+
var hasCurrentKey = false, currentKey;
|
3319
|
+
return source.subscribe(function (value) {
|
3320
|
+
var comparerEquals = false, key;
|
3321
|
+
try {
|
3322
|
+
key = keySelector(value);
|
3323
|
+
} catch (e) {
|
3324
|
+
observer.onError(e);
|
3325
|
+
return;
|
3326
|
+
}
|
3327
|
+
if (hasCurrentKey) {
|
3328
|
+
try {
|
3329
|
+
comparerEquals = comparer(currentKey, key);
|
3330
|
+
} catch (e) {
|
3331
|
+
observer.onError(e);
|
3332
|
+
return;
|
3333
|
+
}
|
3334
|
+
}
|
3335
|
+
if (!hasCurrentKey || !comparerEquals) {
|
3336
|
+
hasCurrentKey = true;
|
3337
|
+
currentKey = key;
|
3338
|
+
observer.onNext(value);
|
3339
|
+
}
|
3340
|
+
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3341
|
+
}, this);
|
3342
|
+
};
|
3136
3343
|
|
3137
3344
|
/**
|
3138
3345
|
* Invokes an action for each element in the observable sequence and invokes an action upon graceful or exceptional termination of the observable sequence.
|
@@ -3142,7 +3349,7 @@
|
|
3142
3349
|
* @param {Function} [onCompleted] Action to invoke upon graceful termination of the observable sequence. Used if only the observerOrOnNext parameter is also a function.
|
3143
3350
|
* @returns {Observable} The source sequence with the side-effecting behavior applied.
|
3144
3351
|
*/
|
3145
|
-
observableProto['do'] = observableProto.
|
3352
|
+
observableProto['do'] = observableProto.tap = function (observerOrOnNext, onError, onCompleted) {
|
3146
3353
|
var source = this, onNextFunc;
|
3147
3354
|
if (typeof observerOrOnNext === 'function') {
|
3148
3355
|
onNextFunc = observerOrOnNext;
|
@@ -3178,7 +3385,13 @@
|
|
3178
3385
|
}
|
3179
3386
|
observer.onCompleted();
|
3180
3387
|
});
|
3181
|
-
});
|
3388
|
+
}, this);
|
3389
|
+
};
|
3390
|
+
|
3391
|
+
/** @deprecated use #do or #tap instead. */
|
3392
|
+
observableProto.doAction = function () {
|
3393
|
+
deprecate('doAction', 'do or tap');
|
3394
|
+
return this.tap.apply(this, arguments);
|
3182
3395
|
};
|
3183
3396
|
|
3184
3397
|
/**
|
@@ -3216,13 +3429,10 @@
|
|
3216
3429
|
|
3217
3430
|
/**
|
3218
3431
|
* Invokes a specified action after the source observable sequence terminates gracefully or exceptionally.
|
3219
|
-
*
|
3220
|
-
* @example
|
3221
|
-
* var res = observable.finallyAction(function () { console.log('sequence ended'; });
|
3222
3432
|
* @param {Function} finallyAction Action to invoke after the source observable sequence terminates.
|
3223
3433
|
* @returns {Observable} Source sequence with the action-invoking termination behavior applied.
|
3224
3434
|
*/
|
3225
|
-
observableProto['finally'] = observableProto.
|
3435
|
+
observableProto['finally'] = observableProto.ensure = function (action) {
|
3226
3436
|
var source = this;
|
3227
3437
|
return new AnonymousObservable(function (observer) {
|
3228
3438
|
var subscription;
|
@@ -3241,7 +3451,15 @@
|
|
3241
3451
|
action();
|
3242
3452
|
}
|
3243
3453
|
});
|
3244
|
-
});
|
3454
|
+
}, this);
|
3455
|
+
};
|
3456
|
+
|
3457
|
+
/**
|
3458
|
+
* @deprecated use #finally or #ensure instead.
|
3459
|
+
*/
|
3460
|
+
observableProto.finallyAction = function (action) {
|
3461
|
+
deprecate('finallyAction', 'finally or ensure');
|
3462
|
+
return this.ensure(action);
|
3245
3463
|
};
|
3246
3464
|
|
3247
3465
|
/**
|
@@ -3252,7 +3470,7 @@
|
|
3252
3470
|
var source = this;
|
3253
3471
|
return new AnonymousObservable(function (observer) {
|
3254
3472
|
return source.subscribe(noop, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3255
|
-
});
|
3473
|
+
}, source);
|
3256
3474
|
};
|
3257
3475
|
|
3258
3476
|
/**
|
@@ -3271,21 +3489,17 @@
|
|
3271
3489
|
observer.onNext(notificationCreateOnCompleted());
|
3272
3490
|
observer.onCompleted();
|
3273
3491
|
});
|
3274
|
-
});
|
3492
|
+
}, source);
|
3275
3493
|
};
|
3276
3494
|
|
3277
|
-
|
3278
|
-
|
3279
|
-
|
3280
|
-
|
3281
|
-
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
*/
|
3286
|
-
observableProto.repeat = function (repeatCount) {
|
3287
|
-
return enumerableRepeat(this, repeatCount).concat();
|
3288
|
-
};
|
3495
|
+
/**
|
3496
|
+
* Repeats the observable sequence a specified number of times. If the repeat count is not specified, the sequence repeats indefinitely.
|
3497
|
+
* @param {Number} [repeatCount] Number of times to repeat the sequence. If not provided, repeats the sequence indefinitely.
|
3498
|
+
* @returns {Observable} The observable sequence producing the elements of the given sequence repeatedly.
|
3499
|
+
*/
|
3500
|
+
observableProto.repeat = function (repeatCount) {
|
3501
|
+
return enumerableRepeat(this, repeatCount).concat();
|
3502
|
+
};
|
3289
3503
|
|
3290
3504
|
/**
|
3291
3505
|
* Repeats the source observable sequence the specified number of times or until it successfully terminates. If the retry count is not specified, it retries indefinitely.
|
@@ -3298,7 +3512,7 @@
|
|
3298
3512
|
* @returns {Observable} An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.
|
3299
3513
|
*/
|
3300
3514
|
observableProto.retry = function (retryCount) {
|
3301
|
-
return enumerableRepeat(this, retryCount).
|
3515
|
+
return enumerableRepeat(this, retryCount).catchError();
|
3302
3516
|
};
|
3303
3517
|
|
3304
3518
|
/**
|
@@ -3345,7 +3559,7 @@
|
|
3345
3559
|
observer.onCompleted();
|
3346
3560
|
}
|
3347
3561
|
);
|
3348
|
-
});
|
3562
|
+
}, source);
|
3349
3563
|
};
|
3350
3564
|
|
3351
3565
|
/**
|
@@ -3364,7 +3578,7 @@
|
|
3364
3578
|
q.push(x);
|
3365
3579
|
q.length > count && observer.onNext(q.shift());
|
3366
3580
|
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3367
|
-
});
|
3581
|
+
}, source);
|
3368
3582
|
};
|
3369
3583
|
|
3370
3584
|
/**
|
@@ -3403,10 +3617,10 @@
|
|
3403
3617
|
q.push(x);
|
3404
3618
|
q.length > count && q.shift();
|
3405
3619
|
}, observer.onError.bind(observer), function () {
|
3406
|
-
while(q.length > 0) { observer.onNext(q.shift()); }
|
3620
|
+
while (q.length > 0) { observer.onNext(q.shift()); }
|
3407
3621
|
observer.onCompleted();
|
3408
3622
|
});
|
3409
|
-
});
|
3623
|
+
}, source);
|
3410
3624
|
};
|
3411
3625
|
|
3412
3626
|
/**
|
@@ -3429,7 +3643,7 @@
|
|
3429
3643
|
observer.onNext(q);
|
3430
3644
|
observer.onCompleted();
|
3431
3645
|
});
|
3432
|
-
});
|
3646
|
+
}, source);
|
3433
3647
|
};
|
3434
3648
|
|
3435
3649
|
/**
|
@@ -3469,27 +3683,27 @@
|
|
3469
3683
|
function (x) {
|
3470
3684
|
for (var i = 0, len = q.length; i < len; i++) { q[i].onNext(x); }
|
3471
3685
|
var c = n - count + 1;
|
3472
|
-
c >=0 && c % skip === 0 && q.shift().onCompleted();
|
3686
|
+
c >= 0 && c % skip === 0 && q.shift().onCompleted();
|
3473
3687
|
++n % skip === 0 && createWindow();
|
3474
|
-
},
|
3688
|
+
},
|
3475
3689
|
function (e) {
|
3476
3690
|
while (q.length > 0) { q.shift().onError(e); }
|
3477
3691
|
observer.onError(e);
|
3478
|
-
},
|
3692
|
+
},
|
3479
3693
|
function () {
|
3480
3694
|
while (q.length > 0) { q.shift().onCompleted(); }
|
3481
3695
|
observer.onCompleted();
|
3482
3696
|
}
|
3483
3697
|
));
|
3484
3698
|
return refCountDisposable;
|
3485
|
-
});
|
3699
|
+
}, source);
|
3486
3700
|
};
|
3487
3701
|
|
3488
3702
|
function concatMap(source, selector, thisArg) {
|
3489
3703
|
return source.map(function (x, i) {
|
3490
3704
|
var result = selector.call(thisArg, x, i, source);
|
3491
3705
|
isPromise(result) && (result = observableFromPromise(result));
|
3492
|
-
(
|
3706
|
+
(isArrayLike(result) || isIterable(result)) && (result = observableFrom(result));
|
3493
3707
|
return result;
|
3494
3708
|
}).concatAll();
|
3495
3709
|
}
|
@@ -3514,18 +3728,18 @@
|
|
3514
3728
|
* @returns {Observable} An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element.
|
3515
3729
|
*/
|
3516
3730
|
observableProto.selectConcat = observableProto.concatMap = function (selector, resultSelector, thisArg) {
|
3517
|
-
if (
|
3731
|
+
if (isFunction(selector) && isFunction(resultSelector)) {
|
3518
3732
|
return this.concatMap(function (x, i) {
|
3519
3733
|
var selectorResult = selector(x, i);
|
3520
3734
|
isPromise(selectorResult) && (selectorResult = observableFromPromise(selectorResult));
|
3521
|
-
(
|
3735
|
+
(isArrayLike(selectorResult) || isIterable(selectorResult)) && (selectorResult = observableFrom(selectorResult));
|
3522
3736
|
|
3523
3737
|
return selectorResult.map(function (y, i2) {
|
3524
3738
|
return resultSelector(x, y, i, i2);
|
3525
3739
|
});
|
3526
3740
|
});
|
3527
3741
|
}
|
3528
|
-
return
|
3742
|
+
return isFunction(selector) ?
|
3529
3743
|
concatMap(this, selector, thisArg) :
|
3530
3744
|
concatMap(this, function () { return selector; });
|
3531
3745
|
};
|
@@ -3579,7 +3793,7 @@
|
|
3579
3793
|
observer.onNext(result);
|
3580
3794
|
observer.onCompleted();
|
3581
3795
|
});
|
3582
|
-
}).concatAll();
|
3796
|
+
}, this).concatAll();
|
3583
3797
|
};
|
3584
3798
|
|
3585
3799
|
/**
|
@@ -3593,22 +3807,18 @@
|
|
3593
3807
|
* @returns {Observable} An observable sequence that contains the specified default value if the source is empty; otherwise, the elements of the source itself.
|
3594
3808
|
*/
|
3595
3809
|
observableProto.defaultIfEmpty = function (defaultValue) {
|
3596
|
-
|
3597
|
-
|
3598
|
-
|
3599
|
-
|
3600
|
-
return
|
3601
|
-
|
3602
|
-
|
3603
|
-
|
3604
|
-
|
3605
|
-
|
3606
|
-
if (!found) {
|
3607
|
-
observer.onNext(defaultValue);
|
3608
|
-
}
|
3609
|
-
observer.onCompleted();
|
3610
|
-
});
|
3810
|
+
var source = this;
|
3811
|
+
defaultValue === undefined && (defaultValue = null);
|
3812
|
+
return new AnonymousObservable(function (observer) {
|
3813
|
+
var found = false;
|
3814
|
+
return source.subscribe(function (x) {
|
3815
|
+
found = true;
|
3816
|
+
observer.onNext(x);
|
3817
|
+
}, observer.onError.bind(observer), function () {
|
3818
|
+
!found && observer.onNext(defaultValue);
|
3819
|
+
observer.onCompleted();
|
3611
3820
|
});
|
3821
|
+
}, this);
|
3612
3822
|
};
|
3613
3823
|
|
3614
3824
|
// Swap out for Array.findIndex
|
@@ -3661,30 +3871,31 @@
|
|
3661
3871
|
},
|
3662
3872
|
observer.onError.bind(observer),
|
3663
3873
|
observer.onCompleted.bind(observer));
|
3664
|
-
});
|
3874
|
+
}, this);
|
3665
3875
|
};
|
3666
3876
|
|
3667
3877
|
/**
|
3668
|
-
*
|
3878
|
+
* Projects each element of an observable sequence into a new form by incorporating the element's index.
|
3669
3879
|
* @param {Function} selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element.
|
3670
3880
|
* @param {Any} [thisArg] Object to use as this when executing callback.
|
3671
3881
|
* @returns {Observable} An observable sequence whose elements are the result of invoking the transform function on each element of source.
|
3672
3882
|
*/
|
3673
3883
|
observableProto.select = observableProto.map = function (selector, thisArg) {
|
3674
|
-
var
|
3884
|
+
var selectorFn = isFunction(selector) ? selector : function () { return selector; },
|
3885
|
+
source = this;
|
3675
3886
|
return new AnonymousObservable(function (observer) {
|
3676
3887
|
var count = 0;
|
3677
|
-
return
|
3888
|
+
return source.subscribe(function (value) {
|
3678
3889
|
var result;
|
3679
3890
|
try {
|
3680
|
-
result =
|
3891
|
+
result = selectorFn.call(thisArg, value, count++, source);
|
3681
3892
|
} catch (e) {
|
3682
3893
|
observer.onError(e);
|
3683
3894
|
return;
|
3684
3895
|
}
|
3685
3896
|
observer.onNext(result);
|
3686
3897
|
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3687
|
-
});
|
3898
|
+
}, source);
|
3688
3899
|
};
|
3689
3900
|
|
3690
3901
|
/**
|
@@ -3745,16 +3956,16 @@
|
|
3745
3956
|
observer.onNext(result);
|
3746
3957
|
observer.onCompleted();
|
3747
3958
|
});
|
3748
|
-
}).mergeAll();
|
3959
|
+
}, source).mergeAll();
|
3749
3960
|
};
|
3750
3961
|
|
3751
3962
|
function flatMap(source, selector, thisArg) {
|
3752
3963
|
return source.map(function (x, i) {
|
3753
3964
|
var result = selector.call(thisArg, x, i, source);
|
3754
3965
|
isPromise(result) && (result = observableFromPromise(result));
|
3755
|
-
(
|
3966
|
+
(isArrayLike(result) || isIterable(result)) && (result = observableFrom(result));
|
3756
3967
|
return result;
|
3757
|
-
}).
|
3968
|
+
}).mergeAll();
|
3758
3969
|
}
|
3759
3970
|
|
3760
3971
|
/**
|
@@ -3777,18 +3988,18 @@
|
|
3777
3988
|
* @returns {Observable} An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element.
|
3778
3989
|
*/
|
3779
3990
|
observableProto.selectMany = observableProto.flatMap = function (selector, resultSelector, thisArg) {
|
3780
|
-
if (
|
3991
|
+
if (isFunction(selector) && isFunction(resultSelector)) {
|
3781
3992
|
return this.flatMap(function (x, i) {
|
3782
3993
|
var selectorResult = selector(x, i);
|
3783
3994
|
isPromise(selectorResult) && (selectorResult = observableFromPromise(selectorResult));
|
3784
|
-
(
|
3995
|
+
(isArrayLike(selectorResult) || isIterable(selectorResult)) && (selectorResult = observableFrom(selectorResult));
|
3785
3996
|
|
3786
3997
|
return selectorResult.map(function (y, i2) {
|
3787
3998
|
return resultSelector(x, y, i, i2);
|
3788
3999
|
});
|
3789
4000
|
}, thisArg);
|
3790
4001
|
}
|
3791
|
-
return
|
4002
|
+
return isFunction(selector) ?
|
3792
4003
|
flatMap(this, selector, thisArg) :
|
3793
4004
|
flatMap(this, function () { return selector; });
|
3794
4005
|
};
|
@@ -3811,18 +4022,18 @@
|
|
3811
4022
|
* @returns {Observable} An observable sequence that contains the elements that occur after the specified index in the input sequence.
|
3812
4023
|
*/
|
3813
4024
|
observableProto.skip = function (count) {
|
3814
|
-
|
3815
|
-
|
3816
|
-
|
3817
|
-
|
3818
|
-
|
3819
|
-
|
3820
|
-
|
3821
|
-
|
3822
|
-
|
3823
|
-
|
3824
|
-
|
3825
|
-
|
4025
|
+
if (count < 0) { throw new Error(argumentOutOfRange); }
|
4026
|
+
var source = this;
|
4027
|
+
return new AnonymousObservable(function (observer) {
|
4028
|
+
var remaining = count;
|
4029
|
+
return source.subscribe(function (x) {
|
4030
|
+
if (remaining <= 0) {
|
4031
|
+
observer.onNext(x);
|
4032
|
+
} else {
|
4033
|
+
remaining--;
|
4034
|
+
}
|
4035
|
+
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
4036
|
+
}, source);
|
3826
4037
|
};
|
3827
4038
|
|
3828
4039
|
/**
|
@@ -3850,7 +4061,7 @@
|
|
3850
4061
|
}
|
3851
4062
|
running && observer.onNext(x);
|
3852
4063
|
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3853
|
-
});
|
4064
|
+
}, source);
|
3854
4065
|
};
|
3855
4066
|
|
3856
4067
|
/**
|
@@ -3863,18 +4074,18 @@
|
|
3863
4074
|
* @returns {Observable} An observable sequence that contains the specified number of elements from the start of the input sequence.
|
3864
4075
|
*/
|
3865
4076
|
observableProto.take = function (count, scheduler) {
|
3866
|
-
|
3867
|
-
|
3868
|
-
|
3869
|
-
|
3870
|
-
|
3871
|
-
|
3872
|
-
|
3873
|
-
|
3874
|
-
|
3875
|
-
|
3876
|
-
|
3877
|
-
|
4077
|
+
if (count < 0) { throw new RangeError(argumentOutOfRange); }
|
4078
|
+
if (count === 0) { return observableEmpty(scheduler); }
|
4079
|
+
var source = this;
|
4080
|
+
return new AnonymousObservable(function (observer) {
|
4081
|
+
var remaining = count;
|
4082
|
+
return source.subscribe(function (x) {
|
4083
|
+
if (remaining-- > 0) {
|
4084
|
+
observer.onNext(x);
|
4085
|
+
remaining === 0 && observer.onCompleted();
|
4086
|
+
}
|
4087
|
+
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
4088
|
+
}, source);
|
3878
4089
|
};
|
3879
4090
|
|
3880
4091
|
/**
|
@@ -3885,13 +4096,13 @@
|
|
3885
4096
|
* @returns {Observable} An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.
|
3886
4097
|
*/
|
3887
4098
|
observableProto.takeWhile = function (predicate, thisArg) {
|
3888
|
-
var
|
4099
|
+
var source = this;
|
3889
4100
|
return new AnonymousObservable(function (observer) {
|
3890
4101
|
var i = 0, running = true;
|
3891
|
-
return
|
4102
|
+
return source.subscribe(function (x) {
|
3892
4103
|
if (running) {
|
3893
4104
|
try {
|
3894
|
-
running = predicate.call(thisArg, x, i++,
|
4105
|
+
running = predicate.call(thisArg, x, i++, source);
|
3895
4106
|
} catch (e) {
|
3896
4107
|
observer.onError(e);
|
3897
4108
|
return;
|
@@ -3903,7 +4114,7 @@
|
|
3903
4114
|
}
|
3904
4115
|
}
|
3905
4116
|
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
3906
|
-
});
|
4117
|
+
}, source);
|
3907
4118
|
};
|
3908
4119
|
|
3909
4120
|
/**
|
@@ -3917,24 +4128,24 @@
|
|
3917
4128
|
* @returns {Observable} An observable sequence that contains elements from the input sequence that satisfy the condition.
|
3918
4129
|
*/
|
3919
4130
|
observableProto.where = observableProto.filter = function (predicate, thisArg) {
|
3920
|
-
|
3921
|
-
|
3922
|
-
|
3923
|
-
|
3924
|
-
|
3925
|
-
|
3926
|
-
|
3927
|
-
|
3928
|
-
|
3929
|
-
|
3930
|
-
|
3931
|
-
|
3932
|
-
|
3933
|
-
|
4131
|
+
var source = this;
|
4132
|
+
return new AnonymousObservable(function (observer) {
|
4133
|
+
var count = 0;
|
4134
|
+
return source.subscribe(function (value) {
|
4135
|
+
var shouldRun;
|
4136
|
+
try {
|
4137
|
+
shouldRun = predicate.call(thisArg, value, count++, parent);
|
4138
|
+
} catch (e) {
|
4139
|
+
observer.onError(e);
|
4140
|
+
return;
|
4141
|
+
}
|
4142
|
+
shouldRun && observer.onNext(value);
|
4143
|
+
}, observer.onError.bind(observer), observer.onCompleted.bind(observer));
|
4144
|
+
}, source);
|
3934
4145
|
};
|
3935
4146
|
|
3936
4147
|
/**
|
3937
|
-
* Executes a transducer to transform the observable sequence
|
4148
|
+
* Executes a transducer to transform the observable sequence
|
3938
4149
|
* @param {Transducer} transducer A transducer to execute
|
3939
4150
|
* @returns {Observable} An Observable sequence containing the results from the transducer.
|
3940
4151
|
*/
|
@@ -3958,17 +4169,17 @@
|
|
3958
4169
|
return new AnonymousObservable(function(observer) {
|
3959
4170
|
var xform = transducer(transformForObserver(observer));
|
3960
4171
|
return source.subscribe(
|
3961
|
-
function(v) {
|
4172
|
+
function(v) {
|
3962
4173
|
try {
|
3963
4174
|
xform.step(observer, v);
|
3964
4175
|
} catch (e) {
|
3965
4176
|
observer.onError(e);
|
3966
4177
|
}
|
3967
|
-
},
|
3968
|
-
observer.onError.bind(observer),
|
4178
|
+
},
|
4179
|
+
observer.onError.bind(observer),
|
3969
4180
|
function() { xform.result(observer); }
|
3970
4181
|
);
|
3971
|
-
});
|
4182
|
+
}, source);
|
3972
4183
|
};
|
3973
4184
|
|
3974
4185
|
var AnonymousObservable = Rx.AnonymousObservable = (function (__super__) {
|
@@ -3983,7 +4194,8 @@
|
|
3983
4194
|
disposableEmpty;
|
3984
4195
|
}
|
3985
4196
|
|
3986
|
-
function AnonymousObservable(subscribe) {
|
4197
|
+
function AnonymousObservable(subscribe, parent) {
|
4198
|
+
this.source = parent;
|
3987
4199
|
if (!(this instanceof AnonymousObservable)) {
|
3988
4200
|
return new AnonymousObservable(subscribe);
|
3989
4201
|
}
|
@@ -4016,66 +4228,59 @@
|
|
4016
4228
|
|
4017
4229
|
}(Observable));
|
4018
4230
|
|
4019
|
-
|
4020
|
-
|
4021
|
-
inherits(AutoDetachObserver, _super);
|
4231
|
+
var AutoDetachObserver = (function (__super__) {
|
4232
|
+
inherits(AutoDetachObserver, __super__);
|
4022
4233
|
|
4023
|
-
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4027
|
-
|
4234
|
+
function AutoDetachObserver(observer) {
|
4235
|
+
__super__.call(this);
|
4236
|
+
this.observer = observer;
|
4237
|
+
this.m = new SingleAssignmentDisposable();
|
4238
|
+
}
|
4028
4239
|
|
4029
|
-
|
4240
|
+
var AutoDetachObserverPrototype = AutoDetachObserver.prototype;
|
4030
4241
|
|
4031
|
-
|
4032
|
-
|
4033
|
-
|
4034
|
-
|
4035
|
-
|
4036
|
-
|
4037
|
-
|
4038
|
-
|
4039
|
-
|
4040
|
-
|
4041
|
-
|
4042
|
-
}
|
4043
|
-
};
|
4242
|
+
AutoDetachObserverPrototype.next = function (value) {
|
4243
|
+
var noError = false;
|
4244
|
+
try {
|
4245
|
+
this.observer.onNext(value);
|
4246
|
+
noError = true;
|
4247
|
+
} catch (e) {
|
4248
|
+
throw e;
|
4249
|
+
} finally {
|
4250
|
+
!noError && this.dispose();
|
4251
|
+
}
|
4252
|
+
};
|
4044
4253
|
|
4045
|
-
|
4046
|
-
|
4047
|
-
|
4048
|
-
|
4049
|
-
|
4050
|
-
|
4051
|
-
|
4052
|
-
|
4053
|
-
|
4254
|
+
AutoDetachObserverPrototype.error = function (err) {
|
4255
|
+
try {
|
4256
|
+
this.observer.onError(err);
|
4257
|
+
} catch (e) {
|
4258
|
+
throw e;
|
4259
|
+
} finally {
|
4260
|
+
this.dispose();
|
4261
|
+
}
|
4262
|
+
};
|
4054
4263
|
|
4055
|
-
|
4056
|
-
|
4057
|
-
|
4058
|
-
|
4059
|
-
|
4060
|
-
|
4061
|
-
|
4062
|
-
|
4063
|
-
|
4264
|
+
AutoDetachObserverPrototype.completed = function () {
|
4265
|
+
try {
|
4266
|
+
this.observer.onCompleted();
|
4267
|
+
} catch (e) {
|
4268
|
+
throw e;
|
4269
|
+
} finally {
|
4270
|
+
this.dispose();
|
4271
|
+
}
|
4272
|
+
};
|
4064
4273
|
|
4065
|
-
|
4066
|
-
|
4067
|
-
/* @private */
|
4068
|
-
AutoDetachObserverPrototype.disposable = function (value) {
|
4069
|
-
return arguments.length ? this.getDisposable() : setDisposable(value);
|
4070
|
-
};
|
4274
|
+
AutoDetachObserverPrototype.setDisposable = function (value) { this.m.setDisposable(value); };
|
4275
|
+
AutoDetachObserverPrototype.getDisposable = function () { return this.m.getDisposable(); };
|
4071
4276
|
|
4072
|
-
|
4073
|
-
|
4074
|
-
|
4075
|
-
|
4277
|
+
AutoDetachObserverPrototype.dispose = function () {
|
4278
|
+
__super__.prototype.dispose.call(this);
|
4279
|
+
this.m.dispose();
|
4280
|
+
};
|
4076
4281
|
|
4077
|
-
|
4078
|
-
|
4282
|
+
return AutoDetachObserver;
|
4283
|
+
}(AbstractObserver));
|
4079
4284
|
|
4080
4285
|
/** @private */
|
4081
4286
|
var InnerSubscription = function (subject, observer) {
|
@@ -4369,4 +4574,7 @@
|
|
4369
4574
|
root.Rx = Rx;
|
4370
4575
|
}
|
4371
4576
|
|
4577
|
+
// All code before this point will be filtered from stack traces.
|
4578
|
+
var rEndingLine = captureLine();
|
4579
|
+
|
4372
4580
|
}.call(this));
|