ngx-endpoints
Version:
A library to dynamically load data from http endpoints / urls in angular
209 lines • 14.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { NgxEndpointService } from './ngx-endpoints.service';
import { NgxEndPointData } from './ngx-endpoint.format';
import { BehaviorSubject } from 'rxjs';
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./ngx-endpoints.service";
import * as i2 from "./ngx-endpoint.format";
/**
* @template T
*/
var NgxEndPoint = /** @class */ (function () {
function NgxEndPoint(endpointservice, _endpoint) {
this.endpointservice = endpointservice;
this._endpoint = _endpoint;
/**
* data stores the last requested data as Behaviorsubject that can be subscribed.
*/
this.data = new BehaviorSubject(null);
/**
* if a request is already pending no additional request should be made to the datasource
*/
this.requestPending = new BehaviorSubject(false);
/**
* Is the endpoint alive and returns data ?
*/
this.isAlive = new BehaviorSubject(false);
/**
* Delivering internal process information
*/
this.events = new BehaviorSubject('');
/**
* for live sources this option will be used to stop the process
*/
this.running = true;
this.endpoint = _endpoint;
Object.assign(this.data, new Array());
}
/**
* Requests data from an http source
* Optionally converts relative dates (now-1d) into readable urls by DatesOutputFormat
* Adds the result of the request to BehaviorSubject data that can be subscribed
*/
/**
* Requests data from an http source
* Optionally converts relative dates (now-1d) into readable urls by DatesOutputFormat
* Adds the result of the request to BehaviorSubject data that can be subscribed
* @return {?}
*/
NgxEndPoint.prototype.requestData = /**
* Requests data from an http source
* Optionally converts relative dates (now-1d) into readable urls by DatesOutputFormat
* Adds the result of the request to BehaviorSubject data that can be subscribed
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.requestInternal()];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
};
/**
* @return {?}
*/
NgxEndPoint.prototype.requestInternal = /**
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!!this.requestPending.getValue()) return [3 /*break*/, 2];
this.addEvent('requesting data from endpoint', this.endpoint);
this.requestPending.next(true);
this.convertDates(this.endpoint.convertDates);
return [4 /*yield*/, this.request()];
case 1:
_a.sent();
this.requestPending.next(false);
return [3 /*break*/, 3];
case 2:
this.addEvent('a request is pending', this.endpoint);
_a.label = 3;
case 3: return [2 /*return*/];
}
});
});
};
/**
* @param {?} conversion
* @return {?}
*/
NgxEndPoint.prototype.convertDates = /**
* @param {?} conversion
* @return {?}
*/
function (conversion) {
if (conversion) {
this.endpoint.endPointUrl = this.endpointservice.convertDatesInURL(this.endpoint.endPointUrl, this.endpoint.convertDatesOutputFormat);
this.addEvent('converted endpointurl', this.endpoint);
}
};
/**
* @return {?}
*/
NgxEndPoint.prototype.request = /**
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var currentData, error_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, this.endpointservice.getData(this.endpoint.endPointUrl, this.endpoint.requestOptions)];
case 1:
currentData = _a.sent();
if (!this.isAlive.getValue() && currentData != null) {
this.isAlive.next(true);
this.addEvent('endpoint is alive', this.endpoint);
}
this.data.next(currentData);
this.addEvent('updated data', this.endpoint);
return [3 /*break*/, 3];
case 2:
error_1 = _a.sent();
this.addEvent(error_1, this.endpoint);
return [3 /*break*/, 3];
case 3: return [2 /*return*/];
}
});
});
};
/**
* @param {?} item
* @param {?} endpointdata
* @return {?}
*/
NgxEndPoint.prototype.addEvent = /**
* @param {?} item
* @param {?} endpointdata
* @return {?}
*/
function (item, endpointdata) {
this.events.next(JSON.stringify({ event: item, endpoint: endpointdata }));
};
NgxEndPoint.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NgxEndPoint.ctorParameters = function () { return [
{ type: NgxEndpointService },
{ type: NgxEndPointData }
]; };
/** @nocollapse */ NgxEndPoint.ngInjectableDef = i0.defineInjectable({ factory: function NgxEndPoint_Factory() { return new NgxEndPoint(i0.inject(i1.NgxEndpointService), i0.inject(i2.NgxEndPointData)); }, token: NgxEndPoint, providedIn: "root" });
return NgxEndPoint;
}());
export { NgxEndPoint };
if (false) {
/**
* raw data that is used for later identification of the endpoint
* @type {?}
*/
NgxEndPoint.prototype.endpoint;
/**
* data stores the last requested data as Behaviorsubject that can be subscribed.
* @type {?}
*/
NgxEndPoint.prototype.data;
/**
* if a request is already pending no additional request should be made to the datasource
* @type {?}
*/
NgxEndPoint.prototype.requestPending;
/**
* Is the endpoint alive and returns data ?
* @type {?}
*/
NgxEndPoint.prototype.isAlive;
/**
* Delivering internal process information
* @type {?}
*/
NgxEndPoint.prototype.events;
/**
* for live sources this option will be used to stop the process
* @type {?}
*/
NgxEndPoint.prototype.running;
/** @type {?} */
NgxEndPoint.prototype.endpointservice;
/** @type {?} */
NgxEndPoint.prototype._endpoint;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVuZHBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1lbmRwb2ludHMvIiwic291cmNlcyI6WyJsaWIvbmd4LWVuZHBvaW50cy9uZ3gtZW5kcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFhLFVBQVUsRUFBZ0IsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFFcEU7SUE0QkUscUJBQW1CLGVBQW1DLEVBQVksU0FBMEI7UUFBekUsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBaUI7Ozs7UUFqQnJGLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBSSxJQUFJLENBQUMsQ0FBQzs7OztRQUlwQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFNLEtBQUssQ0FBQyxDQUFDOzs7O1FBSWpELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBTSxLQUFLLENBQUMsQ0FBQzs7OztRQUkxQyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7Ozs7UUFJekMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztNQUlFOzs7Ozs7O0lBQ1csaUNBQVc7Ozs7OztJQUF4Qjs7Ozs0QkFDRSxxQkFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUE7O3dCQUE1QixTQUE0QixDQUFDOzs7OztLQUM5Qjs7OztJQUdlLHFDQUFlOzs7SUFBL0I7Ozs7OzZCQUNNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBL0Isd0JBQStCO3dCQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFDOUMscUJBQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFBOzt3QkFBcEIsU0FBb0IsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Ozt3QkFFaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7OztLQUd4RDs7Ozs7SUFFTyxrQ0FBWTs7OztJQUFwQixVQUFxQixVQUFVO1FBQzdCLElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdEksSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDOzs7O0lBRWEsNkJBQU87OztJQUFyQjs7Ozs7Ozt3QkFFd0IscUJBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBQTs7d0JBQTVHLFdBQVcsR0FBRyxTQUE4Rjt3QkFDbEgsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTs0QkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3lCQUNuRDt3QkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O3dCQUU3QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7OztLQUV2Qzs7Ozs7O0lBRU8sOEJBQVE7Ozs7O0lBQWhCLFVBQWlCLElBQVMsRUFBRSxZQUE2QjtRQUV2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O2dCQWhGRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQVBRLGtCQUFrQjtnQkFDbEIsZUFBZTs7O3NCQUR4QjtDQXNGQyxBQWpGRCxJQWlGQztTQTlFWSxXQUFXOzs7Ozs7SUFJdEIsK0JBQWlDOzs7OztJQUlqQywyQkFBMkM7Ozs7O0lBSTNDLHFDQUF3RDs7Ozs7SUFJeEQsOEJBQWlEOzs7OztJQUlqRCw2QkFBZ0Q7Ozs7O0lBSWhELDhCQUFzQjs7SUFDVixzQ0FBMEM7O0lBQUUsZ0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4RW5kcG9pbnRTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtZW5kcG9pbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd4RW5kUG9pbnREYXRhIH0gZnJvbSAnLi9uZ3gtZW5kcG9pbnQuZm9ybWF0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlLCBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RW5kUG9pbnQ8VD4ge1xuICAvKipcbiAgKiByYXcgZGF0YSB0aGF0IGlzIHVzZWQgZm9yIGxhdGVyIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBlbmRwb2ludFxuICAqL1xuICBwdWJsaWMgZW5kcG9pbnQ6IE5neEVuZFBvaW50RGF0YTtcbiAgLyoqXG4gICogZGF0YSBzdG9yZXMgdGhlIGxhc3QgcmVxdWVzdGVkIGRhdGEgYXMgQmVoYXZpb3JzdWJqZWN0IHRoYXQgY2FuIGJlIHN1YnNjcmliZWQuXG4gICovXG4gIHB1YmxpYyBkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPihudWxsKTtcbiAgLyoqXG4gICogaWYgYSByZXF1ZXN0IGlzIGFscmVhZHkgcGVuZGluZyBubyBhZGRpdGlvbmFsIHJlcXVlc3Qgc2hvdWxkIGJlIG1hZGUgdG8gdGhlIGRhdGFzb3VyY2VcbiAgKi9cbiAgcHVibGljIHJlcXVlc3RQZW5kaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KGZhbHNlKTtcbiAgLyoqXG4gICogSXMgdGhlIGVuZHBvaW50IGFsaXZlIGFuZCByZXR1cm5zIGRhdGEgP1xuICAqL1xuICBwdWJsaWMgaXNBbGl2ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihmYWxzZSk7XG4gIC8qKlxuICAqIERlbGl2ZXJpbmcgaW50ZXJuYWwgcHJvY2VzcyBpbmZvcm1hdGlvblxuICAqL1xuICBwdWJsaWMgZXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgLyoqXG4gICogZm9yIGxpdmUgc291cmNlcyB0aGlzIG9wdGlvbiB3aWxsIGJlIHVzZWQgdG8gc3RvcCB0aGUgcHJvY2Vzc1xuICAqL1xuICBwdWJsaWMgcnVubmluZyA9IHRydWU7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbmRwb2ludHNlcnZpY2U6IE5neEVuZHBvaW50U2VydmljZSwgcHJvdGVjdGVkIF9lbmRwb2ludDogTmd4RW5kUG9pbnREYXRhKSB7XG4gICAgdGhpcy5lbmRwb2ludCA9IF9lbmRwb2ludDtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZGF0YSwgbmV3IEFycmF5PGFueT4oKSk7XG4gIH1cblxuICAvKipcbiAgKiBSZXF1ZXN0cyBkYXRhIGZyb20gYW4gaHR0cCBzb3VyY2VcbiAgKiBPcHRpb25hbGx5IGNvbnZlcnRzIHJlbGF0aXZlIGRhdGVzIChub3ctMWQpIGludG8gcmVhZGFibGUgdXJscyBieSBEYXRlc091dHB1dEZvcm1hdFxuICAqIEFkZHMgdGhlIHJlc3VsdCBvZiB0aGUgcmVxdWVzdCB0byBCZWhhdmlvclN1YmplY3QgZGF0YSB0aGF0IGNhbiBiZSBzdWJzY3JpYmVkXG4gICovXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0RGF0YSgpIHtcbiAgICBhd2FpdCB0aGlzLnJlcXVlc3RJbnRlcm5hbCgpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVxdWVzdEludGVybmFsKCkge1xuICAgIGlmICghdGhpcy5yZXF1ZXN0UGVuZGluZy5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmFkZEV2ZW50KCdyZXF1ZXN0aW5nIGRhdGEgZnJvbSBlbmRwb2ludCcsIHRoaXMuZW5kcG9pbnQpO1xuICAgICAgdGhpcy5yZXF1ZXN0UGVuZGluZy5uZXh0KHRydWUpO1xuICAgICAgdGhpcy5jb252ZXJ0RGF0ZXModGhpcy5lbmRwb2ludC5jb252ZXJ0RGF0ZXMpO1xuICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0KCk7XG4gICAgICB0aGlzLnJlcXVlc3RQZW5kaW5nLm5leHQoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZEV2ZW50KCdhIHJlcXVlc3QgaXMgcGVuZGluZycsIHRoaXMuZW5kcG9pbnQpO1xuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGF0ZXMoY29udmVyc2lvbikge1xuICAgIGlmIChjb252ZXJzaW9uKSB7XG4gICAgICB0aGlzLmVuZHBvaW50LmVuZFBvaW50VXJsID0gdGhpcy5lbmRwb2ludHNlcnZpY2UuY29udmVydERhdGVzSW5VUkwodGhpcy5lbmRwb2ludC5lbmRQb2ludFVybCwgdGhpcy5lbmRwb2ludC5jb252ZXJ0RGF0ZXNPdXRwdXRGb3JtYXQpO1xuICAgICAgdGhpcy5hZGRFdmVudCgnY29udmVydGVkIGVuZHBvaW50dXJsJywgdGhpcy5lbmRwb2ludCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGF3YWl0IHRoaXMuZW5kcG9pbnRzZXJ2aWNlLmdldERhdGE8VD4odGhpcy5lbmRwb2ludC5lbmRQb2ludFVybCwgdGhpcy5lbmRwb2ludC5yZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBpZiAoIXRoaXMuaXNBbGl2ZS5nZXRWYWx1ZSgpICYmIGN1cnJlbnREYXRhICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5pc0FsaXZlLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuYWRkRXZlbnQoJ2VuZHBvaW50IGlzIGFsaXZlJywgdGhpcy5lbmRwb2ludCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEubmV4dChjdXJyZW50RGF0YSk7XG4gICAgICB0aGlzLmFkZEV2ZW50KCd1cGRhdGVkIGRhdGEnLCB0aGlzLmVuZHBvaW50KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hZGRFdmVudChlcnJvciwgdGhpcy5lbmRwb2ludCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudChpdGVtOiBhbnksIGVuZHBvaW50ZGF0YTogTmd4RW5kUG9pbnREYXRhKSB7XG5cbiAgICB0aGlzLmV2ZW50cy5uZXh0KEpTT04uc3RyaW5naWZ5KHtldmVudDogaXRlbSwgZW5kcG9pbnQ6IGVuZHBvaW50ZGF0YX0pKTtcbiAgfVxufVxuIl19