@techextensor/tab-sdk 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/file.service.mjs +45 -2
- package/esm2022/lib/interface/ui.interface.mjs +1 -1
- package/esm2022/lib/store/store.service.mjs +29 -1
- package/esm2022/lib/ui/ui.service.mjs +52 -16
- package/esm2022/public-api.mjs +8 -4
- package/fesm2022/techextensor-tab-sdk.mjs +124 -20
- package/fesm2022/techextensor-tab-sdk.mjs.map +1 -1
- package/lib/app/file.service.d.ts +12 -0
- package/lib/interface/ui.interface.d.ts +1 -1
- package/lib/store/store.service.d.ts +12 -0
- package/lib/ui/ui.service.d.ts +23 -6
- package/package.json +2 -2
- package/public-api.d.ts +4 -0
|
@@ -39,7 +39,9 @@ export class UiService {
|
|
|
39
39
|
...(options.title && { title: options.title }),
|
|
40
40
|
...(options.width && { width: options.width }),
|
|
41
41
|
...(options.height && { height: options.height }),
|
|
42
|
-
...(options.customClass && { customClass: options.customClass })
|
|
42
|
+
...(options.customClass && { customClass: options.customClass }),
|
|
43
|
+
...(options.refresher && { refresher: options.refresher }),
|
|
44
|
+
...(options.closer && { closer: options.closer })
|
|
43
45
|
};
|
|
44
46
|
TabSdk.util?.openScreen(ScreenDisplayMode.Sidebar, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
|
|
45
47
|
}
|
|
@@ -53,7 +55,9 @@ export class UiService {
|
|
|
53
55
|
...(options.title && { title: options.title }),
|
|
54
56
|
...(options.width && { width: options.width }),
|
|
55
57
|
...(options.height && { height: options.height }),
|
|
56
|
-
...(options.customClass && { customClass: options.customClass })
|
|
58
|
+
...(options.customClass && { customClass: options.customClass }),
|
|
59
|
+
...(options.refresher && { refresher: options.refresher }),
|
|
60
|
+
...(options.closer && { closer: options.closer })
|
|
57
61
|
};
|
|
58
62
|
TabSdk.util?.openScreen(ScreenDisplayMode.Popup, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
|
|
59
63
|
}
|
|
@@ -78,9 +82,9 @@ export class UiService {
|
|
|
78
82
|
*
|
|
79
83
|
* @param url - The URL to navigate to.
|
|
80
84
|
*/
|
|
81
|
-
navigateToUrl(
|
|
82
|
-
TabSdk.util?.
|
|
83
|
-
|
|
85
|
+
navigateToUrl(params) {
|
|
86
|
+
TabSdk.util?.navigateTo({
|
|
87
|
+
...params,
|
|
84
88
|
type: NavigationType.NavigateToUrl
|
|
85
89
|
});
|
|
86
90
|
}
|
|
@@ -90,9 +94,9 @@ export class UiService {
|
|
|
90
94
|
* @param options - The options for navigation, including subDomain, appCode, and url.
|
|
91
95
|
*/
|
|
92
96
|
navigateToSubdomain(options) {
|
|
93
|
-
TabSdk.util?.
|
|
97
|
+
TabSdk.util?.navigateTo({
|
|
94
98
|
...options,
|
|
95
|
-
type: NavigationType.
|
|
99
|
+
type: NavigationType.NavigateToSubdomain
|
|
96
100
|
});
|
|
97
101
|
}
|
|
98
102
|
/**
|
|
@@ -101,20 +105,43 @@ export class UiService {
|
|
|
101
105
|
* @returns The screen ID if present in the URL, otherwise undefined.
|
|
102
106
|
*/
|
|
103
107
|
getActiveUrlScreenId() {
|
|
104
|
-
// Split the URL pathname using the
|
|
105
|
-
const urlParts = window?.location?.pathname?.split(
|
|
108
|
+
// Split the URL pathname into parts using the '/' character as a delimiter
|
|
109
|
+
const urlParts = window?.location?.pathname?.split('/');
|
|
106
110
|
// Extract the screen ID part and remove any query parameters
|
|
107
|
-
const screenId = urlParts?.[1]?.split('?')[0];
|
|
111
|
+
const screenId = urlParts?.length > 1 ? urlParts?.[urlParts?.length - 1]?.split('?')[0] : undefined;
|
|
108
112
|
// Return the screen ID or undefined if not found
|
|
109
113
|
return screenId;
|
|
110
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Retrieves the active redirect URL by combining the active screen ID and any query parameters.
|
|
117
|
+
*
|
|
118
|
+
* @returns The constructed redirect URL or undefined if no screen ID is present.
|
|
119
|
+
*/
|
|
120
|
+
getActiveRedirectUrl() {
|
|
121
|
+
// Get the active screen ID from the current URL
|
|
122
|
+
const screenId = this.getActiveUrlScreenId();
|
|
123
|
+
let redirectURL;
|
|
124
|
+
// Check if the current URL contains a screen ID
|
|
125
|
+
if (screenId) {
|
|
126
|
+
// Initialize the redirect URL with the screen ID
|
|
127
|
+
redirectURL = screenId;
|
|
128
|
+
// Parse the current URL's query parameters
|
|
129
|
+
const queryParams = new URLSearchParams(window.location.search);
|
|
130
|
+
// If there are query parameters, append them to the redirect URL
|
|
131
|
+
if (queryParams.toString()) {
|
|
132
|
+
redirectURL += `&${queryParams.toString()}`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Return the constructed redirect URL or undefined
|
|
136
|
+
return redirectURL;
|
|
137
|
+
}
|
|
111
138
|
/**
|
|
112
139
|
* Show a notification to the user.
|
|
113
140
|
*
|
|
114
141
|
* @param options The options for the notification.
|
|
115
142
|
*/
|
|
116
143
|
notify(options) {
|
|
117
|
-
this._notificationService.notify({
|
|
144
|
+
return this._notificationService.notify({
|
|
118
145
|
type: options.type,
|
|
119
146
|
message: TabSdk.translator.translate(options.message),
|
|
120
147
|
...(options?.title ? { title: TabSdk.translator.translate(options.title) } : {}),
|
|
@@ -127,7 +154,7 @@ export class UiService {
|
|
|
127
154
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
128
155
|
*/
|
|
129
156
|
showSuccess(options) {
|
|
130
|
-
this.notify({
|
|
157
|
+
return this.notify({
|
|
131
158
|
...options,
|
|
132
159
|
type: NotificationType.Success,
|
|
133
160
|
title: options?.title ?? 'Success'
|
|
@@ -139,7 +166,7 @@ export class UiService {
|
|
|
139
166
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
140
167
|
*/
|
|
141
168
|
showWarning(options) {
|
|
142
|
-
this.notify({
|
|
169
|
+
return this.notify({
|
|
143
170
|
...options,
|
|
144
171
|
type: NotificationType.Warning,
|
|
145
172
|
title: options?.title ?? 'Warning'
|
|
@@ -151,7 +178,7 @@ export class UiService {
|
|
|
151
178
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
152
179
|
*/
|
|
153
180
|
showInfo(options) {
|
|
154
|
-
this.notify({
|
|
181
|
+
return this.notify({
|
|
155
182
|
...options,
|
|
156
183
|
type: NotificationType.Info,
|
|
157
184
|
title: options?.title ?? 'Info'
|
|
@@ -163,12 +190,21 @@ export class UiService {
|
|
|
163
190
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
164
191
|
*/
|
|
165
192
|
showError(options) {
|
|
166
|
-
this.notify({
|
|
193
|
+
return this.notify({
|
|
167
194
|
...options,
|
|
168
195
|
type: NotificationType.Error,
|
|
169
196
|
title: options?.title ?? 'Error'
|
|
170
197
|
});
|
|
171
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Clears a notification by ID.
|
|
201
|
+
*
|
|
202
|
+
* @param notificationId - The ID of the notification to clear.
|
|
203
|
+
* @returns The cleared notification, or null if the notification doesn't exist.
|
|
204
|
+
*/
|
|
205
|
+
clearNotification(notificationId) {
|
|
206
|
+
return this._notificationService.clearNotification(notificationId);
|
|
207
|
+
}
|
|
172
208
|
/**
|
|
173
209
|
* Displays a confirmation dialog to the user and returns a promise that resolves
|
|
174
210
|
* to a boolean indicating whether the user confirmed the action.
|
|
@@ -305,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
305
341
|
providedIn: 'root'
|
|
306
342
|
}]
|
|
307
343
|
}] });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi91aS91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFnRCxtQkFBbUIsRUFBdUIsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLL0ssTUFBTSxPQUFPLFNBQVM7SUFDRCxvQkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEUsb0JBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpGOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQTBCO1FBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTdGLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLGlCQUFpQixDQUFDLE9BQU87Z0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RixNQUFNO1lBRVYsS0FBSyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFF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cnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgU2NyZWVuT3Blbk9wdGlvbnMsXG4gICAgTmF2aWdhdGlvbk9wdGlvbnMsXG4gICAgQmFzZVNjcmVlbk9wdGlvbnMsXG4gICAgTmF2aWdhdGVUb1N1YmRvbWFpbk9wdGlvbnNcbn0gZnJvbSAnLi4vaW50ZXJmYWNlL3VpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uVHlwZSwgU2NyZWVuRGlzcGxheU1vZGUgfSBmcm9tICcuLi9lbnVtL3VpLmVudW0nO1xuaW1wb3J0IHsgVGFiU2RrIH0gZnJvbSAnLi4vdGFiLXNkay5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VOb3RpZmljYXRpb25PcHRpb25zLCBDb25maXJtYXRpb25PcHRpb25zLCBDb25maXJtYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25PcHRpb25zLCBOb3RpZmljYXRpb25TZXJ2aWNlLCBOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAnQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSA9IGluamVjdChDb25maXJtYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBzY3JlZW4gd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy4gVGhlIG1vZGUgZGV0ZXJtaW5lcyBob3cgdGhlIHNjcmVlbiBpc1xuICAgICAqIGRpc3BsYXllZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBvcGVuaW5nIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgb3BlblNjcmVlbihvcHRpb25zOiBTY3JlZW5PcGVuT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IG1vZGUsIHNjcmVlbklkLCByZXF0b2tlbnMsIHN1Ym1pc3Npb24sIHRpdGxlLCB3aWR0aCwgaGVpZ2h0LCBjdXN0b21DbGFzcyB9ID0gb3B0aW9ucztcblxuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuU2lkZWJhcjpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTaWRlYmFyKHsgc2NyZWVuSWQsIHJlcXRva2Vucywgc3VibWlzc2lvbiwgdGl0bGUsIHdpZHRoLCBoZWlnaHQsIGN1c3RvbUNsYXNzIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNjcmVlbkRpc3BsYXlNb2RlLlBvcHVwOlxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyh7IHNjcmVlbklkLCByZXF0b2tlbnMsIHN1Ym1pc3Npb24sIHRpdGxlLCB3aWR0aCwgaGVpZ2h0LCBjdXN0b21DbGFzcyB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTY3JlZW5EaXNwbGF5TW9kZS5TYW1lVGFiOlxuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUbyh7IHNjcmVlbklkLCByZXF0b2tlbnMgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuTmV3VGFiOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbkluTmV3VGFiKHsgc2NyZWVuSWQsIHJlcXRva2VucyB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgc2NyZWVuIGluIGEgc2lkZWJhci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBvcGVuaW5nIHRoZSBzaWRlYmFyLlxuICAgICAqL1xuICAgIHNob3dTaWRlYmFyKG9wdGlvbnM6IEJhc2VTY3JlZW5PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG90aGVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnRpdGxlICYmIHsgdGl0bGU6IG9wdGlvbnMudGl0bGUgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy53aWR0aCAmJiB7IHdpZHRoOiBvcHRpb25zLndpZHRoIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuaGVpZ2h0ICYmIHsgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmN1c3RvbUNsYXNzICYmIHsgY3VzdG9tQ2xhc3M6IG9wdGlvbnMuY3VzdG9tQ2xhc3MgfSlcbiAgICAgICAgfTtcblxuICAgICAgICBUYWJTZGsudXRpbD8ub3BlblNjcmVlbihcbiAgICAgICAgICAgIFNjcmVlbkRpc3BsYXlNb2RlLlNpZGViYXIsXG4gICAgICAgICAgICBvcHRpb25zLnNjcmVlbklkLFxuICAgICAgICAgICAgb3B0aW9ucy5yZXF0b2tlbnMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3B0aW9ucy5zdWJtaXNzaW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG90aGVyQ29uZmlndXJhdGlvbikubGVuZ3RoID4gMCA/IG90aGVyQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgc2NyZWVuIGluIGEgcG9wdXAgZGlhbG9nLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIG9wZW5pbmcgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBzaG93RGlhbG9nKG9wdGlvbnM6IEJhc2VTY3JlZW5PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG90aGVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnRpdGxlICYmIHsgdGl0bGU6IG9wdGlvbnMudGl0bGUgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy53aWR0aCAmJiB7IHdpZHRoOiBvcHRpb25zLndpZHRoIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuaGVpZ2h0ICYmIHsgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmN1c3RvbUNsYXNzICYmIHsgY3VzdG9tQ2xhc3M6IG9wdGlvbnMuY3VzdG9tQ2xhc3MgfSlcbiAgICAgICAgfTtcblxuICAgICAgICBUYWJTZGsudXRpbD8ub3BlblNjcmVlbihcbiAgICAgICAgICAgIFNjcmVlbkRpc3BsYXlNb2RlLlBvcHVwLFxuICAgICAgICAgICAgb3B0aW9ucy5zY3JlZW5JZCxcbiAgICAgICAgICAgIG9wdGlvbnMucmVxdG9rZW5zIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG9wdGlvbnMuc3VibWlzc2lvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvdGhlckNvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDAgPyBvdGhlckNvbmZpZ3VyYXRpb24gOiB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gYSBzY3JlZW4gd2l0aGluIHRoZSBzYW1lIHRhYi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIG5hdmlnYXRpb24sIGluY2x1ZGluZyBzY3JlZW5JZCBhbmQgb3B0aW9uYWwgcmVxdG9rZW5zLlxuICAgICAqL1xuICAgIG5hdmlnYXRlVG8ob3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgVGFiU2RrLnV0aWw/Lm9wZW5TY3JlZW4oXG4gICAgICAgICAgICBTY3JlZW5EaXNwbGF5TW9kZS5TYW1lVGFiLFxuICAgICAgICAgICAgb3B0aW9ucy5zY3JlZW5JZCxcbiAgICAgICAgICAgIG9wdGlvbnMucmVxdG9rZW5zIHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHNjcmVlbiBpbiBhIG5ldyB0YWIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgbmF2aWdhdGlvbiwgaW5jbHVkaW5nIHNjcmVlbklkIGFuZCBvcHRpb25hbCByZXF0b2tlbnMuXG4gICAgICovXG4gICAgb3BlbkluTmV3VGFiKG9wdGlvbnM6IE5hdmlnYXRpb25PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIFRhYlNkay51dGlsPy5vcGVuU2NyZWVuKFxuICAgICAgICAgICAgU2NyZWVuRGlzcGxheU1vZGUuTmV3VGFiLFxuICAgICAgICAgICAgb3B0aW9ucy5zY3JlZW5JZCxcbiAgICAgICAgICAgIG9wdGlvbnMucmVxdG9rZW5zIHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIFVSTC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIHRvIG5hdmlnYXRlIHRvLlxuICAgICAqL1xuICAgIG5hdmlnYXRlVG9VcmwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgVGFiU2RrLnV0aWw/Lm5hdmlnYXRlVG9Vcmwoe1xuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgdHlwZTogTmF2aWdhdGlvblR5cGUuTmF2aWdhdGVUb1VybFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHNwZWNpZmllZCBzdWJkb21haW4gdXNpbmcgdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgc3ViRG9tYWluLCBhcHBDb2RlLCBhbmQgdXJsLlxuICAgICAqL1xuICAgIG5hdmlnYXRlVG9TdWJkb21haW4ob3B0aW9uczogTmF2aWdhdGVUb1N1YmRvbWFpbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgVGFiU2RrLnV0aWw/Lm5hdmlnYXRlVG9Vcmwoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHR5cGU6IE5hdmlnYXRpb25UeXBlLk5hdmlnYXRlVG9VcmxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGFjdGl2ZSBzY3JlZW4gSUQgZnJvbSB0aGUgY3VycmVudCBVUkwuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgc2NyZWVuIElEIGlmIHByZXNlbnQgaW4gdGhlIFVSTCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBnZXRBY3RpdmVVcmxTY3JlZW5JZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBTcGxpdCB0aGUgVVJMIHBhdGhuYW1lIHVzaW5nIHRoZSBhcHAgbmFtZSBhbmQgJy9zY3JlZW4vJyBhcyBkZWxpbWl0ZXJzXG4gICAgICAgIGNvbnN0IHVybFBhcnRzID0gd2luZG93Py5sb2NhdGlvbj8ucGF0aG5hbWU/LnNwbGl0KFRhYlNkay5zdG9yZS5hcHBOYW1lICsgJy9zY3JlZW4vJyk7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHNjcmVlbiBJRCBwYXJ0IGFuZCByZW1vdmUgYW55IHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgICAgY29uc3Qgc2NyZWVuSWQgPSB1cmxQYXJ0cz8uWzFdPy5zcGxpdCgnPycpWzBdO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHNjcmVlbiBJRCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAgICAgIHJldHVybiBzY3JlZW5JZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGEgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24uXG4gICAgICovXG4gICAgbm90aWZ5KG9wdGlvbnM6IE5vdGlmaWNhdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZnkoe1xuICAgICAgICAgICAgdHlwZTogb3B0aW9ucy50eXBlLFxuICAgICAgICAgICAgbWVzc2FnZTogVGFiU2RrLnRyYW5zbGF0b3IudHJhbnNsYXRlKG9wdGlvbnMubWVzc2FnZSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucz8udGl0bGUgPyB7IHRpdGxlOiBUYWJTZGsudHJhbnNsYXRvci50cmFuc2xhdGUob3B0aW9ucy50aXRsZSkgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zPy5jb25maWd1cmF0aW9uID8geyBjb25maWd1cmF0aW9uOiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBzdWNjZXNzIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd1N1Y2Nlc3Mob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuU3VjY2VzcyxcbiAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zPy50aXRsZSA/PyAnU3VjY2VzcydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSB3YXJuaW5nIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd1dhcm5pbmcob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZnkoe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIHR5cGU6IE5vdGlmaWNhdGlvblR5cGUuV2FybmluZyxcbiAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zPy50aXRsZSA/PyAnV2FybmluZydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYW4gaW5mbyBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgbm90aWZpY2F0aW9uLCBpbmNsdWRpbmcgbWVzc2FnZSwgdGl0bGUsIGFuZCBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNob3dJbmZvKG9wdGlvbnM6IEJhc2VOb3RpZmljYXRpb25PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkluZm8sXG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucz8udGl0bGUgPz8gJ0luZm8nXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGFuIGVycm9yIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd0Vycm9yKG9wdGlvbnM6IEJhc2VOb3RpZmljYXRpb25PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkVycm9yLFxuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlID8/ICdFcnJvcidcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBjb25maXJtYXRpb24gZGlhbG9nIHRvIHRoZSB1c2VyIGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzXG4gICAgICogdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdXNlciBjb25maXJtZWQgdGhlIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGl0bGUsIG1lc3NhZ2UsXG4gICAgICogY29uZmlybVRleHQsIGNhbmNlbFRleHQsIGFuZCB2aXNpYmlsaXR5IG9mIGJ1dHRvbnMuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGNvbmZpcm0ob3B0aW9ucz86IENvbmZpcm1hdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0ob3B0aW9ucylcbiAgICAgICAgICAgICAgICA/LnN1YnNjcmliZSgoaXNDb25maXJtZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShpc0NvbmZpcm1lZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGEgY29uZmlybWF0aW9uIGRpYWxvZyB0byB0aGUgdXNlciB3aXRoIGEgdGl0bGUgYW5kIG1lc3NhZ2UgdGhhdCBpbmRpY2F0ZXNcbiAgICAgKiB0aGUgdXNlciBpcyBhYm91dCB0byBkZWxldGUgYW4gaXRlbS4gVGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgaGFzIGEgXCJEZWxldGVcIiBhbmQgXCJDYW5jZWxcIlxuICAgICAqIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGhlIGl0ZW0gbmFtZSBhbmRcbiAgICAgKiBvcHRpb25hbCBtZXNzYWdlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBjb25maXJtRGVsZXRlKG9wdGlvbnM/OiBDb25maXJtYXRpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlID8/IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkYCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCByZWNvcmQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwcm9jZWVkP2AsXG4gICAgICAgICAgICBwcmltYXJ5T3B0aW9uOiAnRGVsZXRlJyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBjb25maXJtYXRpb24gZGlhbG9nIHRvIHRoZSB1c2VyIHdpdGggYSB0aXRsZSBhbmQgbWVzc2FnZSB0aGF0IGluZGljYXRlc1xuICAgICAqIHRoZSB1c2VyIGlzIGFib3V0IHRvIGRpc2NhcmQgY2hhbmdlcyB0byBhbiBpdGVtLiBUaGUgY29uZmlybWF0aW9uIGRpYWxvZyBoYXMgYSBcIkRpc2NhcmRcIlxuICAgICAqIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGhlIGl0ZW0gbmFtZSBhbmRcbiAgICAgKiBvcHRpb25hbCBtZXNzYWdlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBjb25maXJtRGlzY2FyZChvcHRpb25zPzogQ29uZmlybWF0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBjaGFuZ2VzYCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFlvdSBhcmUgYWJvdXQgdG8gZGlzY2FyZCB5b3VyIGNoYW5nZXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwcm9jZWVkP2AsXG4gICAgICAgICAgICBwcmltYXJ5T3B0aW9uOiAnRGlzY2FyZCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNsb3NlQ29uZmlybWF0aW9uRGlhbG9nKCkge1xuICAgICAgICAvLyBDbG9zZSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZ1xuICAgICAgICB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmNsb3NlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb25maXJtYXRpb24gZW1pdHRlciBmcm9tIHRoZSBjb25maXJtYXRpb24gc2VydmljZS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgY29uZmlybWF0aW9uIGVtaXR0ZXIgdXNlZCBmb3IgZW1pdHRpbmcgY29uZmlybWF0aW9uIGV2ZW50cy5cbiAgICAgKi9cbiAgICBnZXRDb25mb3JtYXRpb25FbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5nZXRDb25mb3JtYXRpb25FbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBkaWFsb2cgZW1pdHRlciBmcm9tIHRoZSBjb25maXJtYXRpb24gc2VydmljZS5cbiAgICAgKlxuICAgICAqIFRoZSBkaWFsb2cgZW1pdHRlciBpcyBhbiBSeEpTIFN1YmplY3QgdGhhdCBlbWl0cyB3aGVuZXZlciBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgaXNcbiAgICAgKiBvcGVuZWQgb3IgY2xvc2VkLiBUaGUgdmFsdWUgZW1pdHRlZCBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgZGlhbG9nIGlzXG4gICAgICogY3VycmVudGx5IG9wZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgZGlhbG9nIGVtaXR0ZXIgdXNlZCBmb3IgZW1pdHRpbmcgY29uZmlybWF0aW9uIGRpYWxvZyBldmVudHMuXG4gICAgICovXG4gICAgZ2V0RGlhbG9nRW1pdHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuZ2V0RGlhbG9nRW1pdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcmVtb3ZlIGVtaXR0ZXIgZnJvbSB0aGUgY29uZmlybWF0aW9uIHNlcnZpY2UuXG4gICAgICogXG4gICAgICogVGhlIHJlbW92ZSBlbWl0dGVyIGlzIGFuIFJ4SlMgU3ViamVjdCB0aGF0IGVtaXRzIHdoZW5ldmVyIGEgcmVtb3ZhbCBjb25maXJtYXRpb25cbiAgICAgKiBkaWFsb2cgaXMgb3BlbmVkIG9yIGNsb3NlZC4gVGhlIHZhbHVlIGVtaXR0ZWQgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhXG4gICAgICogcmVtb3ZhbCBkaWFsb2cgaXMgY3VycmVudGx5IG9wZW4uXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHJlbW92ZSBlbWl0dGVyIHVzZWQgZm9yIGVtaXR0aW5nIHJlbW92YWwgY29uZmlybWF0aW9uIGRpYWxvZyBldmVudHMuXG4gICAgICovXG4gICAgZ2V0UmVtb3ZlRW1pdHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuZ2V0UmVtb3ZlRW1pdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyB0aGUgcHJvdmlkZWQgdGV4dCB0byB0aGUgY2xpcGJvYXJkIGFuZCBkaXNwbGF5cyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBiZSBjb3BpZWQgdG8gdGhlIGNsaXBib2FyZC5cbiAgICAgKi9cbiAgICBjb3B5VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBpbnB1dCBlbGVtZW50IHRvIGhvbGQgdGhlIHRleHRcbiAgICAgICAgY29uc3QgdGVtcElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgaW5wdXQncyB2YWx1ZSB0byB0aGUgdGV4dCB0byBiZSBjb3BpZWRcbiAgICAgICAgdGVtcElucHV0LnZhbHVlID0gdGV4dDtcblxuICAgICAgICAvLyBBcHBlbmQgdGhlIHRlbXBvcmFyeSBpbnB1dCB0byB0aGUgZG9jdW1lbnQgYm9keVxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBJbnB1dCk7XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSB0ZXh0IGluIHRoZSBpbnB1dCBlbGVtZW50XG4gICAgICAgIHRlbXBJbnB1dC5zZWxlY3QoKTtcblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb3B5IGNvbW1hbmRcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGlucHV0IGZyb20gdGhlIGRvY3VtZW50IGJvZHlcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZW1wSW5wdXQpO1xuXG4gICAgICAgIC8vIFNob3cgYSBzdWNjZXNzIG5vdGlmaWNhdGlvblxuICAgICAgICB0aGlzLnNob3dTdWNjZXNzKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiXCIsXG4gICAgICAgICAgICB0aXRsZTogXCJDb3BpZWQgdG8gY2xpcGJvYXJkIVwiLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDEwMDAsXG4gICAgICAgICAgICAgICAgcG9zaXRpb25DbGFzczogJ3RvYXN0LXRvcC1jZW50ZXInLFxuICAgICAgICAgICAgICAgIGVhc2luZzogJ2Vhc2UtaW4nLFxuICAgICAgICAgICAgICAgIGVhc2VUaW1lOiAzMDAsXG4gICAgICAgICAgICAgICAgZXh0ZW5kZWRUaW1lT3V0OiAyMDAwLFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIGN1cnJlbnQgVVJMIHRvIHRoZSBjbGlwYm9hcmQgYW5kIGRpc3BsYXlzIGEgc3VjY2VzcyBub3RpZmljYXRpb24uXG4gICAgICovXG4gICAgY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZCgpIHtcbiAgICAgICAgLy8gVXNlIHRoZSBjb3B5VG9DbGlwYm9hcmQgbWV0aG9kIHRvIGNvcHkgdGhlIGN1cnJlbnQgd2luZG93IFVSTFxuICAgICAgICB0aGlzLmNvcHlUb0NsaXBib2FyZCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgfVxufSJdfQ==
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi91aS91aS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFnRCxtQkFBbUIsRUFBdUIsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLL0ssTUFBTSxPQUFPLFNBQVM7SUFDRCxvQkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEUsb0JBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpGOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQTBCO1FBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTdGLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLGlCQUFpQixDQUFDLE9BQU87Z0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RixNQUFNO1lBRVYsS0FBSyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFF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QU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFNjcmVlbk9wZW5PcHRpb25zLFxuICAgIE5hdmlnYXRpb25PcHRpb25zLFxuICAgIEJhc2VTY3JlZW5PcHRpb25zLFxuICAgIE5hdmlnYXRlVG9TdWJkb21haW5PcHRpb25zXG59IGZyb20gJy4uL2ludGVyZmFjZS91aS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblR5cGUsIFNjcmVlbkRpc3BsYXlNb2RlIH0gZnJvbSAnLi4vZW51bS91aS5lbnVtJztcbmltcG9ydCB7IFRhYlNkayB9IGZyb20gJy4uL3RhYi1zZGsuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucywgQ29uZmlybWF0aW9uT3B0aW9ucywgQ29uZmlybWF0aW9uU2VydmljZSwgTm90aWZpY2F0aW9uT3B0aW9ucywgTm90aWZpY2F0aW9uU2VydmljZSwgTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJ0B0ZWNoZXh0ZW5zb3IvdGFiLWNvcmUtdXRpbGl0eSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVWlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlybWF0aW9uU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIGEgc2NyZWVuIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuIFRoZSBtb2RlIGRldGVybWluZXMgaG93IHRoZSBzY3JlZW4gaXNcbiAgICAgKiBkaXNwbGF5ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3Igb3BlbmluZyB0aGUgc2NyZWVuLlxuICAgICAqL1xuICAgIG9wZW5TY3JlZW4ob3B0aW9uczogU2NyZWVuT3Blbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBtb2RlLCBzY3JlZW5JZCwgcmVxdG9rZW5zLCBzdWJtaXNzaW9uLCB0aXRsZSwgd2lkdGgsIGhlaWdodCwgY3VzdG9tQ2xhc3MgfSA9IG9wdGlvbnM7XG5cbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFNjcmVlbkRpc3BsYXlNb2RlLlNpZGViYXI6XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93U2lkZWJhcih7IHNjcmVlbklkLCByZXF0b2tlbnMsIHN1Ym1pc3Npb24sIHRpdGxlLCB3aWR0aCwgaGVpZ2h0LCBjdXN0b21DbGFzcyB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTY3JlZW5EaXNwbGF5TW9kZS5Qb3B1cDpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dEaWFsb2coeyBzY3JlZW5JZCwgcmVxdG9rZW5zLCBzdWJtaXNzaW9uLCB0aXRsZSwgd2lkdGgsIGhlaWdodCwgY3VzdG9tQ2xhc3MgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2NyZWVuRGlzcGxheU1vZGUuU2FtZVRhYjpcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG8oeyBzY3JlZW5JZCwgcmVxdG9rZW5zIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNjcmVlbkRpc3BsYXlNb2RlLk5ld1RhYjpcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Jbk5ld1RhYih7IHNjcmVlbklkLCByZXF0b2tlbnMgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIHNjcmVlbiBpbiBhIHNpZGViYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3Igb3BlbmluZyB0aGUgc2lkZWJhci5cbiAgICAgKi9cbiAgICBzaG93U2lkZWJhcihvcHRpb25zOiBCYXNlU2NyZWVuT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCBvdGhlckNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucy50aXRsZSAmJiB7IHRpdGxlOiBvcHRpb25zLnRpdGxlIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMud2lkdGggJiYgeyB3aWR0aDogb3B0aW9ucy53aWR0aCB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmhlaWdodCAmJiB7IGhlaWdodDogb3B0aW9ucy5oZWlnaHQgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5jdXN0b21DbGFzcyAmJiB7IGN1c3RvbUNsYXNzOiBvcHRpb25zLmN1c3RvbUNsYXNzIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMucmVmcmVzaGVyICYmIHsgcmVmcmVzaGVyOiBvcHRpb25zLnJlZnJlc2hlciB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmNsb3NlciAmJiB7IGNsb3Nlcjogb3B0aW9ucy5jbG9zZXIgfSlcbiAgICAgICAgfTtcblxuICAgICAgICBUYWJTZGsudXRpbD8ub3BlblNjcmVlbihcbiAgICAgICAgICAgIFNjcmVlbkRpc3BsYXlNb2RlLlNpZGViYXIsXG4gICAgICAgICAgICBvcHRpb25zLnNjcmVlbklkLFxuICAgICAgICAgICAgb3B0aW9ucy5yZXF0b2tlbnMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3B0aW9ucy5zdWJtaXNzaW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG90aGVyQ29uZmlndXJhdGlvbikubGVuZ3RoID4gMCA/IG90aGVyQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgc2NyZWVuIGluIGEgcG9wdXAgZGlhbG9nLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIG9wZW5pbmcgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBzaG93RGlhbG9nKG9wdGlvbnM6IEJhc2VTY3JlZW5PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG90aGVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zLnRpdGxlICYmIHsgdGl0bGU6IG9wdGlvbnMudGl0bGUgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy53aWR0aCAmJiB7IHdpZHRoOiBvcHRpb25zLndpZHRoIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuaGVpZ2h0ICYmIHsgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCB9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zLmN1c3RvbUNsYXNzICYmIHsgY3VzdG9tQ2xhc3M6IG9wdGlvbnMuY3VzdG9tQ2xhc3MgfSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucy5yZWZyZXNoZXIgJiYgeyByZWZyZXNoZXI6IG9wdGlvbnMucmVmcmVzaGVyIH0pLFxuICAgICAgICAgICAgLi4uKG9wdGlvbnMuY2xvc2VyICYmIHsgY2xvc2VyOiBvcHRpb25zLmNsb3NlciB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIFRhYlNkay51dGlsPy5vcGVuU2NyZWVuKFxuICAgICAgICAgICAgU2NyZWVuRGlzcGxheU1vZGUuUG9wdXAsXG4gICAgICAgICAgICBvcHRpb25zLnNjcmVlbklkLFxuICAgICAgICAgICAgb3B0aW9ucy5yZXF0b2tlbnMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3B0aW9ucy5zdWJtaXNzaW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG90aGVyQ29uZmlndXJhdGlvbikubGVuZ3RoID4gMCA/IG90aGVyQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHNjcmVlbiB3aXRoaW4gdGhlIHNhbWUgdGFiLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgbmF2aWdhdGlvbiwgaW5jbHVkaW5nIHNjcmVlbklkIGFuZCBvcHRpb25hbCByZXF0b2tlbnMuXG4gICAgICovXG4gICAgbmF2aWdhdGVUbyhvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBUYWJTZGsudXRpbD8ub3BlblNjcmVlbihcbiAgICAgICAgICAgIFNjcmVlbkRpc3BsYXlNb2RlLlNhbWVUYWIsXG4gICAgICAgICAgICBvcHRpb25zLnNjcmVlbklkLFxuICAgICAgICAgICAgb3B0aW9ucy5yZXF0b2tlbnMgfHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGEgc2NyZWVuIGluIGEgbmV3IHRhYi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBuYXZpZ2F0aW9uLCBpbmNsdWRpbmcgc2NyZWVuSWQgYW5kIG9wdGlvbmFsIHJlcXRva2Vucy5cbiAgICAgKi9cbiAgICBvcGVuSW5OZXdUYWIob3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgVGFiU2RrLnV0aWw/Lm9wZW5TY3JlZW4oXG4gICAgICAgICAgICBTY3JlZW5EaXNwbGF5TW9kZS5OZXdUYWIsXG4gICAgICAgICAgICBvcHRpb25zLnNjcmVlbklkLFxuICAgICAgICAgICAgb3B0aW9ucy5yZXF0b2tlbnMgfHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gbmF2aWdhdGUgdG8uXG4gICAgICovXG4gICAgbmF2aWdhdGVUb1VybChwYXJhbXM6IHsgdXJsOiBzdHJpbmcsIGV4dHJhcz86IGFueSwgcmVwbGFjZVVybD86IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgICAgICBUYWJTZGsudXRpbD8ubmF2aWdhdGVUbyh7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICB0eXBlOiBOYXZpZ2F0aW9uVHlwZS5OYXZpZ2F0ZVRvVXJsXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWVkIHN1YmRvbWFpbiB1c2luZyB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIG5hdmlnYXRpb24sIGluY2x1ZGluZyBzdWJEb21haW4sIGFwcENvZGUsIGFuZCB1cmwuXG4gICAgICovXG4gICAgbmF2aWdhdGVUb1N1YmRvbWFpbihvcHRpb25zOiBOYXZpZ2F0ZVRvU3ViZG9tYWluT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBUYWJTZGsudXRpbD8ubmF2aWdhdGVUbyh7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgdHlwZTogTmF2aWdhdGlvblR5cGUuTmF2aWdhdGVUb1N1YmRvbWFpblxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgYWN0aXZlIHNjcmVlbiBJRCBmcm9tIHRoZSBjdXJyZW50IFVSTC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBzY3JlZW4gSUQgaWYgcHJlc2VudCBpbiB0aGUgVVJMLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGdldEFjdGl2ZVVybFNjcmVlbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIFNwbGl0IHRoZSBVUkwgcGF0aG5hbWUgaW50byBwYXJ0cyB1c2luZyB0aGUgJy8nIGNoYXJhY3RlciBhcyBhIGRlbGltaXRlclxuICAgICAgICBjb25zdCB1cmxQYXJ0cyA9IHdpbmRvdz8ubG9jYXRpb24/LnBhdGhuYW1lPy5zcGxpdCgnLycpO1xuICAgICAgICAvLyBFeHRyYWN0IHRoZSBzY3JlZW4gSUQgcGFydCBhbmQgcmVtb3ZlIGFueSBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgICAgIGNvbnN0IHNjcmVlbklkID0gdXJsUGFydHM/Lmxlbmd0aCA+IDEgPyB1cmxQYXJ0cz8uW3VybFBhcnRzPy5sZW5ndGggLSAxXT8uc3BsaXQoJz8nKVswXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSBzY3JlZW4gSUQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgICAgICByZXR1cm4gc2NyZWVuSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBhY3RpdmUgcmVkaXJlY3QgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYWN0aXZlIHNjcmVlbiBJRCBhbmQgYW55IHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgcmVkaXJlY3QgVVJMIG9yIHVuZGVmaW5lZCBpZiBubyBzY3JlZW4gSUQgaXMgcHJlc2VudC5cbiAgICAgKi9cbiAgICBnZXRBY3RpdmVSZWRpcmVjdFVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBHZXQgdGhlIGFjdGl2ZSBzY3JlZW4gSUQgZnJvbSB0aGUgY3VycmVudCBVUkxcbiAgICAgICAgY29uc3Qgc2NyZWVuSWQgPSB0aGlzLmdldEFjdGl2ZVVybFNjcmVlbklkKCk7XG4gICAgICAgIGxldCByZWRpcmVjdFVSTDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBVUkwgY29udGFpbnMgYSBzY3JlZW4gSURcbiAgICAgICAgaWYgKHNjcmVlbklkKSB7XG4gICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSByZWRpcmVjdCBVUkwgd2l0aCB0aGUgc2NyZWVuIElEXG4gICAgICAgICAgICByZWRpcmVjdFVSTCA9IHNjcmVlbklkO1xuXG4gICAgICAgICAgICAvLyBQYXJzZSB0aGUgY3VycmVudCBVUkwncyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBxdWVyeSBwYXJhbWV0ZXJzLCBhcHBlbmQgdGhlbSB0byB0aGUgcmVkaXJlY3QgVVJMXG4gICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIHJlZGlyZWN0VVJMICs9IGAmJHtxdWVyeVBhcmFtcy50b1N0cmluZygpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdGhlIGNvbnN0cnVjdGVkIHJlZGlyZWN0IFVSTCBvciB1bmRlZmluZWRcbiAgICAgICAgcmV0dXJuIHJlZGlyZWN0VVJMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgYSBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBub3RpZnkob3B0aW9uczogTm90aWZpY2F0aW9uT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZnkoe1xuICAgICAgICAgICAgdHlwZTogb3B0aW9ucy50eXBlLFxuICAgICAgICAgICAgbWVzc2FnZTogVGFiU2RrLnRyYW5zbGF0b3IudHJhbnNsYXRlKG9wdGlvbnMubWVzc2FnZSksXG4gICAgICAgICAgICAuLi4ob3B0aW9ucz8udGl0bGUgPyB7IHRpdGxlOiBUYWJTZGsudHJhbnNsYXRvci50cmFuc2xhdGUob3B0aW9ucy50aXRsZSkgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihvcHRpb25zPy5jb25maWd1cmF0aW9uID8geyBjb25maWd1cmF0aW9uOiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBzdWNjZXNzIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd1N1Y2Nlc3Mob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3MsXG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucz8udGl0bGUgPz8gJ1N1Y2Nlc3MnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGEgd2FybmluZyBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgbm90aWZpY2F0aW9uLCBpbmNsdWRpbmcgbWVzc2FnZSwgdGl0bGUsIGFuZCBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNob3dXYXJuaW5nKG9wdGlvbnM6IEJhc2VOb3RpZmljYXRpb25PcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vdGlmeSh7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgdHlwZTogTm90aWZpY2F0aW9uVHlwZS5XYXJuaW5nLFxuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlID8/ICdXYXJuaW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBhbiBpbmZvIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd0luZm8ob3B0aW9uczogQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZ5KHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICB0eXBlOiBOb3RpZmljYXRpb25UeXBlLkluZm8sXG4gICAgICAgICAgICB0aXRsZTogb3B0aW9ucz8udGl0bGUgPz8gJ0luZm8nXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGFuIGVycm9yIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBub3RpZmljYXRpb24sIGluY2x1ZGluZyBtZXNzYWdlLCB0aXRsZSwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgc2hvd0Vycm9yKG9wdGlvbnM6IEJhc2VOb3RpZmljYXRpb25PcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vdGlmeSh7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgdHlwZTogTm90aWZpY2F0aW9uVHlwZS5FcnJvcixcbiAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zPy50aXRsZSA/PyAnRXJyb3InXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyBhIG5vdGlmaWNhdGlvbiBieSBJRC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBub3RpZmljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGNsZWFyLlxuICAgICAqIEByZXR1cm5zIFRoZSBjbGVhcmVkIG5vdGlmaWNhdGlvbiwgb3IgbnVsbCBpZiB0aGUgbm90aWZpY2F0aW9uIGRvZXNuJ3QgZXhpc3QuXG4gICAgICovXG4gICAgY2xlYXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5jbGVhck5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBjb25maXJtYXRpb24gZGlhbG9nIHRvIHRoZSB1c2VyIGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzXG4gICAgICogdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgdXNlciBjb25maXJtZWQgdGhlIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGl0bGUsIG1lc3NhZ2UsXG4gICAgICogY29uZmlybVRleHQsIGNhbmNlbFRleHQsIGFuZCB2aXNpYmlsaXR5IG9mIGJ1dHRvbnMuXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGNvbmZpcm0ob3B0aW9ucz86IENvbmZpcm1hdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0ob3B0aW9ucylcbiAgICAgICAgICAgICAgICA/LnN1YnNjcmliZSgoaXNDb25maXJtZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShpc0NvbmZpcm1lZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGEgY29uZmlybWF0aW9uIGRpYWxvZyB0byB0aGUgdXNlciB3aXRoIGEgdGl0bGUgYW5kIG1lc3NhZ2UgdGhhdCBpbmRpY2F0ZXNcbiAgICAgKiB0aGUgdXNlciBpcyBhYm91dCB0byBkZWxldGUgYW4gaXRlbS4gVGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgaGFzIGEgXCJEZWxldGVcIiBhbmQgXCJDYW5jZWxcIlxuICAgICAqIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGhlIGl0ZW0gbmFtZSBhbmRcbiAgICAgKiBvcHRpb25hbCBtZXNzYWdlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBjb25maXJtRGVsZXRlKG9wdGlvbnM/OiBDb25maXJtYXRpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm0oe1xuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnM/LnRpdGxlID8/IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkYCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCByZWNvcmQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwcm9jZWVkP2AsXG4gICAgICAgICAgICBwcmltYXJ5T3B0aW9uOiAnRGVsZXRlJyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYSBjb25maXJtYXRpb24gZGlhbG9nIHRvIHRoZSB1c2VyIHdpdGggYSB0aXRsZSBhbmQgbWVzc2FnZSB0aGF0IGluZGljYXRlc1xuICAgICAqIHRoZSB1c2VyIGlzIGFib3V0IHRvIGRpc2NhcmQgY2hhbmdlcyB0byBhbiBpdGVtLiBUaGUgY29uZmlybWF0aW9uIGRpYWxvZyBoYXMgYSBcIkRpc2NhcmRcIlxuICAgICAqIGFuZCBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLCBpbmNsdWRpbmcgdGhlIGl0ZW0gbmFtZSBhbmRcbiAgICAgKiBvcHRpb25hbCBtZXNzYWdlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBjb25maXJtRGlzY2FyZChvcHRpb25zPzogQ29uZmlybWF0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBjaGFuZ2VzYCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYFlvdSBhcmUgYWJvdXQgdG8gZGlzY2FyZCB5b3VyIGNoYW5nZXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwcm9jZWVkP2AsXG4gICAgICAgICAgICBwcmltYXJ5T3B0aW9uOiAnRGlzY2FyZCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNsb3NlQ29uZmlybWF0aW9uRGlhbG9nKCkge1xuICAgICAgICAvLyBDbG9zZSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZ1xuICAgICAgICB0aGlzLl9jb25maXJtYXRpb25TZXJ2aWNlLmNsb3NlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb25maXJtYXRpb24gZW1pdHRlciBmcm9tIHRoZSBjb25maXJtYXRpb24gc2VydmljZS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgY29uZmlybWF0aW9uIGVtaXR0ZXIgdXNlZCBmb3IgZW1pdHRpbmcgY29uZmlybWF0aW9uIGV2ZW50cy5cbiAgICAgKi9cbiAgICBnZXRDb25mb3JtYXRpb25FbWl0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5nZXRDb25mb3JtYXRpb25FbWl0dGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBkaWFsb2cgZW1pdHRlciBmcm9tIHRoZSBjb25maXJtYXRpb24gc2VydmljZS5cbiAgICAgKlxuICAgICAqIFRoZSBkaWFsb2cgZW1pdHRlciBpcyBhbiBSeEpTIFN1YmplY3QgdGhhdCBlbWl0cyB3aGVuZXZlciBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgaXNcbiAgICAgKiBvcGVuZWQgb3IgY2xvc2VkLiBUaGUgdmFsdWUgZW1pdHRlZCBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgZGlhbG9nIGlzXG4gICAgICogY3VycmVudGx5IG9wZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgZGlhbG9nIGVtaXR0ZXIgdXNlZCBmb3IgZW1pdHRpbmcgY29uZmlybWF0aW9uIGRpYWxvZyBldmVudHMuXG4gICAgICovXG4gICAgZ2V0RGlhbG9nRW1pdHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuZ2V0RGlhbG9nRW1pdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcmVtb3ZlIGVtaXR0ZXIgZnJvbSB0aGUgY29uZmlybWF0aW9uIHNlcnZpY2UuXG4gICAgICogXG4gICAgICogVGhlIHJlbW92ZSBlbWl0dGVyIGlzIGFuIFJ4SlMgU3ViamVjdCB0aGF0IGVtaXRzIHdoZW5ldmVyIGEgcmVtb3ZhbCBjb25maXJtYXRpb25cbiAgICAgKiBkaWFsb2cgaXMgb3BlbmVkIG9yIGNsb3NlZC4gVGhlIHZhbHVlIGVtaXR0ZWQgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhXG4gICAgICogcmVtb3ZhbCBkaWFsb2cgaXMgY3VycmVudGx5IG9wZW4uXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHJlbW92ZSBlbWl0dGVyIHVzZWQgZm9yIGVtaXR0aW5nIHJlbW92YWwgY29uZmlybWF0aW9uIGRpYWxvZyBldmVudHMuXG4gICAgICovXG4gICAgZ2V0UmVtb3ZlRW1pdHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuZ2V0UmVtb3ZlRW1pdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyB0aGUgcHJvdmlkZWQgdGV4dCB0byB0aGUgY2xpcGJvYXJkIGFuZCBkaXNwbGF5cyBhIHN1Y2Nlc3Mgbm90aWZpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBiZSBjb3BpZWQgdG8gdGhlIGNsaXBib2FyZC5cbiAgICAgKi9cbiAgICBjb3B5VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBpbnB1dCBlbGVtZW50IHRvIGhvbGQgdGhlIHRleHRcbiAgICAgICAgY29uc3QgdGVtcElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgaW5wdXQncyB2YWx1ZSB0byB0aGUgdGV4dCB0byBiZSBjb3BpZWRcbiAgICAgICAgdGVtcElucHV0LnZhbHVlID0gdGV4dDtcblxuICAgICAgICAvLyBBcHBlbmQgdGhlIHRlbXBvcmFyeSBpbnB1dCB0byB0aGUgZG9jdW1lbnQgYm9keVxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBJbnB1dCk7XG5cbiAgICAgICAgLy8gU2VsZWN0IHRoZSB0ZXh0IGluIHRoZSBpbnB1dCBlbGVtZW50XG4gICAgICAgIHRlbXBJbnB1dC5zZWxlY3QoKTtcblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb3B5IGNvbW1hbmRcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGlucHV0IGZyb20gdGhlIGRvY3VtZW50IGJvZHlcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZW1wSW5wdXQpO1xuXG4gICAgICAgIC8vIFNob3cgYSBzdWNjZXNzIG5vdGlmaWNhdGlvblxuICAgICAgICB0aGlzLnNob3dTdWNjZXNzKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiXCIsXG4gICAgICAgICAgICB0aXRsZTogXCJDb3BpZWQgdG8gY2xpcGJvYXJkIVwiLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIHRpbWVPdXQ6IDEwMDAsXG4gICAgICAgICAgICAgICAgcG9zaXRpb25DbGFzczogJ3RvYXN0LXRvcC1jZW50ZXInLFxuICAgICAgICAgICAgICAgIGVhc2luZzogJ2Vhc2UtaW4nLFxuICAgICAgICAgICAgICAgIGVhc2VUaW1lOiAzMDAsXG4gICAgICAgICAgICAgICAgZXh0ZW5kZWRUaW1lT3V0OiAyMDAwLFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIGN1cnJlbnQgVVJMIHRvIHRoZSBjbGlwYm9hcmQgYW5kIGRpc3BsYXlzIGEgc3VjY2VzcyBub3RpZmljYXRpb24uXG4gICAgICovXG4gICAgY29weUN1cnJlbnRVcmxUb0NsaXBib2FyZCgpIHtcbiAgICAgICAgLy8gVXNlIHRoZSBjb3B5VG9DbGlwYm9hcmQgbWV0aG9kIHRvIGNvcHkgdGhlIGN1cnJlbnQgd2luZG93IFVSTFxuICAgICAgICB0aGlzLmNvcHlUb0NsaXBib2FyZCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgfVxufSJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
* Public API Surface of tab-sdk
|
|
3
|
-
*/
|
|
1
|
+
// SDK
|
|
4
2
|
export * from './lib/tab-sdk.service';
|
|
5
|
-
|
|
3
|
+
// Enums
|
|
4
|
+
export * from './lib/enum/ui.enum';
|
|
5
|
+
export * from './lib/enum/store.enum';
|
|
6
|
+
// Interfaces
|
|
7
|
+
export * from './lib/interface/ui.interface';
|
|
8
|
+
export * from './lib/interface/http.interface';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsUUFBUTtBQUNSLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxhQUFhO0FBQ2IsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU0RLXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItc2RrLnNlcnZpY2UnO1xuXG4vLyBFbnVtc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW51bS91aS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VudW0vc3RvcmUuZW51bSc7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZS91aS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlL2h0dHAuaW50ZXJmYWNlJzsiXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { NotificationService, ConfirmationService, NotificationType, AuthService, TabFormioService, TemplateHelper, TabBlueprintService, AppHelper, MediaUploadHelper, TabReleaseService, TranslationService, TabCrudService, TabGetService, LocalStorageService, SessionStorageService, StorageConstants, MetadataHelper } from '@techextensor/tab-core-utility';
|
|
3
|
+
import { NotificationService, ConfirmationService, NotificationType, AuthService, TabFormioService, TemplateHelper, TabBlueprintService, AppHelper, MediaUploadHelper, ApiService, TabReleaseService, TranslationService, TabCrudService, TabGetService, LocalStorageService, SessionStorageService, StorageConstants, MetadataHelper } from '@techextensor/tab-core-utility';
|
|
4
4
|
import { firstValueFrom } from 'rxjs';
|
|
5
5
|
|
|
6
6
|
var ScreenDisplayMode;
|
|
@@ -52,7 +52,9 @@ class UiService {
|
|
|
52
52
|
...(options.title && { title: options.title }),
|
|
53
53
|
...(options.width && { width: options.width }),
|
|
54
54
|
...(options.height && { height: options.height }),
|
|
55
|
-
...(options.customClass && { customClass: options.customClass })
|
|
55
|
+
...(options.customClass && { customClass: options.customClass }),
|
|
56
|
+
...(options.refresher && { refresher: options.refresher }),
|
|
57
|
+
...(options.closer && { closer: options.closer })
|
|
56
58
|
};
|
|
57
59
|
TabSdk.util?.openScreen(ScreenDisplayMode.Sidebar, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
|
|
58
60
|
}
|
|
@@ -66,7 +68,9 @@ class UiService {
|
|
|
66
68
|
...(options.title && { title: options.title }),
|
|
67
69
|
...(options.width && { width: options.width }),
|
|
68
70
|
...(options.height && { height: options.height }),
|
|
69
|
-
...(options.customClass && { customClass: options.customClass })
|
|
71
|
+
...(options.customClass && { customClass: options.customClass }),
|
|
72
|
+
...(options.refresher && { refresher: options.refresher }),
|
|
73
|
+
...(options.closer && { closer: options.closer })
|
|
70
74
|
};
|
|
71
75
|
TabSdk.util?.openScreen(ScreenDisplayMode.Popup, options.screenId, options.reqtokens || undefined, options.submission || undefined, Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined);
|
|
72
76
|
}
|
|
@@ -91,9 +95,9 @@ class UiService {
|
|
|
91
95
|
*
|
|
92
96
|
* @param url - The URL to navigate to.
|
|
93
97
|
*/
|
|
94
|
-
navigateToUrl(
|
|
95
|
-
TabSdk.util?.
|
|
96
|
-
|
|
98
|
+
navigateToUrl(params) {
|
|
99
|
+
TabSdk.util?.navigateTo({
|
|
100
|
+
...params,
|
|
97
101
|
type: NavigationType.NavigateToUrl
|
|
98
102
|
});
|
|
99
103
|
}
|
|
@@ -103,9 +107,9 @@ class UiService {
|
|
|
103
107
|
* @param options - The options for navigation, including subDomain, appCode, and url.
|
|
104
108
|
*/
|
|
105
109
|
navigateToSubdomain(options) {
|
|
106
|
-
TabSdk.util?.
|
|
110
|
+
TabSdk.util?.navigateTo({
|
|
107
111
|
...options,
|
|
108
|
-
type: NavigationType.
|
|
112
|
+
type: NavigationType.NavigateToSubdomain
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
115
|
/**
|
|
@@ -114,20 +118,43 @@ class UiService {
|
|
|
114
118
|
* @returns The screen ID if present in the URL, otherwise undefined.
|
|
115
119
|
*/
|
|
116
120
|
getActiveUrlScreenId() {
|
|
117
|
-
// Split the URL pathname using the
|
|
118
|
-
const urlParts = window?.location?.pathname?.split(
|
|
121
|
+
// Split the URL pathname into parts using the '/' character as a delimiter
|
|
122
|
+
const urlParts = window?.location?.pathname?.split('/');
|
|
119
123
|
// Extract the screen ID part and remove any query parameters
|
|
120
|
-
const screenId = urlParts?.[1]?.split('?')[0];
|
|
124
|
+
const screenId = urlParts?.length > 1 ? urlParts?.[urlParts?.length - 1]?.split('?')[0] : undefined;
|
|
121
125
|
// Return the screen ID or undefined if not found
|
|
122
126
|
return screenId;
|
|
123
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Retrieves the active redirect URL by combining the active screen ID and any query parameters.
|
|
130
|
+
*
|
|
131
|
+
* @returns The constructed redirect URL or undefined if no screen ID is present.
|
|
132
|
+
*/
|
|
133
|
+
getActiveRedirectUrl() {
|
|
134
|
+
// Get the active screen ID from the current URL
|
|
135
|
+
const screenId = this.getActiveUrlScreenId();
|
|
136
|
+
let redirectURL;
|
|
137
|
+
// Check if the current URL contains a screen ID
|
|
138
|
+
if (screenId) {
|
|
139
|
+
// Initialize the redirect URL with the screen ID
|
|
140
|
+
redirectURL = screenId;
|
|
141
|
+
// Parse the current URL's query parameters
|
|
142
|
+
const queryParams = new URLSearchParams(window.location.search);
|
|
143
|
+
// If there are query parameters, append them to the redirect URL
|
|
144
|
+
if (queryParams.toString()) {
|
|
145
|
+
redirectURL += `&${queryParams.toString()}`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Return the constructed redirect URL or undefined
|
|
149
|
+
return redirectURL;
|
|
150
|
+
}
|
|
124
151
|
/**
|
|
125
152
|
* Show a notification to the user.
|
|
126
153
|
*
|
|
127
154
|
* @param options The options for the notification.
|
|
128
155
|
*/
|
|
129
156
|
notify(options) {
|
|
130
|
-
this._notificationService.notify({
|
|
157
|
+
return this._notificationService.notify({
|
|
131
158
|
type: options.type,
|
|
132
159
|
message: TabSdk.translator.translate(options.message),
|
|
133
160
|
...(options?.title ? { title: TabSdk.translator.translate(options.title) } : {}),
|
|
@@ -140,7 +167,7 @@ class UiService {
|
|
|
140
167
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
141
168
|
*/
|
|
142
169
|
showSuccess(options) {
|
|
143
|
-
this.notify({
|
|
170
|
+
return this.notify({
|
|
144
171
|
...options,
|
|
145
172
|
type: NotificationType.Success,
|
|
146
173
|
title: options?.title ?? 'Success'
|
|
@@ -152,7 +179,7 @@ class UiService {
|
|
|
152
179
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
153
180
|
*/
|
|
154
181
|
showWarning(options) {
|
|
155
|
-
this.notify({
|
|
182
|
+
return this.notify({
|
|
156
183
|
...options,
|
|
157
184
|
type: NotificationType.Warning,
|
|
158
185
|
title: options?.title ?? 'Warning'
|
|
@@ -164,7 +191,7 @@ class UiService {
|
|
|
164
191
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
165
192
|
*/
|
|
166
193
|
showInfo(options) {
|
|
167
|
-
this.notify({
|
|
194
|
+
return this.notify({
|
|
168
195
|
...options,
|
|
169
196
|
type: NotificationType.Info,
|
|
170
197
|
title: options?.title ?? 'Info'
|
|
@@ -176,12 +203,21 @@ class UiService {
|
|
|
176
203
|
* @param options - The options for the notification, including message, title, and configuration.
|
|
177
204
|
*/
|
|
178
205
|
showError(options) {
|
|
179
|
-
this.notify({
|
|
206
|
+
return this.notify({
|
|
180
207
|
...options,
|
|
181
208
|
type: NotificationType.Error,
|
|
182
209
|
title: options?.title ?? 'Error'
|
|
183
210
|
});
|
|
184
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Clears a notification by ID.
|
|
214
|
+
*
|
|
215
|
+
* @param notificationId - The ID of the notification to clear.
|
|
216
|
+
* @returns The cleared notification, or null if the notification doesn't exist.
|
|
217
|
+
*/
|
|
218
|
+
clearNotification(notificationId) {
|
|
219
|
+
return this._notificationService.clearNotification(notificationId);
|
|
220
|
+
}
|
|
185
221
|
/**
|
|
186
222
|
* Displays a confirmation dialog to the user and returns a promise that resolves
|
|
187
223
|
* to a boolean indicating whether the user confirmed the action.
|
|
@@ -663,6 +699,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
663
699
|
|
|
664
700
|
class FileService {
|
|
665
701
|
_mediaUploadHelper = inject(MediaUploadHelper);
|
|
702
|
+
apiService = inject(ApiService);
|
|
666
703
|
/**
|
|
667
704
|
* Uploads media files using the provided payload and optional headers.
|
|
668
705
|
*
|
|
@@ -688,6 +725,47 @@ class FileService {
|
|
|
688
725
|
// Return the response from the server
|
|
689
726
|
return response;
|
|
690
727
|
}
|
|
728
|
+
/**
|
|
729
|
+
* Processes an FTP URL and returns a processed URL.
|
|
730
|
+
*
|
|
731
|
+
* @param params - The parameters containing data, an optional defaultHeader, and an optional imgElement.
|
|
732
|
+
* @returns A promise that resolves to the processed URL or null if an error occurs.
|
|
733
|
+
*/
|
|
734
|
+
async processFtpUrl(params) {
|
|
735
|
+
// Return null if the data is invalid
|
|
736
|
+
if (!params?.data || params?.data === 'null' || params?.data === 'undefined')
|
|
737
|
+
return null;
|
|
738
|
+
try {
|
|
739
|
+
let url = params.data;
|
|
740
|
+
// Extract the value from a JSON string if it contains 'value'
|
|
741
|
+
if (url?.includes('value')) {
|
|
742
|
+
url = JSON.parse(url).value;
|
|
743
|
+
}
|
|
744
|
+
// Check if the URL is an image from the FileManager service
|
|
745
|
+
if (url.includes('FileManager/GetImage')) {
|
|
746
|
+
const options = { responseType: 'blob' };
|
|
747
|
+
// Add default headers if specified
|
|
748
|
+
if (params.defaultHeader) {
|
|
749
|
+
options.headers = TabSdk.util?.getDefaultAppHeaders();
|
|
750
|
+
}
|
|
751
|
+
// Fetch the image as a blob
|
|
752
|
+
const blob = await firstValueFrom(this.apiService.getByUrl(url, options));
|
|
753
|
+
// Create an object URL from the blob
|
|
754
|
+
url = URL.createObjectURL(blob);
|
|
755
|
+
}
|
|
756
|
+
// Set the image element's source to the processed URL
|
|
757
|
+
if (params.imgElement) {
|
|
758
|
+
params.imgElement.src = url;
|
|
759
|
+
params.imgElement.onload = null;
|
|
760
|
+
}
|
|
761
|
+
return url;
|
|
762
|
+
}
|
|
763
|
+
catch (e) {
|
|
764
|
+
// Log any errors that occur during processing
|
|
765
|
+
console.error("Error processing FTP", e);
|
|
766
|
+
return null;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
691
769
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
692
770
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileService, providedIn: 'root' });
|
|
693
771
|
}
|
|
@@ -1180,6 +1258,34 @@ class StoreService {
|
|
|
1180
1258
|
// Save the updated organization info back to storage
|
|
1181
1259
|
this.setOrgInfo(orgInfo);
|
|
1182
1260
|
}
|
|
1261
|
+
/**
|
|
1262
|
+
* Retrieves the locale settings from the organization info.
|
|
1263
|
+
*
|
|
1264
|
+
* @returns The locale settings if they exist, otherwise `null`.
|
|
1265
|
+
*/
|
|
1266
|
+
get orgLocaleSettings() {
|
|
1267
|
+
// Retrieve the locale settings from the organization info
|
|
1268
|
+
let localSettings = this.getOrgInfo()?.LocaleSettings;
|
|
1269
|
+
// If the locale settings are a string, parse them as JSON
|
|
1270
|
+
if (typeof localSettings === 'string') {
|
|
1271
|
+
localSettings = JSON.parse(localSettings);
|
|
1272
|
+
}
|
|
1273
|
+
// Return the locale settings
|
|
1274
|
+
return localSettings;
|
|
1275
|
+
}
|
|
1276
|
+
/**
|
|
1277
|
+
* Sets the locale settings in the organization info.
|
|
1278
|
+
*
|
|
1279
|
+
* @param value - The locale settings to set.
|
|
1280
|
+
*/
|
|
1281
|
+
set orgLocaleSettings(value) {
|
|
1282
|
+
// Retrieve the existing organization info or initialize a new object
|
|
1283
|
+
const orgInfo = this.getOrgInfo() || {};
|
|
1284
|
+
// Update the locale settings value
|
|
1285
|
+
orgInfo.LocaleSettings = value;
|
|
1286
|
+
// Save the updated organization info back to storage
|
|
1287
|
+
this.setOrgInfo(orgInfo);
|
|
1288
|
+
}
|
|
1183
1289
|
/**
|
|
1184
1290
|
* Retrieves the app ID from the app info.
|
|
1185
1291
|
*
|
|
@@ -1945,13 +2051,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1945
2051
|
}]
|
|
1946
2052
|
}] });
|
|
1947
2053
|
|
|
1948
|
-
|
|
1949
|
-
* Public API Surface of tab-sdk
|
|
1950
|
-
*/
|
|
2054
|
+
// SDK
|
|
1951
2055
|
|
|
1952
2056
|
/**
|
|
1953
2057
|
* Generated bundle index. Do not edit.
|
|
1954
2058
|
*/
|
|
1955
2059
|
|
|
1956
|
-
export { TabSdk };
|
|
2060
|
+
export { NavigationType, ScreenDisplayMode, StorageType, TabSdk };
|
|
1957
2061
|
//# sourceMappingURL=techextensor-tab-sdk.mjs.map
|