This commit is contained in:
63
node_modules/apollo-client/util/observables.js
generated
vendored
Normal file
63
node_modules/apollo-client/util/observables.js
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var Observable_1 = require("./Observable");
|
||||
function multiplex(inner) {
|
||||
var observers = new Set();
|
||||
var sub = null;
|
||||
return new Observable_1.Observable(function (observer) {
|
||||
observers.add(observer);
|
||||
sub = sub || inner.subscribe({
|
||||
next: function (value) {
|
||||
observers.forEach(function (obs) { return obs.next && obs.next(value); });
|
||||
},
|
||||
error: function (error) {
|
||||
observers.forEach(function (obs) { return obs.error && obs.error(error); });
|
||||
},
|
||||
complete: function () {
|
||||
observers.forEach(function (obs) { return obs.complete && obs.complete(); });
|
||||
},
|
||||
});
|
||||
return function () {
|
||||
if (observers.delete(observer) && !observers.size && sub) {
|
||||
sub.unsubscribe();
|
||||
sub = null;
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
exports.multiplex = multiplex;
|
||||
function asyncMap(observable, mapFn) {
|
||||
return new Observable_1.Observable(function (observer) {
|
||||
var next = observer.next, error = observer.error, complete = observer.complete;
|
||||
var activeNextCount = 0;
|
||||
var completed = false;
|
||||
var handler = {
|
||||
next: function (value) {
|
||||
++activeNextCount;
|
||||
new Promise(function (resolve) {
|
||||
resolve(mapFn(value));
|
||||
}).then(function (result) {
|
||||
--activeNextCount;
|
||||
next && next.call(observer, result);
|
||||
completed && handler.complete();
|
||||
}, function (e) {
|
||||
--activeNextCount;
|
||||
error && error.call(observer, e);
|
||||
});
|
||||
},
|
||||
error: function (e) {
|
||||
error && error.call(observer, e);
|
||||
},
|
||||
complete: function () {
|
||||
completed = true;
|
||||
if (!activeNextCount) {
|
||||
complete && complete.call(observer);
|
||||
}
|
||||
},
|
||||
};
|
||||
var sub = observable.subscribe(handler);
|
||||
return function () { return sub.unsubscribe(); };
|
||||
});
|
||||
}
|
||||
exports.asyncMap = asyncMap;
|
||||
//# sourceMappingURL=observables.js.map
|
||||
Reference in New Issue
Block a user