@techextensor/tab-core-utility 2.2.166 → 2.2.167

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==
@@ -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.167",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",