UNPKG

ehandler

Version:

Exception handler for Angular Applications

172 lines (171 loc) 12.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Inject, Injectable, Injector } from '@angular/core'; import { HttpErrorResponse } from '@angular/common/http'; import { HookService } from './hook.service'; import * as toastr from 'toastr'; import * as i0 from "@angular/core"; import * as i1 from "./hook.service"; var EHandlerService = /** @class */ (function () { function EHandlerService(injector, config, hook) { this.injector = injector; this.config = config; this.hook = hook; } /** * Global Error Handler */ /** * Global Error Handler * @param {?} error * @return {?} */ EHandlerService.prototype.handleError = /** * Global Error Handler * @param {?} error * @return {?} */ function (error) { /** * * Error Message for view @type {?} */ var message; /** * * Error TimeStamp @type {?} */ var date = new Date(); /** * Handle errors occured while making server call */ if (error instanceof HttpErrorResponse) { message = this.config.message.statusException; /** * If UnAuthorized * Else If Server Error */ switch (error.status) { case 400: case 401: this.logout(); break; case 500: message = this.config.message.serverException; } // Backend returns unsuccessful response codes such as 404, 500 etc. this.statusMessage(error, date); } else { // A client-side or network error occurred. this.commonMessage(error, date); message = this.config.message.appException; } this.errorMSG(message); }; /** * Logout of system */ /** * Logout of system * @param {?=} message * @return {?} */ EHandlerService.prototype.logout = /** * Logout of system * @param {?=} message * @return {?} */ function (message) { var _this = this; toastr.error(this.config.message.unAuthenticated); if (message) { toastr.error(message); } setTimeout(function () { window.location.replace(_this.config.logout); }, 5000); }; /** * Show Error Message */ /** * Show Error Message * @param {?} message * @param {?=} code * @return {?} */ EHandlerService.prototype.errorMSG = /** * Show Error Message * @param {?} message * @param {?=} code * @return {?} */ function (message, code) { if (code === void 0) { code = null; } toastr.error(message, code); }; /** * Log Error Message */ /** * Log Error Message * @param {?} error * @param {?=} date * @return {?} */ EHandlerService.prototype.statusMessage = /** * Log Error Message * @param {?} error * @param {?=} date * @return {?} */ function (error, date) { if (date === void 0) { date = new Date(); } console.error('--------------------------------------------\n', 'Backend returned status code: ' + error.status + '\n', 'Response body ehandler:' + error.message + '\n', date + '\n', '--------------------------------------------'); this.hook.exceptionNotify(error.message, '----HTTP Error----'); }; /** * Log Common Error */ /** * Log Common Error * @param {?} error * @param {?=} date * @return {?} */ EHandlerService.prototype.commonMessage = /** * Log Common Error * @param {?} error * @param {?=} date * @return {?} */ function (error, date) { if (date === void 0) { date = new Date(); } console.error('--------------------------------------------\n', 'An error occurred ehandler:' + error.message + '\n', date + '\n', '--------------------------------------------'); this.hook.exceptionNotify(error.message, '----Common Error----'); }; EHandlerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ EHandlerService.ctorParameters = function () { return [ { type: Injector }, { type: undefined, decorators: [{ type: Inject, args: ['configurations',] }] }, { type: HookService } ]; }; /** @nocollapse */ EHandlerService.ngInjectableDef = i0.defineInjectable({ factory: function EHandlerService_Factory() { return new EHandlerService(i0.inject(i0.INJECTOR), i0.inject("configurations"), i0.inject(i1.HookService)); }, token: EHandlerService, providedIn: "root" }); return EHandlerService; }()); export { EHandlerService }; function EHandlerService_tsickle_Closure_declarations() { /** @type {?} */ EHandlerService.prototype.injector; /** @type {?} */ EHandlerService.prototype.config; /** @type {?} */ EHandlerService.prototype.hook; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2VoYW5kbGVyLyIsInNvdXJjZXMiOlsibGliL2VoYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7SUFLL0IseUJBQ1UsVUFDMEIsTUFBYyxFQUN4QztRQUZBLGFBQVEsR0FBUixRQUFRO1FBQ2tCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEMsU0FBSSxHQUFKLElBQUk7S0FFYjtJQUNEOztPQUVHOzs7Ozs7SUFDSCxxQ0FBVzs7Ozs7SUFBWCxVQUFZLEtBQVU7Ozs7UUFJcEIsSUFBSSxPQUFPLENBQVM7Ozs7UUFJcEIsSUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7OztRQUk5QixFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7Ozs7O1lBSzlDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixLQUFLLEdBQUcsQ0FBQztnQkFDVCxLQUFLLEdBQUc7b0JBQ04sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQztnQkFDUixLQUFLLEdBQUc7b0JBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQzthQUNqRDs7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqQztRQUFDLElBQUksQ0FBQyxDQUFDOztZQUVOLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3hCO0lBRUQ7O09BRUc7Ozs7OztJQUNILGdDQUFNOzs7OztJQUFOLFVBQU8sT0FBZ0I7UUFBdkIsaUJBUUM7UUFQQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsVUFBVSxDQUFDO1lBQ1QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRDs7T0FFRzs7Ozs7OztJQUNILGtDQUFROzs7Ozs7SUFBUixVQUFTLE9BQU8sRUFBRSxJQUFXO1FBQVgscUJBQUEsRUFBQSxXQUFXO1FBQzNCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCO0lBQ0Q7O09BRUc7Ozs7Ozs7SUFDSCx1Q0FBYTs7Ozs7O0lBQWIsVUFBYyxLQUFLLEVBQUUsSUFBaUI7UUFBakIscUJBQUEsRUFBQSxXQUFXLElBQUksRUFBRTtRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUNYLGdEQUFnRCxFQUNoRCxnQ0FBZ0MsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksRUFDdEQseUJBQXlCLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQ2hELElBQUksR0FBRyxJQUFJLEVBQ1gsOENBQThDLENBQy9DLENBQUM7UUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUM7S0FDbEU7SUFFRDs7T0FFRzs7Ozs7OztJQUNILHVDQUFhOzs7Ozs7SUFBYixVQUFjLEtBQUssRUFBRSxJQUFpQjtRQUFqQixxQkFBQSxFQUFBLFdBQVcsSUFBSSxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQ1gsZ0RBQWdELEVBQ2hELDZCQUE2QixHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUNwRCxJQUFJLEdBQUcsSUFBSSxFQUNYLDhDQUE4QyxDQUMvQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0tBQ2xFOztnQkE3RkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFQeUMsUUFBUTtnREFXN0MsTUFBTSxTQUFDLGdCQUFnQjtnQkFScEIsV0FBVzs7OzBCQUhuQjs7U0FRYSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFcnJvckhhbmRsZXIsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuL2NvbnN0L2NvbmZpZyc7XHJcbmltcG9ydCB7SG9va1NlcnZpY2V9IGZyb20gJy4vaG9vay5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgdG9hc3RyIGZyb20gJ3RvYXN0cic7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVIYW5kbGVyU2VydmljZSBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBJbmplY3QoJ2NvbmZpZ3VyYXRpb25zJykgcHJpdmF0ZSBjb25maWc6IENvbmZpZyxcclxuICAgIHByaXZhdGUgaG9vazogSG9va1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdsb2JhbCBFcnJvciBIYW5kbGVyXHJcbiAgICovXHJcbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciBNZXNzYWdlIGZvciB2aWV3XHJcbiAgICAgKi9cclxuICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEVycm9yIFRpbWVTdGFtcFxyXG4gICAgICovXHJcbiAgICBjb25zdCBkYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlIGVycm9ycyBvY2N1cmVkIHdoaWxlIG1ha2luZyBzZXJ2ZXIgY2FsbFxyXG4gICAgICovXHJcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICBtZXNzYWdlID0gdGhpcy5jb25maWcubWVzc2FnZS5zdGF0dXNFeGNlcHRpb247XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBJZiBVbkF1dGhvcml6ZWRcclxuICAgICAgICogRWxzZSBJZiBTZXJ2ZXIgRXJyb3JcclxuICAgICAgICovXHJcbiAgICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgICAgY2FzZSA0MDA6XHJcbiAgICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1MDA6XHJcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5jb25maWcubWVzc2FnZS5zZXJ2ZXJFeGNlcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgLy8gQmFja2VuZCByZXR1cm5zIHVuc3VjY2Vzc2Z1bCByZXNwb25zZSBjb2RlcyBzdWNoIGFzIDQwNCwgNTAwIGV0Yy5cclxuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlKGVycm9yLCBkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEEgY2xpZW50LXNpZGUgb3IgbmV0d29yayBlcnJvciBvY2N1cnJlZC5cclxuICAgICAgdGhpcy5jb21tb25NZXNzYWdlKGVycm9yLCBkYXRlKTtcclxuICAgICAgbWVzc2FnZSA9IHRoaXMuY29uZmlnLm1lc3NhZ2UuYXBwRXhjZXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1TRyhtZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ291dCBvZiBzeXN0ZW1cclxuICAgKi9cclxuICBsb2dvdXQobWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgdG9hc3RyLmVycm9yKHRoaXMuY29uZmlnLm1lc3NhZ2UudW5BdXRoZW50aWNhdGVkKTtcclxuICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgIHRvYXN0ci5lcnJvcihtZXNzYWdlKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh0aGlzLmNvbmZpZy5sb2dvdXQpO1xyXG4gICAgfSwgNTAwMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IEVycm9yIE1lc3NhZ2VcclxuICAgKi9cclxuICBlcnJvck1TRyhtZXNzYWdlLCBjb2RlID0gbnVsbCkge1xyXG4gICAgdG9hc3RyLmVycm9yKG1lc3NhZ2UsIGNvZGUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2cgRXJyb3IgTWVzc2FnZVxyXG4gICAqL1xyXG4gIHN0YXR1c01lc3NhZ2UoZXJyb3IsIGRhdGUgPSBuZXcgRGF0ZSgpKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nLFxyXG4gICAgICAnQmFja2VuZCByZXR1cm5lZCBzdGF0dXMgY29kZTogJyArIGVycm9yLnN0YXR1cyArICdcXG4nLFxyXG4gICAgICAnUmVzcG9uc2UgYm9keSBlaGFuZGxlcjonICsgZXJyb3IubWVzc2FnZSArICdcXG4nLFxyXG4gICAgICBkYXRlICsgJ1xcbicsXHJcbiAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSdcclxuICAgICk7XHJcbiAgICAgIHRoaXMuaG9vay5leGNlcHRpb25Ob3RpZnkoZXJyb3IubWVzc2FnZSwgJy0tLS1IVFRQIEVycm9yLS0tLScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIENvbW1vbiBFcnJvclxyXG4gICAqL1xyXG4gIGNvbW1vbk1lc3NhZ2UoZXJyb3IsIGRhdGUgPSBuZXcgRGF0ZSgpKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nLFxyXG4gICAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZWhhbmRsZXI6JyArIGVycm9yLm1lc3NhZ2UgKyAnXFxuJyxcclxuICAgICAgZGF0ZSArICdcXG4nLFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nXHJcbiAgICApO1xyXG4gICAgdGhpcy5ob29rLmV4Y2VwdGlvbk5vdGlmeShlcnJvci5tZXNzYWdlLCAnLS0tLUNvbW1vbiBFcnJvci0tLS0nKTtcclxuICB9XHJcbn1cclxuIl19