vc-error-handlers 0.1.97 → 0.1.99

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 (101) hide show
  1. package/environments/environment.d.ts +39 -39
  2. package/{esm2020 → esm2022}/environments/environment.mjs +74 -74
  3. package/{esm2020 → esm2022}/lib/configuration.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/featureFlag/feature-flag.directive.mjs +27 -27
  5. package/esm2022/lib/featureFlag/feature-flag.module.mjs +20 -0
  6. package/{esm2020 → esm2022}/lib/featureFlag/feature-flag.service.mjs +95 -95
  7. package/esm2022/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +35 -0
  8. package/esm2022/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +65 -0
  9. package/esm2022/lib/shared/components/error-modal/error-modal.component.mjs +64 -0
  10. package/esm2022/lib/shared/components/page-not-found/page-not-found.component.mjs +92 -0
  11. package/esm2022/lib/shared/components/server-error/server-error.component.mjs +83 -0
  12. package/esm2022/lib/shared/components/session-expired/session-expired.component.mjs +35 -0
  13. package/esm2022/lib/shared/components/unauthorized/unauthorized.component.mjs +103 -0
  14. package/esm2022/lib/shared/constants/api-config.constants.mjs +240 -0
  15. package/esm2022/lib/shared/constants/error-handling.constants.mjs +63 -0
  16. package/{esm2020 → esm2022}/lib/shared/errorhandler/chunk-error.handler.mjs +18 -18
  17. package/esm2022/lib/shared/errorhandler/sentry-error.handler.mjs +47 -0
  18. package/esm2022/lib/shared/interceptors/http.interceptor.mjs +35 -0
  19. package/esm2022/lib/shared/services/global-error.service.mjs +115 -0
  20. package/{esm2020 → esm2022}/lib/shared/services/router.service.mjs +19 -19
  21. package/esm2022/lib/shared/services/util.service.mjs +48 -0
  22. package/esm2022/lib/shared/types/global-error.types.mjs +16 -0
  23. package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog-config.mjs +2 -2
  24. package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +15 -0
  25. package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog-ref.mjs +12 -12
  26. package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog.component.mjs +85 -85
  27. package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +21 -0
  28. package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog.service.mjs +52 -52
  29. package/{esm2020 → esm2022}/lib/ui-kit/dialog/insertion.directive.mjs +16 -16
  30. package/{esm2020 → esm2022}/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +50 -50
  31. package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
  32. package/{esm2020 → esm2022}/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -32
  33. package/esm2022/lib/vc-error-handlers.component.mjs +104 -0
  34. package/esm2022/lib/vc-error-handlers.module.mjs +84 -0
  35. package/{esm2020 → esm2022}/lib/vc-error-handlers.service.mjs +14 -14
  36. package/esm2022/public-api.mjs +17 -0
  37. package/{esm2020 → esm2022}/vc-error-handlers.mjs +4 -4
  38. package/{fesm2020 → fesm2022}/vc-error-handlers.mjs +1405 -1378
  39. package/fesm2022/vc-error-handlers.mjs.map +1 -0
  40. package/{vc-error-handlers.d.ts → index.d.ts} +5 -5
  41. package/lib/configuration.d.ts +4 -4
  42. package/lib/featureFlag/feature-flag.directive.d.ts +13 -13
  43. package/lib/featureFlag/feature-flag.module.d.ts +8 -8
  44. package/lib/featureFlag/feature-flag.service.d.ts +19 -19
  45. package/lib/shared/components/chunk-unavailable/chunk-unavailable.component.d.ts +20 -16
  46. package/lib/shared/components/component-level-server-error/component-level-server-error.component.d.ts +19 -15
  47. package/lib/shared/components/error-modal/error-modal.component.d.ts +21 -17
  48. package/lib/shared/components/page-not-found/page-not-found.component.d.ts +23 -18
  49. package/lib/shared/components/server-error/server-error.component.d.ts +19 -15
  50. package/lib/shared/components/session-expired/session-expired.component.d.ts +20 -16
  51. package/lib/shared/components/unauthorized/unauthorized.component.d.ts +23 -18
  52. package/lib/shared/constants/api-config.constants.d.ts +20 -24
  53. package/lib/shared/constants/error-handling.constants.d.ts +62 -49
  54. package/lib/shared/errorhandler/chunk-error.handler.d.ts +7 -7
  55. package/lib/shared/errorhandler/sentry-error.handler.d.ts +14 -14
  56. package/lib/shared/interceptors/http.interceptor.d.ts +13 -13
  57. package/lib/shared/services/global-error.service.d.ts +31 -31
  58. package/lib/shared/services/router.service.d.ts +6 -6
  59. package/lib/shared/services/util.service.d.ts +15 -6
  60. package/lib/shared/types/global-error.types.d.ts +27 -16
  61. package/lib/ui-kit/dialog/dialog-config.d.ts +6 -6
  62. package/lib/ui-kit/dialog/dialog-injector.d.ts +7 -7
  63. package/lib/ui-kit/dialog/dialog-ref.d.ts +7 -7
  64. package/lib/ui-kit/dialog/dialog.component.d.ts +33 -33
  65. package/lib/ui-kit/dialog/dialog.module.d.ts +9 -9
  66. package/lib/ui-kit/dialog/dialog.service.d.ts +17 -17
  67. package/lib/ui-kit/dialog/insertion.directive.d.ts +8 -8
  68. package/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.d.ts +20 -20
  69. package/lib/ui-kit/snack-bar/snack-bar.module.d.ts +8 -8
  70. package/lib/ui-kit/snack-bar/snack-bar.service.d.ts +11 -11
  71. package/lib/vc-error-handlers.component.d.ts +26 -26
  72. package/lib/vc-error-handlers.module.d.ts +26 -26
  73. package/lib/vc-error-handlers.service.d.ts +6 -6
  74. package/package.json +7 -13
  75. package/public-api.d.ts +13 -14
  76. package/esm2020/lib/featureFlag/feature-flag.module.mjs +0 -22
  77. package/esm2020/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +0 -34
  78. package/esm2020/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +0 -63
  79. package/esm2020/lib/shared/components/error-modal/error-modal.component.mjs +0 -61
  80. package/esm2020/lib/shared/components/page-not-found/page-not-found.component.mjs +0 -80
  81. package/esm2020/lib/shared/components/server-error/server-error.component.mjs +0 -71
  82. package/esm2020/lib/shared/components/session-expired/session-expired.component.mjs +0 -34
  83. package/esm2020/lib/shared/components/unauthorized/unauthorized.component.mjs +0 -86
  84. package/esm2020/lib/shared/constants/api-config.constants.mjs +0 -247
  85. package/esm2020/lib/shared/constants/error-handling.constants.mjs +0 -50
  86. package/esm2020/lib/shared/errorhandler/sentry-error.handler.mjs +0 -50
  87. package/esm2020/lib/shared/interceptors/http.interceptor.mjs +0 -35
  88. package/esm2020/lib/shared/services/auth.service.mjs +0 -20
  89. package/esm2020/lib/shared/services/global-error.service.mjs +0 -141
  90. package/esm2020/lib/shared/services/util.service.mjs +0 -21
  91. package/esm2020/lib/shared/types/global-error.types.mjs +0 -16
  92. package/esm2020/lib/ui-kit/dialog/dialog-injector.mjs +0 -15
  93. package/esm2020/lib/ui-kit/dialog/dialog.module.mjs +0 -21
  94. package/esm2020/lib/ui-kit/snack-bar/snack-bar.module.mjs +0 -18
  95. package/esm2020/lib/vc-error-handlers.component.mjs +0 -107
  96. package/esm2020/lib/vc-error-handlers.module.mjs +0 -84
  97. package/esm2020/public-api.mjs +0 -18
  98. package/fesm2015/vc-error-handlers.mjs +0 -1650
  99. package/fesm2015/vc-error-handlers.mjs.map +0 -1
  100. package/fesm2020/vc-error-handlers.mjs.map +0 -1
  101. package/lib/shared/services/auth.service.d.ts +0 -9
