vc-error-handlers 0.1.97 → 0.1.98

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.
Files changed (38) hide show
  1. package/esm2020/lib/featureFlag/feature-flag.module.mjs +1 -1
  2. package/esm2020/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +4 -3
  3. package/esm2020/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +5 -4
  4. package/esm2020/lib/shared/components/error-modal/error-modal.component.mjs +14 -11
  5. package/esm2020/lib/shared/components/page-not-found/page-not-found.component.mjs +25 -14
  6. package/esm2020/lib/shared/components/server-error/server-error.component.mjs +17 -6
  7. package/esm2020/lib/shared/components/session-expired/session-expired.component.mjs +4 -3
  8. package/esm2020/lib/shared/components/unauthorized/unauthorized.component.mjs +26 -10
  9. package/esm2020/lib/shared/constants/api-config.constants.mjs +7 -14
  10. package/esm2020/lib/shared/constants/error-handling.constants.mjs +15 -2
  11. package/esm2020/lib/shared/errorhandler/sentry-error.handler.mjs +6 -9
  12. package/esm2020/lib/shared/interceptors/http.interceptor.mjs +3 -3
  13. package/esm2020/lib/shared/services/global-error.service.mjs +24 -50
  14. package/esm2020/lib/shared/services/util.service.mjs +29 -2
  15. package/esm2020/lib/shared/types/global-error.types.mjs +1 -1
  16. package/esm2020/lib/vc-error-handlers.component.mjs +9 -12
  17. package/esm2020/public-api.mjs +1 -2
  18. package/fesm2015/vc-error-handlers.mjs +167 -138
  19. package/fesm2015/vc-error-handlers.mjs.map +1 -1
  20. package/fesm2020/vc-error-handlers.mjs +167 -138
  21. package/fesm2020/vc-error-handlers.mjs.map +1 -1
  22. package/lib/shared/components/chunk-unavailable/chunk-unavailable.component.d.ts +4 -0
  23. package/lib/shared/components/component-level-server-error/component-level-server-error.component.d.ts +4 -0
  24. package/lib/shared/components/error-modal/error-modal.component.d.ts +8 -4
  25. package/lib/shared/components/page-not-found/page-not-found.component.d.ts +8 -3
  26. package/lib/shared/components/server-error/server-error.component.d.ts +4 -0
  27. package/lib/shared/components/session-expired/session-expired.component.d.ts +4 -0
  28. package/lib/shared/components/unauthorized/unauthorized.component.d.ts +5 -0
  29. package/lib/shared/constants/api-config.constants.d.ts +2 -6
  30. package/lib/shared/constants/error-handling.constants.d.ts +13 -0
  31. package/lib/shared/errorhandler/sentry-error.handler.d.ts +1 -1
  32. package/lib/shared/services/global-error.service.d.ts +1 -1
  33. package/lib/shared/services/util.service.d.ts +10 -1
  34. package/lib/shared/types/global-error.types.d.ts +11 -0
  35. package/package.json +1 -1
  36. package/public-api.d.ts +0 -1
  37. package/esm2020/lib/shared/services/auth.service.mjs +0 -20
  38. package/lib/shared/services/auth.service.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"vc-error-handlers.mjs","sources":["../../../projects/vc-error-handlers/src/lib/vc-error-handlers.service.ts","../../../projects/vc-error-handlers/src/lib/shared/types/global-error.types.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/api-config.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/util.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/global-error.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/auth.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/router.service.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/error-handling.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/vc-error-handlers/src/lib/shared/components/error-modal/error-modal.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/vc-error-handlers/src/lib/shared/components/session-expired/session-expired.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/unauthorized/unauthorized.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/chunk-unavailable/chunk-unavailable.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/server-error/server-error.component.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/page-not-found/page-not-found.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/component-level-server-error/component-level-server-error.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/vc-error-handlers/src/environments/environment.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.service.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.directive.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.module.ts","../../../projects/vc-error-handlers/src/lib/configuration.ts","../../../projects/vc-error-handlers/src/lib/shared/errorhandler/sentry-error.handler.ts","../../../projects/vc-error-handlers/src/lib/shared/interceptors/http.interceptor.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.module.ts","../../../projects/vc-error-handlers/src/public-api.ts","../../../projects/vc-error-handlers/src/vc-error-handlers.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VcErrorHandlersService {\r\n\r\n constructor() { }\r\n}\r\n","export interface DialogData {\r\n heading: string;\r\n description: string;\r\n buttonText: string;\r\n}\r\n\r\nexport enum ErrorStatusCode {\r\n URLNotFound = 404,\r\n UnauthorizedAccess = 403,\r\n Unauthenticated = 401,\r\n\r\n // Server-side errors\r\n InternalServerError = 500,\r\n ServiceUnavailable = 503,\r\n BadGateway = 502,\r\n RequestTimeout=504,\r\n\r\n // Network unavailability/offline case\r\n NetworkUnavailable = 0,\r\n\r\n // Application-specific errors\r\n JSChunkUnavailable = 600,\r\n}\r\n","export const PAGE_LEVEL_API_CONFIG = [\r\n {\r\n method: 'POST',\r\n path: '/compliance_post',\r\n query: { mode: 'xyz' },\r\n body: { mode: 'abc' },\r\n pageCodes: ['compliance:mr', 'risk:mr'],\r\n },\r\n {\r\n method: 'GET',\r\n path: '/compliance_post',\r\n query: { mode: 'xyz' },\r\n body: { mode: 'abc' },\r\n pageCodes: ['compliance:mr', 'risk:mr'],\r\n },\r\n];\r\n\r\nexport const COMPONENT_LEVEL_API_CONFIG = [\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'active' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'power_users' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'light_users' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'inactive' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'power_users_small' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Global-Dashboard/ManageDashboards',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Global-Dashboard/MyDashboard',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=grc/getGRCList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/compliance/?mode=responsibilityCenterTree',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=rcholidaylist',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=roles/getRoles',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=groupsList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/compliance_post/?mode=rcProfile',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/organization_post/?mode=userProfile',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=roles/roleById',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=groupDetails',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/compliance_post?mode=report/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=memberholidaylist',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=activity/activityLogList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=activity/viewList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/categoriesList?owner_list=1',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/risk/?mode=category/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/organization_post?mode=memberDetailsbyIds',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization?mode=signatureDetails',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/responsibilityList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/getLinkedPolicies',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: 'risk/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/assignee',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/evidence/getEvidences/b-cycle-header',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/activity-logs',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/activity-logs-views',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=category/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Assessment/?mode=assessment/fetchQuestionsByAssessmentId',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/responseSummary',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Assessment/?mode=assessment/logs',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/subCategories',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/getAssessmentById',\r\n query: null,\r\n body: null,\r\n },\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n public snackbarSubject = new Subject <any>();\r\n public snackbarState = this.snackbarSubject.asObservable();\r\n constructor() {}\r\n\r\n show(message: string, type?:'success'|'warning'|'info'|'alert'|'error') {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon:type,\r\n });\r\n }\r\n\r\n hide(){\r\n this.snackbarSubject.next({\r\n show: false,\r\n message: '',\r\n icon: '',\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UtilsService {\r\n public isJsonSubset(parentJson: any, subsetJson: any): boolean {\r\n for (let key in subsetJson) {\r\n if (!parentJson.hasOwnProperty(key) || parentJson[key] !== subsetJson[key]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpRequest,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\r\nimport { UtilsService } from './util.service';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\nimport { ERROR_CONFIG } from '../constants/error-handling.constants';\r\nimport {\r\n PAGE_LEVEL_API_CONFIG,\r\n COMPONENT_LEVEL_API_CONFIG,\r\n} from '../constants/api-config.constants';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GlobalErrorService {\r\n public globalError$: Subject<any> = new Subject();\r\n public localError$: Subject<any> = new Subject();\r\n\r\n private pageLevelApiConfig = PAGE_LEVEL_API_CONFIG;\r\n private componentLevelApiConfig = COMPONENT_LEVEL_API_CONFIG;\r\n\r\n constructor(\r\n private snackBarService: SnackBarService,\r\n private utilService: UtilsService,\r\n private router: Router\r\n ) {}\r\n\r\n public handleSoftErrors(event: HttpResponse<any> | HttpErrorResponse) {\r\n const xData = event.headers.get('X-Data');\r\n\r\n if (xData) {\r\n const parsedData = JSON.parse(xData);\r\n const statusCode = parsedData.statusCode;\r\n const statusMessage = parsedData.message;\r\n\r\n if (statusCode && statusCode !== 0) {\r\n this.snackBarService.show(statusMessage || 'Error occurred', 'error');\r\n }\r\n }\r\n }\r\n\r\n public handleError(error: HttpErrorResponse, request: HttpRequest<any>) {\r\n if (\r\n this.isUnauthenticated(error) ||\r\n this.isUnauthorizedAccess(error) ||\r\n this.isNetworkUnavailable(error)\r\n ) {\r\n this.publishGlobalError(error);\r\n } else if (this.isServerError(error)) {\r\n this.handleServerError(error, request);\r\n } else {\r\n this.handleSoftErrors(error);\r\n }\r\n }\r\n\r\n public isServerError(error: HttpErrorResponse): boolean {\r\n const serverErrorCodes = [\r\n ErrorStatusCode.InternalServerError,\r\n ErrorStatusCode.ServiceUnavailable,\r\n ErrorStatusCode.BadGateway,\r\n ErrorStatusCode.RequestTimeout,\r\n ];\r\n\r\n return serverErrorCodes.includes(error.status);\r\n }\r\n\r\n private isUnauthenticated(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.Unauthenticated;\r\n }\r\n\r\n private isUnauthorizedAccess(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.UnauthorizedAccess;\r\n }\r\n\r\n private isNetworkUnavailable(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.NetworkUnavailable;\r\n }\r\n\r\n private handleServerError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ) {\r\n if (this.isPageLevelError(error, request)) {\r\n console.log('page level error');\r\n this.publishGlobalError(error);\r\n } else if (this.isComponentLevelError(error, request)) {\r\n console.log('component level error');\r\n this.publishLocalError(error, request);\r\n }\r\n }\r\n\r\n private publishGlobalError(error: HttpErrorResponse) {\r\n this.globalError$.next(error);\r\n }\r\n\r\n private publishLocalError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ) {\r\n this.localError$.next({ error, request });\r\n }\r\n\r\n private isPageLevelError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ): boolean {\r\n const { method, path, query, body } = this.parseRequest(request);\r\n const pageCode = this.getPageCode();\r\n\r\n const isConfigMatched = this.pageLevelApiConfig.some((apiConfig) => {\r\n if (apiConfig.method !== method) return false;\r\n if (apiConfig.path !== path) return false;\r\n const isQuerySubset = this.utilService.isJsonSubset(\r\n apiConfig.query,\r\n query\r\n );\r\n if (!isQuerySubset) return false;\r\n const isBodyMatch = this.utilService.isJsonSubset(apiConfig.body, body);\r\n if (!isBodyMatch) return false;\r\n return apiConfig.pageCodes.includes(pageCode);\r\n });\r\n return isConfigMatched;\r\n }\r\n\r\n private isComponentLevelError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ): boolean {\r\n const { method, url: path, params, body } = request;\r\n const query: { [key: string]: any } = {};\r\n params.keys().forEach((key) => {\r\n query[key] = params.get(key);\r\n });\r\n const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {\r\n if (apiConfig.method !== method) return false;\r\n if (!path.includes(apiConfig.path)) return false;\r\n if (apiConfig.query) {\r\n const isQuerySubset = this.utilService.isJsonSubset(\r\n query,\r\n apiConfig.query\r\n );\r\n if (!isQuerySubset) return false;\r\n }\r\n if (apiConfig.body) {\r\n const isBodyMatch = this.utilService.isJsonSubset(apiConfig.body, body);\r\n if (!isBodyMatch) return false;\r\n }\r\n return true;\r\n });\r\n return isConfigFound;\r\n }\r\n\r\n private parseRequest(request: HttpRequest<any>) {\r\n const { method, url: path, params, body } = request;\r\n const query: { [key: string]: any } = {};\r\n params.keys().forEach((key) => {\r\n query[key] = params.get(key);\r\n });\r\n return { method, path, query, body };\r\n }\r\n\r\n private getPageCode() {\r\n const currentRoute = this.router.routerState.snapshot.root.firstChild;\r\n return currentRoute?.data?.pageCode;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthorizerService } from \"@vcomply/authorizer\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AuthService {\r\n constructor(private authorizer: AuthorizerService) {}\r\n\r\n public logoutUser() {\r\n this.authorizer.logout();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RouterService {\r\n public redirectToLogin() {\r\n window.location.href =\r\n `https://${window.location.host}/` +\r\n 'signin?redirectURL=' +\r\n encodeURIComponent(window.location.href);\r\n }\r\n}\r\n","export const VCOMPLY_LOGO_URL = 'https://cdn.v-comply.com/logo/prod/v-logo.svg';\r\n\r\nexport const API_TIMEOUT_TIME = 1000 * 15;\r\n\r\nexport const ERROR_CONFIG = {\r\n PAGE_NOT_FOUND: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"The page you're looking for doesn't exist.\",\r\n details: 'Please check the URL or return to the homepage.',\r\n buttonText: 'GO TO DASHBOARD',\r\n },\r\n\r\n UNAUTHORIZED: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"You don't have permission to access this page.\",\r\n details: 'If you believe this is an error, please contact',\r\n email: 'help@v-comply.com',\r\n support: 'for support',\r\n buttonText: 'CONTACT SUPPORT',\r\n mail: 'mailto:help@v-comply.com',\r\n },\r\n\r\n SESSION_EXPIRED: {\r\n heading: 'Session Expired!',\r\n description:\r\n 'Your session has expired. Please log in again to continue using the app.',\r\n buttonText: 'LOGIN',\r\n },\r\n\r\n CHUNK_UNAVAILABLE: {\r\n heading: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n buttonText: 'REFRESH',\r\n },\r\n\r\n SERVER_ERROR: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n details: 'Please refresh this page or try again later.',\r\n buttonText: 'REFRESH',\r\n snackBarMessage: `Oops! Something went wrong. Please try again later.`,\r\n },\r\n\r\n COMPONENT_LEVEL_SERVER_ERROR: {\r\n imageUrl: 'https://cdn.v-comply.com/application/images/sad-emoji-icon.svg',\r\n title: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n details: 'Please refresh this section or try again later.',\r\n buttonText: 'RETRY',\r\n },\r\n\r\n NETWORK_UNAVAILABLE: {\r\n offlineMessage:\r\n \"You're currently offline. Please check your internet connection and try again.\",\r\n },\r\n};\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit, OnDestroy {\r\n show = false;\r\n message = '--';\r\n icon = '&#xe914;';\r\n type = 'alert';\r\n icons: any = {\r\n success: '&#xe93d;',\r\n warning: '&#xe914;',\r\n info: '&#xe932;',\r\n alert: '&#xe914;',\r\n error: '&#xeaae;',\r\n };\r\n snackbarSubscription!: Subscription;\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarSubscription = this.snackbarService.snackbarState.subscribe(\r\n (state) => {\r\n if (state.icon && Object.keys(this.icons).includes(state?.icon)) {\r\n this.icon = this.icons[state.icon];\r\n this.type = state?.icon;\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n }\r\n );\r\n }\r\n\r\n setAutoClose() {\r\n setTimeout(() => {\r\n this.show = false;\r\n this.close();\r\n }, 3000);\r\n }\r\n close() {\r\n this.show = false;\r\n this.snackbarService.hide();\r\n }\r\n ngOnDestroy() {\r\n this.snackbarSubscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!-- &#xe914; -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { DialogConfig } from '../../../ui-kit/dialog/dialog-config';\r\n\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { RouterService } from '../../services/router.service';\r\n\r\nimport { DialogData } from '../../types/global-error.types';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-modal',\r\n template: ` <div class=\"error-dialog-box\">\r\n <div class=\"error-dialog-box-top\">{{ data.heading }}</div>\r\n <div class=\"error-dialog-box-mid\">\r\n {{ data.description }}\r\n </div>\r\n <div class=\"error-dialog-box-bottom\">\r\n <button (click)=\"onContinueAction()\" class=\"logIn-btn\">\r\n {{ data.buttonText }}\r\n </button>\r\n </div>\r\n </div>`,\r\n styleUrls: ['./error-modal.component.less'],\r\n})\r\nexport class ErrorModalComponent {\r\n @Input() errorType: 'session_expired' | 'chunk_not_found' = 'session_expired';\r\n\r\n data: DialogData = {\r\n heading: 'Message',\r\n description: 'Description',\r\n buttonText: 'Click Action',\r\n };\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private dialogConfig: DialogConfig,\r\n private routerService: RouterService\r\n ) {\r\n this.setDataConfig();\r\n }\r\n\r\n private setDataConfig() {\r\n this.data = this.dialogConfig.data?.errorConfig;\r\n this.errorType = this.dialogConfig.data?.errorType;\r\n }\r\n\r\n public onContinueAction() {\r\n if (this.errorType === 'session_expired') {\r\n this.authService.logoutUser();\r\n this.routerService.redirectToLogin();\r\n } else if (this.errorType === 'chunk_not_found') {\r\n window.location.reload();\r\n }\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n // debugger\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close(data?: any) {\r\n this.onDialogClose.next(data);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div\r\n class=\"overlay\"\r\n (click)=\"onOverlayClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER',\r\n black: background === 'black',\r\n whiteBlur: background === 'whiteBlur'\r\n }\" [class.pointer-none]=\"pointer === 'none'\"\r\n>\r\n <div\r\n class=\"dialog\"\r\n [class.animate]=\"animation\"\r\n (click)=\"onDialogClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER'\r\n }\"\r\n >\r\n <ng-template appInsertion></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n providers: [DialogRef],\r\n exports:[DialogComponent]\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-session-expired',\r\n template: ``,\r\n})\r\nexport class SessionExpiredComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.SESSION_EXPIRED;\r\n\r\n constructor(\r\n private dialogService: DialogService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: 'session_expired',\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-unauthorized',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">\r\n {{ errorConfig.details }}\r\n <a href=\"mailto:{help@v-comply.com}\">{{ errorConfig.email }}</a>\r\n {{ errorConfig.support }}.\r\n </div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToSupport()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, VCOMPLY TECHNOLOGIES, INC.\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class UnauthorizedComponent {\r\n currentYear = new Date().getFullYear();\r\n errorConfig = ERROR_CONFIG.UNAUTHORIZED;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n public redirectToSupport() {\r\n window.location.href = this.errorConfig.mail;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-chunk-unavailable',\r\n template: ``,\r\n})\r\nexport class ChunkUnavailableComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.CHUNK_UNAVAILABLE;\r\n\r\n constructor(private dialogService: DialogService) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: 'chunk_not_found',\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-server-error',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"refreshPage()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe92b;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class ServerErrorComponent {\r\n errorConfig = ERROR_CONFIG.SERVER_ERROR;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n public refreshPage() {\r\n window.location.reload();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { GlobalErrorService } from './shared/services/global-error.service';\r\nimport { SnackBarService } from './ui-kit/snack-bar/snack-bar.service';\r\n\r\nimport { ErrorStatusCode } from './shared/types/global-error.types';\r\nimport { ERROR_CONFIG } from './shared/constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-handlers',\r\n template: `\r\n <app-snack-bar></app-snack-bar>\r\n <lib-vc-error-session-expired\r\n *ngIf=\"sessionExpired\"\r\n ></lib-vc-error-session-expired>\r\n <lib-vc-error-unauthorized *ngIf=\"unauthorized\"></lib-vc-error-unauthorized>\r\n <lib-vc-error-chunk-unavailable\r\n *ngIf=\"chunkUnavailable\"\r\n ></lib-vc-error-chunk-unavailable>\r\n <lib-vc-error-server-error *ngIf=\"serverError\"></lib-vc-error-server-error>\r\n `,\r\n})\r\nexport class VcErrorHandlersComponent {\r\n private errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;\r\n\r\n unauthorized: boolean = false;\r\n sessionExpired: boolean = false;\r\n chunkUnavailable: boolean = false;\r\n serverError: boolean = false;\r\n isOnline: boolean = navigator.onLine;\r\n\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private snackBarService: SnackBarService\r\n ) {\r\n this.subscribeGlobalError();\r\n }\r\n\r\n ngOnInit() {\r\n this.subscribeNetworkDetection();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('online', this.onNetworkOnline);\r\n window.removeEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private subscribeGlobalError() {\r\n this.errorService.globalError$.subscribe((error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n if (error.status === ErrorStatusCode.Unauthenticated) {\r\n this.sessionExpired = true;\r\n } else if (error.status === ErrorStatusCode.UnauthorizedAccess) {\r\n this.unauthorized = true;\r\n } else if (error.status === ErrorStatusCode.JSChunkUnavailable) {\r\n this.chunkUnavailable = true;\r\n } else if (error.status === ErrorStatusCode.NetworkUnavailable) {\r\n this.handleNetworkError();\r\n } else if (this.errorService.isServerError(error)) {\r\n this.serverError = true;\r\n }\r\n }\r\n\r\n private subscribeNetworkDetection() {\r\n window.addEventListener('online', this.onNetworkOnline);\r\n window.addEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private onNetworkOnline = () => {\r\n this.isOnline = true;\r\n this.hideSnackBar();\r\n };\r\n\r\n private onNetworkOffline = () => {\r\n this.isOnline = false;\r\n this.showOfflineSnackBar();\r\n };\r\n\r\n private handleNetworkError() {\r\n if (!this.isOnline) {\r\n this.showOfflineSnackBar();\r\n }\r\n }\r\n\r\n private showOfflineSnackBar() {\r\n this.snackBarService.show(this.errorConfig.offlineMessage, 'error');\r\n }\r\n\r\n private hideSnackBar() {\r\n this.snackBarService.hide();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-page-not-found',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToHome()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, VCOMPLY TECHNOLOGIES, INC.\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class PageNotFoundComponent {\r\n errorConfig = ERROR_CONFIG.PAGE_NOT_FOUND;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n currentYear = new Date().getFullYear();\r\n\r\n constructor(private router: Router) {}\r\n\r\n public redirectToHome() {\r\n window.location.replace('/global-dashboard/compliance_dashboard');\r\n }\r\n}\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-component-server-error',\r\n template: `\r\n <div class=\"serverError\">\r\n <div class=\"serverError-inner\">\r\n <div class=\"serverError-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"106\"\r\n height=\"76\"\r\n />\r\n </div>\r\n <div class=\"serverError-inner-bottom\">\r\n <div class=\"serverError-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"serverError-text\">{{ errorConfig.description }}</div>\r\n <div class=\"serverError-details\">{{ errorConfig.details }}</div>\r\n <button class=\"serverError-btn\" (click)=\"onClick.emit(true)\">\r\n {{ errorConfig.buttonText }}\r\n <i class=\"icons\">&#xe92b;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['./component-level-server-error.component.less'],\r\n})\r\nexport class ComponentLevelServerErrorComponent {\r\n errorConfig = ERROR_CONFIG.COMPONENT_LEVEL_SERVER_ERROR;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n @Output() onClick = new EventEmitter<boolean>();\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nlet domainName = 'devapi.v-comply.com';\r\nlet apiBaseUrl = 'https://api-uat1.v-comply.com';\r\nswitch (window.location.host) {\r\n case 'dev.v-comply.com':\r\n domainName = 'devapi.v-comply.com';\r\n apiBaseUrl = 'https://api-uat1.v-comply.com';\r\n break;\r\n case 'beta.v-comply.com':\r\n domainName = 'betaapi.v-comply.com';\r\n apiBaseUrl = 'https://api-staging.v-comply.com';\r\n break;\r\n case 'test.v-comply.com':\r\n domainName = 'devapi.v-comply.com';\r\n break;\r\n case 'eu.v-comply.com':\r\n domainName = 'euapi.v-comply.com';\r\n break;\r\n default:\r\n domainName = 'api.v-comply.com';\r\n break;\r\n}\r\nconst PORT_EDITOR = 8081;\r\nconst PORT_CONTENT_SAVE = 8834;\r\nlet endPoint = 'https://devapi.v-comply.com/';\r\nexport const environment = {\r\n production: false,\r\n appUrl: 'http://localhost:4200/',\r\n apiBaseUrl: 'https://api-uat1.v-comply.com',\r\n authEndpoint: `${endPoint}VcomplyAuth/`,\r\n orgEndpoint_TL: `${endPoint}organization_pwt/?mode=`,\r\n s3Url: '',\r\n s3BucketUrl: `${endPoint}globals?mode=bucket`,\r\n s3Bucket: '',\r\n profile: '/profile_pic/thumb/',\r\n assessmentEnpoint: `${endPoint}Assessment/?mode=`,\r\n organizationPost: `${endPoint}organization_post/?mode=`,\r\n organizationGet: `${endPoint}organization/?mode=`,\r\n complianceGet: `${endPoint}compliance/?mode=`,\r\n compliancePost: `${endPoint}compliance_post/?mode=`,\r\n fileUploadEndPoint:\r\n 'https://upload-uat1.v-comply.com/fileupload/?destination=',\r\n assuranceGet: `${endPoint}assurance/?mode=`,\r\n policyGet: `${endPoint}policy/?mode=`,\r\n saveDoc: 'https://dev-node.v-comply.com/saveContent?bypass-token=true&id=',\r\n docxUpload: 'https://dev-node.v-comply.com/ImportDocument',\r\n fileUpload: 'https://dev-node.v-comply.com/importFiles',\r\n policyPost: `${endPoint}policy_post/?mode=`,\r\n policyPut: `${endPoint}policy_put/?mode=`,\r\n responsibilityPost: `${endPoint}responsibilities_post/?mode=`,\r\n linkDoc: 'https://dev-node.v-comply.com' + '/ImportDocument',\r\n linkPdf: 'https://dev-node.v-comply.com' + '/extractDocs',\r\n assuranceApi: 'https://devapi.v-comply.com/Assurance/',\r\n assurance: 'https://devapi.v-comply.com/Assurance/',\r\n programEndpoint: 'https://devapi.v-comply.com/program',\r\n risk: 'https://devapi.v-comply.com/risk/?mode=',\r\n risk_put: 'https://devapi.v-comply.com/risk_put/?mode=',\r\n riskPdfPost: 'https://devapi.v-comply.com/risk_pdf_post?mode=',\r\n riskPost: 'https://devapi.v-comply.com/risk_post/?mode=',\r\n riskGet: 'https://devapi.v-comply.com/risk/?mode=',\r\n baseUrl: 'https://devapi.v-comply.com/',\r\n grc_get: 'https://devapi.v-comply.com/grc_object/?mode=',\r\n leftMenuLogo: 'https://cdn.v-comply.com/logo/prod/v-logo.svg?v=1.0',\r\n vLoader: 'https://cdn.v-comply.com/logo/prod/v-icon-loader.svg?v=1.0',\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { retry } from 'rxjs/operators';\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { Subscription } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FeatureFlagService {\r\n constructor(\r\n private http: HttpClient,\r\n private authorizer: AuthorizerService\r\n ) {}\r\n\r\n flagFetchError = false;\r\n featuresMap: any = {};\r\n AWSFlags: any = {};\r\n flagSubscription!: Subscription;\r\n\r\n fetchFlags() {\r\n return this.http.get(environment.baseUrl + 'features').pipe(retry(2));\r\n }\r\n\r\n loadConfig() {\r\n if (this.flagSubscription) {\r\n this.flagSubscription.unsubscribe();\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.flagSubscription = this.fetchFlags().subscribe({\r\n next: (res: any) => {\r\n try {\r\n resolve(true);\r\n this.flagFetchError = false;\r\n this.AWSFlags = res;\r\n this.buildFeatureFlags(this.authorizer.getOrganizationId());\r\n } catch (error) {\r\n reject(error);\r\n }\r\n },\r\n error: (err: any) => {\r\n reject(true);\r\n this.flagFetchError = true;\r\n console.log('An error occurred while fetching feature flags', err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n buildFeatureFlags(orgId: any) {\r\n orgId = orgId?.toString();\r\n const enabledFeatures: any = {};\r\n Object.keys(this.AWSFlags).forEach((flag: string) => {\r\n const flagObj = this.AWSFlags[flag];\r\n enabledFeatures[flag] = false;\r\n if (flagObj) {\r\n if (flagObj?.enabled && !flagObj.hasOwnProperty('enabledOrgIds')) {\r\n enabledFeatures[flag] = true;\r\n } else if (\r\n flagObj?.enabled &&\r\n flagObj.hasOwnProperty('enabledOrgIds') &&\r\n flagObj?.enabledOrgIds?.length > 0\r\n ) {\r\n if (flagObj?.enabledOrgIds?.includes(orgId)) {\r\n enabledFeatures[flag] = true;\r\n } else {\r\n enabledFeatures[flag] = false;\r\n }\r\n } else {\r\n if (flagObj?.enabled) {\r\n enabledFeatures[flag] = true;\r\n } else {\r\n enabledFeatures[flag] = false;\r\n }\r\n }\r\n } else {\r\n enabledFeatures[flag] = true;\r\n }\r\n });\r\n this.featuresMap = enabledFeatures;\r\n }\r\n\r\n isFeatureEnabled(featureFlag: string) {\r\n if (this.featuresMap.hasOwnProperty(featureFlag)) {\r\n return this.featuresMap[featureFlag];\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport { FeatureFlagService } from \"./feature-flag.service\";\r\n\r\n\r\n@Directive({\r\n selector: \"[featureFlag]\"\r\n})\r\nexport class FeatureFlagDirective implements OnInit {\r\n @Input() featureFlag!: string;\r\n constructor(\r\n private tpl: TemplateRef<any>,\r\n private vcr: ViewContainerRef,\r\n private featureFlagService: FeatureFlagService\r\n ) {}\r\n\r\n ngOnInit() {\r\n const isEnabled = this.featureFlagService.isFeatureEnabled(this.featureFlag);\r\n if (isEnabled) {\r\n this.vcr.createEmbeddedView(this.tpl);\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FeatureFlagDirective } from './feature-flag.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [FeatureFlagDirective],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports:[FeatureFlagDirective]\r\n})\r\nexport class FeatureFlagModule { }\r\n","export class Configurations {\r\n public sentryConfig: any;\r\n\r\n constructor() {\r\n this.sentryConfig = {};\r\n }\r\n}\r\n","import { ErrorHandler, Injectable, Optional } from '@angular/core';\r\nimport * as Sentry from '@sentry/angular-ivy';\r\nimport { Configurations } from '../../configuration';\r\n\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\n\r\n@Injectable()\r\nexport class SentryErrorHandler implements ErrorHandler {\r\n constructor(\r\n private authorizerService: AuthorizerService,\r\n private errorService: GlobalErrorService,\r\n @Optional() config?: Configurations\r\n ) {\r\n if (config?.sentryConfig) {\r\n const SENTRY_CONFIG = config.sentryConfig;\r\n Sentry.init({\r\n dsn: SENTRY_CONFIG?.DSN,\r\n integrations: [\r\n new Sentry.BrowserTracing({\r\n tracePropagationTargets: SENTRY_CONFIG.ALLOW_ORIGIN,\r\n routingInstrumentation: Sentry.routingInstrumentation,\r\n }),\r\n ],\r\n tracesSampleRate: SENTRY_CONFIG.TRACES_SAMPLE_RATE,\r\n replaysSessionSampleRate: SENTRY_CONFIG.REPLAY_SESSION_SAMPLE_RATE,\r\n replaysOnErrorSampleRate: SENTRY_CONFIG.REPLAY_ON_ERROR_SAMPLE_RATE,\r\n });\r\n Sentry.setUser({ userDetails: this.authorizerService.getUser() });\r\n }\r\n }\r\n\r\n handleError(error: any) {\r\n const ERROR = error?.originalError || error;\r\n this.handleChunkNotFoundError(ERROR);\r\n Sentry.captureException(ERROR);\r\n }\r\n\r\n private handleChunkNotFoundError(error: any) {\r\n const failedMessage = /Loading chunk [\\d]+ failed/;\r\n if (failedMessage.test(error.message)) {\r\n this.errorService.globalError$.next({\r\n status: ErrorStatusCode.JSChunkUnavailable,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap, timeout } from 'rxjs/operators';\r\n\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\nimport { FeatureFlagService } from '../../featureFlag/feature-flag.service';\r\n\r\nimport { API_TIMEOUT_TIME } from '../constants/error-handling.constants';\r\n\r\n@Injectable()\r\nexport class HttpReqInterceptor implements HttpInterceptor {\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private featureFlagService: FeatureFlagService\r\n ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (this.featureFlagService.isFeatureEnabled('ff_error_handling')) {\r\n return next.handle(req).pipe(\r\n timeout(API_TIMEOUT_TIME),\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.errorService.handleSoftErrors(event);\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.errorService.handleError(error, req);\r\n return throwError(error);\r\n })\r\n );\r\n } else {\r\n return next.handle(req);\r\n }\r\n }\r\n}\r\n","import {\r\n ErrorHandler,\r\n InjectionToken,\r\n ModuleWithProviders,\r\n NgModule,\r\n} from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component';\r\nimport { VcErrorHandlersComponent } from './vc-error-handlers.component';\r\n\r\nimport { DialogModule } from './ui-kit/dialog/dialog.module';\r\nimport { SnackBarModule } from './ui-kit/snack-bar/snack-bar.module';\r\nimport { FeatureFlagModule } from './featureFlag/feature-flag.module';\r\n\r\nimport { FeatureFlagService } from './featureFlag/feature-flag.service';\r\n\r\nimport { BrowserOptions } from '@sentry/browser';\r\nimport { GlobalErrorHandler } from './shared/errorhandler/chunk-error.handler';\r\nimport { SentryErrorHandler } from './shared/errorhandler/sentry-error.handler';\r\nimport { Configurations } from './configuration';\r\nimport { UnauthorizedComponent } from './shared/components/unauthorized/unauthorized.component';\r\nimport { SessionExpiredComponent } from './shared/components/session-expired/session-expired.component';\r\nimport { ChunkUnavailableComponent } from './shared/components/chunk-unavailable/chunk-unavailable.component';\r\nimport { ServerErrorComponent } from './shared/components/server-error/server-error.component';\r\n\r\nimport { HttpReqInterceptor } from './shared/interceptors/http.interceptor';\r\nimport { ErrorModalComponent } from './shared/components/error-modal/error-modal.component';\r\nimport { ComponentLevelServerErrorComponent } from './shared/components/component-level-server-error/component-level-server-error.component';\r\n\r\nexport const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken<BrowserOptions>(\r\n 'forRoot() SentryErrorHandler options'\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ComponentLevelServerErrorComponent,\r\n ],\r\n imports: [CommonModule, DialogModule, SnackBarModule, FeatureFlagModule],\r\n exports: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ComponentLevelServerErrorComponent,\r\n ],\r\n providers: [\r\n { provide: ErrorHandler, useClass: SentryErrorHandler },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },\r\n ],\r\n bootstrap: [VcErrorHandlersComponent],\r\n})\r\nexport class VcErrorHandlersModule {\r\n constructor(private loadConfig: FeatureFlagService) {\r\n this.loadConfig.loadConfig();\r\n }\r\n\r\n public static forRoot(\r\n environmentConfig: Configurations\r\n ): ModuleWithProviders<VcErrorHandlersModule> {\r\n return {\r\n ngModule: VcErrorHandlersModule,\r\n providers: [{ provide: Configurations, useValue: environmentConfig }],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of vc-error-handlers\r\n */\r\n\r\nexport * from './lib/vc-error-handlers.service';\r\nexport * from './lib/shared/services/global-error.service';\r\nexport * from './lib/shared/services/auth.service';\r\nexport * from './lib/shared/services/router.service';\r\nexport * from './lib/vc-error-handlers.component';\r\nexport * from './lib/shared/components/page-not-found/page-not-found.component';\r\nexport * from './lib/shared/components/unauthorized/unauthorized.component';\r\nexport * from './lib/shared/components/chunk-unavailable/chunk-unavailable.component';\r\nexport * from './lib/shared/components/server-error/server-error.component';\r\nexport * from './lib/shared/components/session-expired/session-expired.component';\r\nexport * from './lib/shared/components/error-modal/error-modal.component';\r\nexport * from './lib/shared/components/component-level-server-error/component-level-server-error.component';\r\nexport * from './lib/vc-error-handlers.module';\r\nexport * from './lib/shared/interceptors/http.interceptor';\r\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":"vc-error-handlers.mjs","sources":["../../../projects/vc-error-handlers/src/lib/vc-error-handlers.service.ts","../../../projects/vc-error-handlers/src/lib/shared/types/global-error.types.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/api-config.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/util.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/global-error.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/router.service.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/error-handling.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/vc-error-handlers/src/lib/shared/components/error-modal/error-modal.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/vc-error-handlers/src/lib/shared/components/session-expired/session-expired.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/unauthorized/unauthorized.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/chunk-unavailable/chunk-unavailable.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/server-error/server-error.component.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/page-not-found/page-not-found.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/component-level-server-error/component-level-server-error.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/vc-error-handlers/src/environments/environment.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.service.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.directive.ts","../../../projects/vc-error-handlers/src/lib/featureFlag/feature-flag.module.ts","../../../projects/vc-error-handlers/src/lib/configuration.ts","../../../projects/vc-error-handlers/src/lib/shared/errorhandler/sentry-error.handler.ts","../../../projects/vc-error-handlers/src/lib/shared/interceptors/http.interceptor.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.module.ts","../../../projects/vc-error-handlers/src/public-api.ts","../../../projects/vc-error-handlers/src/vc-error-handlers.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VcErrorHandlersService {\r\n\r\n constructor() { }\r\n}\r\n","import { MODAL_ERROR_TYPES } from '../constants/error-handling.constants';\r\n\r\nexport interface DialogData {\r\n heading: string;\r\n description: string;\r\n buttonText: string;\r\n}\r\n\r\nexport interface RequestDetails {\r\n method: string;\r\n path: string;\r\n query: { [key: string]: any };\r\n body: any;\r\n pageCode?: string;\r\n}\r\n\r\nexport enum ErrorStatusCode {\r\n URLNotFound = 404,\r\n UnauthorizedAccess = 403,\r\n Unauthenticated = 401,\r\n\r\n // Server-side errors\r\n InternalServerError = 500,\r\n ServiceUnavailable = 503,\r\n BadGateway = 502,\r\n RequestTimeout = 504,\r\n\r\n // Network unavailability/offline case\r\n NetworkUnavailable = 0,\r\n\r\n // Application-specific errors\r\n JSChunkUnavailable = 600,\r\n}\r\n\r\nexport type ModalErrorType = keyof typeof MODAL_ERROR_TYPES;\r\n","export const PAGE_LEVEL_API_CONFIG = [\r\n {\r\n method: '',\r\n path: '',\r\n query: null,\r\n body: null,\r\n pageCodes: [''],\r\n },\r\n];\r\n\r\nexport const COMPONENT_LEVEL_API_CONFIG = [\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'active' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'power_users' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'light_users' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'inactive' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=organisationUsersList',\r\n query: { type: 'power_users_small' },\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Global-Dashboard/ManageDashboards',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Global-Dashboard/MyDashboard',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=grc/getGRCList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/compliance/?mode=responsibilityCenterTree',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=rcholidaylist',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=roles/getRoles',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=groupsList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/compliance_post/?mode=rcProfile',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/organization_post/?mode=userProfile',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=roles/roleById',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=groupDetails',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/compliance_post?mode=report/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization/?mode=memberholidaylist',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=activity/activityLogList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/grc_object/?mode=activity/viewList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/categoriesList?owner_list=1',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/risk/?mode=category/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: 'memberDetailsbyIds',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/organization?mode=signatureDetails',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/responsibilityList',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/getLinkedPolicies',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: 'risk/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/assignee',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/evidence/getEvidences/b-cycle-header',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/activity-logs',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/activity-logs-views',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=category/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/list',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Assessment/?mode=assessment/fetchQuestionsByAssessmentId',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/responseSummary',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/Assessment/?mode=assessment/logs',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'GET',\r\n path: '/program/subCategories',\r\n query: null,\r\n body: null,\r\n },\r\n {\r\n method: 'POST',\r\n path: '/Assessment/?mode=assessment/getAssessmentById',\r\n query: null,\r\n body: null,\r\n },\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n public snackbarSubject = new Subject <any>();\r\n public snackbarState = this.snackbarSubject.asObservable();\r\n constructor() {}\r\n\r\n show(message: string, type?:'success'|'warning'|'info'|'alert'|'error') {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon:type,\r\n });\r\n }\r\n\r\n hide(){\r\n this.snackbarSubject.next({\r\n show: false,\r\n message: '',\r\n icon: '',\r\n });\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { RequestDetails } from '../types/global-error.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UtilsService {\r\n private isJsonSubset(parentJson: any, subsetJson: any): boolean {\r\n for (let key in subsetJson) {\r\n if (\r\n !parentJson.hasOwnProperty(key) ||\r\n parentJson[key] !== subsetJson[key]\r\n ) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public extractQueryParams(params: HttpParams): { [key: string]: any } {\r\n const query: { [key: string]: any } = {};\r\n params.keys().forEach((key) => {\r\n query[key] = params.get(key);\r\n });\r\n return query;\r\n }\r\n\r\n public isStringEqual(apiMethod: string, requestMethod: string): boolean {\r\n return apiMethod === requestMethod;\r\n }\r\n\r\n public isSubstringInString(apiPath: string, requestPath: string): boolean {\r\n return requestPath.includes(apiPath);\r\n }\r\n\r\n public isSubsetOfObject(apiQuery: any, requestQuery: any): boolean {\r\n if (!apiQuery) return true;\r\n return this.isJsonSubset(requestQuery, apiQuery);\r\n }\r\n\r\n public isSubsetOfArray(apiBody: any, requestBody: any): boolean {\r\n if (!apiBody) return true;\r\n return this.isJsonSubset(apiBody, requestBody);\r\n }\r\n\r\n public isValueInArray(apiPageCodes: string[], pageCode: string): boolean {\r\n return apiPageCodes.includes(pageCode);\r\n }\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpRequest,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\r\nimport { UtilsService } from './util.service';\r\n\r\nimport { ErrorStatusCode, RequestDetails } from '../types/global-error.types';\r\nimport {\r\n PAGE_LEVEL_API_CONFIG,\r\n COMPONENT_LEVEL_API_CONFIG,\r\n} from '../constants/api-config.constants';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GlobalErrorService {\r\n public globalError$: Subject<any> = new Subject();\r\n public localError$: Subject<any> = new Subject();\r\n\r\n private pageLevelApiConfig = PAGE_LEVEL_API_CONFIG;\r\n private componentLevelApiConfig = COMPONENT_LEVEL_API_CONFIG;\r\n\r\n constructor(\r\n private snackBarService: SnackBarService,\r\n private utilService: UtilsService,\r\n private router: Router\r\n ) {}\r\n\r\n public handleSoftErrors(event: HttpResponse<any> | HttpErrorResponse) {\r\n const xData = event.headers.get('X-Data');\r\n\r\n if (xData) {\r\n const parsedData = JSON.parse(xData);\r\n const statusCode = parsedData.statusCode;\r\n const statusMessage = parsedData.message;\r\n\r\n if (statusCode && statusCode !== 0) {\r\n this.snackBarService.show(statusMessage || 'Error occurred', 'error');\r\n }\r\n }\r\n }\r\n\r\n public handleError(error: HttpErrorResponse, request: HttpRequest<any>) {\r\n if (\r\n this.isUnauthenticated(error) ||\r\n this.isUnauthorizedAccess(error) ||\r\n this.isNetworkUnavailable(error)\r\n ) {\r\n this.publishGlobalError(error);\r\n } else if (this.isServerError(error)) {\r\n this.handleServerError(error, request);\r\n } else {\r\n this.handleSoftErrors(error);\r\n }\r\n }\r\n\r\n public isServerError(error: HttpErrorResponse): boolean {\r\n const serverErrorCodes = [\r\n ErrorStatusCode.InternalServerError,\r\n ErrorStatusCode.ServiceUnavailable,\r\n ErrorStatusCode.BadGateway,\r\n ErrorStatusCode.RequestTimeout,\r\n ];\r\n\r\n return serverErrorCodes.includes(error.status);\r\n }\r\n\r\n private isUnauthenticated(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.Unauthenticated;\r\n }\r\n\r\n private isUnauthorizedAccess(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.UnauthorizedAccess;\r\n }\r\n\r\n private isNetworkUnavailable(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.NetworkUnavailable;\r\n }\r\n\r\n private handleServerError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ) {\r\n if (this.isPageLevelError(error, request)) {\r\n this.publishGlobalError(error);\r\n } else if (this.isComponentLevelError(error, request)) {\r\n this.publishLocalError(error, request);\r\n }\r\n }\r\n\r\n private publishGlobalError(error: HttpErrorResponse) {\r\n this.globalError$.next(error);\r\n }\r\n\r\n private publishLocalError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ) {\r\n this.localError$.next({ error, request });\r\n }\r\n\r\n private isPageLevelError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ): boolean {\r\n const requestDetails: RequestDetails = {\r\n method: request.method,\r\n path: request.url,\r\n query: this.utilService.extractQueryParams(request.params),\r\n body: request.body,\r\n pageCode: this.getPageCode(),\r\n };\r\n\r\n return this.pageLevelApiConfig.some((apiConfig) =>\r\n this.isApiConfigMatching(apiConfig, requestDetails)\r\n );\r\n }\r\n\r\n private isComponentLevelError(\r\n error: HttpErrorResponse,\r\n request: HttpRequest<any>\r\n ): boolean {\r\n const requestDetails: RequestDetails = {\r\n method: request.method,\r\n path: request.url,\r\n query: this.utilService.extractQueryParams(request.params),\r\n body: request.body,\r\n };\r\n\r\n return this.componentLevelApiConfig.some((apiConfig) =>\r\n this.isApiConfigMatching(apiConfig, requestDetails)\r\n );\r\n }\r\n\r\n private getPageCode() {\r\n const currentRoute = this.router.routerState.snapshot.root.firstChild;\r\n return currentRoute?.data?.pageCode;\r\n }\r\n\r\n private isApiConfigMatching(\r\n apiConfig: any,\r\n requestDetails: RequestDetails\r\n ): boolean {\r\n return (\r\n this.utilService.isStringEqual(apiConfig.method, requestDetails.method) &&\r\n this.utilService.isSubstringInString(\r\n apiConfig.path,\r\n requestDetails.path\r\n ) &&\r\n this.utilService.isSubsetOfObject(\r\n apiConfig.query,\r\n requestDetails.query\r\n ) &&\r\n this.utilService.isSubsetOfArray(apiConfig.body, requestDetails.body) &&\r\n (!apiConfig.pageCodes ||\r\n this.utilService.isValueInArray(\r\n apiConfig.pageCodes,\r\n requestDetails.pageCode || ''\r\n ))\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RouterService {\r\n public redirectToLogin() {\r\n window.location.href =\r\n `https://${window.location.host}/` +\r\n 'signin?redirectURL=' +\r\n encodeURIComponent(window.location.href);\r\n }\r\n}\r\n","export const VCOMPLY_LOGO_URL = 'https://cdn.v-comply.com/logo/prod/v-logo.svg';\r\nexport const API_TIMEOUT_TIME = 1000 * 15;\r\nexport const ORGANISATION_NAME = 'VCOMPLY TECHNOLOGIES, INC.';\r\nexport const ERROR_FEATURE_FLAG = 'ff_error_handling';\r\n\r\nexport const ERROR_CONFIG = {\r\n PAGE_NOT_FOUND: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"The page you're looking for doesn't exist.\",\r\n details: 'Please check the URL or return to the homepage.',\r\n buttonText: 'GO TO DASHBOARD',\r\n },\r\n\r\n UNAUTHORIZED: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"You don't have permission to access this page.\",\r\n details: 'If you believe this is an error, please contact',\r\n email: 'help@v-comply.com',\r\n support: 'for support',\r\n buttonText: 'CONTACT SUPPORT',\r\n mail: 'mailto:help@v-comply.com',\r\n },\r\n\r\n SESSION_EXPIRED: {\r\n heading: 'Session Expired!',\r\n description:\r\n 'Your session has expired. Please log in again to continue using the app.',\r\n buttonText: 'LOGIN',\r\n },\r\n\r\n CHUNK_UNAVAILABLE: {\r\n heading: 'Oops!',\r\n description: 'Something went wrong. Please refresh the page or try again later.',\r\n buttonText: 'REFRESH',\r\n },\r\n\r\n SERVER_ERROR: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n details: 'Please refresh this page or try again later.',\r\n buttonText: 'REFRESH',\r\n snackBarMessage: `Oops! Something went wrong. Please try again later.`,\r\n },\r\n\r\n COMPONENT_LEVEL_SERVER_ERROR: {\r\n imageUrl: 'https://cdn.v-comply.com/application/images/sad-emoji-icon.svg',\r\n title: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n details: 'Please refresh this section or try again later.',\r\n buttonText: 'RETRY',\r\n },\r\n\r\n NETWORK_UNAVAILABLE: {\r\n offlineMessage:\r\n \"You're currently offline. Please check your internet connection and try again.\",\r\n },\r\n};\r\n\r\nexport const REDIRECTION_URL = {\r\n compliance_dashboard: '/global-dashboard/compliance_dashboard',\r\n};\r\n\r\nexport const MODAL_ERROR_TYPES = {\r\n CHUNK_NOT_FOUND: 'chunk_not_found',\r\n SESSION_EXPIRED: 'session_expired',\r\n};\r\n\r\nexport const ALT_IMAGE_TEXT = {\r\n ERROR_IMAGE: 'Error Image',\r\n VCOMPLY_LOGO: 'VComply',\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit, OnDestroy {\r\n show = false;\r\n message = '--';\r\n icon = '&#xe914;';\r\n type = 'alert';\r\n icons: any = {\r\n success: '&#xe93d;',\r\n warning: '&#xe914;',\r\n info: '&#xe932;',\r\n alert: '&#xe914;',\r\n error: '&#xeaae;',\r\n };\r\n snackbarSubscription!: Subscription;\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarSubscription = this.snackbarService.snackbarState.subscribe(\r\n (state) => {\r\n if (state.icon && Object.keys(this.icons).includes(state?.icon)) {\r\n this.icon = this.icons[state.icon];\r\n this.type = state?.icon;\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n }\r\n );\r\n }\r\n\r\n setAutoClose() {\r\n setTimeout(() => {\r\n this.show = false;\r\n this.close();\r\n }, 3000);\r\n }\r\n close() {\r\n this.show = false;\r\n this.snackbarService.hide();\r\n }\r\n ngOnDestroy() {\r\n this.snackbarSubscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!-- &#xe914; -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { DialogConfig } from '../../../ui-kit/dialog/dialog-config';\r\n\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { RouterService } from '../../services/router.service';\r\n\r\nimport { DialogData, ModalErrorType } from '../../types/global-error.types';\r\nimport { MODAL_ERROR_TYPES } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-modal',\r\n template: ` <div class=\"error-dialog-box\">\r\n <div class=\"error-dialog-box-top\">{{ data.heading }}</div>\r\n <div class=\"error-dialog-box-mid\">\r\n {{ data.description }}\r\n </div>\r\n <div class=\"error-dialog-box-bottom\">\r\n <button (click)=\"onContinueAction()\" class=\"logIn-btn\">\r\n {{ data.buttonText }}\r\n </button>\r\n </div>\r\n </div>`,\r\n styleUrls: ['./error-modal.component.less'],\r\n})\r\nexport class ErrorModalComponent {\r\n errorTypes = MODAL_ERROR_TYPES;\r\n\r\n @Input() errorType: ModalErrorType | undefined;\r\n\r\n data: DialogData = {\r\n heading: 'Message',\r\n description: 'Description',\r\n buttonText: 'Click Action',\r\n };\r\n\r\n constructor(\r\n private authService: AuthorizerService,\r\n private dialogConfig: DialogConfig,\r\n private routerService: RouterService\r\n ) {\r\n this.setDataConfig();\r\n }\r\n\r\n private setDataConfig() {\r\n this.data = this.dialogConfig.data?.errorConfig;\r\n this.errorType = this.dialogConfig.data?.errorType;\r\n }\r\n\r\n public onContinueAction() {\r\n switch (this.errorType) {\r\n case this.errorTypes.SESSION_EXPIRED:\r\n this.authService.logout();\r\n this.routerService.redirectToLogin();\r\n break;\r\n\r\n case this.errorTypes.CHUNK_NOT_FOUND:\r\n window.location.reload();\r\n break;\r\n }\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n // debugger\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close(data?: any) {\r\n this.onDialogClose.next(data);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div\r\n class=\"overlay\"\r\n (click)=\"onOverlayClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER',\r\n black: background === 'black',\r\n whiteBlur: background === 'whiteBlur'\r\n }\" [class.pointer-none]=\"pointer === 'none'\"\r\n>\r\n <div\r\n class=\"dialog\"\r\n [class.animate]=\"animation\"\r\n (click)=\"onDialogClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER'\r\n }\"\r\n >\r\n <ng-template appInsertion></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n providers: [DialogRef],\r\n exports:[DialogComponent]\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG, MODAL_ERROR_TYPES } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-session-expired',\r\n template: ``,\r\n})\r\nexport class SessionExpiredComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.SESSION_EXPIRED;\r\n errorTypes = MODAL_ERROR_TYPES;\r\n\r\n constructor(\r\n private dialogService: DialogService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: this.errorTypes.SESSION_EXPIRED,\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n ORGANISATION_NAME,\r\n ALT_IMAGE_TEXT,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-unauthorized',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img\r\n [src]=\"VcomplyLogo\"\r\n [alt]=\"altImageText.VCOMPLY_LOGO\"\r\n width=\"24\"\r\n height=\"24\"\r\n />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n [alt]=\"altImageText.ERROR_IMAGE\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">\r\n {{ errorConfig.details }}\r\n <a [href]=\"'mailto:' + errorConfig.email\">{{\r\n errorConfig.email\r\n }}</a>\r\n {{ errorConfig.support }}.\r\n </div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToSupport()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, {{ organisationName }}\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class UnauthorizedComponent {\r\n currentYear = new Date().getFullYear();\r\n errorConfig = ERROR_CONFIG.UNAUTHORIZED;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n altImageText = ALT_IMAGE_TEXT;\r\n organisationName = ORGANISATION_NAME;\r\n\r\n public redirectToSupport() {\r\n window.location.href = this.errorConfig.mail;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n MODAL_ERROR_TYPES,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-chunk-unavailable',\r\n template: ``,\r\n})\r\nexport class ChunkUnavailableComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.CHUNK_UNAVAILABLE;\r\n errorType = MODAL_ERROR_TYPES;\r\n\r\n constructor(private dialogService: DialogService) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: this.errorType.CHUNK_NOT_FOUND,\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n ALT_IMAGE_TEXT,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-server-error',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img\r\n [src]=\"VcomplyLogo\"\r\n [alt]=\"altImageText.VCOMPLY_LOGO\"\r\n width=\"24\"\r\n height=\"24\"\r\n />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n [alt]=\"altImageText.ERROR_IMAGE\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"refreshPage()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe92b;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class ServerErrorComponent {\r\n errorConfig = ERROR_CONFIG.SERVER_ERROR;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n altImageText = ALT_IMAGE_TEXT;\r\n\r\n public refreshPage() {\r\n window.location.reload();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { GlobalErrorService } from './shared/services/global-error.service';\r\nimport { SnackBarService } from './ui-kit/snack-bar/snack-bar.service';\r\n\r\nimport { ErrorStatusCode } from './shared/types/global-error.types';\r\nimport { ERROR_CONFIG } from './shared/constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-handlers',\r\n template: `\r\n <app-snack-bar></app-snack-bar>\r\n <lib-vc-error-session-expired\r\n *ngIf=\"sessionExpired\"\r\n ></lib-vc-error-session-expired>\r\n <lib-vc-error-unauthorized *ngIf=\"unauthorized\"></lib-vc-error-unauthorized>\r\n <lib-vc-error-chunk-unavailable\r\n *ngIf=\"chunkUnavailable\"\r\n ></lib-vc-error-chunk-unavailable>\r\n <lib-vc-error-server-error *ngIf=\"serverError\"></lib-vc-error-server-error>\r\n `,\r\n})\r\nexport class VcErrorHandlersComponent {\r\n private errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;\r\n\r\n unauthorized: boolean = false;\r\n sessionExpired: boolean = false;\r\n chunkUnavailable: boolean = false;\r\n serverError: boolean = false;\r\n isOnline: boolean = navigator.onLine;\r\n\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private snackBarService: SnackBarService\r\n ) {\r\n this.subscribeGlobalError();\r\n }\r\n\r\n ngOnInit() {\r\n this.subscribeNetworkDetection();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('online', this.onNetworkOnline);\r\n window.removeEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private subscribeGlobalError() {\r\n this.errorService.globalError$.subscribe((error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n const errorHandlers: { [key: number]: () => void } = {\r\n [ErrorStatusCode.Unauthenticated]: () => (this.sessionExpired = true),\r\n [ErrorStatusCode.UnauthorizedAccess]: () => (this.unauthorized = true),\r\n [ErrorStatusCode.JSChunkUnavailable]: () => (this.chunkUnavailable = true),\r\n [ErrorStatusCode.NetworkUnavailable]: () => this.handleNetworkError(),\r\n };\r\n\r\n if (errorHandlers[error.status]) {\r\n errorHandlers[error.status]();\r\n } else if (this.errorService.isServerError(error)) {\r\n this.serverError = true;\r\n }\r\n }\r\n\r\n private subscribeNetworkDetection() {\r\n window.addEventListener('online', this.onNetworkOnline);\r\n window.addEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private onNetworkOnline = () => {\r\n this.isOnline = true;\r\n this.hideSnackBar();\r\n };\r\n\r\n private onNetworkOffline = () => {\r\n this.isOnline = false;\r\n this.showOfflineSnackBar();\r\n };\r\n\r\n private handleNetworkError() {\r\n if (!this.isOnline) {\r\n this.showOfflineSnackBar();\r\n }\r\n }\r\n\r\n private showOfflineSnackBar() {\r\n this.snackBarService.show(this.errorConfig.offlineMessage, 'error');\r\n }\r\n\r\n private hideSnackBar() {\r\n this.snackBarService.hide();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n REDIRECTION_URL,\r\n ORGANISATION_NAME,\r\n ALT_IMAGE_TEXT,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-page-not-found',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img\r\n [src]=\"VcomplyLogo\"\r\n [alt]=\"altImageText.VCOMPLY_LOGO\"\r\n width=\"24\"\r\n height=\"24\"\r\n />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n [alt]=\"altImageText.ERROR_IMAGE\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToHome()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, {{ organisationName }}\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class PageNotFoundComponent {\r\n errorConfig = ERROR_CONFIG.PAGE_NOT_FOUND;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n altImageText = ALT_IMAGE_TEXT;\r\n currentYear = new Date().getFullYear();\r\n redirectionUrl = REDIRECTION_URL;\r\n organisationName = ORGANISATION_NAME;\r\n\r\n public redirectToHome() {\r\n window.location.replace(this.redirectionUrl.compliance_dashboard);\r\n }\r\n}\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n ALT_IMAGE_TEXT,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-component-server-error',\r\n template: `\r\n <div class=\"serverError\">\r\n <div class=\"serverError-inner\">\r\n <div class=\"serverError-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n [alt]=\"altImageText.ERROR_IMAGE\"\r\n width=\"106\"\r\n height=\"76\"\r\n />\r\n </div>\r\n <div class=\"serverError-inner-bottom\">\r\n <div class=\"serverError-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"serverError-text\">{{ errorConfig.description }}</div>\r\n <div class=\"serverError-details\">{{ errorConfig.details }}</div>\r\n <button class=\"serverError-btn\" (click)=\"onClick.emit(true)\">\r\n {{ errorConfig.buttonText }}\r\n <i class=\"icons\">&#xe92b;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['./component-level-server-error.component.less'],\r\n})\r\nexport class ComponentLevelServerErrorComponent {\r\n errorConfig = ERROR_CONFIG.COMPONENT_LEVEL_SERVER_ERROR;\r\n altImageText = ALT_IMAGE_TEXT;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n @Output() onClick = new EventEmitter<boolean>();\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nlet domainName = 'devapi.v-comply.com';\r\nlet apiBaseUrl = 'https://api-uat1.v-comply.com';\r\nswitch (window.location.host) {\r\n case 'dev.v-comply.com':\r\n domainName = 'devapi.v-comply.com';\r\n apiBaseUrl = 'https://api-uat1.v-comply.com';\r\n break;\r\n case 'beta.v-comply.com':\r\n domainName = 'betaapi.v-comply.com';\r\n apiBaseUrl = 'https://api-staging.v-comply.com';\r\n break;\r\n case 'test.v-comply.com':\r\n domainName = 'devapi.v-comply.com';\r\n break;\r\n case 'eu.v-comply.com':\r\n domainName = 'euapi.v-comply.com';\r\n break;\r\n default:\r\n domainName = 'api.v-comply.com';\r\n break;\r\n}\r\nconst PORT_EDITOR = 8081;\r\nconst PORT_CONTENT_SAVE = 8834;\r\nlet endPoint = 'https://devapi.v-comply.com/';\r\nexport const environment = {\r\n production: false,\r\n appUrl: 'http://localhost:4200/',\r\n apiBaseUrl: 'https://api-uat1.v-comply.com',\r\n authEndpoint: `${endPoint}VcomplyAuth/`,\r\n orgEndpoint_TL: `${endPoint}organization_pwt/?mode=`,\r\n s3Url: '',\r\n s3BucketUrl: `${endPoint}globals?mode=bucket`,\r\n s3Bucket: '',\r\n profile: '/profile_pic/thumb/',\r\n assessmentEnpoint: `${endPoint}Assessment/?mode=`,\r\n organizationPost: `${endPoint}organization_post/?mode=`,\r\n organizationGet: `${endPoint}organization/?mode=`,\r\n complianceGet: `${endPoint}compliance/?mode=`,\r\n compliancePost: `${endPoint}compliance_post/?mode=`,\r\n fileUploadEndPoint:\r\n 'https://upload-uat1.v-comply.com/fileupload/?destination=',\r\n assuranceGet: `${endPoint}assurance/?mode=`,\r\n policyGet: `${endPoint}policy/?mode=`,\r\n saveDoc: 'https://dev-node.v-comply.com/saveContent?bypass-token=true&id=',\r\n docxUpload: 'https://dev-node.v-comply.com/ImportDocument',\r\n fileUpload: 'https://dev-node.v-comply.com/importFiles',\r\n policyPost: `${endPoint}policy_post/?mode=`,\r\n policyPut: `${endPoint}policy_put/?mode=`,\r\n responsibilityPost: `${endPoint}responsibilities_post/?mode=`,\r\n linkDoc: 'https://dev-node.v-comply.com' + '/ImportDocument',\r\n linkPdf: 'https://dev-node.v-comply.com' + '/extractDocs',\r\n assuranceApi: 'https://devapi.v-comply.com/Assurance/',\r\n assurance: 'https://devapi.v-comply.com/Assurance/',\r\n programEndpoint: 'https://devapi.v-comply.com/program',\r\n risk: 'https://devapi.v-comply.com/risk/?mode=',\r\n risk_put: 'https://devapi.v-comply.com/risk_put/?mode=',\r\n riskPdfPost: 'https://devapi.v-comply.com/risk_pdf_post?mode=',\r\n riskPost: 'https://devapi.v-comply.com/risk_post/?mode=',\r\n riskGet: 'https://devapi.v-comply.com/risk/?mode=',\r\n baseUrl: 'https://devapi.v-comply.com/',\r\n grc_get: 'https://devapi.v-comply.com/grc_object/?mode=',\r\n leftMenuLogo: 'https://cdn.v-comply.com/logo/prod/v-logo.svg?v=1.0',\r\n vLoader: 'https://cdn.v-comply.com/logo/prod/v-icon-loader.svg?v=1.0',\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { retry } from 'rxjs/operators';\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { Subscription } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FeatureFlagService {\r\n constructor(\r\n private http: HttpClient,\r\n private authorizer: AuthorizerService\r\n ) {}\r\n\r\n flagFetchError = false;\r\n featuresMap: any = {};\r\n AWSFlags: any = {};\r\n flagSubscription!: Subscription;\r\n\r\n fetchFlags() {\r\n return this.http.get(environment.baseUrl + 'features').pipe(retry(2));\r\n }\r\n\r\n loadConfig() {\r\n if (this.flagSubscription) {\r\n this.flagSubscription.unsubscribe();\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.flagSubscription = this.fetchFlags().subscribe({\r\n next: (res: any) => {\r\n try {\r\n resolve(true);\r\n this.flagFetchError = false;\r\n this.AWSFlags = res;\r\n this.buildFeatureFlags(this.authorizer.getOrganizationId());\r\n } catch (error) {\r\n reject(error);\r\n }\r\n },\r\n error: (err: any) => {\r\n reject(true);\r\n this.flagFetchError = true;\r\n console.log('An error occurred while fetching feature flags', err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n buildFeatureFlags(orgId: any) {\r\n orgId = orgId?.toString();\r\n const enabledFeatures: any = {};\r\n Object.keys(this.AWSFlags).forEach((flag: string) => {\r\n const flagObj = this.AWSFlags[flag];\r\n enabledFeatures[flag] = false;\r\n if (flagObj) {\r\n if (flagObj?.enabled && !flagObj.hasOwnProperty('enabledOrgIds')) {\r\n enabledFeatures[flag] = true;\r\n } else if (\r\n flagObj?.enabled &&\r\n flagObj.hasOwnProperty('enabledOrgIds') &&\r\n flagObj?.enabledOrgIds?.length > 0\r\n ) {\r\n if (flagObj?.enabledOrgIds?.includes(orgId)) {\r\n enabledFeatures[flag] = true;\r\n } else {\r\n enabledFeatures[flag] = false;\r\n }\r\n } else {\r\n if (flagObj?.enabled) {\r\n enabledFeatures[flag] = true;\r\n } else {\r\n enabledFeatures[flag] = false;\r\n }\r\n }\r\n } else {\r\n enabledFeatures[flag] = true;\r\n }\r\n });\r\n this.featuresMap = enabledFeatures;\r\n }\r\n\r\n isFeatureEnabled(featureFlag: string) {\r\n if (this.featuresMap.hasOwnProperty(featureFlag)) {\r\n return this.featuresMap[featureFlag];\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport { FeatureFlagService } from \"./feature-flag.service\";\r\n\r\n\r\n@Directive({\r\n selector: \"[featureFlag]\"\r\n})\r\nexport class FeatureFlagDirective implements OnInit {\r\n @Input() featureFlag!: string;\r\n constructor(\r\n private tpl: TemplateRef<any>,\r\n private vcr: ViewContainerRef,\r\n private featureFlagService: FeatureFlagService\r\n ) {}\r\n\r\n ngOnInit() {\r\n const isEnabled = this.featureFlagService.isFeatureEnabled(this.featureFlag);\r\n if (isEnabled) {\r\n this.vcr.createEmbeddedView(this.tpl);\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FeatureFlagDirective } from './feature-flag.directive';\r\n\r\n@NgModule({\r\n declarations: [FeatureFlagDirective],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports:[FeatureFlagDirective]\r\n})\r\nexport class FeatureFlagModule { }\r\n","export class Configurations {\r\n public sentryConfig: any;\r\n\r\n constructor() {\r\n this.sentryConfig = {};\r\n }\r\n}\r\n","import { ErrorHandler, Injectable, Optional } from '@angular/core';\r\nimport * as Sentry from '@sentry/angular-ivy';\r\nimport { Configurations } from '../../configuration';\r\n\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\n\r\n@Injectable()\r\nexport class SentryErrorHandler implements ErrorHandler {\r\n constructor(\r\n private authorizerService: AuthorizerService,\r\n private errorService: GlobalErrorService,\r\n @Optional() config?: Configurations\r\n ) {\r\n if (config?.sentryConfig) {\r\n const SENTRY_CONFIG = config.sentryConfig;\r\n Sentry.init({\r\n dsn: SENTRY_CONFIG?.DSN,\r\n integrations: [\r\n new Sentry.BrowserTracing({\r\n tracePropagationTargets: SENTRY_CONFIG.ALLOW_ORIGIN,\r\n routingInstrumentation: Sentry.routingInstrumentation,\r\n }),\r\n ],\r\n tracesSampleRate: SENTRY_CONFIG.TRACES_SAMPLE_RATE,\r\n replaysSessionSampleRate: SENTRY_CONFIG.REPLAY_SESSION_SAMPLE_RATE,\r\n replaysOnErrorSampleRate: SENTRY_CONFIG.REPLAY_ON_ERROR_SAMPLE_RATE,\r\n });\r\n Sentry.setUser({ userDetails: this.authorizerService.getUser() });\r\n }\r\n }\r\n\r\n handleError(error: any) {\r\n const ERROR = error?.originalError || error;\r\n this.handleChunkError(ERROR);\r\n Sentry.captureException(ERROR);\r\n }\r\n\r\n handleChunkError(error: Error) {\r\n const chunkFailedMessage = /Loading chunk [\\d]+ failed/;\r\n if (chunkFailedMessage.test(error?.message)) {\r\n window.location.reload();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap, timeout } from 'rxjs/operators';\r\n\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\nimport { FeatureFlagService } from '../../featureFlag/feature-flag.service';\r\n\r\nimport {\r\n API_TIMEOUT_TIME,\r\n ERROR_FEATURE_FLAG,\r\n} from '../constants/error-handling.constants';\r\n\r\n@Injectable()\r\nexport class HttpReqInterceptor implements HttpInterceptor {\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private featureFlagService: FeatureFlagService\r\n ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (this.featureFlagService.isFeatureEnabled(ERROR_FEATURE_FLAG)) {\r\n return next.handle(req).pipe(\r\n timeout(API_TIMEOUT_TIME),\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.errorService.handleSoftErrors(event);\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.errorService.handleError(error, req);\r\n return throwError(error);\r\n })\r\n );\r\n } else {\r\n return next.handle(req);\r\n }\r\n }\r\n}\r\n","import {\r\n ErrorHandler,\r\n InjectionToken,\r\n ModuleWithProviders,\r\n NgModule,\r\n} from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component';\r\nimport { VcErrorHandlersComponent } from './vc-error-handlers.component';\r\n\r\nimport { DialogModule } from './ui-kit/dialog/dialog.module';\r\nimport { SnackBarModule } from './ui-kit/snack-bar/snack-bar.module';\r\nimport { FeatureFlagModule } from './featureFlag/feature-flag.module';\r\n\r\nimport { FeatureFlagService } from './featureFlag/feature-flag.service';\r\n\r\nimport { BrowserOptions } from '@sentry/browser';\r\nimport { GlobalErrorHandler } from './shared/errorhandler/chunk-error.handler';\r\nimport { SentryErrorHandler } from './shared/errorhandler/sentry-error.handler';\r\nimport { Configurations } from './configuration';\r\nimport { UnauthorizedComponent } from './shared/components/unauthorized/unauthorized.component';\r\nimport { SessionExpiredComponent } from './shared/components/session-expired/session-expired.component';\r\nimport { ChunkUnavailableComponent } from './shared/components/chunk-unavailable/chunk-unavailable.component';\r\nimport { ServerErrorComponent } from './shared/components/server-error/server-error.component';\r\n\r\nimport { HttpReqInterceptor } from './shared/interceptors/http.interceptor';\r\nimport { ErrorModalComponent } from './shared/components/error-modal/error-modal.component';\r\nimport { ComponentLevelServerErrorComponent } from './shared/components/component-level-server-error/component-level-server-error.component';\r\n\r\nexport const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken<BrowserOptions>(\r\n 'forRoot() SentryErrorHandler options'\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ComponentLevelServerErrorComponent,\r\n ],\r\n imports: [CommonModule, DialogModule, SnackBarModule, FeatureFlagModule],\r\n exports: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ComponentLevelServerErrorComponent,\r\n ],\r\n providers: [\r\n { provide: ErrorHandler, useClass: SentryErrorHandler },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },\r\n ],\r\n bootstrap: [VcErrorHandlersComponent],\r\n})\r\nexport class VcErrorHandlersModule {\r\n constructor(private loadConfig: FeatureFlagService) {\r\n this.loadConfig.loadConfig();\r\n }\r\n\r\n public static forRoot(\r\n environmentConfig: Configurations\r\n ): ModuleWithProviders<VcErrorHandlersModule> {\r\n return {\r\n ngModule: VcErrorHandlersModule,\r\n providers: [{ provide: Configurations, useValue: environmentConfig }],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of vc-error-handlers\r\n */\r\n\r\nexport * from './lib/vc-error-handlers.service';\r\nexport * from './lib/shared/services/global-error.service';\r\nexport * from './lib/shared/services/router.service';\r\nexport * from './lib/vc-error-handlers.component';\r\nexport * from './lib/shared/components/page-not-found/page-not-found.component';\r\nexport * from './lib/shared/components/unauthorized/unauthorized.component';\r\nexport * from './lib/shared/components/chunk-unavailable/chunk-unavailable.component';\r\nexport * from './lib/shared/components/server-error/server-error.component';\r\nexport * from './lib/shared/components/session-expired/session-expired.component';\r\nexport * from './lib/shared/components/error-modal/error-modal.component';\r\nexport * from './lib/shared/components/component-level-server-error/component-level-server-error.component';\r\nexport * from './lib/vc-error-handlers.module';\r\nexport * from './lib/shared/interceptors/http.interceptor';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}