Odoo GraphQL Subscription using Node, Express JS for Sample
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
3.6 KiB

4 months ago
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.merge = merge;
exports.combineLatest = combineLatest;
exports.zip = zip;
var _Observable = require("./Observable.js");
// Emits all values from all inputs in parallel
function merge() {
for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {
sources[_key] = arguments[_key];
}
return new _Observable.Observable(function (observer) {
if (sources.length === 0) return _Observable.Observable.from([]);
var count = sources.length;
var subscriptions = sources.map(function (source) {
return _Observable.Observable.from(source).subscribe({
next: function (v) {
observer.next(v);
},
error: function (e) {
observer.error(e);
},
complete: function () {
if (--count === 0) observer.complete();
}
});
});
return function () {
return subscriptions.forEach(function (s) {
return s.unsubscribe();
});
};
});
} // Emits arrays containing the most current values from each input
function combineLatest() {
for (var _len2 = arguments.length, sources = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
sources[_key2] = arguments[_key2];
}
return new _Observable.Observable(function (observer) {
if (sources.length === 0) return _Observable.Observable.from([]);
var count = sources.length;
var seen = new Set();
var seenAll = false;
var values = sources.map(function () {
return undefined;
});
var subscriptions = sources.map(function (source, index) {
return _Observable.Observable.from(source).subscribe({
next: function (v) {
values[index] = v;
if (!seenAll) {
seen.add(index);
if (seen.size !== sources.length) return;
seen = null;
seenAll = true;
}
observer.next(Array.from(values));
},
error: function (e) {
observer.error(e);
},
complete: function () {
if (--count === 0) observer.complete();
}
});
});
return function () {
return subscriptions.forEach(function (s) {
return s.unsubscribe();
});
};
});
} // Emits arrays containing the matching index values from each input
function zip() {
for (var _len3 = arguments.length, sources = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
sources[_key3] = arguments[_key3];
}
return new _Observable.Observable(function (observer) {
if (sources.length === 0) return _Observable.Observable.from([]);
var queues = sources.map(function () {
return [];
});
function done() {
return queues.some(function (q, i) {
return q.length === 0 && subscriptions[i].closed;
});
}
var subscriptions = sources.map(function (source, index) {
return _Observable.Observable.from(source).subscribe({
next: function (v) {
queues[index].push(v);
if (queues.every(function (q) {
return q.length > 0;
})) {
observer.next(queues.map(function (q) {
return q.shift();
}));
if (done()) observer.complete();
}
},
error: function (e) {
observer.error(e);
},
complete: function () {
if (done()) observer.complete();
}
});
});
return function () {
return subscriptions.forEach(function (s) {
return s.unsubscribe();
});
};
});
}