@@ -0,0 +1,240 @@
1
+ export const PAGE_LEVEL_API_CONFIG = [
2
+ {
3
+ method: '',
4
+ path: '',
5
+ query: null,
6
+ body: null,
7
+ pageCodes: [''],
8
+ },
9
+ ];
10
+ export const COMPONENT_LEVEL_API_CONFIG = [
11
+ {
12
+ method: 'GET',
13
+ path: '/organization/?mode=organisationUsersList',
14
+ query: { type: 'active' },
15
+ body: null,
16
+ },
17
+ {
18
+ method: 'GET',
19
+ path: '/organization/?mode=organisationUsersList',
20
+ query: { type: 'power_users' },
21
+ body: null,
22
+ },
23
+ {
24
+ method: 'GET',
25
+ path: '/organization/?mode=organisationUsersList',
26
+ query: { type: 'light_users' },
27
+ body: null,
28
+ },
29
+ {
30
+ method: 'GET',
31
+ path: '/organization/?mode=organisationUsersList',
32
+ query: { type: 'inactive' },
33
+ body: null,
34
+ },
35
+ {
36
+ method: 'GET',
37
+ path: '/organization/?mode=organisationUsersList',
38
+ query: { type: 'power_users_small' },
39
+ body: null,
40
+ },
41
+ {
42
+ method: 'GET',
43
+ path: '/Global-Dashboard/ManageDashboards',
44
+ query: null,
45
+ body: null,
46
+ },
47
+ {
48
+ method: 'GET',
49
+ path: '/Global-Dashboard/MyDashboard',
50
+ query: null,
51
+ body: null,
52
+ },
53
+ {
54
+ method: 'GET',
55
+ path: '/grc_object/?mode=grc/getGRCList',
56
+ query: null,
57
+ body: null,
58
+ },
59
+ {
60
+ method: 'GET',
61
+ path: '/compliance/?mode=responsibilityCenterTree',
62
+ query: null,
63
+ body: null,
64
+ },
65
+ {
66
+ method: 'GET',
67
+ path: '/organization/?mode=rcholidaylist',
68
+ query: null,
69
+ body: null,
70
+ },
71
+ {
72
+ method: 'GET',
73
+ path: '/organization/?mode=roles/getRoles',
74
+ query: null,
75
+ body: null,
76
+ },
77
+ {
78
+ method: 'GET',
79
+ path: '/organization/?mode=groupsList',
80
+ query: null,
81
+ body: null,
82
+ },
83
+ {
84
+ method: 'POST',
85
+ path: '/compliance_post/?mode=rcProfile',
86
+ query: null,
87
+ body: null,
88
+ },
89
+ {
90
+ method: 'POST',
91
+ path: '/organization_post/?mode=userProfile',
92
+ query: null,
93
+ body: null,
94
+ },
95
+ {
96
+ method: 'GET',
97
+ path: '/organization/?mode=roles/roleById',
98
+ query: null,
99
+ body: null,
100
+ },
101
+ {
102
+ method: 'GET',
103
+ path: '/organization/?mode=groupDetails',
104
+ query: null,
105
+ body: null,
106
+ },
107
+ {
108
+ method: 'POST',
109
+ path: '/compliance_post?mode=report/list',
110
+ query: null,
111
+ body: null,
112
+ },
113
+ {
114
+ method: 'GET',
115
+ path: '/organization/?mode=memberholidaylist',
116
+ query: null,
117
+ body: null,
118
+ },
119
+ {
120
+ method: 'GET',
121
+ path: '/grc_object/?mode=activity/activityLogList',
122
+ query: null,
123
+ body: null,
124
+ },
125
+ {
126
+ method: 'GET',
127
+ path: '/grc_object/?mode=activity/viewList',
128
+ query: null,
129
+ body: null,
130
+ },
131
+ {
132
+ method: 'GET',
133
+ path: '/program/categoriesList?owner_list=1',
134
+ query: null,
135
+ body: null,
136
+ },
137
+ {
138
+ method: 'POST',
139
+ path: '/risk/?mode=category/list',
140
+ query: null,
141
+ body: null,
142
+ },
143
+ {
144
+ method: 'POST',
145
+ path: 'memberDetailsbyIds',
146
+ query: null,
147
+ body: null,
148
+ },
149
+ {
150
+ method: 'GET',
151
+ path: '/organization?mode=signatureDetails',
152
+ query: null,
153
+ body: null,
154
+ },
155
+ {
156
+ method: 'GET',
157
+ path: '/program/responsibilityList',
158
+ query: null,
159
+ body: null,
160
+ },
161
+ {
162
+ method: 'GET',
163
+ path: '/program/getLinkedPolicies',
164
+ query: null,
165
+ body: null,
166
+ },
167
+ {
168
+ method: 'POST',
169
+ path: 'risk/list',
170
+ query: null,
171
+ body: null,
172
+ },
173
+ {
174
+ method: 'GET',
175
+ path: '/program/assignee',
176
+ query: null,
177
+ body: null,
178
+ },
179
+ {
180
+ method: 'GET',
181
+ path: '/program/evidence/getEvidences/b-cycle-header',
182
+ query: null,
183
+ body: null,
184
+ },
185
+ {
186
+ method: 'GET',
187
+ path: '/program/activity-logs',
188
+ query: null,
189
+ body: null,
190
+ },
191
+ {
192
+ method: 'GET',
193
+ path: '/program/activity-logs-views',
194
+ query: null,
195
+ body: null,
196
+ },
197
+ {
198
+ method: 'POST',
199
+ path: '/Assessment/?mode=category/list',
200
+ query: null,
201
+ body: null,
202
+ },
203
+ {
204
+ method: 'POST',
205
+ path: '/Assessment/?mode=assessment/list',
206
+ query: null,
207
+ body: null,
208
+ },
209
+ {
210
+ method: 'GET',
211
+ path: '/Assessment/?mode=assessment/fetchQuestionsByAssessmentId',
212
+ query: null,
213
+ body: null,
214
+ },
215
+ {
216
+ method: 'POST',
217
+ path: '/Assessment/?mode=assessment/responseSummary',
218
+ query: null,
219
+ body: null,
220
+ },
221
+ {
222
+ method: 'GET',
223
+ path: '/Assessment/?mode=assessment/logs',
224
+ query: null,
225
+ body: null,
226
+ },
227
+ {
228
+ method: 'GET',
229
+ path: '/program/subCategories',
230
+ query: null,
231
+ body: null,
232
+ },
233
+ {
234
+ method: 'POST',
235
+ path: '/Assessment/?mode=assessment/getAssessmentById',
236
+ query: null,
237
+ body: null,
238
+ },
239
+ ];
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9jb25zdGFudHMvYXBpLWNvbmZpZy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkM7UUFDRSxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtRQUNWLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztLQUNoQjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QztRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3pCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQzNCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxL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QUFFLDJEQUEyRDtRQUNqRSxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLDhDQUE4QztRQUNwRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLG1DQUFtQztRQUN6QyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLGdEQUFnRDtRQUN0RCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBBR0VfTEVWRUxfQVBJX0NPTkZJRyA9IFtcclxuICB7XHJcbiAgICBtZXRob2Q6ICcnLFxyXG4gICAgcGF0aDogJycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgICBwYWdlQ29kZXM6IFsnJ10sXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBDT01QT05FTlRfTEVWRUxfQVBJX0NPTkZJRyA9IFtcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdhY3RpdmUnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAncG93ZXJfdXNlcnMnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAnbGlnaHRfdXNlcnMnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAnaW5hY3RpdmUnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAncG93ZXJfdXNlcnNfc21hbGwnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvR2xvYmFsLURhc2hib2FyZC9NYW5hZ2VEYXNoYm9hcmRzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0dsb2JhbC1EYXNoYm9hcmQvTXlEYXNoYm9hcmQnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1ncmMvZ2V0R1JDTGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9jb21wbGlhbmNlLz9tb2RlPXJlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9cmNob2xpZGF5bGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9cm9sZXMvZ2V0Um9sZXMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPWdyb3Vwc0xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL2NvbXBsaWFuY2VfcG9zdC8/bW9kZT1yY1Byb2ZpbGUnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbl9wb3N0Lz9tb2RlPXVzZXJQcm9maWxlJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1yb2xlcy9yb2xlQnlJZCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBEZXRhaWxzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9jb21wbGlhbmNlX3Bvc3Q/bW9kZT1yZXBvcnQvbGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9bWVtYmVyaG9saWRheWxpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1hY3Rpdml0eS9hY3Rpdml0eUxvZ0xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1hY3Rpdml0eS92aWV3TGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2NhdGVnb3JpZXNMaXN0P293bmVyX2xpc3Q9MScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvcmlzay8/bW9kZT1jYXRlZ29yeS9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJ21lbWJlckRldGFpbHNieUlkcycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24/bW9kZT1zaWduYXR1cmVEZXRhaWxzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vcmVzcG9uc2liaWxpdHlMaXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vZ2V0TGlua2VkUG9saWNpZXMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAncmlzay9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vYXNzaWduZWUnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9ldmlkZW5jZS9nZXRFdmlkZW5jZXMvYi1jeWNsZS1oZWFkZXInLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9hY3Rpdml0eS1sb2dzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vYWN0aXZpdHktbG9ncy12aWV3cycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvQXNzZXNzbWVudC8/bW9kZT1jYXRlZ29yeS9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWFzc2Vzc21lbnQvbGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWFzc2Vzc21lbnQvZmV0Y2hRdWVzdGlvbnNCeUFzc2Vzc21lbnRJZCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvQXNzZXNzbWVudC8/bW9kZT1hc3Nlc3NtZW50L3Jlc3BvbnNlU3VtbWFyeScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWFzc2Vzc21lbnQvbG9ncycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL3N1YkNhdGVnb3JpZXMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9nZXRBc3Nlc3NtZW50QnlJZCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuXTtcclxuIl19
@@ -0,0 +1,63 @@
1
+ export const VCOMPLY_LOGO_URL = 'https://cdn.v-comply.com/logo/prod/v-logo.svg';
2
+ export const API_TIMEOUT_TIME = 1000 * 15;
3
+ export const ORGANISATION_NAME = 'VCOMPLY TECHNOLOGIES, INC.';
4
+ export const ERROR_FEATURE_FLAG = 'ff_error_handling';
5
+ export const ERROR_CONFIG = {
6
+ PAGE_NOT_FOUND: {
7
+ imageUrl: 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',
8
+ title: 'Oops!',
9
+ description: "The page you're looking for doesn't exist.",
10
+ details: 'Please check the URL or return to the homepage.',
11
+ buttonText: 'GO TO DASHBOARD',
12
+ },
13
+ UNAUTHORIZED: {
14
+ imageUrl: 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',
15
+ title: 'Oops!',
16
+ description: "You don't have permission to access this page.",
17
+ details: 'If you believe this is an error, please contact',
18
+ email: 'help@v-comply.com',
19
+ support: 'for support',
20
+ buttonText: 'CONTACT SUPPORT',
21
+ mail: 'mailto:help@v-comply.com',
22
+ },
23
+ SESSION_EXPIRED: {
24
+ heading: 'Session Expired!',
25
+ description: 'Your session has expired. Please log in again to continue using the app.',
26
+ buttonText: 'LOGIN',
27
+ },
28
+ CHUNK_UNAVAILABLE: {
29
+ heading: 'Oops!',
30
+ description: 'Something went wrong. Please refresh the page or try again later.',
31
+ buttonText: 'REFRESH',
32
+ },
33
+ SERVER_ERROR: {
34
+ imageUrl: 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',
35
+ title: 'Oops!',
36
+ description: 'We are unable to load the data.',
37
+ details: 'Please refresh this page or try again later.',
38
+ buttonText: 'REFRESH',
39
+ snackBarMessage: `Oops! Something went wrong. Please try again later.`,
40
+ },
41
+ COMPONENT_LEVEL_SERVER_ERROR: {
42
+ imageUrl: 'https://cdn.v-comply.com/application/images/sad-emoji-icon.svg',
43
+ title: 'Oops!',
44
+ description: 'We are unable to load the data.',
45
+ details: 'Please refresh this section or try again later.',
46
+ buttonText: 'RETRY',
47
+ },
48
+ NETWORK_UNAVAILABLE: {
49
+ offlineMessage: "You're currently offline. Please check your internet connection and try again.",
50
+ },
51
+ };
52
+ export const REDIRECTION_URL = {
53
+ compliance_dashboard: '/global-dashboard/compliance_dashboard',
54
+ };
55
+ export const MODAL_ERROR_TYPES = {
56
+ CHUNK_NOT_FOUND: 'chunk_not_found',
57
+ SESSION_EXPIRED: 'session_expired',
58
+ };
59
+ export const ALT_IMAGE_TEXT = {
60
+ ERROR_IMAGE: 'Error Image',
61
+ VCOMPLY_LOGO: 'VComply',
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtZXJyb3ItaGFuZGxlcnMvc3JjL2xpYi9zaGFyZWQvY29uc3RhbnRzL2Vycm9yLWhhbmRsaW5nLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRywrQ0FBK0MsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLDRCQUE0QixDQUFDO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixjQUFjLEVBQUU7UUFDZCxRQUFRLEVBQ04seUVBQXlFO1FBQzNFLEtBQUssRUFBRSxPQUFPO1FBQ2QsV0FBVyxFQUFFLDRDQUE0QztRQUN6RCxPQUFPLEVBQUUsaURBQWlEO1FBQzFELFVBQVUsRUFBRSxpQkFBaUI7S0FDOUI7SUFFRCxZQUFZLEVBQUU7UUFDWixRQUFRLEVBQ04seUVBQXlFO1FBQzNFLEtBQUssRUFBRSxPQUFPO1FBQ2QsV0FBVyxFQUFFLGdEQUFnRDtRQUM3RCxPQUFPLEVBQUUsaURBQWlEO1FBQzFELEtBQUssRUFBRSxtQkFBbUI7UUFDMUIsT0FBTyxFQUFFLGFBQWE7UUFDdEIsVUFBVSxFQUFFLGlCQUFpQjtRQUM3QixJQUFJLEVBQUUsMEJBQTBCO0tBQ2pDO0lBRUQsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixXQUFXLEVBQ1QsMEVBQTBFO1FBQzVFLFVBQVUsRUFBRSxPQUFPO0tBQ3BCO0lBRUQsaUJBQWlCLEVBQUU7UUFDakIsT0FBTyxFQUFFLE9BQU87UUFDaEIsV0FBVyxFQUFFLG1FQUFtRTtRQUNoRixVQUFVLEVBQUUsU0FBUztLQUN0QjtJQUVELFlBQVksRUFBRTtRQUNaLFFBQVEsRUFDTix5RUFBeUU7UUFDM0UsS0FBSyxFQUFFLE9BQU87UUFDZCxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsVUFBVSxFQUFFLFNBQVM7UUFDckIsZUFBZSxFQUFFLHFEQUFxRDtLQUN2RTtJQUVELDRCQUE0QixFQUFFO1FBQzVCLFFBQVEsRUFBRSxnRUFBZ0U7UUFDMUUsS0FBSyxFQUFFLE9BQU87UUFDZCxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLE9BQU8sRUFBRSxpREFBaUQ7UUFDMUQsVUFBVSxFQUFFLE9BQU87S0FDcEI7SUFFRCxtQkFBbUIsRUFBRTtRQUNuQixjQUFjLEVBQ1osZ0ZBQWdGO0tBQ25GO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixvQkFBb0IsRUFBRSx3Q0FBd0M7Q0FDL0QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsZUFBZSxFQUFFLGlCQUFpQjtDQUNuQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFlBQVksRUFBRSxTQUFTO0NBQ3hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVkNPTVBMWV9MT0dPX1VSTCA9ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbG9nby9wcm9kL3YtbG9nby5zdmcnO1xyXG5leHBvcnQgY29uc3QgQVBJX1RJTUVPVVRfVElNRSA9IDEwMDAgKiAxNTtcclxuZXhwb3J0IGNvbnN0IE9SR0FOSVNBVElPTl9OQU1FID0gJ1ZDT01QTFkgVEVDSE5PTE9HSUVTLCBJTkMuJztcclxuZXhwb3J0IGNvbnN0IEVSUk9SX0ZFQVRVUkVfRkxBRyA9ICdmZl9lcnJvcl9oYW5kbGluZyc7XHJcblxyXG5leHBvcnQgY29uc3QgRVJST1JfQ09ORklHID0ge1xyXG4gIFBBR0VfTk9UX0ZPVU5EOiB7XHJcbiAgICBpbWFnZVVybDpcclxuICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9hcHBsaWNhdGlvbi9pbWFnZXMvRXJyb3ItcGFnZS1pbGx1c3RyYXRpb24uc3ZnJyxcclxuICAgIHRpdGxlOiAnT29wcyEnLFxyXG4gICAgZGVzY3JpcHRpb246IFwiVGhlIHBhZ2UgeW91J3JlIGxvb2tpbmcgZm9yIGRvZXNuJ3QgZXhpc3QuXCIsXHJcbiAgICBkZXRhaWxzOiAnUGxlYXNlIGNoZWNrIHRoZSBVUkwgb3IgcmV0dXJuIHRvIHRoZSBob21lcGFnZS4nLFxyXG4gICAgYnV0dG9uVGV4dDogJ0dPIFRPIERBU0hCT0FSRCcsXHJcbiAgfSxcclxuXHJcbiAgVU5BVVRIT1JJWkVEOiB7XHJcbiAgICBpbWFnZVVybDpcclxuICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9hcHBsaWNhdGlvbi9pbWFnZXMvRXJyb3ItcGFnZS1pbGx1c3RyYXRpb24uc3ZnJyxcclxuICAgIHRpdGxlOiAnT29wcyEnLFxyXG4gICAgZGVzY3JpcHRpb246IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBwYWdlLlwiLFxyXG4gICAgZGV0YWlsczogJ0lmIHlvdSBiZWxpZXZlIHRoaXMgaXMgYW4gZXJyb3IsIHBsZWFzZSBjb250YWN0JyxcclxuICAgIGVtYWlsOiAnaGVscEB2LWNvbXBseS5jb20nLFxyXG4gICAgc3VwcG9ydDogJ2ZvciBzdXBwb3J0JyxcclxuICAgIGJ1dHRvblRleHQ6ICdDT05UQUNUIFNVUFBPUlQnLFxyXG4gICAgbWFpbDogJ21haWx0bzpoZWxwQHYtY29tcGx5LmNvbScsXHJcbiAgfSxcclxuXHJcbiAgU0VTU0lPTl9FWFBJUkVEOiB7XHJcbiAgICBoZWFkaW5nOiAnU2Vzc2lvbiBFeHBpcmVkIScsXHJcbiAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgJ1lvdXIgc2Vzc2lvbiBoYXMgZXhwaXJlZC4gUGxlYXNlIGxvZyBpbiBhZ2FpbiB0byBjb250aW51ZSB1c2luZyB0aGUgYXBwLicsXHJcbiAgICBidXR0b25UZXh0OiAnTE9HSU4nLFxyXG4gIH0sXHJcblxyXG4gIENIVU5LX1VOQVZBSUxBQkxFOiB7XHJcbiAgICBoZWFkaW5nOiAnT29wcyEnLFxyXG4gICAgZGVzY3JpcHRpb246ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2Ugb3IgdHJ5IGFnYWluIGxhdGVyLicsXHJcbiAgICBidXR0b25UZXh0OiAnUkVGUkVTSCcsXHJcbiAgfSxcclxuXHJcbiAgU0VSVkVSX0VSUk9SOiB7XHJcbiAgICBpbWFnZVVybDpcclxuICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9hcHBsaWNhdGlvbi9pbWFnZXMvRXJyb3ItcGFnZS1pbGx1c3RyYXRpb24uc3ZnJyxcclxuICAgIHRpdGxlOiAnT29wcyEnLFxyXG4gICAgZGVzY3JpcHRpb246ICdXZSBhcmUgdW5hYmxlIHRvIGxvYWQgdGhlIGRhdGEuJyxcclxuICAgIGRldGFpbHM6ICdQbGVhc2UgcmVmcmVzaCB0aGlzIHBhZ2Ugb3IgdHJ5IGFnYWluIGxhdGVyLicsXHJcbiAgICBidXR0b25UZXh0OiAnUkVGUkVTSCcsXHJcbiAgICBzbmFja0Jhck1lc3NhZ2U6IGBPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5gLFxyXG4gIH0sXHJcblxyXG4gIENPTVBPTkVOVF9MRVZFTF9TRVJWRVJfRVJST1I6IHtcclxuICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2FwcGxpY2F0aW9uL2ltYWdlcy9zYWQtZW1vamktaWNvbi5zdmcnLFxyXG4gICAgdGl0bGU6ICdPb3BzIScsXHJcbiAgICBkZXNjcmlwdGlvbjogJ1dlIGFyZSB1bmFibGUgdG8gbG9hZCB0aGUgZGF0YS4nLFxyXG4gICAgZGV0YWlsczogJ1BsZWFzZSByZWZyZXNoIHRoaXMgc2VjdGlvbiBvciB0cnkgYWdhaW4gbGF0ZXIuJyxcclxuICAgIGJ1dHRvblRleHQ6ICdSRVRSWScsXHJcbiAgfSxcclxuXHJcbiAgTkVUV09SS19VTkFWQUlMQUJMRToge1xyXG4gICAgb2ZmbGluZU1lc3NhZ2U6XHJcbiAgICAgIFwiWW91J3JlIGN1cnJlbnRseSBvZmZsaW5lLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uXCIsXHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBSRURJUkVDVElPTl9VUkwgPSB7XHJcbiAgY29tcGxpYW5jZV9kYXNoYm9hcmQ6ICcvZ2xvYmFsLWRhc2hib2FyZC9jb21wbGlhbmNlX2Rhc2hib2FyZCcsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgTU9EQUxfRVJST1JfVFlQRVMgPSB7XHJcbiAgQ0hVTktfTk9UX0ZPVU5EOiAnY2h1bmtfbm90X2ZvdW5kJyxcclxuICBTRVNTSU9OX0VYUElSRUQ6ICdzZXNzaW9uX2V4cGlyZWQnLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFMVF9JTUFHRV9URVhUID0ge1xyXG4gIEVSUk9SX0lNQUdFOiAnRXJyb3IgSW1hZ2UnLFxyXG4gIFZDT01QTFlfTE9HTzogJ1ZDb21wbHknLFxyXG59XHJcbiJdfQ==
@@ -1,18 +1,18 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class GlobalErrorHandler {
4
- handleError(error) {
5
- const chunkFailedMessage = /Loading chunk [\d]+ failed/;
6
- if (chunkFailedMessage.test(error.message) &&
7
- confirm(`A new version is available. Please press "OK" to refresh the page.`)) {
8
- window.location.reload();
9
- }
10
- console.error(error);
11
- }
12
- }
13
- GlobalErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GlobalErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14
- GlobalErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GlobalErrorHandler });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GlobalErrorHandler, decorators: [{
16
- type: Injectable
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmstZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2Vycm9yaGFuZGxlci9jaHVuay1lcnJvci5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7UUFFeEQsSUFDRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxPQUFPLENBQ0wsb0VBQW9FLENBQ3JFLEVBQ0Q7WUFDQSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDOzsrR0FiVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxFcnJvckhhbmRsZXIgaW1wbGVtZW50cyBFcnJvckhhbmRsZXIge1xyXG4gIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNodW5rRmFpbGVkTWVzc2FnZSA9IC9Mb2FkaW5nIGNodW5rIFtcXGRdKyBmYWlsZWQvO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgY2h1bmtGYWlsZWRNZXNzYWdlLnRlc3QoZXJyb3IubWVzc2FnZSkgJiZcclxuICAgICAgY29uZmlybShcclxuICAgICAgICBgQSBuZXcgdmVyc2lvbiBpcyBhdmFpbGFibGUuIFBsZWFzZSBwcmVzcyBcIk9LXCIgdG8gcmVmcmVzaCB0aGUgcGFnZS5gXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICB9XHJcbn1cclxuIl19
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GlobalErrorHandler {
4
+ handleError(error) {
5
+ const chunkFailedMessage = /Loading chunk [\d]+ failed/;
6
+ if (chunkFailedMessage.test(error.message) &&
7
+ confirm(`A new version is available. Please press "OK" to refresh the page.`)) {
8
+ window.location.reload();
9
+ }
10
+ console.error(error);
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
13
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorHandler }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorHandler, decorators: [{
16
+ type: Injectable
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmstZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2Vycm9yaGFuZGxlci9jaHVuay1lcnJvci5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd6RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7UUFFeEQsSUFDRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxPQUFPLENBQ0wsb0VBQW9FLENBQ3JFLEVBQ0Q7WUFDQSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDOytHQWJVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxFcnJvckhhbmRsZXIgaW1wbGVtZW50cyBFcnJvckhhbmRsZXIge1xyXG4gIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNodW5rRmFpbGVkTWVzc2FnZSA9IC9Mb2FkaW5nIGNodW5rIFtcXGRdKyBmYWlsZWQvO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgY2h1bmtGYWlsZWRNZXNzYWdlLnRlc3QoZXJyb3IubWVzc2FnZSkgJiZcclxuICAgICAgY29uZmlybShcclxuICAgICAgICBgQSBuZXcgdmVyc2lvbiBpcyBhdmFpbGFibGUuIFBsZWFzZSBwcmVzcyBcIk9LXCIgdG8gcmVmcmVzaCB0aGUgcGFnZS5gXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,47 @@
1
+ import { Injectable, Optional } from '@angular/core';
2
+ import * as Sentry from '@sentry/angular-ivy';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@vcomply/authorizer";
5
+ import * as i2 from "../services/global-error.service";
6
+ import * as i3 from "../../configuration";
7
+ export class SentryErrorHandler {
8
+ constructor(authorizerService, errorService, config) {
9
+ this.authorizerService = authorizerService;
10
+ this.errorService = errorService;
11
+ if (config?.sentryConfig) {
12
+ const SENTRY_CONFIG = config.sentryConfig;
13
+ Sentry.init({
14
+ dsn: SENTRY_CONFIG?.DSN,
15
+ integrations: [
16
+ new Sentry.BrowserTracing({
17
+ tracePropagationTargets: SENTRY_CONFIG.ALLOW_ORIGIN,
18
+ routingInstrumentation: Sentry.routingInstrumentation,
19
+ }),
20
+ ],
21
+ tracesSampleRate: SENTRY_CONFIG.TRACES_SAMPLE_RATE,
22
+ replaysSessionSampleRate: SENTRY_CONFIG.REPLAY_SESSION_SAMPLE_RATE,
23
+ replaysOnErrorSampleRate: SENTRY_CONFIG.REPLAY_ON_ERROR_SAMPLE_RATE,
24
+ });
25
+ Sentry.setUser({ userDetails: this.authorizerService.getUser() });
26
+ }
27
+ }
28
+ handleError(error) {
29
+ const ERROR = error?.originalError || error;
30
+ this.handleChunkError(ERROR);
31
+ Sentry.captureException(ERROR);
32
+ }
33
+ handleChunkError(error) {
34
+ const chunkFailedMessage = /Loading chunk [\d]+ failed/;
35
+ if (chunkFailedMessage.test(error?.message)) {
36
+ window.location.reload();
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SentryErrorHandler, deps: [{ token: i1.AuthorizerService }, { token: i2.GlobalErrorService }, { token: i3.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SentryErrorHandler }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SentryErrorHandler, decorators: [{
43
+ type: Injectable
44
+ }], ctorParameters: function () { return [{ type: i1.AuthorizerService }, { type: i2.GlobalErrorService }, { type: i3.Configurations, decorators: [{
45
+ type: Optional
46
+ }] }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudHJ5LWVycm9yLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9lcnJvcmhhbmRsZXIvc2VudHJ5LWVycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBUzlDLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxpQkFBb0MsRUFDcEMsWUFBZ0MsRUFDNUIsTUFBdUI7UUFGM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFHeEMsSUFBSSxNQUFNLEVBQUUsWUFBWSxFQUFFO1lBQ3hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUc7Z0JBQ3ZCLFlBQVksRUFBRTtvQkFDWixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUM7d0JBQ3hCLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxZQUFZO3dCQUNuRCxzQkFBc0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCO3FCQUN0RCxDQUFDO2lCQUNIO2dCQUNELGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxrQkFBa0I7Z0JBQ2xELHdCQUF3QixFQUFFLGFBQWEsQ0FBQywwQkFBMEI7Z0JBQ2xFLHdCQUF3QixFQUFFLGFBQWEsQ0FBQywyQkFBMkI7YUFDcEUsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxhQUFhLElBQUksS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVk7UUFDM0IsTUFBTSxrQkFBa0IsR0FBRyw0QkFBNEIsQ0FBQztRQUN4RCxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDM0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7K0dBbkNVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVOzswQkFLTixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSAnQHNlbnRyeS9hbmd1bGFyLWl2eSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbic7XHJcblxyXG5pbXBvcnQgeyBBdXRob3JpemVyU2VydmljZSB9IGZyb20gJ0B2Y29tcGx5L2F1dGhvcml6ZXInO1xyXG5pbXBvcnQgeyBHbG9iYWxFcnJvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwtZXJyb3Iuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBFcnJvclN0YXR1c0NvZGUgfSBmcm9tICcuLi90eXBlcy9nbG9iYWwtZXJyb3IudHlwZXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2VudHJ5RXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aG9yaXplclNlcnZpY2U6IEF1dGhvcml6ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEdsb2JhbEVycm9yU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnPy5zZW50cnlDb25maWcpIHtcclxuICAgICAgY29uc3QgU0VOVFJZX0NPTkZJRyA9IGNvbmZpZy5zZW50cnlDb25maWc7XHJcbiAgICAgIFNlbnRyeS5pbml0KHtcclxuICAgICAgICBkc246IFNFTlRSWV9DT05GSUc/LkRTTixcclxuICAgICAgICBpbnRlZ3JhdGlvbnM6IFtcclxuICAgICAgICAgIG5ldyBTZW50cnkuQnJvd3NlclRyYWNpbmcoe1xyXG4gICAgICAgICAgICB0cmFjZVByb3BhZ2F0aW9uVGFyZ2V0czogU0VOVFJZX0NPTkZJRy5BTExPV19PUklHSU4sXHJcbiAgICAgICAgICAgIHJvdXRpbmdJbnN0cnVtZW50YXRpb246IFNlbnRyeS5yb3V0aW5nSW5zdHJ1bWVudGF0aW9uLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgXSxcclxuICAgICAgICB0cmFjZXNTYW1wbGVSYXRlOiBTRU5UUllfQ09ORklHLlRSQUNFU19TQU1QTEVfUkFURSxcclxuICAgICAgICByZXBsYXlzU2Vzc2lvblNhbXBsZVJhdGU6IFNFTlRSWV9DT05GSUcuUkVQTEFZX1NFU1NJT05fU0FNUExFX1JBVEUsXHJcbiAgICAgICAgcmVwbGF5c09uRXJyb3JTYW1wbGVSYXRlOiBTRU5UUllfQ09ORklHLlJFUExBWV9PTl9FUlJPUl9TQU1QTEVfUkFURSxcclxuICAgICAgfSk7XHJcbiAgICAgIFNlbnRyeS5zZXRVc2VyKHsgdXNlckRldGFpbHM6IHRoaXMuYXV0aG9yaXplclNlcnZpY2UuZ2V0VXNlcigpIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgY29uc3QgRVJST1IgPSBlcnJvcj8ub3JpZ2luYWxFcnJvciB8fCBlcnJvcjtcclxuICAgIHRoaXMuaGFuZGxlQ2h1bmtFcnJvcihFUlJPUik7XHJcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihFUlJPUik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaHVua0Vycm9yKGVycm9yOiBFcnJvcikge1xyXG4gICAgY29uc3QgY2h1bmtGYWlsZWRNZXNzYWdlID0gL0xvYWRpbmcgY2h1bmsgW1xcZF0rIGZhaWxlZC87XHJcbiAgICBpZiAoY2h1bmtGYWlsZWRNZXNzYWdlLnRlc3QoZXJyb3I/Lm1lc3NhZ2UpKSB7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpResponse, } from '@angular/common/http';
3
+ import { throwError } from 'rxjs';
4
+ import { catchError, tap, timeout } from 'rxjs/operators';
5
+ import { API_TIMEOUT_TIME, ERROR_FEATURE_FLAG, } from '../constants/error-handling.constants';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../services/global-error.service";
8
+ import * as i2 from "../../featureFlag/feature-flag.service";
9
+ export class HttpReqInterceptor {
10
+ constructor(errorService, featureFlagService) {
11
+ this.errorService = errorService;
12
+ this.featureFlagService = featureFlagService;
13
+ }
14
+ intercept(req, next) {
15
+ if (this.featureFlagService.isFeatureEnabled(ERROR_FEATURE_FLAG)) {
16
+ return next.handle(req).pipe(timeout(API_TIMEOUT_TIME), tap((event) => {
17
+ if (event instanceof HttpResponse) {
18
+ this.errorService.handleSoftErrors(event);
19
+ }
20
+ }), catchError((error) => {
21
+ this.errorService.handleError(error, req);
22
+ return throwError(error);
23
+ }));
24
+ }
25
+ else {
26
+ return next.handle(req);
27
+ }
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpReqInterceptor, deps: [{ token: i1.GlobalErrorService }, { token: i2.FeatureFlagService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpReqInterceptor }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpReqInterceptor, decorators: [{
33
+ type: Injectable
34
+ }], ctorParameters: function () { return [{ type: i1.GlobalErrorService }, { type: i2.FeatureFlagService }]; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2ludGVyY2VwdG9ycy9odHRwLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQU1MLFlBQVksR0FDYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLMUQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQUcvQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsWUFBZ0MsRUFDaEMsa0JBQXNDO1FBRHRDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQzdDLENBQUM7SUFFSixTQUFTLENBQ1AsR0FBcUIsRUFDckIsSUFBaUI7UUFFakIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNoRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFDekIsR0FBRyxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFO2dCQUM1QixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzNDO1lBQ0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzsrR0ExQlUsa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSHR0cFJlcXVlc3QsXHJcbiAgSHR0cEhhbmRsZXIsXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBJbnRlcmNlcHRvcixcclxuICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICBIdHRwUmVzcG9uc2UsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCwgdGltZW91dCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEdsb2JhbEVycm9yU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC1lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZUZsYWcvZmVhdHVyZS1mbGFnLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBUElfVElNRU9VVF9USU1FLFxyXG4gIEVSUk9SX0ZFQVRVUkVfRkxBRyxcclxufSBmcm9tICcuLi9jb25zdGFudHMvZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXFJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVycm9yU2VydmljZTogR2xvYmFsRXJyb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ1NlcnZpY2UuaXNGZWF0dXJlRW5hYmxlZChFUlJPUl9GRUFUVVJFX0ZMQUcpKSB7XHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXHJcbiAgICAgICAgdGltZW91dChBUElfVElNRU9VVF9USU1FKSxcclxuICAgICAgICB0YXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLmhhbmRsZVNvZnRFcnJvcnMoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IsIHJlcSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,115 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { ErrorStatusCode } from '../types/global-error.types';
4
+ import { PAGE_LEVEL_API_CONFIG, COMPONENT_LEVEL_API_CONFIG, } from '../constants/api-config.constants';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../ui-kit/snack-bar/snack-bar.service";
7
+ import * as i2 from "./util.service";
8
+ import * as i3 from "@angular/router";
9
+ export class GlobalErrorService {
10
+ constructor(snackBarService, utilService, router) {
11
+ this.snackBarService = snackBarService;
12
+ this.utilService = utilService;
13
+ this.router = router;
14
+ this.globalError$ = new Subject();
15
+ this.localError$ = new Subject();
16
+ this.pageLevelApiConfig = PAGE_LEVEL_API_CONFIG;
17
+ this.componentLevelApiConfig = COMPONENT_LEVEL_API_CONFIG;
18
+ }
19
+ handleSoftErrors(event) {
20
+ const xData = event.headers.get('X-Data');
21
+ if (xData) {
22
+ const parsedData = JSON.parse(xData);
23
+ const statusCode = parsedData.statusCode;
24
+ const statusMessage = parsedData.message;
25
+ if (statusCode && statusCode !== 0) {
26
+ this.snackBarService.show(statusMessage || 'Error occurred', 'error');
27
+ }
28
+ }
29
+ }
30
+ handleError(error, request) {
31
+ if (this.isUnauthenticated(error) ||
32
+ this.isUnauthorizedAccess(error) ||
33
+ this.isNetworkUnavailable(error)) {
34
+ this.publishGlobalError(error);
35
+ }
36
+ else if (this.isServerError(error)) {
37
+ this.handleServerError(error, request);
38
+ }
39
+ else {
40
+ this.handleSoftErrors(error);
41
+ }
42
+ }
43
+ isServerError(error) {
44
+ const serverErrorCodes = [
45
+ ErrorStatusCode.InternalServerError,
46
+ ErrorStatusCode.ServiceUnavailable,
47
+ ErrorStatusCode.BadGateway,
48
+ ErrorStatusCode.RequestTimeout,
49
+ ];
50
+ return serverErrorCodes.includes(error.status);
51
+ }
52
+ isUnauthenticated(error) {
53
+ return error.status === ErrorStatusCode.Unauthenticated;
54
+ }
55
+ isUnauthorizedAccess(error) {
56
+ return error.status === ErrorStatusCode.UnauthorizedAccess;
57
+ }
58
+ isNetworkUnavailable(error) {
59
+ return error.status === ErrorStatusCode.NetworkUnavailable;
60
+ }
61
+ handleServerError(error, request) {
62
+ if (this.isPageLevelError(error, request)) {
63
+ this.publishGlobalError(error);
64
+ }
65
+ else if (this.isComponentLevelError(error, request)) {
66
+ this.publishLocalError(error, request);
67
+ }
68
+ }
69
+ publishGlobalError(error) {
70
+ this.globalError$.next(error);
71
+ }
72
+ publishLocalError(error, request) {
73
+ this.localError$.next({ error, request });
74
+ }
75
+ isPageLevelError(error, request) {
76
+ const requestDetails = {
77
+ method: request.method,
78
+ path: request.url,
79
+ query: this.utilService.extractQueryParams(request.params),
80
+ body: request.body,
81
+ pageCode: this.getPageCode(),
82
+ };
83
+ return this.pageLevelApiConfig.some((apiConfig) => this.isApiConfigMatching(apiConfig, requestDetails));
84
+ }
85
+ isComponentLevelError(error, request) {
86
+ const requestDetails = {
87
+ method: request.method,
88
+ path: request.url,
89
+ query: this.utilService.extractQueryParams(request.params),
90
+ body: request.body,
91
+ };
92
+ return this.componentLevelApiConfig.some((apiConfig) => this.isApiConfigMatching(apiConfig, requestDetails));
93
+ }
94
+ getPageCode() {
95
+ const currentRoute = this.router.routerState.snapshot.root.firstChild;
96
+ return currentRoute?.data?.pageCode;
97
+ }
98
+ isApiConfigMatching(apiConfig, requestDetails) {
99
+ return (this.utilService.isStringEqual(apiConfig.method, requestDetails.method) &&
100
+ this.utilService.isSubstringInString(apiConfig.path, requestDetails.path) &&
101
+ this.utilService.isSubsetOfObject(apiConfig.query, requestDetails.query) &&
102
+ this.utilService.isSubsetOfArray(apiConfig.body, requestDetails.body) &&
103
+ (!apiConfig.pageCodes ||
104
+ this.utilService.isValueInArray(apiConfig.pageCodes, requestDetails.pageCode || '')));
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorService, deps: [{ token: i1.SnackBarService }, { token: i2.UtilsService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
107
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorService, providedIn: 'root' }); }
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GlobalErrorService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root',
113
+ }]
114
+ }], ctorParameters: function () { return [{ type: i1.SnackBarService }, { type: i2.UtilsService }, { type: i3.Router }]; } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9nbG9iYWwtZXJyb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0IsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDOzs7OztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCLFlBQ1UsZUFBZ0MsRUFDaEMsV0FBeUIsRUFDekIsTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYztRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVGpCLGlCQUFZLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0MsZ0JBQVcsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6Qyx1QkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztRQUMzQyw0QkFBdUIsR0FBRywwQkFBMEIsQ0FBQztJQU0xRCxDQUFDO0lBRUcsZ0JBQWdCLENBQUMsS0FBNEM7UUFDbEUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDekMsTUFBTSxhQUFhLEdBQUcsVUFB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RSxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQzdCLFNBQVMsQ0FBQyxTQUFTLEVBQ25CLGNBQWMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUM5QixDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7K0dBakpVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBSZXNwb25zZSxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4vdXRpbC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEVycm9yU3RhdHVzQ29kZSwgUmVxdWVzdERldGFpbHMgfSBmcm9tICcuLi90eXBlcy9nbG9iYWwtZXJyb3IudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIFBBR0VfTEVWRUxfQVBJX0NPTkZJRyxcclxuICBDT01QT05FTlRfTEVWRUxfQVBJX0NPTkZJRyxcclxufSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbmZpZy5jb25zdGFudHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdsb2JhbEVycm9yU2VydmljZSB7XHJcbiAgcHVibGljIGdsb2JhbEVycm9yJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBwdWJsaWMgbG9jYWxFcnJvciQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgcGFnZUxldmVsQXBpQ29uZmlnID0gUEFHRV9MRVZFTF9BUElfQ09ORklHO1xyXG4gIHByaXZhdGUgY29tcG9uZW50TGV2ZWxBcGlDb25maWcgPSBDT01QT05FTlRfTEVWRUxfQVBJX0NPTkZJRztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgcHVibGljIGhhbmRsZVNvZnRFcnJvcnMoZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+IHwgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGNvbnN0IHhEYXRhID0gZXZlbnQuaGVhZGVycy5nZXQoJ1gtRGF0YScpO1xyXG5cclxuICAgIGlmICh4RGF0YSkge1xyXG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZSh4RGF0YSk7XHJcbiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSBwYXJzZWREYXRhLnN0YXR1c0NvZGU7XHJcbiAgICAgIGNvbnN0IHN0YXR1c01lc3NhZ2UgPSBwYXJzZWREYXRhLm1lc3NhZ2U7XHJcblxyXG4gICAgICBpZiAoc3RhdHVzQ29kZSAmJiBzdGF0dXNDb2RlICE9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uuc2hvdyhzdGF0dXNNZXNzYWdlIHx8ICdFcnJvciBvY2N1cnJlZCcsICdlcnJvcicpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuaXNVbmF1dGhlbnRpY2F0ZWQoZXJyb3IpIHx8XHJcbiAgICAgIHRoaXMuaXNVbmF1dGhvcml6ZWRBY2Nlc3MoZXJyb3IpIHx8XHJcbiAgICAgIHRoaXMuaXNOZXR3b3JrVW5hdmFpbGFibGUoZXJyb3IpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wdWJsaXNoR2xvYmFsRXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU2VydmVyRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU2VydmVyRXJyb3IoZXJyb3IsIHJlcXVlc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVTb2Z0RXJyb3JzKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NlcnZlckVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VydmVyRXJyb3JDb2RlcyA9IFtcclxuICAgICAgRXJyb3JTdGF0dXNDb2RlLkludGVybmFsU2VydmVyRXJyb3IsXHJcbiAgICAgIEVycm9yU3RhdHVzQ29kZS5TZXJ2aWNlVW5hdmFpbGFibGUsXHJcbiAgICAgIEVycm9yU3RhdHVzQ29kZS5CYWRHYXRld2F5LFxyXG4gICAgICBFcnJvclN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQsXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBzZXJ2ZXJFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVW5hdXRoZW50aWNhdGVkKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cyA9PT0gRXJyb3JTdGF0dXNDb2RlLlVuYXV0aGVudGljYXRlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNVbmF1dGhvcml6ZWRBY2Nlc3MoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzID09PSBFcnJvclN0YXR1c0NvZGUuVW5hdXRob3JpemVkQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc05ldHdvcmtVbmF2YWlsYWJsZShlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IEVycm9yU3RhdHVzQ29kZS5OZXR3b3JrVW5hdmFpbGFibGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNlcnZlckVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuaXNQYWdlTGV2ZWxFcnJvcihlcnJvciwgcmVxdWVzdCkpIHtcclxuICAgICAgdGhpcy5wdWJsaXNoR2xvYmFsRXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29tcG9uZW50TGV2ZWxFcnJvcihlcnJvciwgcmVxdWVzdCkpIHtcclxuICAgICAgdGhpcy5wdWJsaXNoTG9jYWxFcnJvcihlcnJvciwgcmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHB1Ymxpc2hHbG9iYWxFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIHRoaXMuZ2xvYmFsRXJyb3IkLm5leHQoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwdWJsaXNoTG9jYWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApIHtcclxuICAgIHRoaXMubG9jYWxFcnJvciQubmV4dCh7IGVycm9yLCByZXF1ZXN0IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1BhZ2VMZXZlbEVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVxdWVzdERldGFpbHM6IFJlcXVlc3REZXRhaWxzID0ge1xyXG4gICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLFxyXG4gICAgICBwYXRoOiByZXF1ZXN0LnVybCxcclxuICAgICAgcXVlcnk6IHRoaXMudXRpbFNlcnZpY2UuZXh0cmFjdFF1ZXJ5UGFyYW1zKHJlcXVlc3QucGFyYW1zKSxcclxuICAgICAgYm9keTogcmVxdWVzdC5ib2R5LFxyXG4gICAgICBwYWdlQ29kZTogdGhpcy5nZXRQYWdlQ29kZSgpLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYWdlTGV2ZWxBcGlDb25maWcuc29tZSgoYXBpQ29uZmlnKSA9PlxyXG4gICAgICB0aGlzLmlzQXBpQ29uZmlnTWF0Y2hpbmcoYXBpQ29uZmlnLCByZXF1ZXN0RGV0YWlscylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29tcG9uZW50TGV2ZWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlcXVlc3REZXRhaWxzOiBSZXF1ZXN0RGV0YWlscyA9IHtcclxuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcclxuICAgICAgcGF0aDogcmVxdWVzdC51cmwsXHJcbiAgICAgIHF1ZXJ5OiB0aGlzLnV0aWxTZXJ2aWNlLmV4dHJhY3RRdWVyeVBhcmFtcyhyZXF1ZXN0LnBhcmFtcyksXHJcbiAgICAgIGJvZHk6IHJlcXVlc3QuYm9keSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50TGV2ZWxBcGlDb25maWcuc29tZSgoYXBpQ29uZmlnKSA9PlxyXG4gICAgICB0aGlzLmlzQXBpQ29uZmlnTWF0Y2hpbmcoYXBpQ29uZmlnLCByZXF1ZXN0RGV0YWlscylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2VDb2RlKCkge1xyXG4gICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdC5maXJzdENoaWxkO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZT8uZGF0YT8ucGFnZUNvZGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQXBpQ29uZmlnTWF0Y2hpbmcoXHJcbiAgICBhcGlDb25maWc6IGFueSxcclxuICAgIHJlcXVlc3REZXRhaWxzOiBSZXF1ZXN0RGV0YWlsc1xyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy51dGlsU2VydmljZS5pc1N0cmluZ0VxdWFsKGFwaUNvbmZpZy5tZXRob2QsIHJlcXVlc3REZXRhaWxzLm1ldGhvZCkgJiZcclxuICAgICAgdGhpcy51dGlsU2VydmljZS5pc1N1YnN0cmluZ0luU3RyaW5nKFxyXG4gICAgICAgIGFwaUNvbmZpZy5wYXRoLFxyXG4gICAgICAgIHJlcXVlc3REZXRhaWxzLnBhdGhcclxuICAgICAgKSAmJlxyXG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLmlzU3Vic2V0T2ZPYmplY3QoXHJcbiAgICAgICAgYXBpQ29uZmlnLnF1ZXJ5LFxyXG4gICAgICAgIHJlcXVlc3REZXRhaWxzLnF1ZXJ5XHJcbiAgICAgICkgJiZcclxuICAgICAgdGhpcy51dGlsU2VydmljZS5pc1N1YnNldE9mQXJyYXkoYXBpQ29uZmlnLmJvZHksIHJlcXVlc3REZXRhaWxzLmJvZHkpICYmXHJcbiAgICAgICghYXBpQ29uZmlnLnBhZ2VDb2RlcyB8fFxyXG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2UuaXNWYWx1ZUluQXJyYXkoXHJcbiAgICAgICAgICBhcGlDb25maWcucGFnZUNvZGVzLFxyXG4gICAgICAgICAgcmVxdWVzdERldGFpbHMucGFnZUNvZGUgfHwgJydcclxuICAgICAgICApKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19