@cardboard-box/ngx-box
Version:
A collection of useful directives, components and services for angular
38 lines • 5.13 kB
JavaScript
import { catchError, lastValueFrom, of, tap } from "rxjs";
export class RxjsHttpResp {
constructor(_observable, _url, _isProd) {
this._isProd = _isProd;
this.url = _url;
this.observable = _observable;
this.rawObservable = _observable;
}
get promise() { return lastValueFrom(this.observable); }
error(handler, def) {
this.observable = this.observable
.pipe(catchError(err => {
console.error('Error occurred during XHR: ', {
url: this.url,
error: err,
default: def
});
handler(err);
return of(def);
}));
return this;
}
tap(handler) {
this.observable = this.observable.pipe(tap(t => handler(t)));
return this;
}
subscribe(handler) {
return this.observable.subscribe(t => {
if (!this._isProd)
console.log('XHR Request Result', {
url: this.url,
results: t
});
handler(t);
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy1odHRwLXJlc3AuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZGJvYXJkYm94L25neC1ib3gvc3JjL2xpYi9zZXJ2aWNlcy9oZWxwZXJzL3J4anMtaHR0cC1yZXNwLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQ0ksV0FBMEIsRUFDMUIsSUFBWSxFQUNKLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQVZELElBQUksT0FBTyxLQUFLLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFZeEQsS0FBSyxDQUFDLE9BQTJCLEVBQUUsR0FBTztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFRLElBQUksQ0FBQyxVQUFVO2FBQ2pDLElBQUksQ0FDRCxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFO2dCQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsT0FBTyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUEwQjtRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUEwQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFO29CQUM5QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7b0JBQ2IsT0FBTyxFQUFFLENBQUM7aUJBQ2IsQ0FBQyxDQUFDO1lBQ1AsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXRjaEVycm9yLCBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBSeGpzSHR0cFJlc3A8VD4ge1xyXG5cclxuICAgIHVybCE6IHN0cmluZztcclxuICAgIG9ic2VydmFibGUhOiBPYnNlcnZhYmxlPFQ+O1xyXG4gICAgcmF3T2JzZXJ2YWJsZSE6IE9ic2VydmFibGU8VD47XHJcblxyXG4gICAgZ2V0IHByb21pc2UoKSB7IHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMub2JzZXJ2YWJsZSk7IH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUPixcclxuICAgICAgICBfdXJsOiBzdHJpbmcsXHJcbiAgICAgICAgcHJpdmF0ZSBfaXNQcm9kOiBib29sZWFuXHJcbiAgICApIHsgXHJcbiAgICAgICAgdGhpcy51cmwgPSBfdXJsO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YWJsZSA9IF9vYnNlcnZhYmxlO1xyXG4gICAgICAgIHRoaXMucmF3T2JzZXJ2YWJsZSA9IF9vYnNlcnZhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGVycm9yKGhhbmRsZXI6IChlcnI6IGFueSkgPT4gdm9pZCwgZGVmPzogVCkge1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YWJsZSA9IDxhbnk+dGhpcy5vYnNlcnZhYmxlXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIGR1cmluZyBYSFI6ICcsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogZGVmXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihkZWYpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0YXAoaGFuZGxlcjogKGl0ZW06IFQpID0+IHZvaWQpIHtcclxuICAgICAgICB0aGlzLm9ic2VydmFibGUgPSB0aGlzLm9ic2VydmFibGUucGlwZSh0YXAodCA9PiBoYW5kbGVyKHQpKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlKGhhbmRsZXI6IChpdGVtOiBUKSA9PiB2b2lkKSB7IFxyXG4gICAgICAgIHJldHVybiB0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUHJvZClcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdYSFIgUmVxdWVzdCBSZXN1bHQnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzOiB0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaGFuZGxlcih0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==