@techextensor/tab-core-utility 2.2.166 → 2.2.168

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,77 @@
1
- export const ServerErrorMessages = {
2
- DELETE_CONFLICT: 'The DELETE statement conflicted with the REFERENCE constraint',
3
- UNIQUE_KEY_CONSTRAINT_USER: "Violation of UNIQUE KEY constraint",
4
- INSUFFICIENT_ACCESS: 'Insufficient Acces',
5
- CONVERSATION_FAILED_STRING_TO_UNIQUEIDENTIFIER: 'Conversation failed when converting from a character string to uniqueidentifier',
1
+ export const ERROR_PATTERNS = {
2
+ // Constraint Violations
3
+ UNIQUE_CONSTRAINT: [
4
+ 'UNIQUE KEY constraint',
5
+ 'Violation of UNIQUE KEY constraint',
6
+ 'Cannot insert duplicate key',
7
+ 'duplicate key value violates unique constraint'
8
+ ],
9
+ FOREIGN_KEY_CONSTRAINT: [
10
+ 'FOREIGN KEY constraint',
11
+ 'conflicted with the FOREIGN KEY constraint',
12
+ 'DELETE statement conflicted with the REFERENCE constraint'
13
+ ],
14
+ PRIMARY_KEY_CONSTRAINT: [
15
+ 'PRIMARY KEY constraint',
16
+ 'Violation of PRIMARY KEY constraint'
17
+ ],
18
+ CHECK_CONSTRAINT: [
19
+ 'CHECK constraint',
20
+ 'conflicted with the CHECK constraint'
21
+ ],
22
+ NOT_NULL_CONSTRAINT: [
23
+ 'NOT NULL constraint',
24
+ 'cannot be null'
25
+ ],
26
+ // Data Conversion
27
+ CONVERSION_FAILED: [
28
+ 'failed when converting',
29
+ 'string to uniqueidentifier',
30
+ 'Conversation failed when converting'
31
+ ],
32
+ // Access & Permissions
33
+ INSUFFICIENT_ACCESS: [
34
+ 'Insufficient access',
35
+ 'permission denied',
36
+ 'access denied'
37
+ ],
38
+ // System Errors
39
+ TIMEOUT_ERROR: ['timeout'],
40
+ DEADLOCK_ERROR: ['deadlock'],
41
+ SERVER_ERROR: ['internal server error', '500']
6
42
  };
7
- export const UserFriendlyMessages = {
8
- [ServerErrorMessages['DELETE_CONFLICT']]: 'Unable to Delete Record. Please check associated records and try again.',
9
- [ServerErrorMessages['UNIQUE_KEY_CONSTRAINT_USER']]: 'Username already exist.',
10
- [ServerErrorMessages['INSUFFICIENT_ACCESS']]: "You don't have enough permission to perform this action.",
11
- [ServerErrorMessages['CONVERSATION_FAILED_STRING_TO_UNIQUEIDENTIFIER']]: 'Something went wrong!',
43
+ export const USER_FRIENDLY_MESSAGES = {
44
+ UNIQUE_CONSTRAINT: 'This entry already exists. Please use a different value.',
45
+ FOREIGN_KEY_CONSTRAINT: 'Cannot delete this record because it is being used by other data.',
46
+ PRIMARY_KEY_CONSTRAINT: 'A record with this identifier already exists.',
47
+ CHECK_CONSTRAINT: 'The data provided does not meet validation requirements.',
48
+ NOT_NULL_CONSTRAINT: 'Required fields cannot be left empty.',
49
+ CONVERSION_FAILED: 'Invalid data format. Please check your input.',
50
+ INSUFFICIENT_ACCESS: "You don't have enough permission to perform this action.",
51
+ TIMEOUT_ERROR: 'Request timed out. Please try again.',
52
+ DEADLOCK_ERROR: 'System is busy. Please try again in a moment.',
53
+ SERVER_ERROR: 'Server error occurred. Please try again later.',
54
+ DEFAULT: 'Something went wrong. Please try again.'
12
55
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY29uc3RhbnRzL2Vycm9yLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUU1QjtJQUNGLGVBQWUsRUFDYiwrREFBK0Q7SUFDL0QsMEJBQTBCLEVBQUUsb0NBQW9DO0lBQ2hFLG1CQUFtQixFQUFFLG9CQUFvQjtJQUMzQyw4Q0FBOEMsRUFDNUMsaUZBQWlGO0NBQ3BGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDdEMseUVBQXlFO0lBQzNFLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxFQUNqRCx5QkFBeUI7SUFDM0IsQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQzFDLDBEQUEwRDtJQUM1RCxDQUFDLG1CQUFtQixDQUFDLGdEQUFnRCxDQUFDLENBQUMsRUFDckUsdUJBQXVCO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU2VydmVyRXJyb3JNZXNzYWdlczoge1xyXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcclxufSA9IHtcclxuICBERUxFVEVfQ09ORkxJQ1Q6XHJcbiAgICAnVGhlIERFTEVURSBzdGF0ZW1lbnQgY29uZmxpY3RlZCB3aXRoIHRoZSBSRUZFUkVOQ0UgY29uc3RyYWludCcsXHJcbiAgICBVTklRVUVfS0VZX0NPTlNUUkFJTlRfVVNFUjogXCJWaW9sYXRpb24gb2YgVU5JUVVFIEtFWSBjb25zdHJhaW50XCIsICAgXHJcbiAgICBJTlNVRkZJQ0lFTlRfQUNDRVNTOiAnSW5zdWZmaWNpZW50IEFjY2VzJyxcclxuICBDT05WRVJTQVRJT05fRkFJTEVEX1NUUklOR19UT19VTklRVUVJREVOVElGSUVSOlxyXG4gICAgJ0NvbnZlcnNhdGlvbiBmYWlsZWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHVuaXF1ZWlkZW50aWZpZXInLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFVzZXJGcmllbmRseU1lc3NhZ2VzID0ge1xyXG4gIFtTZXJ2ZXJFcnJvck1lc3NhZ2VzWydERUxFVEVfQ09ORkxJQ1QnXV06XHJcbiAgICAnVW5hYmxlIHRvIERlbGV0ZSBSZWNvcmQuIFBsZWFzZSBjaGVjayBhc3NvY2lhdGVkIHJlY29yZHMgYW5kIHRyeSBhZ2Fpbi4nLFxyXG4gIFtTZXJ2ZXJFcnJvck1lc3NhZ2VzWydVTklRVUVfS0VZX0NPTlNUUkFJTlRfVVNFUiddXTpcclxuICAgICdVc2VybmFtZSBhbHJlYWR5IGV4aXN0LicsXHJcbiAgW1NlcnZlckVycm9yTWVzc2FnZXNbJ0lOU1VGRklDSUVOVF9BQ0NFU1MnXV06XHJcbiAgICBcIllvdSBkb24ndCBoYXZlIGVub3VnaCBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXCIsXHJcbiAgW1NlcnZlckVycm9yTWVzc2FnZXNbJ0NPTlZFUlNBVElPTl9GQUlMRURfU1RSSU5HX1RPX1VOSVFVRUlERU5USUZJRVInXV06XHJcbiAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmchJyxcclxufTtcclxuIl19
56
+ /**
57
+ * Get user-friendly error message from server error
58
+ * @param errorMessage - Raw error message from server
59
+ * @returns User-friendly error message or null if no match
60
+ */
61
+ export function getUserFriendlyErrorMessage(errorMessage) {
62
+ if (!errorMessage) {
63
+ return null;
64
+ }
65
+ const normalizedError = errorMessage.toLowerCase();
66
+ // Check each error pattern
67
+ for (const [errorType, patterns] of Object.entries(ERROR_PATTERNS)) {
68
+ for (const pattern of patterns) {
69
+ if (normalizedError.includes(pattern.toLowerCase())) {
70
+ return USER_FRIENDLY_MESSAGES[errorType];
71
+ }
72
+ }
73
+ }
74
+ // Return null if no pattern matches (don't show unknown errors)
75
+ return null;
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY29uc3RhbnRzL2Vycm9yLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1Qix3QkFBd0I7SUFDeEIsaUJBQWlCLEVBQUU7UUFDakIsdUJBQXVCO1FBQ3ZCLG9DQUFvQztRQUNwQyw2QkFBNkI7UUFDN0IsZ0RBQWdEO0tBQ2pEO0lBQ0Qsc0JBQXNCLEVBQUU7UUFDdEIsd0JBQXdCO1FBQ3hCLDRDQUE0QztRQUM1QywyREFBMkQ7S0FDNUQ7SUFDRCxzQkFBc0IsRUFBRTtRQUN0Qix3QkFBd0I7UUFDeEIscUNBQXFDO0tBQ3RDO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsa0JBQWtCO1FBQ2xCLHNDQUFzQztLQUN2QztJQUNELG1CQUFtQixFQUFFO1FBQ25CLHFCQUFxQjtRQUNyQixnQkFBZ0I7S0FDakI7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUU7UUFDakIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QixxQ0FBcUM7S0FDdEM7SUFFRCx1QkFBdUI7SUFDdkIsbUJBQW1CLEVBQUU7UUFDbkIscUJBQXFCO1FBQ3JCLG1CQUFtQjtRQUNuQixlQUFlO0tBQ2hCO0lBRUQsZ0JBQWdCO0lBQ2hCLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMxQixjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUM7SUFDNUIsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxpQkFBaUIsRUFBRSwwREFBMEQ7SUFDN0Usc0JBQXNCLEVBQUUsbUVBQW1FO0lBQzNGLHNCQUFzQixFQUFFLCtDQUErQztJQUN2RSxnQkFBZ0IsRUFBRSwwREFBMEQ7SUFDNUUsbUJBQW1CLEVBQUUsdUNBQXVDO0lBQzVELGlCQUFpQixFQUFFLCtDQUErQztJQUNsRSxtQkFBbUIsRUFBRSwwREFBMEQ7SUFDL0UsYUFBYSxFQUFFLHNDQUFzQztJQUNyRCxjQUFjLEVBQUUsK0NBQStDO0lBQy9ELFlBQVksRUFBRSxnREFBZ0Q7SUFDOUQsT0FBTyxFQUFFLHlDQUF5QztDQUNuRCxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxZQUFvQjtJQUM5RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRW5ELDJCQUEyQjtJQUMzQixLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ25FLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELE9BQU8sc0JBQXNCLENBQUMsU0FBZ0QsQ0FBQyxDQUFDO1lBQ2xGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRVJST1JfUEFUVEVSTlMgPSB7XHJcbiAgLy8gQ29uc3RyYWludCBWaW9sYXRpb25zXHJcbiAgVU5JUVVFX0NPTlNUUkFJTlQ6IFtcclxuICAgICdVTklRVUUgS0VZIGNvbnN0cmFpbnQnLFxyXG4gICAgJ1Zpb2xhdGlvbiBvZiBVTklRVUUgS0VZIGNvbnN0cmFpbnQnLFxyXG4gICAgJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIGtleScsXHJcbiAgICAnZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCdcclxuICBdLFxyXG4gIEZPUkVJR05fS0VZX0NPTlNUUkFJTlQ6IFtcclxuICAgICdGT1JFSUdOIEtFWSBjb25zdHJhaW50JyxcclxuICAgICdjb25mbGljdGVkIHdpdGggdGhlIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQnLFxyXG4gICAgJ0RFTEVURSBzdGF0ZW1lbnQgY29uZmxpY3RlZCB3aXRoIHRoZSBSRUZFUkVOQ0UgY29uc3RyYWludCdcclxuICBdLFxyXG4gIFBSSU1BUllfS0VZX0NPTlNUUkFJTlQ6IFtcclxuICAgICdQUklNQVJZIEtFWSBjb25zdHJhaW50JyxcclxuICAgICdWaW9sYXRpb24gb2YgUFJJTUFSWSBLRVkgY29uc3RyYWludCdcclxuICBdLFxyXG4gIENIRUNLX0NPTlNUUkFJTlQ6IFtcclxuICAgICdDSEVDSyBjb25zdHJhaW50JyxcclxuICAgICdjb25mbGljdGVkIHdpdGggdGhlIENIRUNLIGNvbnN0cmFpbnQnXHJcbiAgXSxcclxuICBOT1RfTlVMTF9DT05TVFJBSU5UOiBbXHJcbiAgICAnTk9UIE5VTEwgY29uc3RyYWludCcsXHJcbiAgICAnY2Fubm90IGJlIG51bGwnXHJcbiAgXSxcclxuXHJcbiAgLy8gRGF0YSBDb252ZXJzaW9uXHJcbiAgQ09OVkVSU0lPTl9GQUlMRUQ6IFtcclxuICAgICdmYWlsZWQgd2hlbiBjb252ZXJ0aW5nJyxcclxuICAgICdzdHJpbmcgdG8gdW5pcXVlaWRlbnRpZmllcicsXHJcbiAgICAnQ29udmVyc2F0aW9uIGZhaWxlZCB3aGVuIGNvbnZlcnRpbmcnXHJcbiAgXSxcclxuXHJcbiAgLy8gQWNjZXNzICYgUGVybWlzc2lvbnNcclxuICBJTlNVRkZJQ0lFTlRfQUNDRVNTOiBbXHJcbiAgICAnSW5zdWZmaWNpZW50IGFjY2VzcycsXHJcbiAgICAncGVybWlzc2lvbiBkZW5pZWQnLFxyXG4gICAgJ2FjY2VzcyBkZW5pZWQnXHJcbiAgXSxcclxuXHJcbiAgLy8gU3lzdGVtIEVycm9yc1xyXG4gIFRJTUVPVVRfRVJST1I6IFsndGltZW91dCddLFxyXG4gIERFQURMT0NLX0VSUk9SOiBbJ2RlYWRsb2NrJ10sXHJcbiAgU0VSVkVSX0VSUk9SOiBbJ2ludGVybmFsIHNlcnZlciBlcnJvcicsICc1MDAnXVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFVTRVJfRlJJRU5ETFlfTUVTU0FHRVMgPSB7XHJcbiAgVU5JUVVFX0NPTlNUUkFJTlQ6ICdUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3RzLiBQbGVhc2UgdXNlIGEgZGlmZmVyZW50IHZhbHVlLicsXHJcbiAgRk9SRUlHTl9LRVlfQ09OU1RSQUlOVDogJ0Nhbm5vdCBkZWxldGUgdGhpcyByZWNvcmQgYmVjYXVzZSBpdCBpcyBiZWluZyB1c2VkIGJ5IG90aGVyIGRhdGEuJyxcclxuICBQUklNQVJZX0tFWV9DT05TVFJBSU5UOiAnQSByZWNvcmQgd2l0aCB0aGlzIGlkZW50aWZpZXIgYWxyZWFkeSBleGlzdHMuJyxcclxuICBDSEVDS19DT05TVFJBSU5UOiAnVGhlIGRhdGEgcHJvdmlkZWQgZG9lcyBub3QgbWVldCB2YWxpZGF0aW9uIHJlcXVpcmVtZW50cy4nLFxyXG4gIE5PVF9OVUxMX0NPTlNUUkFJTlQ6ICdSZXF1aXJlZCBmaWVsZHMgY2Fubm90IGJlIGxlZnQgZW1wdHkuJyxcclxuICBDT05WRVJTSU9OX0ZBSUxFRDogJ0ludmFsaWQgZGF0YSBmb3JtYXQuIFBsZWFzZSBjaGVjayB5b3VyIGlucHV0LicsXHJcbiAgSU5TVUZGSUNJRU5UX0FDQ0VTUzogXCJZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlwiLFxyXG4gIFRJTUVPVVRfRVJST1I6ICdSZXF1ZXN0IHRpbWVkIG91dC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxyXG4gIERFQURMT0NLX0VSUk9SOiAnU3lzdGVtIGlzIGJ1c3kuIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBtb21lbnQuJyxcclxuICBTRVJWRVJfRVJST1I6ICdTZXJ2ZXIgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyxcclxuICBERUZBVUxUOiAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEdldCB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgZnJvbSBzZXJ2ZXIgZXJyb3JcclxuICogQHBhcmFtIGVycm9yTWVzc2FnZSAtIFJhdyBlcnJvciBtZXNzYWdlIGZyb20gc2VydmVyXHJcbiAqIEByZXR1cm5zIFVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBvciBudWxsIGlmIG5vIG1hdGNoXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckZyaWVuZGx5RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKCFlcnJvck1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgbm9ybWFsaXplZEVycm9yID0gZXJyb3JNZXNzYWdlLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gIC8vIENoZWNrIGVhY2ggZXJyb3IgcGF0dGVyblxyXG4gIGZvciAoY29uc3QgW2Vycm9yVHlwZSwgcGF0dGVybnNdIG9mIE9iamVjdC5lbnRyaWVzKEVSUk9SX1BBVFRFUk5TKSkge1xyXG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XHJcbiAgICAgIGlmIChub3JtYWxpemVkRXJyb3IuaW5jbHVkZXMocGF0dGVybi50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHJldHVybiBVU0VSX0ZSSUVORExZX01FU1NBR0VTW2Vycm9yVHlwZSBhcyBrZXlvZiB0eXBlb2YgVVNFUl9GUklFTkRMWV9NRVNTQUdFU107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJldHVybiBudWxsIGlmIG5vIHBhdHRlcm4gbWF0Y2hlcyAoZG9uJ3Qgc2hvdyB1bmtub3duIGVycm9ycylcclxuICByZXR1cm4gbnVsbDtcclxufSJdfQ==
@@ -56,7 +56,7 @@ export class IdbService {
56
56
  return null;
57
57
  try {
58
58
  const decrypted = this.encryptionService.decrypt(result.data);
59
- return decrypted;
59
+ return typeof decrypted === 'string' ? JSON.parse(decrypted) : decrypted;
60
60
  }
61
61
  catch (error) {
62
62
  return null;
@@ -81,4 +81,4 @@ export class IdbService {
81
81
  type: Injectable,
82
82
  args: [{ providedIn: 'root' }]
83
83
  }], () => [{ type: i1.EncryptionService }], null); })();
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRiLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvaWRiLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQTBCLE1BQU0sS0FBSyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFVdkUsTUFBTSxPQUFPLFVBQVU7SUFLbkIsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFKdkMsV0FBTSxHQUFHLGFBQWEsQ0FBQztRQUN2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBSTNCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxPQUFPLENBQUMsRUFBRTtnQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO29CQUNqRCxFQUFFLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7UUFDaEMsSUFBSSxDQUFDO1lBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtB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O1lBQ3BCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDekQsQ0FBQztJQUNMLENBQUM7MkVBMUVRLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9wZW5EQiwgSURCUERhdGFiYXNlLCBEQlNjaGVtYSB9IGZyb20gJ2lkYic7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgTXlEQiBleHRlbmRzIERCU2NoZW1hIHtcbiAgICBteU9iamVjdFN0b3JlOiB7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogeyBrZXk6IHN0cmluZzsgZGF0YTogc3RyaW5nIH07XG4gICAgfTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJZGJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRiTmFtZSA9ICdUYWJEYXRhYmFzZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYlZlcnNpb24gPSAxO1xuICAgIHByaXZhdGUgZGJQcm9taXNlOiBQcm9taXNlPElEQlBEYXRhYmFzZTxNeURCPj47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSkge1xuICAgICAgICB0aGlzLmRiUHJvbWlzZSA9IG9wZW5EQjxNeURCPih0aGlzLmRiTmFtZSwgdGhpcy5kYlZlcnNpb24sIHtcbiAgICAgICAgICAgIHVwZ3JhZGUoZGIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ215T2JqZWN0U3RvcmUnKSkge1xuICAgICAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScsIHsga2V5UGF0aDogJ2tleScgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0SXRlbUluZGV4ZWREYihrZXksIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBzdG9yaW5nIGRhdGE6ICcgKyBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldEl0ZW1JbmRleGVkRGIoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzZWN1cmVLZXkgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmdldFNlY3VyZUtleShrZXkpO1xuICAgICAgICBjb25zdCBzdHJpbmdEYXRhID0gKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyB8fCAhdGhpcy5lbmNyeXB0aW9uU2VydmljZT8uc2hvdWxkRW5jcnlwdCgpKSA/IGRhdGEgOiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KHN0cmluZ0RhdGEpO1xuXG4gICAgICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kYlByb21pc2U7XG4gICAgICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oJ215T2JqZWN0U3RvcmUnLCAncmVhZHdyaXRlJyk7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKTtcbiAgICAgICAgYXdhaXQgc3RvcmUucHV0KHsga2V5OiBzZWN1cmVLZXksIGRhdGE6IGVuY3J5cHRlZCB9KTtcbiAgICAgICAgYXdhaXQgdHguZG9uZTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0SXRlbUluZGV4ZWREYihrZXkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgcmV0cmlldmluZyBkYXRhOiAnICsgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRJdGVtSW5kZXhlZERiKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgc2VjdXJlS2V5ID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5nZXRTZWN1cmVLZXkoa2V5KTtcbiAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmRiUHJvbWlzZTtcbiAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbignbXlPYmplY3RTdG9yZScsICdyZWFkb25seScpO1xuICAgICAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JlLmdldChzZWN1cmVLZXkpO1xuICAgICAgICBhd2FpdCB0eC5kb25lO1xuXG4gICAgICAgIGlmICghcmVzdWx0Py5kYXRhKSByZXR1cm4gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBjbGVhckluZGV4ZWREQigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kYlByb21pc2U7XG4gICAgICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKCdteU9iamVjdFN0b3JlJywgJ3JlYWR3cml0ZScpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcmUuY2xlYXIoKTtcbiAgICAgICAgICAgIGF3YWl0IHR4LmRvbmU7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGNsZWFyaW5nIEluZGV4ZWREQjogJyArIGVycm9yKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRiLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvaWRiLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQTBCLE1BQU0sS0FBSyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFVdkUsTUFBTSxPQUFPLFVBQVU7SUFLbkIsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFKdkMsV0FBTSxHQUFHLGFBQWEsQ0FBQztRQUN2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBSTNCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxPQUFPLENBQUMsRUFBRTtnQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO29CQUNqRCxFQUFFLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7UUFDaEMsSUFBSSxDQUFDO1lBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtB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S0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUMsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2xCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUN6RCxDQUFDO0lBQ0wsQ0FBQzsyRUExRVEsVUFBVTt1RUFBVixVQUFVLFdBQVYsVUFBVSxtQkFERyxNQUFNOztpRkFDbkIsVUFBVTtjQUR0QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb3BlbkRCLCBJREJQRGF0YWJhc2UsIERCU2NoZW1hIH0gZnJvbSAnaWRiJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXJ2aWNlL2VuY3J5cHRpb24uc2VydmljZSc7XG5cbmludGVyZmFjZSBNeURCIGV4dGVuZHMgREJTY2hlbWEge1xuICAgIG15T2JqZWN0U3RvcmU6IHtcbiAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiB7IGtleTogc3RyaW5nOyBkYXRhOiBzdHJpbmcgfTtcbiAgICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIElkYlNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGJOYW1lID0gJ1RhYkRhdGFiYXNlJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRiVmVyc2lvbiA9IDE7XG4gICAgcHJpdmF0ZSBkYlByb21pc2U6IFByb21pc2U8SURCUERhdGFiYXNlPE15REI+PjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZGJQcm9taXNlID0gb3BlbkRCPE15REI+KHRoaXMuZGJOYW1lLCB0aGlzLmRiVmVyc2lvbiwge1xuICAgICAgICAgICAgdXBncmFkZShkYikge1xuICAgICAgICAgICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnbXlPYmplY3RTdG9yZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJywgeyBrZXlQYXRoOiAna2V5JyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRJdGVtSW5kZXhlZERiKGtleSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIHN0b3JpbmcgZGF0YTogJyArIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0SXRlbUluZGV4ZWREYihrZXk6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHNlY3VyZUtleSA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZ2V0U2VjdXJlS2V5KGtleSk7XG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGEgPSAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnIHx8ICF0aGlzLmVuY3J5cHRpb25TZXJ2aWNlPy5zaG91bGRFbmNyeXB0KCkpID8gZGF0YSA6IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoc3RyaW5nRGF0YSk7XG5cbiAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmRiUHJvbWlzZTtcbiAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbignbXlPYmplY3RTdG9yZScsICdyZWFkd3JpdGUnKTtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpO1xuICAgICAgICBhd2FpdCBzdG9yZS5wdXQoeyBrZXk6IHNlY3VyZUtleSwgZGF0YTogZW5jcnlwdGVkIH0pO1xuICAgICAgICBhd2FpdCB0eC5kb25lO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRJdGVtSW5kZXhlZERiKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciByZXRyaWV2aW5nIGRhdGE6ICcgKyBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldEl0ZW1JbmRleGVkRGIoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBzZWN1cmVLZXkgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmdldFNlY3VyZUtleShrZXkpO1xuICAgICAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuZGJQcm9taXNlO1xuICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKCdteU9iamVjdFN0b3JlJywgJ3JlYWRvbmx5Jyk7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmUuZ2V0KHNlY3VyZUtleSk7XG4gICAgICAgIGF3YWl0IHR4LmRvbmU7XG5cbiAgICAgICAgaWYgKCFyZXN1bHQ/LmRhdGEpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBkZWNyeXB0ZWQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShkZWNyeXB0ZWQpIDogZGVjcnlwdGVkO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuICBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgY2xlYXJJbmRleGVkREIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuZGJQcm9taXNlO1xuICAgICAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbignbXlPYmplY3RTdG9yZScsICdyZWFkd3JpdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3JlLmNsZWFyKCk7XG4gICAgICAgICAgICBhd2FpdCB0eC5kb25lO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBjbGVhcmluZyBJbmRleGVkREI6ICcgKyBlcnJvcilcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5cbiJdfQ==
@@ -1,6 +1,31 @@
1
- export declare const ServerErrorMessages: {
2
- [key: string]: string;
1
+ export declare const ERROR_PATTERNS: {
2
+ UNIQUE_CONSTRAINT: string[];
3
+ FOREIGN_KEY_CONSTRAINT: string[];
4
+ PRIMARY_KEY_CONSTRAINT: string[];
5
+ CHECK_CONSTRAINT: string[];
6
+ NOT_NULL_CONSTRAINT: string[];
7
+ CONVERSION_FAILED: string[];
8
+ INSUFFICIENT_ACCESS: string[];
9
+ TIMEOUT_ERROR: string[];
10
+ DEADLOCK_ERROR: string[];
11
+ SERVER_ERROR: string[];
3
12
  };
4
- export declare const UserFriendlyMessages: {
5
- [x: string]: string;
13
+ export declare const USER_FRIENDLY_MESSAGES: {
14
+ UNIQUE_CONSTRAINT: string;
15
+ FOREIGN_KEY_CONSTRAINT: string;
16
+ PRIMARY_KEY_CONSTRAINT: string;
17
+ CHECK_CONSTRAINT: string;
18
+ NOT_NULL_CONSTRAINT: string;
19
+ CONVERSION_FAILED: string;
20
+ INSUFFICIENT_ACCESS: string;
21
+ TIMEOUT_ERROR: string;
22
+ DEADLOCK_ERROR: string;
23
+ SERVER_ERROR: string;
24
+ DEFAULT: string;
6
25
  };
26
+ /**
27
+ * Get user-friendly error message from server error
28
+ * @param errorMessage - Raw error message from server
29
+ * @returns User-friendly error message or null if no match
30
+ */
31
+ export declare function getUserFriendlyErrorMessage(errorMessage: string): string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.166",
3
+ "version": "2.2.168",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",