@hmcts/opal-frontend-common 0.0.60 → 0.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
- import { tap, catchError, throwError } from 'rxjs';
3
+ import { tap, catchError, EMPTY, throwError } from 'rxjs';
4
4
  import { AppInsightsService } from '@hmcts/opal-frontend-common/services/app-insights-service';
5
5
  import { GlobalStore } from '@hmcts/opal-frontend-common/stores/global';
6
6
  import { GLOBAL_ERROR_STATE } from '@hmcts/opal-frontend-common/stores/global/constants';
@@ -95,6 +95,27 @@ function handleNonRetriableError(error, router) {
95
95
  break;
96
96
  }
97
97
  }
98
+ /**
99
+ * Extracts the HTTP status code from an error object.
100
+ *
101
+ * Attempts to retrieve the status code by checking for a `status` property
102
+ * at the top level of the error object, and if not found, checks for a nested
103
+ * `error.status` property.
104
+ *
105
+ * @param error - The error object to extract the status code from
106
+ * @returns The HTTP status code if found, otherwise `undefined`
107
+ */
108
+ function getStatusCode(error) {
109
+ if (typeof error === 'object' && error !== null && 'status' in error) {
110
+ const statusErr = error;
111
+ return statusErr.status;
112
+ }
113
+ if (typeof error === 'object' && error !== null && 'error' in error) {
114
+ const err = error;
115
+ return err.error?.status;
116
+ }
117
+ return undefined;
118
+ }
98
119
  const httpErrorInterceptor = (req, next) => {
99
120
  const globalStore = inject(GlobalStore);
100
121
  const appInsightsService = inject(AppInsightsService);
@@ -103,12 +124,18 @@ const httpErrorInterceptor = (req, next) => {
103
124
  globalStore.resetBannerError();
104
125
  }), catchError((error) => {
105
126
  const isBrowser = typeof globalThis !== 'undefined';
127
+ const statusCode = getStatusCode(error);
106
128
  if (isBrowser) {
107
129
  if (isNonRetriableError(error)) {
108
130
  handleNonRetriableError(error, router);
109
131
  }
110
132
  else if (isRetriableError(error)) {
111
133
  handleRetriableError(error, globalStore);
134
+ // Swallow ONLY retriable 409s so they don't bubble as uncaught exceptions.
135
+ // Do NOT swallow other statuses (e.g. 401) as callers may relay on an emission.
136
+ if (statusCode === 409) {
137
+ return EMPTY;
138
+ }
112
139
  }
113
140
  else {
114
141
  globalStore.setBannerError({
@@ -1 +1 @@
1
- {"version":3,"file":"hmcts-opal-frontend-common-interceptors-http-error.mjs","sources":["../../../projects/opal-frontend-common/interceptors/http-error/constants/http-error-message.constant.ts","../../../projects/opal-frontend-common/interceptors/http-error/constants/http-error-message-response.constant.ts","../../../projects/opal-frontend-common/interceptors/http-error/http-error.interceptor.ts","../../../projects/opal-frontend-common/interceptors/http-error/hmcts-opal-frontend-common-interceptors-http-error.ts"],"sourcesContent":["export const GENERIC_HTTP_ERROR_MESSAGE = 'You can try again. If the problem persists, contact the service desk.';\n","import { IErrorResponse } from '@hmcts/opal-frontend-common/interceptors/http-error/interfaces';\n\nexport const ERROR_RESPONSE: IErrorResponse = {\n type: null,\n title: null,\n status: null,\n detail: null,\n instance: null,\n operation_id: null,\n retriable: null,\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError, tap, throwError } from 'rxjs';\nimport { AppInsightsService } from '@hmcts/opal-frontend-common/services/app-insights-service';\nimport { GlobalStore } from '@hmcts/opal-frontend-common/stores/global';\nimport { GLOBAL_ERROR_STATE } from '@hmcts/opal-frontend-common/stores/global/constants';\nimport { GlobalStoreType } from '@hmcts/opal-frontend-common/stores/global/types';\nimport { GENERIC_HTTP_ERROR_MESSAGE } from './constants/http-error-message.constant';\nimport { IErrorResponse } from './interfaces/http-error-retrievable-error-response.interface';\nimport { ERROR_RESPONSE } from './constants/http-error-message-response.constant';\n/**\n * Checks if the error is a non-retriable error\n * @param error - The HTTP error response\n * @returns true if the error has retriable: false\n */\nfunction isNonRetriableError(error: unknown): boolean {\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: { retriable?: boolean } };\n return err.error?.retriable === false;\n }\n return false;\n}\n\n/**\n * Checks if the error is explicitly marked as retriable\n * @param error - The HTTP error response\n * @returns true if the error has retriable: true or retriable is undefined\n */\nfunction isRetriableError(error: unknown): boolean {\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: { retriable?: boolean } };\n return err.error?.retriable !== false;\n }\n return false;\n}\n\n/**\n * Handles retriable errors by setting appropriate error state\n * @param error - The HTTP error response\n * @param globalStore - Global store instance\n */\nfunction handleRetriableError(error: unknown, globalStore: GlobalStoreType): void {\n let errorResponse: IErrorResponse | undefined;\n\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: IErrorResponse };\n errorResponse = err.error;\n }\n\n const errorMessage = errorResponse?.detail || GENERIC_HTTP_ERROR_MESSAGE;\n\n globalStore.setBannerError({\n ...GLOBAL_ERROR_STATE,\n error: true,\n title: errorResponse?.title || ERROR_RESPONSE.title,\n message: errorMessage,\n operationId: errorResponse?.operation_id || ERROR_RESPONSE.operation_id,\n });\n}\n\n/**\n * Handles non-retriable errors by redirecting to appropriate error pages\n * @param error - The HTTP error response\n * @param router - Angular Router instance\n */\nfunction handleNonRetriableError(error: unknown, router: Router): void {\n let errorResponse: IErrorResponse | undefined;\n let status: number | undefined;\n\n if (typeof error === 'object' && error !== null) {\n if ('error' in error) {\n const err = error as { error?: IErrorResponse };\n errorResponse = err.error;\n }\n if ('status' in error) {\n const statusErr = error as { status?: number };\n status = statusErr.status;\n }\n }\n\n const statusCode = status || errorResponse?.status;\n\n const operationId = errorResponse?.operation_id || ERROR_RESPONSE.operation_id;\n\n switch (statusCode) {\n case 409:\n router.navigate(['/error/concurrency-failure']);\n break;\n case 403:\n router.navigate(['/error/permission-denied']);\n break;\n default:\n router.navigate(['/error/internal-server'], {\n state: { operationId },\n });\n break;\n }\n}\n\nexport const httpErrorInterceptor: HttpInterceptorFn = (req, next) => {\n const globalStore = inject(GlobalStore);\n const appInsightsService = inject(AppInsightsService);\n const router = inject(Router);\n\n return next(req).pipe(\n tap(() => {\n globalStore.resetBannerError();\n }),\n catchError((error) => {\n const isBrowser = typeof globalThis !== 'undefined';\n\n if (isBrowser) {\n if (isNonRetriableError(error)) {\n handleNonRetriableError(error, router);\n } else if (isRetriableError(error)) {\n handleRetriableError(error, globalStore);\n } else {\n globalStore.setBannerError({\n ...GLOBAL_ERROR_STATE,\n error: true,\n title: 'There was a problem',\n message: GENERIC_HTTP_ERROR_MESSAGE,\n operationId: ERROR_RESPONSE.operation_id,\n });\n }\n }\n\n // Always log exceptions for monitoring\n appInsightsService.logException(error);\n\n return throwError(() => error);\n }),\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hmcts-opal-frontend-common-interceptors-http-error.mjs","sources":["../../../projects/opal-frontend-common/interceptors/http-error/constants/http-error-message.constant.ts","../../../projects/opal-frontend-common/interceptors/http-error/constants/http-error-message-response.constant.ts","../../../projects/opal-frontend-common/interceptors/http-error/http-error.interceptor.ts","../../../projects/opal-frontend-common/interceptors/http-error/hmcts-opal-frontend-common-interceptors-http-error.ts"],"sourcesContent":["export const GENERIC_HTTP_ERROR_MESSAGE = 'You can try again. If the problem persists, contact the service desk.';\n","import { IErrorResponse } from '@hmcts/opal-frontend-common/interceptors/http-error/interfaces';\n\nexport const ERROR_RESPONSE: IErrorResponse = {\n type: null,\n title: null,\n status: null,\n detail: null,\n instance: null,\n operation_id: null,\n retriable: null,\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError, EMPTY, tap, throwError } from 'rxjs';\nimport { AppInsightsService } from '@hmcts/opal-frontend-common/services/app-insights-service';\nimport { GlobalStore } from '@hmcts/opal-frontend-common/stores/global';\nimport { GLOBAL_ERROR_STATE } from '@hmcts/opal-frontend-common/stores/global/constants';\nimport { GlobalStoreType } from '@hmcts/opal-frontend-common/stores/global/types';\nimport { GENERIC_HTTP_ERROR_MESSAGE } from './constants/http-error-message.constant';\nimport { IErrorResponse } from './interfaces/http-error-retrievable-error-response.interface';\nimport { ERROR_RESPONSE } from './constants/http-error-message-response.constant';\n/**\n * Checks if the error is a non-retriable error\n * @param error - The HTTP error response\n * @returns true if the error has retriable: false\n */\nfunction isNonRetriableError(error: unknown): boolean {\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: { retriable?: boolean } };\n return err.error?.retriable === false;\n }\n return false;\n}\n\n/**\n * Checks if the error is explicitly marked as retriable\n * @param error - The HTTP error response\n * @returns true if the error has retriable: true or retriable is undefined\n */\nfunction isRetriableError(error: unknown): boolean {\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: { retriable?: boolean } };\n return err.error?.retriable !== false;\n }\n return false;\n}\n\n/**\n * Handles retriable errors by setting appropriate error state\n * @param error - The HTTP error response\n * @param globalStore - Global store instance\n */\nfunction handleRetriableError(error: unknown, globalStore: GlobalStoreType): void {\n let errorResponse: IErrorResponse | undefined;\n\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: IErrorResponse };\n errorResponse = err.error;\n }\n\n const errorMessage = errorResponse?.detail || GENERIC_HTTP_ERROR_MESSAGE;\n\n globalStore.setBannerError({\n ...GLOBAL_ERROR_STATE,\n error: true,\n title: errorResponse?.title || ERROR_RESPONSE.title,\n message: errorMessage,\n operationId: errorResponse?.operation_id || ERROR_RESPONSE.operation_id,\n });\n}\n\n/**\n * Handles non-retriable errors by redirecting to appropriate error pages\n * @param error - The HTTP error response\n * @param router - Angular Router instance\n */\nfunction handleNonRetriableError(error: unknown, router: Router): void {\n let errorResponse: IErrorResponse | undefined;\n let status: number | undefined;\n\n if (typeof error === 'object' && error !== null) {\n if ('error' in error) {\n const err = error as { error?: IErrorResponse };\n errorResponse = err.error;\n }\n if ('status' in error) {\n const statusErr = error as { status?: number };\n status = statusErr.status;\n }\n }\n\n const statusCode = status || errorResponse?.status;\n\n const operationId = errorResponse?.operation_id || ERROR_RESPONSE.operation_id;\n\n switch (statusCode) {\n case 409:\n router.navigate(['/error/concurrency-failure']);\n break;\n case 403:\n router.navigate(['/error/permission-denied']);\n break;\n default:\n router.navigate(['/error/internal-server'], {\n state: { operationId },\n });\n break;\n }\n}\n\n/**\n * Extracts the HTTP status code from an error object.\n *\n * Attempts to retrieve the status code by checking for a `status` property\n * at the top level of the error object, and if not found, checks for a nested\n * `error.status` property.\n *\n * @param error - The error object to extract the status code from\n * @returns The HTTP status code if found, otherwise `undefined`\n */\nfunction getStatusCode(error: unknown): number | undefined {\n if (typeof error === 'object' && error !== null && 'status' in error) {\n const statusErr = error as { status?: number };\n return statusErr.status;\n }\n if (typeof error === 'object' && error !== null && 'error' in error) {\n const err = error as { error?: { status?: number } };\n return err.error?.status;\n }\n return undefined;\n}\n\nexport const httpErrorInterceptor: HttpInterceptorFn = (req, next) => {\n const globalStore = inject(GlobalStore);\n const appInsightsService = inject(AppInsightsService);\n const router = inject(Router);\n\n return next(req).pipe(\n tap(() => {\n globalStore.resetBannerError();\n }),\n catchError((error) => {\n const isBrowser = typeof globalThis !== 'undefined';\n const statusCode = getStatusCode(error);\n\n if (isBrowser) {\n if (isNonRetriableError(error)) {\n handleNonRetriableError(error, router);\n } else if (isRetriableError(error)) {\n handleRetriableError(error, globalStore);\n\n // Swallow ONLY retriable 409s so they don't bubble as uncaught exceptions.\n // Do NOT swallow other statuses (e.g. 401) as callers may relay on an emission.\n if (statusCode === 409) {\n return EMPTY;\n }\n } else {\n globalStore.setBannerError({\n ...GLOBAL_ERROR_STATE,\n error: true,\n title: 'There was a problem',\n message: GENERIC_HTTP_ERROR_MESSAGE,\n operationId: ERROR_RESPONSE.operation_id,\n });\n }\n }\n\n // Always log exceptions for monitoring\n appInsightsService.logException(error);\n\n return throwError(() => error);\n }),\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hmcts/opal-frontend-common",
3
- "version": "0.0.60",
3
+ "version": "0.0.62",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",