{ "version": 3, "sources": ["src/app/error-handler/custom-errors/timeout.error.ts", "src/app/error-handler/services/logging.service.ts", "src/app/error-handler/custom-errors/page-not-found.error.ts", "src/app/error-handler/custom-errors/apollo-network-error.ts", "src/app/error-handler/custom-errors/not-authorized-error.ts", "src/app/error-handler/services/error.service.ts"], "sourcesContent": ["export class TimeoutError extends Error {\r\n timeout: number;\r\n statusCode: number;\r\n constructor(message: string, timeout: number, statusCode: number = 408) {\r\n super(message);\r\n this.timeout = timeout;\r\n this.statusCode = statusCode;\r\n this.name = 'Timeout';\r\n }\r\n}\r\n", "import { retry } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { ErrorContext } from './error-context.model';\r\nimport { HOST_URL } from 'app/shared/tokens/host-url';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoggingService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n @Inject(HOST_URL) private host: string\r\n ) {\r\n\r\n }\r\n\r\n logErrors(errors: ErrorContext[]): Observable {\r\n if(errors[0].status === 404) {\r\n return;\r\n }\r\n return this.http.post(`${this.host}/api/log-errors`, errors)\r\n .pipe(\r\n retry(3)\r\n );\r\n }\r\n}\r\n", "export class PageNotFoundError extends Error {\r\n statusCode = 404;\r\n constructor(url: string) {\r\n super(`Invalid requested url: ${url}`);\r\n this.name = 'PageNotFound';\r\n }\r\n}\r\n", "export class ApolloNetworkError extends Error {\r\n status = 503;\r\n cause: string;\r\n constructor(message: string, cause: string, status: number) {\r\n super(message);\r\n this.cause = cause;\r\n this.name = 'ApolloNetworkError';\r\n this.status = status;\r\n }\r\n }\r\n", "export class NotAuthorizedError extends Error {\r\n statusCode = 403;\r\n constructor(url: string) {\r\n super(`User not authorized: ${url}`);\r\n this.name = 'NotAuthorized';\r\n }\r\n}\r\n", "import { TimeoutError } from './../custom-errors/timeout.error';\r\nimport { NavigationError, Router, RoutesRecognized } from '@angular/router';\r\nimport { ApolloError } from '@apollo/client/errors';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { Inject, Injectable, Injector, LOCALE_ID, OnDestroy, Optional, TransferState, makeStateKey } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Location } from '@angular/common';\r\nimport { UsersService } from 'app/shared/services/users/users.service';\r\nimport { ErrorContext } from './error-context.model';\r\n// Cool library to deal with errors: https://www.stacktracejs.com\r\n// import * as StackTraceParser from 'error-stack-parser';\r\nimport type { LocalForageService } from 'app/shared/services/local-forage/local-forage.service';\r\nimport { LoggingService } from './logging.service';\r\nimport { EMPTY, filter, pairwise, tap } from 'rxjs';\r\nimport { PageNotFoundError } from '../custom-errors/page-not-found.error';\r\nimport { GraphQLError } from 'graphql';\r\nimport { ApolloNetworkError } from '../custom-errors/apollo-network-error';\r\nimport { NotAuthorizedError } from '../custom-errors/not-authorized-error';\r\n\r\n// import crypto from 'crypto';\r\n\r\ndeclare const navigator: any;\r\nexport const ERRORS_STORE = 'errors_store';\r\n\r\nexport const ERROR_STATUS = makeStateKey('error_status');\r\n\r\nexport class ErrosStatus {\r\n statusCode: number;\r\n url: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService implements OnDestroy {\r\n private get localForageService(): Promise {\r\n return (async () => {\r\n if (!this._localForageService) {\r\n const { LocalForageService } = await import('app/shared/services/local-forage/local-forage.service');\r\n const injector = Injector.create({\r\n providers: [{ provide: LocalForageService, useClass: LocalForageService }],\r\n parent: this.injector,\r\n });\r\n this._localForageService = injector.get(LocalForageService);\r\n }\r\n return this._localForageService;\r\n })();\r\n }\r\n private _localForageService: LocalForageService;\r\n\r\n private get browserNavigator(): any {\r\n if (this.platform.isBrowser) {\r\n if (!navigator.connection) navigator.connection = {};\r\n return navigator;\r\n } else {\r\n return {language: this.locale, platform: 'server-side', userAgent: 'omitted', connection: {}}\r\n }\r\n }\r\n\r\n private prevUrl: string;\r\n private curUrl: string;\r\n private userService: UsersService;\r\n private loggingService: LoggingService;\r\n\r\n constructor(\r\n private platform: Platform,\r\n private location: Location,\r\n private tstate: TransferState,\r\n @Inject(LOCALE_ID) private locale: string,\r\n private injector: Injector,\r\n private router: Router\r\n ){\r\n if (this.platform.isBrowser) {\r\n\r\n this.userService = injector.get(UsersService);\r\n this.loggingService = injector.get(LoggingService);\r\n this.router.events\r\n .pipe(\r\n filter((evt: any) => evt instanceof RoutesRecognized),\r\n tap(ev => this.curUrl = ev.urlAfterRedirects),\r\n pairwise())\r\n .subscribe((events: RoutesRecognized[]) => {\r\n this.prevUrl = events[0].urlAfterRedirects;\r\n this.curUrl = events[1].urlAfterRedirects;\r\n });\r\n\r\n const errorStatus = this.tstate.get(ERROR_STATUS, null);\r\n\r\n if(errorStatus) { \r\n this.navigateError(errorStatus.statusCode, errorStatus.url);\r\n }\r\n\r\n } else {\r\n this.router.events\r\n .subscribe(e => {\r\n if (e instanceof NavigationError) {\r\n if(e.error instanceof PageNotFoundError) {\r\n this.navigateError(e.error.statusCode, e.url);\r\n } else {\r\n this.navigateError(500, e.url);\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n async logErrors(): Promise {\r\n const localForageService = await this.localForageService;\r\n const errors = await localForageService.getAll(ERRORS_STORE);\r\n if (errors && errors.length > 0) {\r\n this.loggingService.logErrors(errors)\r\n .subscribe({\r\n next: () => {\r\n localForageService.clearAll(ERRORS_STORE);\r\n },\r\n error: error => {\r\n console.error('An error occurred during log operation!', error);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n async handleError(error: Error): Promise {\r\n if(error.name === 'HttpErrorResponse') {\r\n return EMPTY;\r\n }\r\n let errorContext: ErrorContext, localForageService: LocalForageService, stack, graphQlErrors = [], status: number = -1;\r\n const url = this.curUrl || this.router.getCurrentNavigation()?.extractedUrl.toString() || this.router.url || '';\r\n if (url.match(/\\/error\\/[0-9]{3}/)) {\r\n return EMPTY;\r\n }\r\n\r\n // if (networkError && networkError.name === 'Timeout') {\r\n // const { statusCode } = networkError as TimeoutError;\r\n // status = statusCode;\r\n // error = networkError;\r\n // } else if (networkError && networkError.name === 'HttpErrorResponse') {\r\n // await this.navigateError(503, url);\r\n // return EMPTY;\r\n // } else if(networkError && networkError.name === 'HttpErrorResponse') {\r\n\r\n // }\r\n\r\n\r\n if (this.isGraphQLError(error)) {\r\n const code = error.extensions?.code || 'none';\r\n const graphqlError = error;\r\n switch (code) {\r\n case \"SLUG_NOT_FOUND\":\r\n const notFound = new PageNotFoundError(url);\r\n status = notFound.statusCode;\r\n error = notFound;\r\n case \"PAGE_CURSOR_NOT_FOUND\":\r\n const pageCursorFound = new PageNotFoundError(url);\r\n status = pageCursorFound.statusCode;\r\n error = pageCursorFound;\r\n default:\r\n graphQlErrors.push(graphqlError);\r\n }\r\n } else if (error instanceof ApolloNetworkError) {\r\n status = error.status;\r\n await this.navigateError(503, url);\r\n return EMPTY;\r\n } else if (error instanceof HttpErrorResponse) {\r\n status = error.status;\r\n }\r\n\r\n if(error instanceof PageNotFoundError || error instanceof TimeoutError || error instanceof NotAuthorizedError) {\r\n await this.navigateError(error.statusCode, url);\r\n }\r\n const userid = this.userService?.currentUserId || null;\r\n\r\n const message = error.message ? this.parseMessage(error.message) : JSON.stringify(error); //fix: googlebot da errore perché error.message è undefined, da controllare.\r\n\r\n const {language, platform, userAgent, connection: { downlink, effectiveType}} = this.browserNavigator;\r\n let id = '';\r\n\r\n if (this.platform.isBrowser) {\r\n id = await this.digestMessage(`err-${language}-${platform}-${userAgent}-${message}`);\r\n localForageService = await this.localForageService;\r\n errorContext = await localForageService.getItem(ERRORS_STORE, id);\r\n } else {\r\n id = `err-${language}-${platform}-${userAgent}-${message}`\r\n }\r\n\r\n if (errorContext) {\r\n errorContext.errorCount++;\r\n errorContext.time = new Date().getTime();\r\n } else {\r\n if (!['Timeout', 'PageNotFound', 'NotAuthorized'].includes(error.name)) {\r\n\r\n const StackTraceParser = await import('error-stack-parser').then(s => s.default);\r\n try {\r\n stack = StackTraceParser.parse(error);\r\n } catch (err) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n errorContext = {\r\n id: id,\r\n browserLanguage: language,\r\n platform: platform,\r\n userAgent: userAgent,\r\n connectionDownlink: downlink || null,\r\n connectionEffectiveType: effectiveType || null,\r\n lang: this.locale,\r\n name: error.name || null,\r\n userId: userid || null,\r\n time: new Date().getTime(),\r\n url: url,\r\n message: message,\r\n stack: stack,\r\n graphQlErrors: graphQlErrors,\r\n status: status,\r\n fromUrl: this.prevUrl,\r\n errorCount: 1,\r\n };\r\n }\r\n if (this.platform.isBrowser) {\r\n localForageService.save(ERRORS_STORE, id, errorContext);\r\n } else {\r\n this.loggingService?.logErrors([errorContext])\r\n .subscribe();\r\n }\r\n\r\n return EMPTY;\r\n }\r\n\r\n navigateError(statusCode: number, url: string): void {\r\n this.router.navigate([`/error/${statusCode}`], { skipLocationChange: true, queryParams: {returl: url} });\r\n if (this.platform.isBrowser) {\r\n this.location.replaceState(url);\r\n } else {\r\n this.tstate.set(ERROR_STATUS, {statusCode: statusCode, url: url});\r\n }\r\n }\r\n\r\n private parseMessage(message: string): string {\r\n // first line of message\r\n const regex = new RegExp('(?:.*[^\\n])');\r\n let parsed: string;\r\n if (regex.test(message)) {\r\n parsed = message.match(regex)[0];\r\n } else {\r\n parsed = message;\r\n }\r\n\r\n return parsed;\r\n }\r\n\r\n private isGraphQLError(err: unknown): err is GraphQLError {\r\n if (!err) return false\r\n if (!Object.prototype.hasOwnProperty.call(err, 'path')) return false\r\n if (!Object.prototype.hasOwnProperty.call(err, 'extensions')) return false\r\n return true\r\n }\r\n\r\n async digestMessage(message) {\r\n const msgUint8 = new TextEncoder().encode(message);// encode as (utf-8) Uint8Array\r\n const hashBuffer = await window.crypto.subtle.digest('SHA-256', msgUint8); // hash the message\r\n const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\r\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\r\n }\r\n\r\n async ngOnDestroy(): Promise {\r\n if(this.platform.isBrowser) {\r\n try {\r\n await this.logErrors();\r\n }\r\n catch(err) {\r\n // ignore\r\n }\r\n }\r\n \r\n }\r\n}\r\n"], "mappings": "uZAAM,IAAOA,EAAP,cAA4BC,KAAK,CAGrCC,YAAYC,EAAiBC,EAAiBC,EAAqB,IAAG,CACpE,MAAMF,CAAO,EACb,KAAKC,QAAUA,EACf,KAAKC,WAAaA,EAClB,KAAKC,KAAO,SACd,GCEF,IAAaC,GAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CAEzBC,YACUC,EACkBC,EAAY,CAD9B,KAAAD,KAAAA,EACkB,KAAAC,KAAAA,CAG5B,CAEAC,UAAUC,EAAsB,CAC9B,GAAGA,EAAO,CAAC,EAAEC,SAAW,IAGxB,OAAO,KAAKJ,KAAKK,KAAK,GAAG,KAAKJ,IAAI,kBAAmBE,CAAM,EAC1DG,KACCC,EAAM,CAAC,CAAC,CAEZ,yCAjBWT,GAAcU,EAAAC,CAAA,EAAAD,EAIfE,CAAQ,CAAA,CAAA,wBAJPZ,EAAca,QAAdb,EAAcc,UAAAC,WAFX,MAAM,CAAA,EAEhB,IAAOf,EAAPgB,SAAOhB,CAAc,GAAA,ECVrB,IAAOiB,EAAP,cAAiCC,KAAK,CAE1CC,YAAYC,EAAW,CACrB,MAAM,0BAA0BA,CAAG,EAAE,EAFvC,KAAAC,WAAa,IAGX,KAAKC,KAAO,cACd,GCLI,IAAOC,EAAP,cAAkCC,KAAK,CAGzCC,YAAYC,EAAiBC,EAAeC,EAAc,CACxD,MAAMF,CAAO,EAHf,KAAAE,OAAS,IAIP,KAAKD,MAAQA,EACb,KAAKE,KAAO,qBACZ,KAAKD,OAASA,CAChB,GCRE,IAAOE,EAAP,cAAkCC,KAAK,CAEzCC,YAAYC,EAAW,CACrB,MAAM,wBAAwBA,CAAG,EAAE,EAFrC,KAAAC,WAAa,IAGX,KAAKC,KAAO,eACd,GCiBG,IAAMC,EAAe,eAEfC,EAAyC,eAUtD,IAAaC,IAAY,IAAA,CAAnB,IAAOA,EAAP,MAAOA,CAAY,CACvB,IAAYC,oBAAkB,CAC1B,OAAmBC,EAAA,sBACjB,GAAI,CAAC,KAAKC,oBAAqB,CAC7B,GAAM,CAAEC,mBAAAA,CAAkB,EAAK,KAAM,QAAO,qBAAuD,EAC7FC,EAAWC,EAASC,OAAO,CAC/BC,UAAW,CAAC,CAAEC,QAASL,EAAoBM,SAAUN,CAAkB,CAAE,EACzEO,OAAQ,KAAKN,SACd,EACD,KAAKF,oBAAsBE,EAASO,IAAIR,CAAkB,CAC5D,CACA,OAAO,KAAKD,mBACd,EACJ,CAGA,IAAYU,kBAAgB,CAC1B,OAAI,KAAKC,SAASC,WACXC,UAAUC,aAAYD,UAAUC,WAAa,CAAA,GAC3CD,WAEA,CAACE,SAAU,KAAKC,OAAQL,SAAU,cAAeM,UAAW,UAAWH,WAAY,CAAA,CAAE,CAEhG,CAOAI,YACUP,EACAQ,EACAC,EACmBJ,EACnBd,EACAmB,EAAc,CAEtB,GAPQ,KAAAV,SAAAA,EACA,KAAAQ,SAAAA,EACA,KAAAC,OAAAA,EACmB,KAAAJ,OAAAA,EACnB,KAAAd,SAAAA,EACA,KAAAmB,OAAAA,EAEJ,KAAKV,SAASC,UAAW,CAE3B,KAAKU,YAAcpB,EAASO,IAAIc,CAAY,EAC5C,KAAKC,eAAiBtB,EAASO,IAAIgB,CAAc,EACjD,KAAKJ,OAAOK,OACXC,KACCC,EAAQC,GAAaA,aAAeC,CAAgB,EACpDC,EAAIC,GAAM,KAAKC,OAASD,EAAGE,iBAAiB,EAC5CC,EAAQ,CAAE,EACXC,UAAWV,GAA8B,CACxC,KAAKW,QAAUX,EAAO,CAAC,EAAEQ,kBACzB,KAAKD,OAASP,EAAO,CAAC,EAAEQ,iBAC1B,CAAC,EAED,IAAMI,EAAc,KAAKlB,OAAOX,IAAI8B,EAAc,IAAI,EAEnDD,GACD,KAAKE,cAAcF,EAAYG,WAAYH,EAAYI,GAAG,CAG9D,MACE,KAAKrB,OAAOK,OACXU,UAAUO,GAAI,CACTA,aAAaC,IACZD,EAAEE,iBAAiBC,EACpB,KAAKN,cAAcG,EAAEE,MAAMJ,WAAYE,EAAED,GAAG,EAE5C,KAAKF,cAAc,IAAKG,EAAED,GAAG,EAInC,CAAC,CAGL,CAEMK,WAAS,QAAAhD,EAAA,sBACb,IAAMD,EAAqB,MAAM,KAAKA,mBAChCkD,EAAS,MAAMlD,EAAmBmD,OAAOC,CAAY,EACvDF,GAAUA,EAAOG,OAAS,GAC5B,KAAK3B,eAAeuB,UAAUC,CAAM,EACnCZ,UAAU,CACTgB,KAAMA,IAAK,CACTtD,EAAmBuD,SAASH,CAAY,CAC1C,EACAL,MAAOA,GAAQ,CACbS,QAAQT,MAAM,0CAA2CA,CAAK,CAChE,EACD,CAGL,GAEMU,YAAYV,EAAY,QAAA9C,EAAA,sBAC5B,GAAG8C,EAAMW,OAAS,oBAChB,OAAOC,EAET,IAAIC,EAA4B5D,EAAwC6D,EAAOC,EAAgB,CAAA,EAAIC,EAAiB,GAC9GnB,EAAM,KAAKT,QAAW,KAAKZ,OAAOyC,qBAAoB,GAAIC,aAAaC,SAAQ,GAAM,KAAK3C,OAAOqB,KAAO,GAC9G,GAAIA,EAAIuB,MAAM,mBAAmB,EAC/B,OAAOR,EAeT,GAAI,KAAKS,eAAerB,CAAK,EAAG,CAC5B,IAAMsB,EAAOtB,EAAMuB,YAAYD,MAAQ,OACjCE,EAAexB,EACrB,OAAQsB,EAAI,CACV,IAAK,iBACH,IAAMG,EAAW,IAAIxB,EAAkBJ,CAAG,EACxCmB,EAASS,EAAS7B,WAClBI,EAAQyB,EACZ,IAAK,wBACH,IAAMC,EAAkB,IAAIzB,EAAkBJ,CAAG,EAC/CmB,EAASU,EAAgB9B,WACzBI,EAAQ0B,EACZ,QACAX,EAAcY,KAAKH,CAAY,CACjC,CACJ,KAAO,IAAIxB,aAAiB4B,EAC1BZ,OAAAA,EAAShB,EAAMgB,OACf,MAAM,KAAKrB,cAAc,IAAKE,CAAG,EAC1Be,EACEZ,aAAiB6B,IAC1Bb,EAAShB,EAAMgB,SAGdhB,aAAiBC,GAAqBD,aAAiB8B,GAAiB9B,aAAiB+B,KAC1F,MAAM,KAAKpC,cAAcK,EAAMJ,WAAYC,CAAG,GAEhD,IAAMmC,EAAS,KAAKvD,aAAawD,eAAiB,KAE5CC,EAAUlC,EAAMkC,QAAU,KAAKC,aAAanC,EAAMkC,OAAO,EAAIE,KAAKC,UAAUrC,CAAK,EAEjF,CAAC9B,SAAAA,EAAUJ,SAAAA,EAAUM,UAAAA,EAAWH,WAAY,CAAEqE,SAAAA,EAAUC,cAAAA,CAAa,CAAC,EAAI,KAAK1E,iBACjF2E,EAAK,GAUT,GARI,KAAK1E,SAASC,WAChByE,EAAK,MAAM,KAAKC,cAAc,OAAOvE,CAAQ,IAAIJ,CAAQ,IAAIM,CAAS,IAAI8D,CAAO,EAAE,EACnFjF,EAAqB,MAAM,KAAKA,mBAChC4D,EAAe,MAAM5D,EAAmByF,QAAQrC,EAAcmC,CAAE,GAEhEA,EAAK,OAAOtE,CAAQ,IAAIJ,CAAQ,IAAIM,CAAS,IAAI8D,CAAO,GAGtDrB,EACFA,EAAa8B,aACb9B,EAAa+B,KAAO,IAAIC,KAAI,EAAGC,QAAO,MACjC,CACL,GAAI,CAAC,CAAC,UAAW,eAAgB,eAAe,EAAEC,SAAS/C,EAAMW,IAAI,EAAG,CAEtE,IAAMqC,EAAmB,KAAM,QAAO,qBAAoB,EAAEC,KAAKC,GAAKA,EAAEC,OAAO,EAC/E,GAAI,CACFrC,EAAQkC,EAAiBI,MAAMpD,CAAK,CACtC,OAASqD,EAAK,CACZ5C,QAAQ6C,IAAID,EAAInB,OAAO,CACzB,CACF,CAEArB,EAAe,CACb2B,GAAIA,EACJe,gBAAiBrF,EACjBJ,SAAUA,EACVM,UAAWA,EACXoF,mBAAoBlB,GAAY,KAChCmB,wBAAyBlB,GAAiB,KAC1CmB,KAAM,KAAKvF,OACXwC,KAAMX,EAAMW,MAAQ,KACpBgD,OAAQ3B,GAAU,KAClBY,KAAM,IAAIC,KAAI,EAAGC,QAAO,EACxBjD,IAAKA,EACLqC,QAASA,EACTpB,MAAOA,EACPC,cAAeA,EACfC,OAAQA,EACR4C,QAAS,KAAKpE,QACdmD,WAAY,EAEhB,CACA,OAAI,KAAK7E,SAASC,UAChBd,EAAmB4G,KAAKxD,EAAcmC,EAAI3B,CAAY,EAEtD,KAAKlC,gBAAgBuB,UAAU,CAACW,CAAY,CAAC,EAC5CtB,UAAS,EAGLqB,CACT,GAEAjB,cAAcC,EAAoBC,EAAW,CAC3C,KAAKrB,OAAOsF,SAAS,CAAC,UAAUlE,CAAU,EAAE,EAAG,CAAEmE,mBAAoB,GAAMC,YAAa,CAACC,OAAQpE,CAAG,CAAC,CAAE,EACnG,KAAK/B,SAASC,UAChB,KAAKO,SAAS4F,aAAarE,CAAG,EAE9B,KAAKtB,OAAO4F,IAAiBzE,EAAc,CAACE,WAAYA,EAAYC,IAAKA,CAAG,CAAC,CAEjF,CAEQsC,aAAaD,EAAe,CAElC,IAAMkC,EAAQ,IAAIC,OAAO;GAAa,EAClCC,EACJ,OAAIF,EAAMG,KAAKrC,CAAO,EACpBoC,EAASpC,EAAQd,MAAMgD,CAAK,EAAE,CAAC,EAE/BE,EAASpC,EAGJoC,CACT,CAEQjD,eAAegC,EAAY,CAGjC,MAFI,GAACA,GACD,CAACmB,OAAOC,UAAUC,eAAeC,KAAKtB,EAAK,MAAM,GACjD,CAACmB,OAAOC,UAAUC,eAAeC,KAAKtB,EAAK,YAAY,EAE7D,CAEMZ,cAAcP,EAAO,QAAAhF,EAAA,sBACzB,IAAM0H,EAAW,IAAIC,YAAW,EAAGC,OAAO5C,CAAO,EAC3C6C,EAAa,MAAMC,OAAOC,OAAOC,OAAOC,OAAO,UAAWP,CAAQ,EAExE,OADkBQ,MAAMC,KAAK,IAAIC,WAAWP,CAAU,CAAC,EACtCQ,IAAKC,GAAMA,EAAErE,SAAS,EAAE,EAAEsE,SAAS,EAAG,GAAG,CAAC,EAAEC,KAAK,EAAE,CACtE,GAEMC,aAAW,QAAAzI,EAAA,sBACf,GAAG,KAAKY,SAASC,UACf,GAAI,CACF,MAAM,KAAKmC,UAAS,CACtB,MACW,CACT,CAIN,2CApPWlD,GAAY4I,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,CAAA,EAAAH,EAkCbI,CAAS,EAAAJ,EAAAtI,CAAA,EAAAsI,EAAAK,CAAA,CAAA,CAAA,wBAlCRjJ,EAAYkJ,QAAZlJ,EAAYmJ,UAAAC,WAFT,MAAM,CAAA,EAEhB,IAAOpJ,EAAPqJ,SAAOrJ,CAAY,GAAA", "names": ["TimeoutError", "Error", "constructor", "message", "timeout", "statusCode", "name", "LoggingService", "constructor", "http", "host", "logErrors", "errors", "status", "post", "pipe", "retry", "\u0275\u0275inject", "HttpClient", "HOST_URL", "factory", "\u0275fac", "providedIn", "_LoggingService", "PageNotFoundError", "Error", "constructor", "url", "statusCode", "name", "ApolloNetworkError", "Error", "constructor", "message", "cause", "status", "name", "NotAuthorizedError", "Error", "constructor", "url", "statusCode", "name", "ERRORS_STORE", "ERROR_STATUS", "ErrorService", "localForageService", "__async", "_localForageService", "LocalForageService", "injector", "Injector", "create", "providers", "provide", "useClass", "parent", "get", "browserNavigator", "platform", "isBrowser", "navigator", "connection", "language", "locale", "userAgent", "constructor", "location", "tstate", "router", "userService", "UsersService", "loggingService", "LoggingService", "events", "pipe", "filter", "evt", "RoutesRecognized", "tap", "ev", "curUrl", "urlAfterRedirects", "pairwise", "subscribe", "prevUrl", "errorStatus", "ERROR_STATUS", "navigateError", "statusCode", "url", "e", "NavigationError", "error", "PageNotFoundError", "logErrors", "errors", "getAll", "ERRORS_STORE", "length", "next", "clearAll", "console", "handleError", "name", "EMPTY", "errorContext", "stack", "graphQlErrors", "status", "getCurrentNavigation", "extractedUrl", "toString", "match", "isGraphQLError", "code", "extensions", "graphqlError", "notFound", "pageCursorFound", "push", "ApolloNetworkError", "HttpErrorResponse", "TimeoutError", "NotAuthorizedError", "userid", "currentUserId", "message", "parseMessage", "JSON", "stringify", "downlink", "effectiveType", "id", "digestMessage", "getItem", "errorCount", "time", "Date", "getTime", "includes", "StackTraceParser", "then", "s", "default", "parse", "err", "log", "browserLanguage", "connectionDownlink", "connectionEffectiveType", "lang", "userId", "fromUrl", "save", "navigate", "skipLocationChange", "queryParams", "returl", "replaceState", "set", "regex", "RegExp", "parsed", "test", "Object", "prototype", "hasOwnProperty", "call", "msgUint8", "TextEncoder", "encode", "hashBuffer", "window", "crypto", "subtle", "digest", "Array", "from", "Uint8Array", "map", "b", "padStart", "join", "ngOnDestroy", "\u0275\u0275inject", "Platform", "Location", "TransferState", "LOCALE_ID", "Router", "factory", "\u0275fac", "providedIn", "_ErrorService"] }