vc-error-handlers 0.1.95 → 0.1.96
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.
- package/esm2020/lib/shared/constants/api-config.constants.mjs +16 -4
- package/esm2020/lib/shared/services/global-error.service.mjs +6 -6
- package/fesm2015/vc-error-handlers.mjs +20 -9
- package/fesm2015/vc-error-handlers.mjs.map +1 -1
- package/fesm2020/vc-error-handlers.mjs +20 -9
- package/fesm2020/vc-error-handlers.mjs.map +1 -1
- package/lib/shared/constants/api-config.constants.d.ts +0 -9
- package/package.json +1 -1
|
@@ -149,7 +149,7 @@ export const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
method: 'POST',
|
|
152
|
-
path: '/organization_post
|
|
152
|
+
path: '/organization_post?mode=memberDetailsbyIds',
|
|
153
153
|
query: null,
|
|
154
154
|
body: null,
|
|
155
155
|
},
|
|
@@ -173,8 +173,8 @@ export const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
method: 'POST',
|
|
176
|
-
path: '
|
|
177
|
-
query:
|
|
176
|
+
path: 'risk/list',
|
|
177
|
+
query: null,
|
|
178
178
|
body: null,
|
|
179
179
|
},
|
|
180
180
|
{
|
|
@@ -231,5 +231,17 @@ export const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
231
231
|
query: null,
|
|
232
232
|
body: null,
|
|
233
233
|
},
|
|
234
|
+
{
|
|
235
|
+
method: 'GET',
|
|
236
|
+
path: '/program/subCategories',
|
|
237
|
+
query: null,
|
|
238
|
+
body: null,
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
method: 'POST',
|
|
242
|
+
path: '/Assessment/?mode=assessment/getAssessmentById',
|
|
243
|
+
query: null,
|
|
244
|
+
body: null,
|
|
245
|
+
},
|
|
234
246
|
];
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9jb25zdGFudHMvYXBpLWNvbmZpZy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkM7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUN0QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1FBQ3JCLFNBQVMsRUFBRSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7S0FDeEM7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1FBQ3RCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7UUFDckIsU0FBUyxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQztLQUN4QztDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QztRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3pCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQzNCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7UUFDcEMsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsZ0NBQWdDO1FBQ3RDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsdUNBQXVDO1FBQzdDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsNkNBQTZDO1FBQ25ELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNkJBQTZCO1FBQ25DLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtRQUMzQyxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSwrQ0FBK0M7UUFDckQsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSw4QkFBOEI7UUFDcEMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxpQ0FBaUM7UUFDdkMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxtQ0FBbUM7UUFDekMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSwyREFBMkQ7UUFDakUsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSw4Q0FBOEM7UUFDcEQsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxtQ0FBbUM7UUFDekMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBQQUdFX0xFVkVMX0FQSV9DT05GSUcgPSBbXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL2NvbXBsaWFuY2VfcG9zdCcsXHJcbiAgICBxdWVyeTogeyBtb2RlOiAneHl6JyB9LFxyXG4gICAgYm9keTogeyBtb2RlOiAnYWJjJyB9LFxyXG4gICAgcGFnZUNvZGVzOiBbJ2NvbXBsaWFuY2U6bXInLCAncmlzazptciddLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvY29tcGxpYW5jZV9wb3N0JyxcclxuICAgIHF1ZXJ5OiB7IG1vZGU6ICd4eXonIH0sXHJcbiAgICBib2R5OiB7IG1vZGU6ICdhYmMnIH0sXHJcbiAgICBwYWdlQ29kZXM6IFsnY29tcGxpYW5jZTptcicsICdyaXNrOm1yJ10sXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBDT01QT05FTlRfTEVWRUxfQVBJX0NPTkZJRyA9IFtcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdhY3RpdmUnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAncG93ZXJfdXNlcnMnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAnbGlnaHRfdXNlcnMnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAnaW5hY3RpdmUnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCcsXHJcbiAgICBxdWVyeTogeyB0eXBlOiAncG93ZXJfdXNlcnNfc21hbGwnIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvR2xvYmFsLURhc2hib2FyZC9NYW5hZ2VEYXNoYm9hcmRzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0dsb2JhbC1EYXNoYm9hcmQvTXlEYXNoYm9hcmQnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1ncmMvZ2V0R1JDTGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9jb21wbGlhbmNlLz9tb2RlPXJlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9cmNob2xpZGF5bGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9cm9sZXMvZ2V0Um9sZXMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPWdyb3Vwc0xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL2NvbXBsaWFuY2VfcG9zdC8/bW9kZT1yY1Byb2ZpbGUnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbl9wb3N0Lz9tb2RlPXVzZXJQcm9maWxlJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1yb2xlcy9yb2xlQnlJZCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBEZXRhaWxzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9jb21wbGlhbmNlX3Bvc3Q/bW9kZT1yZXBvcnQvbGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9bWVtYmVyaG9saWRheWxpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1hY3Rpdml0eS9hY3Rpdml0eUxvZ0xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvZ3JjX29iamVjdC8/bW9kZT1hY3Rpdml0eS92aWV3TGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2NhdGVnb3JpZXNMaXN0P293bmVyX2xpc3Q9MScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvcmlzay8/bW9kZT1jYXRlZ29yeS9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb25fcG9zdC8/bW9kZT1tZW1iZXJEZXRhaWxzYnlJZHMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uP21vZGU9c2lnbmF0dXJlRGV0YWlscycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL3Jlc3BvbnNpYmlsaXR5TGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2dldExpbmtlZFBvbGljaWVzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9yaXNrP21vZGU9cmlzay9saXN0JyxcclxuICAgIHF1ZXJ5OiB7IHF1ZXJ5UGFnZTogJ2NvbXBsaWFuY2Vfd29ya3Jvb20nIH0sXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9hc3NpZ25lZScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2V2aWRlbmNlL2dldEV2aWRlbmNlcy9iLWN5Y2xlLWhlYWRlcicsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2FjdGl2aXR5LWxvZ3MnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9hY3Rpdml0eS1sb2dzLXZpZXdzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWNhdGVnb3J5L2xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWFzc2Vzc21lbnQvcmVzcG9uc2VTdW1tYXJ5JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9sb2dzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG5dO1xyXG4iXX0=
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbmZpZy5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9jb25zdGFudHMvYXBpLWNvbmZpZy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkM7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUN0QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1FBQ3JCLFNBQVMsRUFBRSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7S0FDeEM7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1FBQ3RCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7UUFDckIsU0FBUyxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQztLQUN4QztDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QztRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3pCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzlCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQzNCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJDQUEyQztRQUNqRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7UUFDcEMsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsZ0NBQWdDO1FBQ3RDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsdUNBQXVDO1FBQzdDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNENBQTRDO1FBQ2xELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsc0NBQXNDO1FBQzVDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsNENBQTRDO1FBQ2xELEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNkJBQTZCO1FBQ25DLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7S0FDWDtJQUNEO1FBQ0UsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsV0FBVztRQUNqQixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLCtDQUErQztRQUNyRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLGlDQUFpQztRQUN2QyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLG1DQUFtQztRQUN6QyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDJEQUEyRDtRQUNqRSxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLDhDQUE4QztRQUNwRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLG1DQUFtQztRQUN6QyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFDRDtRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLGdEQUFnRDtRQUN0RCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO0tBQ1g7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBBR0VfTEVWRUxfQVBJX0NPTkZJRyA9IFtcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvY29tcGxpYW5jZV9wb3N0JyxcclxuICAgIHF1ZXJ5OiB7IG1vZGU6ICd4eXonIH0sXHJcbiAgICBib2R5OiB7IG1vZGU6ICdhYmMnIH0sXHJcbiAgICBwYWdlQ29kZXM6IFsnY29tcGxpYW5jZTptcicsICdyaXNrOm1yJ10sXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9jb21wbGlhbmNlX3Bvc3QnLFxyXG4gICAgcXVlcnk6IHsgbW9kZTogJ3h5eicgfSxcclxuICAgIGJvZHk6IHsgbW9kZTogJ2FiYycgfSxcclxuICAgIHBhZ2VDb2RlczogWydjb21wbGlhbmNlOm1yJywgJ3Jpc2s6bXInXSxcclxuICB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9MRVZFTF9BUElfQ09ORklHID0gW1xyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1vcmdhbmlzYXRpb25Vc2Vyc0xpc3QnLFxyXG4gICAgcXVlcnk6IHsgdHlwZTogJ2FjdGl2ZScgfSxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdwb3dlcl91c2VycycgfSxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdsaWdodF91c2VycycgfSxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdpbmFjdGl2ZScgfSxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JyxcclxuICAgIHF1ZXJ5OiB7IHR5cGU6ICdwb3dlcl91c2Vyc19zbWFsbCcgfSxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9HbG9iYWwtRGFzaGJvYXJkL01hbmFnZURhc2hib2FyZHMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvR2xvYmFsLURhc2hib2FyZC9NeURhc2hib2FyZCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9ncmNfb2JqZWN0Lz9tb2RlPWdyYy9nZXRHUkNMaXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL2NvbXBsaWFuY2UvP21vZGU9cmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1yY2hvbGlkYXlsaXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1yb2xlcy9nZXRSb2xlcycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBzTGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvY29tcGxpYW5jZV9wb3N0Lz9tb2RlPXJjUHJvZmlsZScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uX3Bvc3QvP21vZGU9dXNlclByb2ZpbGUnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvb3JnYW5pemF0aW9uLz9tb2RlPXJvbGVzL3JvbGVCeUlkJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1ncm91cERldGFpbHMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL2NvbXBsaWFuY2VfcG9zdD9tb2RlPXJlcG9ydC9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbi8/bW9kZT1tZW1iZXJob2xpZGF5bGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9ncmNfb2JqZWN0Lz9tb2RlPWFjdGl2aXR5L2FjdGl2aXR5TG9nTGlzdCcsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9ncmNfb2JqZWN0Lz9tb2RlPWFjdGl2aXR5L3ZpZXdMaXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vY2F0ZWdvcmllc0xpc3Q/b3duZXJfbGlzdD0xJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9yaXNrLz9tb2RlPWNhdGVnb3J5L2xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbl9wb3N0P21vZGU9bWVtYmVyRGV0YWlsc2J5SWRzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL29yZ2FuaXphdGlvbj9tb2RlPXNpZ25hdHVyZURldGFpbHMnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9yZXNwb25zaWJpbGl0eUxpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9nZXRMaW5rZWRQb2xpY2llcycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICdyaXNrL2xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9hc3NpZ25lZScsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2V2aWRlbmNlL2dldEV2aWRlbmNlcy9iLWN5Y2xlLWhlYWRlcicsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgcGF0aDogJy9wcm9ncmFtL2FjdGl2aXR5LWxvZ3MnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnR0VUJyxcclxuICAgIHBhdGg6ICcvcHJvZ3JhbS9hY3Rpdml0eS1sb2dzLXZpZXdzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWNhdGVnb3J5L2xpc3QnLFxyXG4gICAgcXVlcnk6IG51bGwsXHJcbiAgICBib2R5OiBudWxsLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9saXN0JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgcGF0aDogJy9Bc3Nlc3NtZW50Lz9tb2RlPWFzc2Vzc21lbnQvcmVzcG9uc2VTdW1tYXJ5JyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL0Fzc2Vzc21lbnQvP21vZGU9YXNzZXNzbWVudC9sb2dzJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG4gIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBwYXRoOiAnL3Byb2dyYW0vc3ViQ2F0ZWdvcmllcycsXHJcbiAgICBxdWVyeTogbnVsbCxcclxuICAgIGJvZHk6IG51bGwsXHJcbiAgfSxcclxuICB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIHBhdGg6ICcvQXNzZXNzbWVudC8/bW9kZT1hc3Nlc3NtZW50L2dldEFzc2Vzc21lbnRCeUlkJyxcclxuICAgIHF1ZXJ5OiBudWxsLFxyXG4gICAgYm9keTogbnVsbCxcclxuICB9LFxyXG5dO1xyXG4iXX0=
|
|
@@ -98,16 +98,16 @@ export class GlobalErrorService {
|
|
|
98
98
|
params.keys().forEach((key) => {
|
|
99
99
|
query[key] = params.get(key);
|
|
100
100
|
});
|
|
101
|
-
console.log('query', query, 'body', body, 'path', path, 'method', method, 'params', params);
|
|
102
101
|
const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {
|
|
103
102
|
if (apiConfig.method !== method)
|
|
104
103
|
return false;
|
|
105
|
-
console.log('apiConfig.path', apiConfig.path, path.includes(apiConfig.path));
|
|
106
104
|
if (!path.includes(apiConfig.path))
|
|
107
105
|
return false;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
if (apiConfig.query) {
|
|
107
|
+
const isQuerySubset = this.utilService.isJsonSubset(query, apiConfig.query);
|
|
108
|
+
if (!isQuerySubset)
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
111
|
if (apiConfig.body) {
|
|
112
112
|
const isBodyMatch = this.utilService.isJsonSubset(apiConfig.body, body);
|
|
113
113
|
if (!isBodyMatch)
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
138
138
|
providedIn: 'root',
|
|
139
139
|
}]
|
|
140
140
|
}], ctorParameters: function () { return [{ type: i1.SnackBarService }, { type: i2.UtilsService }, { type: i3.Router }]; } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9nbG9iYWwtZXJyb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTlELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsMEJBQTBCLEdBQzNCLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBSzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFDVSxlQUFnQyxFQUNoQyxXQUF5QixFQUN6QixNQUFjO1FBRmQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFjO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUakIsaUJBQVksR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXpDLHVCQUFrQixHQUFHLHFCQUFxQixDQUFDO1FBQzNDLDRCQUF1QixHQUFHLDBCQUEwQixDQUFDO0lBTTFELENBQUM7SUFFRyxnQkFBZ0IsQ0FBQyxLQUE0QztRQUNsRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUN6QyxNQUFNLGFBQWEsR0FBRyxVQUFV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LEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdEUsT0FBTyxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUN0QyxDQUFDOzsrR0F0SlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwUmVzcG9uc2UsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBFcnJvclN0YXR1c0NvZGUgfSBmcm9tICcuLi90eXBlcy9nbG9iYWwtZXJyb3IudHlwZXMnO1xyXG5pbXBvcnQgeyBFUlJPUl9DT05GSUcgfSBmcm9tICcuLi9jb25zdGFudHMvZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBQQUdFX0xFVkVMX0FQSV9DT05GSUcsXHJcbiAgQ09NUE9ORU5UX0xFVkVMX0FQSV9DT05GSUcsXHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25maWcuY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxFcnJvclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBnbG9iYWxFcnJvciQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIGxvY2FsRXJyb3IkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIHBhZ2VMZXZlbEFwaUNvbmZpZyA9IFBBR0VfTEVWRUxfQVBJX0NPTkZJRztcclxuICBwcml2YXRlIGNvbXBvbmVudExldmVsQXBpQ29uZmlnID0gQ09NUE9ORU5UX0xFVkVMX0FQSV9DT05GSUc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTb2Z0RXJyb3JzKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55PiB8IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBjb25zdCB4RGF0YSA9IGV2ZW50LmhlYWRlcnMuZ2V0KCdYLURhdGEnKTtcclxuXHJcbiAgICBpZiAoeERhdGEpIHtcclxuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoeERhdGEpO1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2RlID0gcGFyc2VkRGF0YS5zdGF0dXNDb2RlO1xyXG4gICAgICBjb25zdCBzdGF0dXNNZXNzYWdlID0gcGFyc2VkRGF0YS5tZXNzYWdlO1xyXG5cclxuICAgICAgaWYgKHN0YXR1c0NvZGUgJiYgc3RhdHVzQ29kZSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLnNob3coc3RhdHVzTWVzc2FnZSB8fCAnRXJyb3Igb2NjdXJyZWQnLCAnZXJyb3InKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmlzVW5hdXRoZW50aWNhdGVkKGVycm9yKSB8fFxyXG4gICAgICB0aGlzLmlzVW5hdXRob3JpemVkQWNjZXNzKGVycm9yKSB8fFxyXG4gICAgICB0aGlzLmlzTmV0d29ya1VuYXZhaWxhYmxlKGVycm9yKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucHVibGlzaEdsb2JhbEVycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NlcnZlckVycm9yKGVycm9yKSkge1xyXG4gICAgICB0aGlzLmhhbmRsZVNlcnZlckVycm9yKGVycm9yLCByZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU29mdEVycm9ycyhlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTZXJ2ZXJFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNlcnZlckVycm9yQ29kZXMgPSBbXHJcbiAgICAgIEVycm9yU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yLFxyXG4gICAgICBFcnJvclN0YXR1c0NvZGUuU2VydmljZVVuYXZhaWxhYmxlLFxyXG4gICAgICBFcnJvclN0YXR1c0NvZGUuQmFkR2F0ZXdheSxcclxuICAgICAgRXJyb3JTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0LFxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gc2VydmVyRXJyb3JDb2Rlcy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1VuYXV0aGVudGljYXRlZChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IEVycm9yU3RhdHVzQ29kZS5VbmF1dGhlbnRpY2F0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVW5hdXRob3JpemVkQWNjZXNzKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cyA9PT0gRXJyb3JTdGF0dXNDb2RlLlVuYXV0aG9yaXplZEFjY2VzcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNOZXR3b3JrVW5hdmFpbGFibGUoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzID09PSBFcnJvclN0YXR1c0NvZGUuTmV0d29ya1VuYXZhaWxhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTZXJ2ZXJFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApIHtcclxuICAgIGlmICh0aGlzLmlzUGFnZUxldmVsRXJyb3IoZXJyb3IsIHJlcXVlc3QpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdwYWdlIGxldmVsIGVycm9yJyk7XHJcbiAgICAgIHRoaXMucHVibGlzaEdsb2JhbEVycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBvbmVudExldmVsRXJyb3IoZXJyb3IsIHJlcXVlc3QpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdjb21wb25lbnQgbGV2ZWwgZXJyb3InKTtcclxuICAgICAgdGhpcy5wdWJsaXNoTG9jYWxFcnJvcihlcnJvciwgcmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHB1Ymxpc2hHbG9iYWxFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIHRoaXMuZ2xvYmFsRXJyb3IkLm5leHQoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwdWJsaXNoTG9jYWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApIHtcclxuICAgIHRoaXMubG9jYWxFcnJvciQubmV4dCh7IGVycm9yLCByZXF1ZXN0IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1BhZ2VMZXZlbEVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgeyBtZXRob2QsIHBhdGgsIHF1ZXJ5LCBib2R5IH0gPSB0aGlzLnBhcnNlUmVxdWVzdChyZXF1ZXN0KTtcclxuICAgIGNvbnN0IHBhZ2VDb2RlID0gdGhpcy5nZXRQYWdlQ29kZSgpO1xyXG5cclxuICAgIGNvbnN0IGlzQ29uZmlnTWF0Y2hlZCA9IHRoaXMucGFnZUxldmVsQXBpQ29uZmlnLnNvbWUoKGFwaUNvbmZpZykgPT4ge1xyXG4gICAgICBpZiAoYXBpQ29uZmlnLm1ldGhvZCAhPT0gbWV0aG9kKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGlmIChhcGlDb25maWcucGF0aCAhPT0gcGF0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBpc1F1ZXJ5U3Vic2V0ID0gdGhpcy51dGlsU2VydmljZS5pc0pzb25TdWJzZXQoXHJcbiAgICAgICAgYXBpQ29uZmlnLnF1ZXJ5LFxyXG4gICAgICAgIHF1ZXJ5XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghaXNRdWVyeVN1YnNldCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBpc0JvZHlNYXRjaCA9IHRoaXMudXRpbFNlcnZpY2UuaXNKc29uU3Vic2V0KGFwaUNvbmZpZy5ib2R5LCBib2R5KTtcclxuICAgICAgaWYgKCFpc0JvZHlNYXRjaCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gYXBpQ29uZmlnLnBhZ2VDb2Rlcy5pbmNsdWRlcyhwYWdlQ29kZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc0NvbmZpZ01hdGNoZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29tcG9uZW50TGV2ZWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHsgbWV0aG9kLCB1cmw6IHBhdGgsIHBhcmFtcywgYm9keSB9ID0gcmVxdWVzdDtcclxuICAgIGNvbnN0IHF1ZXJ5OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICBwYXJhbXMua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBxdWVyeVtrZXldID0gcGFyYW1zLmdldChrZXkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmxvZygncXVlcnknLCBxdWVyeSwgJ2JvZHknLCBib2R5LCAncGF0aCcsIHBhdGgsICdtZXRob2QnLCBtZXRob2QsICdwYXJhbXMnLCBwYXJhbXMpO1xyXG4gICAgY29uc3QgaXNDb25maWdGb3VuZCA9IHRoaXMuY29tcG9uZW50TGV2ZWxBcGlDb25maWcuc29tZSgoYXBpQ29uZmlnKSA9PiB7XHJcbiAgICAgIGlmIChhcGlDb25maWcubWV0aG9kICE9PSBtZXRob2QpIHJldHVybiBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coJ2FwaUNvbmZpZy5wYXRoJywgYXBpQ29uZmlnLnBhdGgsIHBhdGguaW5jbHVkZXMoYXBpQ29uZmlnLnBhdGgpKTtcclxuICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKGFwaUNvbmZpZy5wYXRoKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBpc1F1ZXJ5U3Vic2V0ID0gdGhpcy51dGlsU2VydmljZS5pc0pzb25TdWJzZXQoXHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgYXBpQ29uZmlnLnF1ZXJ5XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghaXNRdWVyeVN1YnNldCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAoYXBpQ29uZmlnLmJvZHkpIHtcclxuICAgICAgICBjb25zdCBpc0JvZHlNYXRjaCA9IHRoaXMudXRpbFNlcnZpY2UuaXNKc29uU3Vic2V0KGFwaUNvbmZpZy5ib2R5LCBib2R5KTtcclxuICAgICAgICBpZiAoIWlzQm9keU1hdGNoKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc0NvbmZpZ0ZvdW5kO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZVJlcXVlc3QocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xyXG4gICAgY29uc3QgeyBtZXRob2QsIHVybDogcGF0aCwgcGFyYW1zLCBib2R5IH0gPSByZXF1ZXN0O1xyXG4gICAgY29uc3QgcXVlcnk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIHBhcmFtcy5rZXlzKCkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHF1ZXJ5W2tleV0gPSBwYXJhbXMuZ2V0KGtleSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7IG1ldGhvZCwgcGF0aCwgcXVlcnksIGJvZHkgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFnZUNvZGUoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290LmZpcnN0Q2hpbGQ7XHJcbiAgICByZXR1cm4gY3VycmVudFJvdXRlPy5kYXRhPy5wYWdlQ29kZTtcclxuICB9XHJcbn1cclxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9nbG9iYWwtZXJyb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTlELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsMEJBQTBCLEdBQzNCLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBSzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFDVSxlQUFnQyxFQUNoQyxXQUF5QixFQUN6QixNQUFjO1FBRmQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFjO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUakIsaUJBQVksR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXpDLHVCQUFrQixHQUFHLHFCQUFxQixDQUFDO1FBQzNDLDRCQUF1QixHQUFHLDBCQUEwQixDQUFDO0lBTTFELENBQUM7SUFFRyxnQkFBZ0IsQ0FBQyxLQUE0QztRQUNsRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUN6QyxNQUFNLGFBQWEsR0FBRyxVQUFV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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdEUsT0FBTyxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUN0QyxDQUFDOzsrR0F0SlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwUmVzcG9uc2UsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBFcnJvclN0YXR1c0NvZGUgfSBmcm9tICcuLi90eXBlcy9nbG9iYWwtZXJyb3IudHlwZXMnO1xyXG5pbXBvcnQgeyBFUlJPUl9DT05GSUcgfSBmcm9tICcuLi9jb25zdGFudHMvZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBQQUdFX0xFVkVMX0FQSV9DT05GSUcsXHJcbiAgQ09NUE9ORU5UX0xFVkVMX0FQSV9DT05GSUcsXHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25maWcuY29uc3RhbnRzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxFcnJvclNlcnZpY2Uge1xyXG4gIHB1YmxpYyBnbG9iYWxFcnJvciQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIGxvY2FsRXJyb3IkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIHBhZ2VMZXZlbEFwaUNvbmZpZyA9IFBBR0VfTEVWRUxfQVBJX0NPTkZJRztcclxuICBwcml2YXRlIGNvbXBvbmVudExldmVsQXBpQ29uZmlnID0gQ09NUE9ORU5UX0xFVkVMX0FQSV9DT05GSUc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTb2Z0RXJyb3JzKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55PiB8IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBjb25zdCB4RGF0YSA9IGV2ZW50LmhlYWRlcnMuZ2V0KCdYLURhdGEnKTtcclxuXHJcbiAgICBpZiAoeERhdGEpIHtcclxuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoeERhdGEpO1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2RlID0gcGFyc2VkRGF0YS5zdGF0dXNDb2RlO1xyXG4gICAgICBjb25zdCBzdGF0dXNNZXNzYWdlID0gcGFyc2VkRGF0YS5tZXNzYWdlO1xyXG5cclxuICAgICAgaWYgKHN0YXR1c0NvZGUgJiYgc3RhdHVzQ29kZSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLnNob3coc3RhdHVzTWVzc2FnZSB8fCAnRXJyb3Igb2NjdXJyZWQnLCAnZXJyb3InKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmlzVW5hdXRoZW50aWNhdGVkKGVycm9yKSB8fFxyXG4gICAgICB0aGlzLmlzVW5hdXRob3JpemVkQWNjZXNzKGVycm9yKSB8fFxyXG4gICAgICB0aGlzLmlzTmV0d29ya1VuYXZhaWxhYmxlKGVycm9yKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucHVibGlzaEdsb2JhbEVycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NlcnZlckVycm9yKGVycm9yKSkge1xyXG4gICAgICB0aGlzLmhhbmRsZVNlcnZlckVycm9yKGVycm9yLCByZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlU29mdEVycm9ycyhlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTZXJ2ZXJFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNlcnZlckVycm9yQ29kZXMgPSBbXHJcbiAgICAgIEVycm9yU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yLFxyXG4gICAgICBFcnJvclN0YXR1c0NvZGUuU2VydmljZVVuYXZhaWxhYmxlLFxyXG4gICAgICBFcnJvclN0YXR1c0NvZGUuQmFkR2F0ZXdheSxcclxuICAgICAgRXJyb3JTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0LFxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gc2VydmVyRXJyb3JDb2Rlcy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1VuYXV0aGVudGljYXRlZChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IEVycm9yU3RhdHVzQ29kZS5VbmF1dGhlbnRpY2F0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVW5hdXRob3JpemVkQWNjZXNzKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cyA9PT0gRXJyb3JTdGF0dXNDb2RlLlVuYXV0aG9yaXplZEFjY2VzcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNOZXR3b3JrVW5hdmFpbGFibGUoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzID09PSBFcnJvclN0YXR1c0NvZGUuTmV0d29ya1VuYXZhaWxhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTZXJ2ZXJFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApIHtcclxuICAgIGlmICh0aGlzLmlzUGFnZUxldmVsRXJyb3IoZXJyb3IsIHJlcXVlc3QpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdwYWdlIGxldmVsIGVycm9yJyk7XHJcbiAgICAgIHRoaXMucHVibGlzaEdsb2JhbEVycm9yKGVycm9yKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBvbmVudExldmVsRXJyb3IoZXJyb3IsIHJlcXVlc3QpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdjb21wb25lbnQgbGV2ZWwgZXJyb3InKTtcclxuICAgICAgdGhpcy5wdWJsaXNoTG9jYWxFcnJvcihlcnJvciwgcmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHB1Ymxpc2hHbG9iYWxFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIHRoaXMuZ2xvYmFsRXJyb3IkLm5leHQoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwdWJsaXNoTG9jYWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApIHtcclxuICAgIHRoaXMubG9jYWxFcnJvciQubmV4dCh7IGVycm9yLCByZXF1ZXN0IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1BhZ2VMZXZlbEVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgeyBtZXRob2QsIHBhdGgsIHF1ZXJ5LCBib2R5IH0gPSB0aGlzLnBhcnNlUmVxdWVzdChyZXF1ZXN0KTtcclxuICAgIGNvbnN0IHBhZ2VDb2RlID0gdGhpcy5nZXRQYWdlQ29kZSgpO1xyXG5cclxuICAgIGNvbnN0IGlzQ29uZmlnTWF0Y2hlZCA9IHRoaXMucGFnZUxldmVsQXBpQ29uZmlnLnNvbWUoKGFwaUNvbmZpZykgPT4ge1xyXG4gICAgICBpZiAoYXBpQ29uZmlnLm1ldGhvZCAhPT0gbWV0aG9kKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGlmIChhcGlDb25maWcucGF0aCAhPT0gcGF0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBpc1F1ZXJ5U3Vic2V0ID0gdGhpcy51dGlsU2VydmljZS5pc0pzb25TdWJzZXQoXHJcbiAgICAgICAgYXBpQ29uZmlnLnF1ZXJ5LFxyXG4gICAgICAgIHF1ZXJ5XHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghaXNRdWVyeVN1YnNldCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBpc0JvZHlNYXRjaCA9IHRoaXMudXRpbFNlcnZpY2UuaXNKc29uU3Vic2V0KGFwaUNvbmZpZy5ib2R5LCBib2R5KTtcclxuICAgICAgaWYgKCFpc0JvZHlNYXRjaCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gYXBpQ29uZmlnLnBhZ2VDb2Rlcy5pbmNsdWRlcyhwYWdlQ29kZSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc0NvbmZpZ01hdGNoZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29tcG9uZW50TGV2ZWxFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHsgbWV0aG9kLCB1cmw6IHBhdGgsIHBhcmFtcywgYm9keSB9ID0gcmVxdWVzdDtcclxuICAgIGNvbnN0IHF1ZXJ5OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICBwYXJhbXMua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBxdWVyeVtrZXldID0gcGFyYW1zLmdldChrZXkpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBpc0NvbmZpZ0ZvdW5kID0gdGhpcy5jb21wb25lbnRMZXZlbEFwaUNvbmZpZy5zb21lKChhcGlDb25maWcpID0+IHtcclxuICAgICAgaWYgKGFwaUNvbmZpZy5tZXRob2QgIT09IG1ldGhvZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAoIXBhdGguaW5jbHVkZXMoYXBpQ29uZmlnLnBhdGgpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGlmIChhcGlDb25maWcucXVlcnkpIHtcclxuICAgICAgICBjb25zdCBpc1F1ZXJ5U3Vic2V0ID0gdGhpcy51dGlsU2VydmljZS5pc0pzb25TdWJzZXQoXHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIGFwaUNvbmZpZy5xdWVyeVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKCFpc1F1ZXJ5U3Vic2V0KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFwaUNvbmZpZy5ib2R5KSB7XHJcbiAgICAgICAgY29uc3QgaXNCb2R5TWF0Y2ggPSB0aGlzLnV0aWxTZXJ2aWNlLmlzSnNvblN1YnNldChhcGlDb25maWcuYm9keSwgYm9keSk7XHJcbiAgICAgICAgaWYgKCFpc0JvZHlNYXRjaCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXNDb25maWdGb3VuZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VSZXF1ZXN0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pIHtcclxuICAgIGNvbnN0IHsgbWV0aG9kLCB1cmw6IHBhdGgsIHBhcmFtcywgYm9keSB9ID0gcmVxdWVzdDtcclxuICAgIGNvbnN0IHF1ZXJ5OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICBwYXJhbXMua2V5cygpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBxdWVyeVtrZXldID0gcGFyYW1zLmdldChrZXkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4geyBtZXRob2QsIHBhdGgsIHF1ZXJ5LCBib2R5IH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2VDb2RlKCkge1xyXG4gICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdC5maXJzdENoaWxkO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRSb3V0ZT8uZGF0YT8ucGFnZUNvZGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -189,7 +189,7 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
method: 'POST',
|
|
192
|
-
path: '/organization_post
|
|
192
|
+
path: '/organization_post?mode=memberDetailsbyIds',
|
|
193
193
|
query: null,
|
|
194
194
|
body: null,
|
|
195
195
|
},
|
|
@@ -213,8 +213,8 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
215
|
method: 'POST',
|
|
216
|
-
path: '
|
|
217
|
-
query:
|
|
216
|
+
path: 'risk/list',
|
|
217
|
+
query: null,
|
|
218
218
|
body: null,
|
|
219
219
|
},
|
|
220
220
|
{
|
|
@@ -271,6 +271,18 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
271
271
|
query: null,
|
|
272
272
|
body: null,
|
|
273
273
|
},
|
|
274
|
+
{
|
|
275
|
+
method: 'GET',
|
|
276
|
+
path: '/program/subCategories',
|
|
277
|
+
query: null,
|
|
278
|
+
body: null,
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
method: 'POST',
|
|
282
|
+
path: '/Assessment/?mode=assessment/getAssessmentById',
|
|
283
|
+
query: null,
|
|
284
|
+
body: null,
|
|
285
|
+
},
|
|
274
286
|
];
|
|
275
287
|
|
|
276
288
|
class SnackBarService {
|
|
@@ -413,16 +425,16 @@ class GlobalErrorService {
|
|
|
413
425
|
params.keys().forEach((key) => {
|
|
414
426
|
query[key] = params.get(key);
|
|
415
427
|
});
|
|
416
|
-
console.log('query', query, 'body', body, 'path', path, 'method', method, 'params', params);
|
|
417
428
|
const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {
|
|
418
429
|
if (apiConfig.method !== method)
|
|
419
430
|
return false;
|
|
420
|
-
console.log('apiConfig.path', apiConfig.path, path.includes(apiConfig.path));
|
|
421
431
|
if (!path.includes(apiConfig.path))
|
|
422
432
|
return false;
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
433
|
+
if (apiConfig.query) {
|
|
434
|
+
const isQuerySubset = this.utilService.isJsonSubset(query, apiConfig.query);
|
|
435
|
+
if (!isQuerySubset)
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
426
438
|
if (apiConfig.body) {
|
|
427
439
|
const isBodyMatch = this.utilService.isJsonSubset(apiConfig.body, body);
|
|
428
440
|
if (!isBodyMatch)
|
|
@@ -1417,4 +1429,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
1417
1429
|
*/
|
|
1418
1430
|
|
|
1419
1431
|
export { AuthService, ChunkUnavailableComponent, ComponentLevelServerErrorComponent, ErrorModalComponent, FOR_ROOT_SENTRY_OPTIONS_TOKEN, GlobalErrorService, HttpReqInterceptor, PageNotFoundComponent, RouterService, ServerErrorComponent, SessionExpiredComponent, UnauthorizedComponent, VcErrorHandlersComponent, VcErrorHandlersModule, VcErrorHandlersService };
|
|
1420
|
-
//# sourceMappingURL=vc-error-handlers.mjs.map
|
|
@@ -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/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?mode=risk/list',\r\n query: { queryPage: 'compliance_workroom' },\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","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 console.log('query', query, 'body', body, 'path', path, 'method', method, 'params', params);\r\n const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {\r\n if (apiConfig.method !== method) return false;\r\n console.log('apiConfig.path', apiConfig.path, path.includes(apiConfig.path));\r\n if (!path.includes(apiConfig.path)) return false;\r\n const isQuerySubset = this.utilService.isJsonSubset(\r\n query,\r\n apiConfig.query\r\n );\r\n if (!isQuerySubset) return false;\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 = '';\r\n type = 'alert';\r\n icons: any = {\r\n success: '',\r\n warning: '',\r\n info: '',\r\n alert: '',\r\n error: '',\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 <!--  -->\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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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","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\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 ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\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 }\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\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],\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 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/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/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 = '';\r\n type = 'alert';\r\n icons: any = {\r\n success: '',\r\n warning: '',\r\n info: '',\r\n alert: '',\r\n error: '',\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 <!--  -->\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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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","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\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 ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\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 }\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\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],\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 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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"}
|
|
@@ -189,7 +189,7 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
method: 'POST',
|
|
192
|
-
path: '/organization_post
|
|
192
|
+
path: '/organization_post?mode=memberDetailsbyIds',
|
|
193
193
|
query: null,
|
|
194
194
|
body: null,
|
|
195
195
|
},
|
|
@@ -213,8 +213,8 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
215
|
method: 'POST',
|
|
216
|
-
path: '
|
|
217
|
-
query:
|
|
216
|
+
path: 'risk/list',
|
|
217
|
+
query: null,
|
|
218
218
|
body: null,
|
|
219
219
|
},
|
|
220
220
|
{
|
|
@@ -271,6 +271,18 @@ const COMPONENT_LEVEL_API_CONFIG = [
|
|
|
271
271
|
query: null,
|
|
272
272
|
body: null,
|
|
273
273
|
},
|
|
274
|
+
{
|
|
275
|
+
method: 'GET',
|
|
276
|
+
path: '/program/subCategories',
|
|
277
|
+
query: null,
|
|
278
|
+
body: null,
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
method: 'POST',
|
|
282
|
+
path: '/Assessment/?mode=assessment/getAssessmentById',
|
|
283
|
+
query: null,
|
|
284
|
+
body: null,
|
|
285
|
+
},
|
|
274
286
|
];
|
|
275
287
|
|
|
276
288
|
class SnackBarService {
|
|
@@ -413,16 +425,16 @@ class GlobalErrorService {
|
|
|
413
425
|
params.keys().forEach((key) => {
|
|
414
426
|
query[key] = params.get(key);
|
|
415
427
|
});
|
|
416
|
-
console.log('query', query, 'body', body, 'path', path, 'method', method, 'params', params);
|
|
417
428
|
const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {
|
|
418
429
|
if (apiConfig.method !== method)
|
|
419
430
|
return false;
|
|
420
|
-
console.log('apiConfig.path', apiConfig.path, path.includes(apiConfig.path));
|
|
421
431
|
if (!path.includes(apiConfig.path))
|
|
422
432
|
return false;
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
433
|
+
if (apiConfig.query) {
|
|
434
|
+
const isQuerySubset = this.utilService.isJsonSubset(query, apiConfig.query);
|
|
435
|
+
if (!isQuerySubset)
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
426
438
|
if (apiConfig.body) {
|
|
427
439
|
const isBodyMatch = this.utilService.isJsonSubset(apiConfig.body, body);
|
|
428
440
|
if (!isBodyMatch)
|
|
@@ -1413,4 +1425,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
1413
1425
|
*/
|
|
1414
1426
|
|
|
1415
1427
|
export { AuthService, ChunkUnavailableComponent, ComponentLevelServerErrorComponent, ErrorModalComponent, FOR_ROOT_SENTRY_OPTIONS_TOKEN, GlobalErrorService, HttpReqInterceptor, PageNotFoundComponent, RouterService, ServerErrorComponent, SessionExpiredComponent, UnauthorizedComponent, VcErrorHandlersComponent, VcErrorHandlersModule, VcErrorHandlersService };
|
|
1416
|
-
//# sourceMappingURL=vc-error-handlers.mjs.map
|
|
@@ -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/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?mode=risk/list',\r\n query: { queryPage: 'compliance_workroom' },\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","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 console.log('query', query, 'body', body, 'path', path, 'method', method, 'params', params);\r\n const isConfigFound = this.componentLevelApiConfig.some((apiConfig) => {\r\n if (apiConfig.method !== method) return false;\r\n console.log('apiConfig.path', apiConfig.path, path.includes(apiConfig.path));\r\n if (!path.includes(apiConfig.path)) return false;\r\n const isQuerySubset = this.utilService.isJsonSubset(\r\n query,\r\n apiConfig.query\r\n );\r\n if (!isQuerySubset) return false;\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 = '';\r\n type = 'alert';\r\n icons: any = {\r\n success: '',\r\n warning: '',\r\n info: '',\r\n alert: '',\r\n error: '',\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 <!--  -->\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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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","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\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 ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\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 }\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\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],\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 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/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/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 = '';\r\n type = 'alert';\r\n icons: any = {\r\n success: '',\r\n warning: '',\r\n info: '',\r\n alert: '',\r\n error: '',\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 <!--  -->\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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n © {{ 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\"></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","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\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 ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\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 }\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\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],\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 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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"}
|
|
@@ -14,7 +14,6 @@ export declare const COMPONENT_LEVEL_API_CONFIG: ({
|
|
|
14
14
|
path: string;
|
|
15
15
|
query: {
|
|
16
16
|
type: string;
|
|
17
|
-
queryPage?: undefined;
|
|
18
17
|
};
|
|
19
18
|
body: null;
|
|
20
19
|
} | {
|
|
@@ -22,12 +21,4 @@ export declare const COMPONENT_LEVEL_API_CONFIG: ({
|
|
|
22
21
|
path: string;
|
|
23
22
|
query: null;
|
|
24
23
|
body: null;
|
|
25
|
-
} | {
|
|
26
|
-
method: string;
|
|
27
|
-
path: string;
|
|
28
|
-
query: {
|
|
29
|
-
queryPage: string;
|
|
30
|
-
type?: undefined;
|
|
31
|
-
};
|
|
32
|
-
body: null;
|
|
33
24
|
})[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vc-error-handlers",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.96",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": " 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x || 20.x",
|
|
6
6
|
"@angular/core": "13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x || 20.x"
|