@uoa/error-pages
Version:
University of Auckland error page library for intercepting client/server errors & redirecting to custom error pages.
1 lines • 31.6 kB
Source Map (JSON)
{"version":3,"file":"uoa-error-pages.mjs","sources":["../../../projects/error-pages/src/lib/core/services/uoa-errors-config.service.ts","../../../projects/error-pages/src/lib/core/services/bypass-error.service.ts","../../../projects/error-pages/src/lib/core/services/error-toast.service.ts","../../../projects/error-pages/src/lib/core/interceptors/client-error.interceptor.ts","../../../projects/error-pages/src/lib/core/interceptors/server-error.interceptor.ts","../../../projects/error-pages/src/lib/error-pages.provider.ts","../../../projects/error-pages/src/lib/components/header/header.component.ts","../../../projects/error-pages/src/lib/components/header/header.component.html","../../../projects/error-pages/src/lib/components/footer/footer.component.ts","../../../projects/error-pages/src/lib/components/footer/footer.component.html","../../../projects/error-pages/src/lib/pages/error/error.page.ts","../../../projects/error-pages/src/lib/pages/error/error.page.html","../../../projects/error-pages/src/public-api.ts","../../../projects/error-pages/src/uoa-error-pages.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UoaErrorsConfig {\r\n public clientErrorCodes = [400, 401, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 418, 429, 431];\r\n public serverErrorCodes = [500, 501, 502, 503, 504, 505, 506];\r\n public showErrorAsToast = false;\r\n public returnUrl: string = '/';\r\n public returnButtonText: string = 'Reload page';\r\n public ErrorPageContent = {\r\n ErrorCode400: {\r\n title: `Bad Request`,\r\n content: `<p>Sorry, something went wrong trying to access that page. Try reloading the page, or going back and following the link again.</p>`,\r\n },\r\n ErrorCode401: {\r\n title: `Not Authorised`,\r\n content: `<p>Sorry, you do not have permission to access this page.</p>`,\r\n },\r\n ErrorCode403: {\r\n title: `Access Restricted`,\r\n content: `<p>Sorry, You do not have permission to view this page. Please ensure that you are logged in and try again.</p>\r\n <p>\r\n If you still do not have access and believe you are seeing this page in error, contact us on\r\n <a href=\"tel:0800 61 62 63\" target=\"_blank\">0800 61 62 63 (within New Zealand)</a> or\r\n <a href=\"tel:+64 9 373 7513\" target=\"_blank\">+64 9 373 7513 (outside New Zealand)</a> or at\r\n <a href=\"mailto:studentinfo@auckland.ac.nz\" target=\"_blank\">studentinfo@auckland.ac.nz</a>.\r\n </p>`,\r\n },\r\n ErrorCode404: {\r\n title: `Page Not Found`,\r\n content: `<p>Sorry, we could not find that page. Check that the URL is correct, or try going back and following the link again.</p>`,\r\n },\r\n ErrorCode405: {\r\n title: `Method not allowed`,\r\n content: `<p>The requested method is not allowed for the requested URL.</p>\r\n <p>You may need to login again,\r\n or try going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a>\r\n </p>`,\r\n },\r\n ErrorCode406: {\r\n title: `Content Unable to be Displayed`,\r\n content: `<p>Sorry, something has gone wrong and we cannot display this page.\r\n You may need to login again, or try going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode407: {\r\n title: `Authentication Required`,\r\n content: `<p>Sorry, we cannot connect you to the page you are trying to reach because you are not correctly logged in.\r\n Try reloading the page to login, or going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode408: {\r\n title: `Request Timeout`,\r\n content: `<p>The request took a little longer than expected to respond.</p>\r\n <p>Please reload the page or try again later.</p>`,\r\n },\r\n ErrorCode409: {\r\n title: `Bad Request`,\r\n content: `<p>The system is currently unavailable, we apologise for any inconvenience.</p>\r\n <p>Please try again later.</p>`,\r\n },\r\n ErrorCode410: {\r\n title: `Resource is no longer available`,\r\n content: `<p>\r\n Sorry, the requested URL is no longer available and we cannot work out what you are trying to reach.\r\n <a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a>.\r\n </p>`,\r\n },\r\n ErrorCode411: {\r\n title: `Bad Content-Length`,\r\n content: `<p>Sorry, something has gone wrong and we cannot connect you to the system. Try going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a>.</p>`,\r\n },\r\n ErrorCode412: {\r\n title: `Precondition Failed`,\r\n content: `<p>Sorry, something has gone wrong and we cannot connect you to the system. Try going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode413: {\r\n title: `File upload too large`,\r\n content: `<p>The size of the file that was being uploaded is too large. Please reduce the file size and try again.</p>`,\r\n },\r\n ErrorCode414: {\r\n title: `Submitted URI too large`,\r\n content: `<p>Sorry, something has gone wrong with the URL you are trying to access and we cannot connect you.\r\n Please check the URL is correct, or try going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode415: {\r\n title: `Unsupported media type`,\r\n content: `<p>Sorry, it looks like you are trying to access a file type that is not supported.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode418: {\r\n title: `I’m a Teapot`,\r\n content: `<p>Sorry, it looks like you are using the wrong device. This is not for coffee, it is clearly a teapot.</p>\r\n <p>If you believe you are seeing this error incorrectly, you are.</p>`,\r\n },\r\n ErrorCode429: {\r\n title: `Too Many Requests`,\r\n content: `<p>You are seeing this because you have made a large number of requests to our system within a short period of time.\r\n Please wait a minute or two and then try reloading the page.</p>`,\r\n },\r\n ErrorCode431: {\r\n title: `Request Header Fields Too Long`,\r\n content: `<p>You may be seeing this error due to cookie settings or the URL is too long. Try clearing your cookies\r\n and reloading the page; or if you have altered the URL try removing this and navigating again.</p>`,\r\n },\r\n\r\n ErrorCode500: {\r\n title: `Service Unavailable`,\r\n content: `<p>The system is currently unavailable and we apologise for any inconvenience.</p>\r\n <p>Please try again later.</p>`,\r\n },\r\n ErrorCode501: {\r\n title: `Cannot process request`,\r\n content: `<p>Sorry, we cannot connect you to the system. Try reloading the page, or going back and following the link again.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue</a>.</p>`,\r\n },\r\n ErrorCode502: {\r\n title: `Connection Error`,\r\n content: `<p>We cannot connect you to our systems at the moment.</p>\r\n <p>Please check your internet connection or try again later.</p>`,\r\n },\r\n ErrorCode503: {\r\n title: `Service Unavailable`,\r\n content: `<p>The system is currently unavailable. We apologise for any inconvenience.</p>\r\n <p>Please try again later.</p>`,\r\n },\r\n ErrorCode504: {\r\n title: `Request Timeout`,\r\n content: `<p>The request took a little longer than expected to respond.</p>\r\n <p>Please refresh the page or try again a little later.</p>`,\r\n },\r\n ErrorCode505: {\r\n title: `Version Not Supported`,\r\n content: `<p>Sorry, it looks like you are using a browser or connection that is not supported.\r\n Check your connection settings or use an alternative browser such as Google Chrome, Firefox or Edge.</p>\r\n <p><a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Please contact us if you need help or would like to report this issue.</a></p>`,\r\n },\r\n ErrorCode506: {\r\n title: `Variant also negotiates`,\r\n content: `<p>Sorry, something has gone wrong. We cannot connect you to the system, or you are trying to access something that you do not have permission to access.</p>\r\n <p>\r\n <a href=https://www.auckland.ac.nz/en/about-us/connect-with-us/contact-us.html>\r\n Try reloading the page, or contact us if you need help or would like to report this issue.</a>\r\n </p>`,\r\n },\r\n\r\n ErrorCodeDefault: {\r\n title: `Unexpected Error`,\r\n content: `<p>\r\n Sorry, we seem to have encountered an unexpected error. If you require help, please call\r\n <a href=\"tel:0800 61 62 63\" target=\"_blank\">0800 61 62 63 (within New Zealand)</a> or\r\n <a href=\"tel:+64 9 373 7513\" target=\"_blank\">+64 9 373 7513 (outside New Zealand)</a> or at\r\n <a href=\"mailto:studentinfo@auckland.ac.nz\" target=\"_blank\">studentinfo@auckland.ac.nz</a>\r\n </p>`,\r\n },\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ByPassDto } from '../interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BypassErrorService {\r\n private _serverErrorbypassList: ByPassDto[];\r\n private _clientErrorbypassList: ByPassDto[];\r\n\r\n constructor() {\r\n this._serverErrorbypassList = [];\r\n this._clientErrorbypassList = [];\r\n }\r\n\r\n private _getObjectInBypassList(list: ByPassDto[], url: string): ByPassDto {\r\n const bypassObject = list.find(bypass => bypass.url === url);\r\n return bypassObject;\r\n }\r\n private _removeObjectFromBypassList(list: ByPassDto[], bypassObject: ByPassDto): void {\r\n const anIndex = list.indexOf(bypassObject);\r\n if (list.length && anIndex !== -1) {\r\n list.splice(anIndex, 1);\r\n }\r\n }\r\n\r\n public bypassError(urlString: string, statusCodes: number[]) {\r\n const clientErrorCodes = statusCodes.filter(code => code.toString().startsWith('4'));\r\n const serverErrorCodes = statusCodes.filter(code => code.toString().startsWith('5'));\r\n if (serverErrorCodes) {\r\n this._addToServerErrorBypassList(urlString, serverErrorCodes);\r\n }\r\n\r\n if (clientErrorCodes) {\r\n this._addToClientErrorBypassList(urlString, clientErrorCodes);\r\n }\r\n }\r\n\r\n private _addToServerErrorBypassList(url: string, status: number[]): void {\r\n this._serverErrorbypassList.push({ url, status });\r\n }\r\n\r\n public getObjectServerErrorBypassList(url: string): ByPassDto {\r\n return this._getObjectInBypassList(this._serverErrorbypassList, url);\r\n }\r\n\r\n public removeErrorServerErrorBypassList(bypassObject: ByPassDto): void {\r\n this._removeObjectFromBypassList(this._serverErrorbypassList, bypassObject);\r\n console.debug('this._serverErrorbypassList', this._serverErrorbypassList);\r\n }\r\n\r\n private _addToClientErrorBypassList(url: string, status: number[]): void {\r\n this._clientErrorbypassList.push({ url, status });\r\n }\r\n\r\n public getObjectClientErrorBypassList(url: string): ByPassDto {\r\n return this._getObjectInBypassList(this._clientErrorbypassList, url);\r\n }\r\n\r\n public removeObjectClientErrorBypassList(bypassObject: ByPassDto): void {\r\n this._removeObjectFromBypassList(this._clientErrorbypassList, bypassObject);\r\n console.debug('this._clientErrorbypassList', this._clientErrorbypassList);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ErrorContentDto } from './../interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class ErrorToastService {\r\n abstract createToast(toastObject: ErrorContentDto): void;\r\n}\r\n","import { Router } from '@angular/router';\r\nimport { inject } from '@angular/core';\r\nimport { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap, finalize } from 'rxjs/operators';\r\n\r\nimport { UoaErrorsConfig } from '../services/uoa-errors-config.service';\r\nimport { BypassErrorService } from '../services/bypass-error.service';\r\nimport { ErrorToastService } from '../services/error-toast.service';\r\n\r\nexport function clientErrorInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\r\n const router: Router = inject(Router);\r\n const errorConfigService: UoaErrorsConfig = inject(UoaErrorsConfig);\r\n const bypassService: BypassErrorService = inject(BypassErrorService);\r\n const toastService: ErrorToastService = inject(ErrorToastService);\r\n\r\n const ERROR_CODES = errorConfigService.clientErrorCodes;\r\n\r\n const bypassObject = bypassService.getObjectClientErrorBypassList(req.url);\r\n console.debug('bypassObject in client error list: ', bypassObject);\r\n\r\n return next(req).pipe(\r\n finalize(() => bypassService.removeObjectClientErrorBypassList(bypassObject)),\r\n tap(\r\n (res) => {},\r\n (error) => {\r\n if (ERROR_CODES.includes(error.status) && !(bypassObject && bypassObject.status.includes(error.status))) {\r\n console.warn(`ClientErrorInterceptor - HTTP ${error.status}`);\r\n if (errorConfigService.showErrorAsToast) {\r\n toastService.createToast(errorConfigService.ErrorPageContent['ErrorCode' + error.status]);\r\n } else {\r\n errorConfigService.returnUrl = router.url;\r\n return router.navigate(['/error', error.status]);\r\n }\r\n }\r\n }\r\n )\r\n );\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { UoaErrorsConfig } from '../services/uoa-errors-config.service';\r\nimport { BypassErrorService } from '../services/bypass-error.service';\r\nimport { ErrorToastService } from '../services/error-toast.service';\r\n\r\nexport function serverErrorInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\r\n const router: Router = inject(Router);\r\n const errorConfigService: UoaErrorsConfig = inject(UoaErrorsConfig);\r\n const bypassService: BypassErrorService = inject(BypassErrorService);\r\n const toastService: ErrorToastService = inject(ErrorToastService);\r\n\r\n const ERROR_CODES = errorConfigService.serverErrorCodes;\r\n\r\n const bypassObject = bypassService.getObjectServerErrorBypassList(req.url);\r\n console.debug('bypassObject in server errors list: ', bypassObject);\r\n\r\n return next(req).pipe(\r\n finalize(() => bypassService.removeObjectClientErrorBypassList(bypassObject)),\r\n tap(\r\n (res) => {},\r\n (error) => {\r\n if (ERROR_CODES.includes(error.status) && !(bypassObject && bypassObject.status.includes(error.status))) {\r\n console.warn(`ServerErrorInterceptor - HTTP ${error.status}`);\r\n if (errorConfigService.showErrorAsToast) {\r\n toastService.createToast(errorConfigService.ErrorPageContent['ErrorCode' + error.status]);\r\n } else {\r\n errorConfigService.returnUrl = router.url;\r\n return router.navigate(['/error', error.status]);\r\n }\r\n }\r\n }\r\n )\r\n );\r\n}\r\n","import { EnvironmentProviders } from '@angular/core';\r\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { clientErrorInterceptor } from './core/interceptors/client-error.interceptor';\r\nimport { serverErrorInterceptor } from './core/interceptors/server-error.interceptor';\r\n\r\nexport function provideErrorPages(): EnvironmentProviders {\r\n return provideHttpClient(withInterceptors([clientErrorInterceptor, serverErrorInterceptor]));\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: 'header.component.html',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class HeaderComponent {}\n","<uoa-header></uoa-header>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\r\nexport class FooterComponent {}\r\n","<div class=\"footer background-dark-3\">\r\n <a target=\"_blank\" class=\"padding-left-m padding-right-m\" rel=\"noopener\" href=\"https://www.auckland.ac.nz/en/copyright.html\">\r\n Copyright\r\n </a>\r\n <a\r\n class=\"border-left-light-2 padding-left-m padding-right-m\"\r\n target=\"_blank\"\r\n rel=\"noopener\"\r\n href=\"https://www.auckland.ac.nz/en/privacy.html\"\r\n >\r\n Privacy\r\n </a>\r\n <a\r\n class=\"border-left-light-2 padding-left-m padding-right-m\"\r\n target=\"_blank\"\r\n rel=\"noopener\"\r\n href=\"https://www.auckland.ac.nz/en/disclaimer.html\"\r\n >\r\n Disclaimer\r\n </a>\r\n <a class=\"border-left-light-2 padding-left-m padding-right-m\" target=\"_blank\" rel=\"noopener\" href=\"https://uoa.custhelp.com/\">\r\n Ask Auckland\r\n </a>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { UoaErrorsConfig } from './../../core/services/uoa-errors-config.service';\r\nimport { ErrorContentDto } from './../../core/interfaces';\nimport { HeaderComponent } from '../../components/header/header.component';\nimport { FooterComponent } from '../../components/footer/footer.component';\r\n\r\n@Component({\n selector: 'lib-error',\n templateUrl: 'error.page.html',\n styleUrls: ['error.page.scss'],\n imports: [HeaderComponent, FooterComponent]\n})\r\nexport class ErrorPage {\r\n private _errorCodes: number[];\r\n public errorCode = 'ErrorCodeDefault';\r\n public errorObject: ErrorContentDto;\r\n public returnUrl: string;\r\n public returnButtonText: string;\r\n\r\n constructor(private _route: ActivatedRoute, private _errorConfigService: UoaErrorsConfig) {\r\n this._errorCodes = [...this._errorConfigService.clientErrorCodes, ...this._errorConfigService.serverErrorCodes];\r\n const httpCode = +this._route.snapshot.paramMap.get('errorCode');\r\n if (this._errorCodes.includes(httpCode)) {\r\n this.errorCode = 'ErrorCode' + httpCode;\r\n }\r\n this.errorObject = this._errorConfigService.ErrorPageContent[this.errorCode];\r\n this.returnUrl = this._errorConfigService.returnUrl;\r\n this.returnButtonText = this._errorConfigService.returnButtonText;\r\n }\r\n}\r\n","<div class=\"content-wrapper\">\r\n <app-header></app-header>\r\n <div class=\"inner-content\">\r\n <div>\r\n <div class=\"padding-top-2xl\">\r\n <h1 class=\"font-xxl\">{{errorObject.title}}</h1>\r\n <div class=\"padding-top-2xl\" [innerHtml]=\"errorObject.content\"></div>\r\n </div>\r\n <div class=\"button flex\">\r\n <a class=\"flex\" [href]=\"returnUrl\">{{returnButtonText}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n <app-footer></app-footer>\r\n</div>\r\n","/*\r\n * Public API Surface of error-pages\r\n */\r\n\r\nexport * from './lib/core/services/uoa-errors-config.service';\r\nexport * from './lib/core/services/bypass-error.service';\r\nexport * from './lib/core/services/error-toast.service';\r\nexport * from './lib/error-pages.provider';\r\nexport * from './lib/pages/error/error.page';\r\nexport * from './lib/core/interfaces/error-content.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UoaErrorsConfig"],"mappings":"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"}