@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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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
|
|
2
|
-
|
|
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
|
|
5
|
-
|
|
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;
|