@techextensor/tab-core-utility 2.2.165 → 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==
@@ -12,9 +12,9 @@ export class AppHelper {
12
12
  * Rebuilds the application.
13
13
  * @returns Result of the rebuild operation
14
14
  */
15
- rebuildApp() {
16
- const headers = getHeaders();
17
- return this.apiService.post(API.buildApp, {}, headers);
15
+ rebuildApp(payload = {}, headers) {
16
+ headers = getHeaders(headers);
17
+ return this.apiService.post(API.buildApp, payload, headers);
18
18
  }
19
19
  // /**
20
20
  // * Publishes the application.
@@ -210,4 +210,4 @@ export class AppHelper {
210
210
  type: Injectable,
211
211
  args: [{ providedIn: 'root' }]
212
212
  }], null, null); })();
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vYXBwLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sU0FBUztJQUR0QjtRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBeU5sRDtJQXZOQzs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTTtJQUNOLGdDQUFnQztJQUNoQyxzRUFBc0U7SUFDdEUsOENBQThDO0lBQzlDLE1BQU07SUFDTiw2QkFBNkI7SUFDN0Isa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixtRUFBbUU7SUFDbkUsTUFBTTtJQUNOLGlCQUFpQjtJQUNqQixJQUFJO0lBRUo7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUFZO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcs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VUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsSUFBaUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUNBQWlDLENBQUMsSUFBOEI7UUFDOUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7MEVBek5VLFNBQVM7dUVBQVQsU0FBUyxXQUFULFNBQVMsbUJBREksTUFBTTs7aUZBQ25CLFNBQVM7Y0FEckIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2xvbmVEc3FQYXlsb2FkLCBDb21tb25BcGlSZXNwb25zZSwgR2V0RGF0YUpzb25CeVR5cGVQYXlsb2FkLCBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQsIFJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhUGF5bG9hZCwgUmVmcmVzaFJlY29yZEluZm9EYXRhUGF5bG9hZCwgUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCwgUmVwb3J0UGF5bG9hZCwgU2NyZWVuUGVyZm9ybWFuY2VQYXlsb2FkLCBTeW5jQXBwRmllbGRzUGF5bG9hZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXBwSGVscGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlYnVpbGRzIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHJlYnVpbGQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgcmVidWlsZEFwcCgpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5idWlsZEFwcCwge30sIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogUHVibGlzaGVzIHRoZSBhcHBsaWNhdGlvbi5cclxuICAvLyAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHB1Ymxpc2hpbmcgdGhlIGFwcGxpY2F0aW9uXHJcbiAgLy8gICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBwdWJsaXNoIG9wZXJhdGlvblxyXG4gIC8vICAqL1xyXG4gIC8vIHB1Ymxpc2hBcHAocGFyYW1zPzogYW55KSB7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gIC8vICAgaWYgKGhlYWRlcnMpIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoQVBJLnB1Ymxpc2hBcHAsIHBhcmFtcywgaGVhZGVycyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBzY3JlZW4gZGF0YS5cclxuICAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgc2NyZWVuIGRhdGFcclxuICAgKiBAcmV0dXJucyBTY3JlZW4gZGF0YVxyXG4gICAqL1xyXG4gIGdldFNjcmVlbihwYXJhbXM/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuZ2V0U2NyZWVuLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc2NoZW1hIGRhdGEuXHJcbiAgICogQHJldHVybnMgU3Vic2NyaXB0aW9uIGZvciBnZXR0aW5nIHNjaGVtYSBkYXRhXHJcbiAgICovXHJcbiAgZ2V0U2NoZW1hKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuZ2V0U2NoZW1hLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RvcmVTY2hlbWFJbnRvSURCKCl7XHJcbiAgLy8gICAvLyB0aGlzLmlkYlNlcnZpY2UuY2xlYXJJbmRleGVkREIoKVxyXG4gIC8vICAgdGhpcy5nZXRTY2hlbWEoKT8uc3Vic2NyaWJlKHtcclxuICAvLyAgICAgbmV4dDogKHZhbHVlOiBTY2hlbWFSZXNwb25zZSkgPT4ge1xyXG4gIC8vICAgICAgICAgQ29tbW9uLnRhYkpzb24gPSBKU09OLnBhcnNlKHZhbHVlLlJlc3VsdCk7XHJcbiAgLy8gICAgICAgICB0aGlzLmlkYlNlcnZpY2Uuc2V0SXRlbShTdG9yYWdlQ29uc3RhbnRzLnRhYkRhdGEsIEpTT04ucGFyc2UodmFsdWUuUmVzdWx0KSlcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyb3I6IChyZXNwb25zZTogRXJyb3IpID0+IHtcclxuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gfSlcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBwZXJtaXNzaW9uIGRhdGEuXHJcbiAgICogQHJldHVybnMgU3Vic2NyaXB0aW9uIGZvciBnZXR0aW5nIHBlcm1pc3Npb24gZGF0YVxyXG4gICAqL1xyXG4gIGdldFBlcm1pc3Npb24oKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KEFQSS5nZXRQZXJtaXNzaW9uLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGFwcGxpY2F0aW9uIG9iamVjdHMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3IgcmVnaXN0ZXJpbmcgYXBwbGljYXRpb24gb2JqZWN0c1xyXG4gICAqIEByZXR1cm5zIFJlc3VsdCBvZiB0aGUgcmVnaXN0cmF0aW9uIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyQXBwT2JqZWN0cyhwYXlsb2FkOiBSZWdpc3RlckFwcE9iamVjdHNQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkucmVnaXN0ZXJBcHBPYmplY3RzLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lcyBhIERhdGFTb3VyY2VRdWVyeSAoRFNRKSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBhcmFtZXRlcnMgZm9yIGNsb25pbmcgdGhlIERTUVxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNsb25pbmcgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgY2xvbmVEc3EocGF5bG9hZDogQ2xvbmVEc3FQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuY2xvbmVEc3EsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGRhdGEgaW4gSlNPTiBmb3JtYXQgYmFzZWQgb24gdGhlIGdpdmVuIEpTT04gdHlwZSBhbmQgcmVxdWVzdCB0b2tlbnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGF5bG9hZCBjb250YWluaW5nIHRoZSBKU09OIHR5cGUgYW5kIHJlcXVlc3QgdG9rZW5zXHJcbiAgICogQHJldHVybnMgVGhlIEpTT04gZGF0YSByZXRyaWV2ZWRcclxuICAgKi9cclxuICBnZXREYXRhSnNvbkJ5VHlwZShwYXlsb2FkOiBHZXREYXRhSnNvbkJ5VHlwZVBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5HZXREYXRhSnNvbkJ5VHlwZSwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTeW5jcyB0aGUgZmllbGRzIG9mIHRoZSBhcHBsaWNhdGlvbiBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBzeW5jaW5nIHRoZSBmaWVsZHNcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgc3luY0FwcEZpZWxkcyhwYXlsb2FkOiBTeW5jQXBwRmllbGRzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLlN5bmNBcHBGaWVsZHMsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSBnaXZlbiB0ZW5hbnRcclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHNldFRhYkNvbXBvbmVudHMoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5zZXRUYWJDb21wb25lbnRzfS8ke2Nvbm5lY3Rpb25JZH1gLCB7fSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBwZXJmb3JtVmFsaWRhdGlvbihjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChgJHtBUEkucGVyZm9ybVZhbGlkYXRpb259LyR7Y29ubmVjdGlvbklkfWAsIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXN0cyB0aGUgY29ubmVjdGlvbiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb24gSUQuXHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICB0ZXN0Q29ubmVjdGlvbihjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChgJHtBUEkudGVzdENvbm5lY3Rpb259LyR7Y29ubmVjdGlvbklkfWAsIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWZyZXNoZXMgdGhlIGdsb2JhbCBzZWFyY2ggZGF0YSB1c2luZyB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cclxuICAgKiBAcGFyYW0gZGF0YSBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IG9iamVjdCBJRCBmb3IgcmVmcmVzaGluZyBzZWFyY2ggZGF0YVxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIHJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhKGRhdGE6IFJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLlJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVmcmVzaGVzIHRoZSByZWNvcmQgaW5mb3JtYXRpb24gZGF0YSB1c2luZyB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cclxuICAgKiBAcGFyYW0gZGF0YSBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IG9iamVjdCBJRCBmb3IgcmVmcmVzaGluZyByZWNvcmQgaW5mb3JtYXRpb24gZGF0YVxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIHJlZnJlc2hSZWNvcmRJbmZvRGF0YShkYXRhOiBSZWZyZXNoUmVjb3JkSW5mb0RhdGFQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuUmVmcmVzaFJlY29yZEluZm9EYXRhfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwb3J0cyBhIHJlcG9ydCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBleHBvcnRpbmcgdGhlIHJlcG9ydFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGV4cG9ydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBleHBvcnRSZXBvcnQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLmV4cG9ydFJlcG9ydCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZHMgYSByZXBvcnQgZmlsZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBkb3dubG9hZGluZyB0aGUgcmVwb3J0IGZpbGVcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBkb3dubG9hZCBvcGVyYXRpb25cclxuICAgKi9cclxuICBkb3dubG9hZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxCbG9iPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QmxvYihBUEkuZG93bmxvYWRSZXBvcnRGaWxlLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgcmVwb3J0IGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBhcmFtZXRlcnMgZm9yIHNlbmRpbmcgdGhlIHJlcG9ydFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbmQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgc2VuZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuc2VuZFJlcG9ydCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlLlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHN1bW1hcnkgb2YgcGVyZm9ybWFuY2UgYW5hbHl0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBTY3JlZW4gUGVyZm9ybWFuY2UgU3RhdGlzdGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBpbnNlcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZVN0YXRpc3RpY3MoZGF0YTogU2NyZWVuUGVyZm9ybWFuY2VQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuSW5zZXJ0U2NyZWVuUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxufSJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vYXBwLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUtwRCxNQUFNLE9BQU8sU0FBUztJQUR0QjtRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBeU5sRDtJQXZOQzs7O09BR0c7SUFDSCxVQUFVLENBQUMsVUFBZSxFQUFFLEVBQUUsT0FBYTtRQUN6QyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU07SUFDTixnQ0FBZ0M7SUFDaEMsc0VBQXNFO0lBQ3RFLDhDQUE4QztJQUM5QyxNQUFNO0lBQ04sNkJBQTZCO0lBQzdCLGtDQUFrQztJQUNsQyxtQkFBbUI7SUFDbkIsbUVBQW1FO0lBQ25FLE1BQU07SUFDTixpQkFBaUI7SUFDakIsSUFBSTtJQUVKOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsTUFBWTtRQUNwQixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELHdCQUF3QjtJQUN4Qix3Q0FBd0M7SUFDeEMsa0NBQWtDO0lBQ2xDLHlDQUF5QztJQUN6QyxxREFBcUQ7SUFDckQsc0ZBQXNGO0lBQ3RGLFNBQVM7SUFDVCxvQ0FBb0M7SUFDcEMsZ0NBQWdDO0lBQ2hDLFFBQVE7SUFDUixLQUFLO0lBQ0wsSUFBSTtJQUVKOzs7T0FHRztJQUNILGFBQWE7UUFDWCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsT0FBa0M7UUFDbkQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxPQUFpQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsT0FBNkI7UUFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFlBQW9CO1FBQ25DLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLElBQUksWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsWUFBb0I7UUFDcEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsWUFBb0I7UUFDakMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxjQUFjLElBQUksWUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsdUJBQXVCLENBQUMsSUFBb0M7UUFDMUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLElBQWtDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsT0FBc0I7UUFDakMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxPQUFzQjtRQUNuQyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsT0FBc0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILCtCQUErQixDQUFDLElBQWlDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdDQUFnQyxDQUFDLElBQWlDO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlDQUFpQyxDQUFDLElBQThCO1FBQzlELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDOzBFQXpOVSxTQUFTO3VFQUFULFNBQVMsV0FBVCxTQUFTLG1CQURJLE1BQU07O2lGQUNuQixTQUFTO2NBRHJCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsb25lRHNxUGF5bG9hZCwgQ29tbW9uQXBpUmVzcG9uc2UsIEdldERhdGFKc29uQnlUeXBlUGF5bG9hZCwgUGVyZm9ybWFuY2VBbmFseXRpY3NQYXlsb2FkLCBSZWZyZXNoR2xvYmFsU2VhcmNoRGF0YVBheWxvYWQsIFJlZnJlc2hSZWNvcmRJbmZvRGF0YVBheWxvYWQsIFJlZ2lzdGVyQXBwT2JqZWN0c1BheWxvYWQsIFJlcG9ydFBheWxvYWQsIFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCwgU3luY0FwcEZpZWxkc1BheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFwcEhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG5cclxuICAvKipcclxuICAgKiBSZWJ1aWxkcyB0aGUgYXBwbGljYXRpb24uXHJcbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSByZWJ1aWxkIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIHJlYnVpbGRBcHAocGF5bG9hZDogYW55ID0ge30sIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBoZWFkZXJzID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuYnVpbGRBcHAsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogUHVibGlzaGVzIHRoZSBhcHBsaWNhdGlvbi5cclxuICAvLyAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHB1Ymxpc2hpbmcgdGhlIGFwcGxpY2F0aW9uXHJcbiAgLy8gICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBwdWJsaXNoIG9wZXJhdGlvblxyXG4gIC8vICAqL1xyXG4gIC8vIHB1Ymxpc2hBcHAocGFyYW1zPzogYW55KSB7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gIC8vICAgaWYgKGhlYWRlcnMpIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoQVBJLnB1Ymxpc2hBcHAsIHBhcmFtcywgaGVhZGVycyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBzY3JlZW4gZGF0YS5cclxuICAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHJldHJpZXZpbmcgc2NyZWVuIGRhdGFcclxuICAgKiBAcmV0dXJucyBTY3JlZW4gZGF0YVxyXG4gICAqL1xyXG4gIGdldFNjcmVlbihwYXJhbXM/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuZ2V0U2NyZWVuLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc2NoZW1hIGRhdGEuXHJcbiAgICogQHJldHVybnMgU3Vic2NyaXB0aW9uIGZvciBnZXR0aW5nIHNjaGVtYSBkYXRhXHJcbiAgICovXHJcbiAgZ2V0U2NoZW1hKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuZ2V0U2NoZW1hLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RvcmVTY2hlbWFJbnRvSURCKCl7XHJcbiAgLy8gICAvLyB0aGlzLmlkYlNlcnZpY2UuY2xlYXJJbmRleGVkREIoKVxyXG4gIC8vICAgdGhpcy5nZXRTY2hlbWEoKT8uc3Vic2NyaWJlKHtcclxuICAvLyAgICAgbmV4dDogKHZhbHVlOiBTY2hlbWFSZXNwb25zZSkgPT4ge1xyXG4gIC8vICAgICAgICAgQ29tbW9uLnRhYkpzb24gPSBKU09OLnBhcnNlKHZhbHVlLlJlc3VsdCk7XHJcbiAgLy8gICAgICAgICB0aGlzLmlkYlNlcnZpY2Uuc2V0SXRlbShTdG9yYWdlQ29uc3RhbnRzLnRhYkRhdGEsIEpTT04ucGFyc2UodmFsdWUuUmVzdWx0KSlcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyb3I6IChyZXNwb25zZTogRXJyb3IpID0+IHtcclxuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gfSlcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBwZXJtaXNzaW9uIGRhdGEuXHJcbiAgICogQHJldHVybnMgU3Vic2NyaXB0aW9uIGZvciBnZXR0aW5nIHBlcm1pc3Npb24gZGF0YVxyXG4gICAqL1xyXG4gIGdldFBlcm1pc3Npb24oKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KEFQSS5nZXRQZXJtaXNzaW9uLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGFwcGxpY2F0aW9uIG9iamVjdHMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3IgcmVnaXN0ZXJpbmcgYXBwbGljYXRpb24gb2JqZWN0c1xyXG4gICAqIEByZXR1cm5zIFJlc3VsdCBvZiB0aGUgcmVnaXN0cmF0aW9uIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyQXBwT2JqZWN0cyhwYXlsb2FkOiBSZWdpc3RlckFwcE9iamVjdHNQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkucmVnaXN0ZXJBcHBPYmplY3RzLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lcyBhIERhdGFTb3VyY2VRdWVyeSAoRFNRKSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBhcmFtZXRlcnMgZm9yIGNsb25pbmcgdGhlIERTUVxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNsb25pbmcgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgY2xvbmVEc3EocGF5bG9hZDogQ2xvbmVEc3FQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuY2xvbmVEc3EsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGRhdGEgaW4gSlNPTiBmb3JtYXQgYmFzZWQgb24gdGhlIGdpdmVuIEpTT04gdHlwZSBhbmQgcmVxdWVzdCB0b2tlbnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGF5bG9hZCBjb250YWluaW5nIHRoZSBKU09OIHR5cGUgYW5kIHJlcXVlc3QgdG9rZW5zXHJcbiAgICogQHJldHVybnMgVGhlIEpTT04gZGF0YSByZXRyaWV2ZWRcclxuICAgKi9cclxuICBnZXREYXRhSnNvbkJ5VHlwZShwYXlsb2FkOiBHZXREYXRhSnNvbkJ5VHlwZVBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5HZXREYXRhSnNvbkJ5VHlwZSwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTeW5jcyB0aGUgZmllbGRzIG9mIHRoZSBhcHBsaWNhdGlvbiBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBzeW5jaW5nIHRoZSBmaWVsZHNcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgc3luY0FwcEZpZWxkcyhwYXlsb2FkOiBTeW5jQXBwRmllbGRzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLlN5bmNBcHBGaWVsZHMsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSBnaXZlbiB0ZW5hbnRcclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHNldFRhYkNvbXBvbmVudHMoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5zZXRUYWJDb21wb25lbnRzfS8ke2Nvbm5lY3Rpb25JZH1gLCB7fSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBwZXJmb3JtVmFsaWRhdGlvbihjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChgJHtBUEkucGVyZm9ybVZhbGlkYXRpb259LyR7Y29ubmVjdGlvbklkfWAsIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXN0cyB0aGUgY29ubmVjdGlvbiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb24gSUQuXHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICB0ZXN0Q29ubmVjdGlvbihjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChgJHtBUEkudGVzdENvbm5lY3Rpb259LyR7Y29ubmVjdGlvbklkfWAsIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWZyZXNoZXMgdGhlIGdsb2JhbCBzZWFyY2ggZGF0YSB1c2luZyB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cclxuICAgKiBAcGFyYW0gZGF0YSBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IG9iamVjdCBJRCBmb3IgcmVmcmVzaGluZyBzZWFyY2ggZGF0YVxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIHJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhKGRhdGE6IFJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLlJlZnJlc2hHbG9iYWxTZWFyY2hEYXRhfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVmcmVzaGVzIHRoZSByZWNvcmQgaW5mb3JtYXRpb24gZGF0YSB1c2luZyB0aGUgcHJvdmlkZWQgcGF5bG9hZC5cclxuICAgKiBAcGFyYW0gZGF0YSBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IG9iamVjdCBJRCBmb3IgcmVmcmVzaGluZyByZWNvcmQgaW5mb3JtYXRpb24gZGF0YVxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIHJlZnJlc2hSZWNvcmRJbmZvRGF0YShkYXRhOiBSZWZyZXNoUmVjb3JkSW5mb0RhdGFQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuUmVmcmVzaFJlY29yZEluZm9EYXRhfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwb3J0cyBhIHJlcG9ydCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBleHBvcnRpbmcgdGhlIHJlcG9ydFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGV4cG9ydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBleHBvcnRSZXBvcnQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLmV4cG9ydFJlcG9ydCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZHMgYSByZXBvcnQgZmlsZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBkb3dubG9hZGluZyB0aGUgcmVwb3J0IGZpbGVcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBkb3dubG9hZCBvcGVyYXRpb25cclxuICAgKi9cclxuICBkb3dubG9hZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxCbG9iPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QmxvYihBUEkuZG93bmxvYWRSZXBvcnRGaWxlLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgcmVwb3J0IGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBhcmFtZXRlcnMgZm9yIHNlbmRpbmcgdGhlIHJlcG9ydFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbmQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgc2VuZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuc2VuZFJlcG9ydCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlLlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHN1bW1hcnkgb2YgcGVyZm9ybWFuY2UgYW5hbHl0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBTY3JlZW4gUGVyZm9ybWFuY2UgU3RhdGlzdGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBpbnNlcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZVN0YXRpc3RpY3MoZGF0YTogU2NyZWVuUGVyZm9ybWFuY2VQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuSW5zZXJ0U2NyZWVuUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxufSJdfQ==
@@ -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;
@@ -7,7 +7,7 @@ export declare class AppHelper {
7
7
  * Rebuilds the application.
8
8
  * @returns Result of the rebuild operation
9
9
  */
10
- rebuildApp(): Observable<CommonApiResponse>;
10
+ rebuildApp(payload?: any, headers?: any): Observable<CommonApiResponse>;
11
11
  /**
12
12
  * Retrieves screen data.
13
13
  * @param params Optional parameters for retrieving screen data
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.165",
3
+ "version": "2.2.167",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",