kentico-cloud-delivery
Version:
Official Kentico Cloud Delivery SDK
63 lines • 3.15 kB
JavaScript
import { zip } from 'rxjs';
import { map } from 'rxjs/operators';
import { AllTestObjects } from './models';
var ObservableFactory = /** @class */ (function () {
function ObservableFactory() {
this.movieCodename = 'warrior';
this.taxonomyCodename = 'movietype';
this.typeCodename = 'movie';
this.elementCodename = 'title';
}
/**
* Gets single observable containing all test object types
* @param client
* @param queryConfig
*/
ObservableFactory.prototype.getAllTestObjects = function (client, queryConfig) {
var all = new AllTestObjects();
if (!queryConfig) {
queryConfig = {};
}
var observables = [];
var itemObs = client.item(this.movieCodename).queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.item = r; }));
var itemsObs = client.items().queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.items = r; }));
var taxonomyObs = client.taxonomy(this.taxonomyCodename).queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.taxonomy = r; }));
var taxonomiesObs = client.taxonomies().queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.taxonomies = r; }));
var typeObs = client.type(this.typeCodename).queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.type = r; }));
var typesObs = client.types().queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.types = r; }));
var elementObs = client.element(this.typeCodename, this.elementCodename).queryConfig(queryConfig).getObservable().pipe(map(function (r) { return all.element = r; }));
observables.push(itemObs);
observables.push(itemsObs);
observables.push(taxonomyObs);
observables.push(taxonomiesObs);
observables.push(typeObs);
observables.push(typesObs);
observables.push(elementObs);
var zippedObservable = this.zipObservables(observables);
return zippedObservable.pipe(map(function () { return all; }));
};
ObservableFactory.prototype.zipObservables = function (observables) {
if (!observables) {
throw Error("Given observables are not valid");
}
if (!Array.isArray(observables)) {
throw Error("Given observables are not in array");
}
if (observables.length === 0) {
throw Error("Observables array doesn't contain any observable");
}
if (observables.length === 1) {
return observables[0];
}
var zippedObservable = observables[0];
for (var i = 1; i < observables.length; i++) {
var currentObservable = observables[i];
zippedObservable = zip(zippedObservable, currentObservable);
}
return zippedObservable;
};
return ObservableFactory;
}());
export { ObservableFactory };
export var observableFactory = new ObservableFactory();
//# sourceMappingURL=observable-factory.js.map