@growsober/sdk 1.0.0
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/README.md +276 -0
- package/dist/__tests__/e2e.test.d.ts +7 -0
- package/dist/__tests__/e2e.test.js +472 -0
- package/dist/api/client.d.ts +11 -0
- package/dist/api/client.js +61 -0
- package/dist/api/mutations/admin.d.ts +167 -0
- package/dist/api/mutations/admin.js +326 -0
- package/dist/api/mutations/ambassadors.d.ts +52 -0
- package/dist/api/mutations/ambassadors.js +148 -0
- package/dist/api/mutations/auth.d.ts +267 -0
- package/dist/api/mutations/auth.js +332 -0
- package/dist/api/mutations/bookings.d.ts +59 -0
- package/dist/api/mutations/bookings.js +143 -0
- package/dist/api/mutations/event-chat.d.ts +35 -0
- package/dist/api/mutations/event-chat.js +147 -0
- package/dist/api/mutations/events.d.ts +87 -0
- package/dist/api/mutations/events.js +205 -0
- package/dist/api/mutations/grow90.d.ts +36 -0
- package/dist/api/mutations/grow90.js +132 -0
- package/dist/api/mutations/hubs.d.ts +111 -0
- package/dist/api/mutations/hubs.js +240 -0
- package/dist/api/mutations/index.d.ts +22 -0
- package/dist/api/mutations/index.js +39 -0
- package/dist/api/mutations/jack.d.ts +61 -0
- package/dist/api/mutations/jack.js +104 -0
- package/dist/api/mutations/library.d.ts +67 -0
- package/dist/api/mutations/library.js +168 -0
- package/dist/api/mutations/map.d.ts +153 -0
- package/dist/api/mutations/map.js +181 -0
- package/dist/api/mutations/matching.d.ts +130 -0
- package/dist/api/mutations/matching.js +204 -0
- package/dist/api/mutations/notifications.d.ts +63 -0
- package/dist/api/mutations/notifications.js +106 -0
- package/dist/api/mutations/offers.d.ts +26 -0
- package/dist/api/mutations/offers.js +47 -0
- package/dist/api/mutations/subscriptions.d.ts +127 -0
- package/dist/api/mutations/subscriptions.js +140 -0
- package/dist/api/mutations/support.d.ts +165 -0
- package/dist/api/mutations/support.js +307 -0
- package/dist/api/mutations/users.d.ts +211 -0
- package/dist/api/mutations/users.js +261 -0
- package/dist/api/queries/admin.d.ts +257 -0
- package/dist/api/queries/admin.js +320 -0
- package/dist/api/queries/ambassadors.d.ts +53 -0
- package/dist/api/queries/ambassadors.js +98 -0
- package/dist/api/queries/auth.d.ts +16 -0
- package/dist/api/queries/auth.js +25 -0
- package/dist/api/queries/bookings.d.ts +91 -0
- package/dist/api/queries/bookings.js +102 -0
- package/dist/api/queries/businesses.d.ts +212 -0
- package/dist/api/queries/businesses.js +154 -0
- package/dist/api/queries/event-chat.d.ts +19 -0
- package/dist/api/queries/event-chat.js +75 -0
- package/dist/api/queries/events.d.ts +322 -0
- package/dist/api/queries/events.js +221 -0
- package/dist/api/queries/grow90.d.ts +26 -0
- package/dist/api/queries/grow90.js +85 -0
- package/dist/api/queries/hubs.d.ts +165 -0
- package/dist/api/queries/hubs.js +143 -0
- package/dist/api/queries/index.d.ts +23 -0
- package/dist/api/queries/index.js +40 -0
- package/dist/api/queries/jack.d.ts +63 -0
- package/dist/api/queries/jack.js +92 -0
- package/dist/api/queries/library.d.ts +132 -0
- package/dist/api/queries/library.js +120 -0
- package/dist/api/queries/map.d.ts +216 -0
- package/dist/api/queries/map.js +278 -0
- package/dist/api/queries/matching.d.ts +136 -0
- package/dist/api/queries/matching.js +161 -0
- package/dist/api/queries/notifications.d.ts +78 -0
- package/dist/api/queries/notifications.js +88 -0
- package/dist/api/queries/offers.d.ts +91 -0
- package/dist/api/queries/offers.js +103 -0
- package/dist/api/queries/subscriptions.d.ts +56 -0
- package/dist/api/queries/subscriptions.js +73 -0
- package/dist/api/queries/support.d.ts +106 -0
- package/dist/api/queries/support.js +202 -0
- package/dist/api/queries/users.d.ts +293 -0
- package/dist/api/queries/users.js +370 -0
- package/dist/api/types.d.ts +464 -0
- package/dist/api/types.js +9 -0
- package/dist/hooks/useAuth.d.ts +5 -0
- package/dist/hooks/useAuth.js +39 -0
- package/dist/hooks/useUser.d.ts +43 -0
- package/dist/hooks/useUser.js +44 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +67 -0
- package/package.json +62 -0
- package/src/__tests__/e2e.test.ts +502 -0
- package/src/api/client.ts +71 -0
- package/src/api/mutations/admin.ts +531 -0
- package/src/api/mutations/ambassadors.ts +185 -0
- package/src/api/mutations/auth.ts +350 -0
- package/src/api/mutations/bookings.ts +190 -0
- package/src/api/mutations/event-chat.ts +177 -0
- package/src/api/mutations/events.ts +273 -0
- package/src/api/mutations/grow90.ts +169 -0
- package/src/api/mutations/hubs.ts +385 -0
- package/src/api/mutations/index.ts +23 -0
- package/src/api/mutations/jack.ts +130 -0
- package/src/api/mutations/library.ts +212 -0
- package/src/api/mutations/map.ts +230 -0
- package/src/api/mutations/matching.ts +271 -0
- package/src/api/mutations/notifications.ts +114 -0
- package/src/api/mutations/offers.ts +73 -0
- package/src/api/mutations/subscriptions.ts +162 -0
- package/src/api/mutations/support.ts +390 -0
- package/src/api/mutations/users.ts +271 -0
- package/src/api/queries/admin.ts +480 -0
- package/src/api/queries/ambassadors.ts +139 -0
- package/src/api/queries/auth.ts +24 -0
- package/src/api/queries/bookings.ts +135 -0
- package/src/api/queries/businesses.ts +203 -0
- package/src/api/queries/event-chat.ts +78 -0
- package/src/api/queries/events.ts +272 -0
- package/src/api/queries/grow90.ts +98 -0
- package/src/api/queries/hubs.ts +211 -0
- package/src/api/queries/index.ts +24 -0
- package/src/api/queries/jack.ts +127 -0
- package/src/api/queries/library.ts +166 -0
- package/src/api/queries/map.ts +331 -0
- package/src/api/queries/matching.ts +238 -0
- package/src/api/queries/notifications.ts +103 -0
- package/src/api/queries/offers.ts +136 -0
- package/src/api/queries/subscriptions.ts +91 -0
- package/src/api/queries/support.ts +235 -0
- package/src/api/queries/users.ts +393 -0
- package/src/api/types.ts +596 -0
- package/src/index.ts +57 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.apiClient = void 0;
|
|
7
|
+
exports.configureSDK = configureSDK;
|
|
8
|
+
exports.getApiClient = getApiClient;
|
|
9
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
let config = null;
|
|
11
|
+
let apiClient = null;
|
|
12
|
+
exports.apiClient = apiClient;
|
|
13
|
+
function configureSDK(sdkConfig) {
|
|
14
|
+
config = sdkConfig;
|
|
15
|
+
exports.apiClient = apiClient = createApiClient(sdkConfig);
|
|
16
|
+
}
|
|
17
|
+
function getApiClient() {
|
|
18
|
+
if (!apiClient) {
|
|
19
|
+
throw new Error('SDK not configured. Call configureSDK() first.');
|
|
20
|
+
}
|
|
21
|
+
return apiClient;
|
|
22
|
+
}
|
|
23
|
+
function createApiClient(sdkConfig) {
|
|
24
|
+
const client = axios_1.default.create({
|
|
25
|
+
baseURL: sdkConfig.baseURL,
|
|
26
|
+
headers: {
|
|
27
|
+
'Content-Type': 'application/json',
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
// Request interceptor - add auth token
|
|
31
|
+
client.interceptors.request.use(async (requestConfig) => {
|
|
32
|
+
const token = await sdkConfig.getAccessToken();
|
|
33
|
+
if (token) {
|
|
34
|
+
requestConfig.headers.Authorization = `Bearer ${token}`;
|
|
35
|
+
}
|
|
36
|
+
return requestConfig;
|
|
37
|
+
}, (error) => Promise.reject(error));
|
|
38
|
+
// Response interceptor - handle 401
|
|
39
|
+
client.interceptors.response.use((response) => response, async (error) => {
|
|
40
|
+
if (error.response?.status === 401) {
|
|
41
|
+
if (sdkConfig.refreshAccessToken) {
|
|
42
|
+
try {
|
|
43
|
+
const newToken = await sdkConfig.refreshAccessToken();
|
|
44
|
+
if (newToken && error.config) {
|
|
45
|
+
error.config.headers.Authorization = `Bearer ${newToken}`;
|
|
46
|
+
return client.request(error.config);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
sdkConfig.onUnauthorized?.();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
sdkConfig.onUnauthorized?.();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return Promise.reject(error);
|
|
58
|
+
});
|
|
59
|
+
return client;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBWUEsb0NBR0M7QUFFRCxvQ0FLQztBQXRCRCxrREFBcUY7QUFTckYsSUFBSSxNQUFNLEdBQXFCLElBQUksQ0FBQztBQUNwQyxJQUFJLFNBQVMsR0FBeUIsSUFBSSxDQUFDO0FBNERsQyw4QkFBUztBQTFEbEIsU0FBZ0IsWUFBWSxDQUFDLFNBQW9CO0lBQy9DLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkIsb0JBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBZ0IsWUFBWTtJQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxTQUFvQjtJQUMzQyxNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsa0JBQWtCO1NBQ25DO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsdUNBQXVDO0lBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDN0IsS0FBSyxFQUFFLGFBQXlDLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUFDO0lBRUYsb0NBQW9DO0lBQ3BDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFDdEIsS0FBSyxFQUFFLEtBQWlCLEVBQUUsRUFBRTtRQUMxQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ25DLElBQUksU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUN0RCxJQUFJLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxVQUFVLFFBQVEsRUFBRSxDQUFDO3dCQUMxRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FDRixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlLCBBeGlvc0Vycm9yLCBJbnRlcm5hbEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcblxuZXhwb3J0IGludGVyZmFjZSBTREtDb25maWcge1xuICBiYXNlVVJMOiBzdHJpbmc7XG4gIGdldEFjY2Vzc1Rva2VuOiAoKSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgcmVmcmVzaEFjY2Vzc1Rva2VuPzogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBvblVuYXV0aG9yaXplZD86ICgpID0+IHZvaWQ7XG59XG5cbmxldCBjb25maWc6IFNES0NvbmZpZyB8IG51bGwgPSBudWxsO1xubGV0IGFwaUNsaWVudDogQXhpb3NJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlU0RLKHNka0NvbmZpZzogU0RLQ29uZmlnKTogdm9pZCB7XG4gIGNvbmZpZyA9IHNka0NvbmZpZztcbiAgYXBpQ2xpZW50ID0gY3JlYXRlQXBpQ2xpZW50KHNka0NvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcGlDbGllbnQoKTogQXhpb3NJbnN0YW5jZSB7XG4gIGlmICghYXBpQ2xpZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgbm90IGNvbmZpZ3VyZWQuIENhbGwgY29uZmlndXJlU0RLKCkgZmlyc3QuJyk7XG4gIH1cbiAgcmV0dXJuIGFwaUNsaWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXBpQ2xpZW50KHNka0NvbmZpZzogU0RLQ29uZmlnKTogQXhpb3NJbnN0YW5jZSB7XG4gIGNvbnN0IGNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgYmFzZVVSTDogc2RrQ29uZmlnLmJhc2VVUkwsXG4gICAgaGVhZGVyczoge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBSZXF1ZXN0IGludGVyY2VwdG9yIC0gYWRkIGF1dGggdG9rZW5cbiAgY2xpZW50LmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZShcbiAgICBhc3luYyAocmVxdWVzdENvbmZpZzogSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgc2RrQ29uZmlnLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgcmVxdWVzdENvbmZpZy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXF1ZXN0Q29uZmlnO1xuICAgIH0sXG4gICAgKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgKTtcblxuICAvLyBSZXNwb25zZSBpbnRlcmNlcHRvciAtIGhhbmRsZSA0MDFcbiAgY2xpZW50LmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoXG4gICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZSxcbiAgICBhc3luYyAoZXJyb3I6IEF4aW9zRXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvci5yZXNwb25zZT8uc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgaWYgKHNka0NvbmZpZy5yZWZyZXNoQWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbmV3VG9rZW4gPSBhd2FpdCBzZGtDb25maWcucmVmcmVzaEFjY2Vzc1Rva2VuKCk7XG4gICAgICAgICAgICBpZiAobmV3VG9rZW4gJiYgZXJyb3IuY29uZmlnKSB7XG4gICAgICAgICAgICAgIGVycm9yLmNvbmZpZy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7bmV3VG9rZW59YDtcbiAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5yZXF1ZXN0KGVycm9yLmNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBzZGtDb25maWcub25VbmF1dGhvcml6ZWQ/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZGtDb25maWcub25VbmF1dGhvcml6ZWQ/LigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgKTtcblxuICByZXR1cm4gY2xpZW50O1xufVxuXG5leHBvcnQgeyBhcGlDbGllbnQgfTtcbiJdfQ==
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin Mutation Hooks
|
|
3
|
+
*
|
|
4
|
+
* TanStack Query mutation hooks for admin-related write operations.
|
|
5
|
+
* These hooks handle admin actions like user management, content moderation,
|
|
6
|
+
* and business verification.
|
|
7
|
+
*
|
|
8
|
+
* @module api/mutations/admin
|
|
9
|
+
*/
|
|
10
|
+
import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
11
|
+
import type { UserResponse, HubResponse, EventResponse, BusinessResponse, LibraryContentResponse, CreateHubRequest, UpdateHubRequest, UpdateEventRequest } from '../types';
|
|
12
|
+
export interface AdminUpdateUserRequest {
|
|
13
|
+
displayName?: string;
|
|
14
|
+
email?: string;
|
|
15
|
+
role?: string;
|
|
16
|
+
isPremium?: boolean;
|
|
17
|
+
isSuspended?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface AdminCreateContentRequest {
|
|
20
|
+
title: string;
|
|
21
|
+
type: string;
|
|
22
|
+
category: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
content?: string;
|
|
25
|
+
mediaUrl?: string;
|
|
26
|
+
thumbnailUrl?: string;
|
|
27
|
+
duration?: number;
|
|
28
|
+
isPremium?: boolean;
|
|
29
|
+
isFeatured?: boolean;
|
|
30
|
+
sortOrder?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface AdminUpdateContentRequest extends Partial<AdminCreateContentRequest> {
|
|
33
|
+
}
|
|
34
|
+
export interface AdminVerifyBusinessRequest {
|
|
35
|
+
isVerified: boolean;
|
|
36
|
+
notes?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface AdminActionResponse {
|
|
39
|
+
success: boolean;
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Update user (admin)
|
|
44
|
+
*
|
|
45
|
+
* @endpoint PUT /api/v1/admin/users/{id}
|
|
46
|
+
*/
|
|
47
|
+
export declare function useAdminUpdateUser(options?: Omit<UseMutationOptions<UserResponse, Error, {
|
|
48
|
+
id: string;
|
|
49
|
+
data: AdminUpdateUserRequest;
|
|
50
|
+
}>, 'mutationFn'>): UseMutationResult<UserResponse, Error, {
|
|
51
|
+
id: string;
|
|
52
|
+
data: AdminUpdateUserRequest;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Suspend user (admin)
|
|
56
|
+
*
|
|
57
|
+
* @endpoint POST /api/v1/admin/users/{id}/suspend
|
|
58
|
+
*/
|
|
59
|
+
export declare function useAdminSuspendUser(options?: Omit<UseMutationOptions<AdminActionResponse, Error, {
|
|
60
|
+
id: string;
|
|
61
|
+
reason?: string;
|
|
62
|
+
}>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, {
|
|
63
|
+
id: string;
|
|
64
|
+
reason?: string;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Activate user (admin)
|
|
68
|
+
*
|
|
69
|
+
* @endpoint POST /api/v1/admin/users/{id}/activate
|
|
70
|
+
*/
|
|
71
|
+
export declare function useAdminActivateUser(options?: Omit<UseMutationOptions<AdminActionResponse, Error, string>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, string>;
|
|
72
|
+
/**
|
|
73
|
+
* Delete user (admin)
|
|
74
|
+
*
|
|
75
|
+
* @endpoint DELETE /api/v1/admin/users/{id}
|
|
76
|
+
*/
|
|
77
|
+
export declare function useAdminDeleteUser(options?: Omit<UseMutationOptions<AdminActionResponse, Error, string>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, string>;
|
|
78
|
+
/**
|
|
79
|
+
* Create hub (admin)
|
|
80
|
+
*
|
|
81
|
+
* @endpoint POST /api/v1/admin/hubs
|
|
82
|
+
*/
|
|
83
|
+
export declare function useAdminCreateHub(options?: Omit<UseMutationOptions<HubResponse, Error, CreateHubRequest>, 'mutationFn'>): UseMutationResult<HubResponse, Error, CreateHubRequest>;
|
|
84
|
+
/**
|
|
85
|
+
* Update hub (admin)
|
|
86
|
+
*
|
|
87
|
+
* @endpoint PUT /api/v1/admin/hubs/{id}
|
|
88
|
+
*/
|
|
89
|
+
export declare function useAdminUpdateHub(options?: Omit<UseMutationOptions<HubResponse, Error, {
|
|
90
|
+
id: string;
|
|
91
|
+
data: UpdateHubRequest;
|
|
92
|
+
}>, 'mutationFn'>): UseMutationResult<HubResponse, Error, {
|
|
93
|
+
id: string;
|
|
94
|
+
data: UpdateHubRequest;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Delete hub (admin)
|
|
98
|
+
*
|
|
99
|
+
* @endpoint DELETE /api/v1/admin/hubs/{id}
|
|
100
|
+
*/
|
|
101
|
+
export declare function useAdminDeleteHub(options?: Omit<UseMutationOptions<AdminActionResponse, Error, string>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, string>;
|
|
102
|
+
/**
|
|
103
|
+
* Update event (admin)
|
|
104
|
+
*
|
|
105
|
+
* @endpoint PUT /api/v1/admin/events/{id}
|
|
106
|
+
*/
|
|
107
|
+
export declare function useAdminUpdateEvent(options?: Omit<UseMutationOptions<EventResponse, Error, {
|
|
108
|
+
id: string;
|
|
109
|
+
data: UpdateEventRequest;
|
|
110
|
+
}>, 'mutationFn'>): UseMutationResult<EventResponse, Error, {
|
|
111
|
+
id: string;
|
|
112
|
+
data: UpdateEventRequest;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* Cancel event (admin)
|
|
116
|
+
*
|
|
117
|
+
* @endpoint POST /api/v1/admin/events/{id}/cancel
|
|
118
|
+
*/
|
|
119
|
+
export declare function useAdminCancelEvent(options?: Omit<UseMutationOptions<AdminActionResponse, Error, {
|
|
120
|
+
id: string;
|
|
121
|
+
reason?: string;
|
|
122
|
+
}>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, {
|
|
123
|
+
id: string;
|
|
124
|
+
reason?: string;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* Verify business (admin)
|
|
128
|
+
*
|
|
129
|
+
* @endpoint POST /api/v1/admin/businesses/{id}/verify
|
|
130
|
+
*/
|
|
131
|
+
export declare function useAdminVerifyBusiness(options?: Omit<UseMutationOptions<BusinessResponse, Error, {
|
|
132
|
+
id: string;
|
|
133
|
+
data: AdminVerifyBusinessRequest;
|
|
134
|
+
}>, 'mutationFn'>): UseMutationResult<BusinessResponse, Error, {
|
|
135
|
+
id: string;
|
|
136
|
+
data: AdminVerifyBusinessRequest;
|
|
137
|
+
}>;
|
|
138
|
+
/**
|
|
139
|
+
* Delete business (admin)
|
|
140
|
+
*
|
|
141
|
+
* @endpoint DELETE /api/v1/admin/businesses/{id}
|
|
142
|
+
*/
|
|
143
|
+
export declare function useAdminDeleteBusiness(options?: Omit<UseMutationOptions<AdminActionResponse, Error, string>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, string>;
|
|
144
|
+
/**
|
|
145
|
+
* Create content (admin)
|
|
146
|
+
*
|
|
147
|
+
* @endpoint POST /api/v1/admin/content
|
|
148
|
+
*/
|
|
149
|
+
export declare function useAdminCreateContent(options?: Omit<UseMutationOptions<LibraryContentResponse, Error, AdminCreateContentRequest>, 'mutationFn'>): UseMutationResult<LibraryContentResponse, Error, AdminCreateContentRequest>;
|
|
150
|
+
/**
|
|
151
|
+
* Update content (admin)
|
|
152
|
+
*
|
|
153
|
+
* @endpoint PUT /api/v1/admin/content/{id}
|
|
154
|
+
*/
|
|
155
|
+
export declare function useAdminUpdateContent(options?: Omit<UseMutationOptions<LibraryContentResponse, Error, {
|
|
156
|
+
id: string;
|
|
157
|
+
data: AdminUpdateContentRequest;
|
|
158
|
+
}>, 'mutationFn'>): UseMutationResult<LibraryContentResponse, Error, {
|
|
159
|
+
id: string;
|
|
160
|
+
data: AdminUpdateContentRequest;
|
|
161
|
+
}>;
|
|
162
|
+
/**
|
|
163
|
+
* Delete content (admin)
|
|
164
|
+
*
|
|
165
|
+
* @endpoint DELETE /api/v1/admin/content/{id}
|
|
166
|
+
*/
|
|
167
|
+
export declare function useAdminDeleteContent(options?: Omit<UseMutationOptions<AdminActionResponse, Error, string>, 'mutationFn'>): UseMutationResult<AdminActionResponse, Error, string>;
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Admin Mutation Hooks
|
|
4
|
+
*
|
|
5
|
+
* TanStack Query mutation hooks for admin-related write operations.
|
|
6
|
+
* These hooks handle admin actions like user management, content moderation,
|
|
7
|
+
* and business verification.
|
|
8
|
+
*
|
|
9
|
+
* @module api/mutations/admin
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.useAdminUpdateUser = useAdminUpdateUser;
|
|
13
|
+
exports.useAdminSuspendUser = useAdminSuspendUser;
|
|
14
|
+
exports.useAdminActivateUser = useAdminActivateUser;
|
|
15
|
+
exports.useAdminDeleteUser = useAdminDeleteUser;
|
|
16
|
+
exports.useAdminCreateHub = useAdminCreateHub;
|
|
17
|
+
exports.useAdminUpdateHub = useAdminUpdateHub;
|
|
18
|
+
exports.useAdminDeleteHub = useAdminDeleteHub;
|
|
19
|
+
exports.useAdminUpdateEvent = useAdminUpdateEvent;
|
|
20
|
+
exports.useAdminCancelEvent = useAdminCancelEvent;
|
|
21
|
+
exports.useAdminVerifyBusiness = useAdminVerifyBusiness;
|
|
22
|
+
exports.useAdminDeleteBusiness = useAdminDeleteBusiness;
|
|
23
|
+
exports.useAdminCreateContent = useAdminCreateContent;
|
|
24
|
+
exports.useAdminUpdateContent = useAdminUpdateContent;
|
|
25
|
+
exports.useAdminDeleteContent = useAdminDeleteContent;
|
|
26
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
27
|
+
const client_1 = require("../client");
|
|
28
|
+
const admin_1 = require("../queries/admin");
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// USER MUTATIONS
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Update user (admin)
|
|
34
|
+
*
|
|
35
|
+
* @endpoint PUT /api/v1/admin/users/{id}
|
|
36
|
+
*/
|
|
37
|
+
function useAdminUpdateUser(options) {
|
|
38
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
39
|
+
return (0, react_query_1.useMutation)({
|
|
40
|
+
mutationFn: async ({ id, data, }) => {
|
|
41
|
+
const client = (0, client_1.getApiClient)();
|
|
42
|
+
const response = await client.put(`/api/v1/admin/users/${id}`, data);
|
|
43
|
+
return response.data;
|
|
44
|
+
},
|
|
45
|
+
onSuccess: (_, variables) => {
|
|
46
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.detail(variables.id) });
|
|
47
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.list() });
|
|
48
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
49
|
+
},
|
|
50
|
+
...options,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Suspend user (admin)
|
|
55
|
+
*
|
|
56
|
+
* @endpoint POST /api/v1/admin/users/{id}/suspend
|
|
57
|
+
*/
|
|
58
|
+
function useAdminSuspendUser(options) {
|
|
59
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
60
|
+
return (0, react_query_1.useMutation)({
|
|
61
|
+
mutationFn: async ({ id, reason, }) => {
|
|
62
|
+
const client = (0, client_1.getApiClient)();
|
|
63
|
+
const response = await client.post(`/api/v1/admin/users/${id}/suspend`, { reason });
|
|
64
|
+
return response.data;
|
|
65
|
+
},
|
|
66
|
+
onSuccess: (_, variables) => {
|
|
67
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.detail(variables.id) });
|
|
68
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.list() });
|
|
69
|
+
},
|
|
70
|
+
...options,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Activate user (admin)
|
|
75
|
+
*
|
|
76
|
+
* @endpoint POST /api/v1/admin/users/{id}/activate
|
|
77
|
+
*/
|
|
78
|
+
function useAdminActivateUser(options) {
|
|
79
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
80
|
+
return (0, react_query_1.useMutation)({
|
|
81
|
+
mutationFn: async (id) => {
|
|
82
|
+
const client = (0, client_1.getApiClient)();
|
|
83
|
+
const response = await client.post(`/api/v1/admin/users/${id}/activate`);
|
|
84
|
+
return response.data;
|
|
85
|
+
},
|
|
86
|
+
onSuccess: (_, id) => {
|
|
87
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.detail(id) });
|
|
88
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.list() });
|
|
89
|
+
},
|
|
90
|
+
...options,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Delete user (admin)
|
|
95
|
+
*
|
|
96
|
+
* @endpoint DELETE /api/v1/admin/users/{id}
|
|
97
|
+
*/
|
|
98
|
+
function useAdminDeleteUser(options) {
|
|
99
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
100
|
+
return (0, react_query_1.useMutation)({
|
|
101
|
+
mutationFn: async (id) => {
|
|
102
|
+
const client = (0, client_1.getApiClient)();
|
|
103
|
+
const response = await client.delete(`/api/v1/admin/users/${id}`);
|
|
104
|
+
return response.data;
|
|
105
|
+
},
|
|
106
|
+
onSuccess: () => {
|
|
107
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.users.list() });
|
|
108
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
109
|
+
},
|
|
110
|
+
...options,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// ============================================================================
|
|
114
|
+
// HUB MUTATIONS
|
|
115
|
+
// ============================================================================
|
|
116
|
+
/**
|
|
117
|
+
* Create hub (admin)
|
|
118
|
+
*
|
|
119
|
+
* @endpoint POST /api/v1/admin/hubs
|
|
120
|
+
*/
|
|
121
|
+
function useAdminCreateHub(options) {
|
|
122
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
123
|
+
return (0, react_query_1.useMutation)({
|
|
124
|
+
mutationFn: async (data) => {
|
|
125
|
+
const client = (0, client_1.getApiClient)();
|
|
126
|
+
const response = await client.post('/api/v1/admin/hubs', data);
|
|
127
|
+
return response.data;
|
|
128
|
+
},
|
|
129
|
+
onSuccess: () => {
|
|
130
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.hubs.list() });
|
|
131
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
132
|
+
},
|
|
133
|
+
...options,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Update hub (admin)
|
|
138
|
+
*
|
|
139
|
+
* @endpoint PUT /api/v1/admin/hubs/{id}
|
|
140
|
+
*/
|
|
141
|
+
function useAdminUpdateHub(options) {
|
|
142
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
143
|
+
return (0, react_query_1.useMutation)({
|
|
144
|
+
mutationFn: async ({ id, data, }) => {
|
|
145
|
+
const client = (0, client_1.getApiClient)();
|
|
146
|
+
const response = await client.put(`/api/v1/admin/hubs/${id}`, data);
|
|
147
|
+
return response.data;
|
|
148
|
+
},
|
|
149
|
+
onSuccess: (_, variables) => {
|
|
150
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.hubs.detail(variables.id) });
|
|
151
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.hubs.list() });
|
|
152
|
+
},
|
|
153
|
+
...options,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Delete hub (admin)
|
|
158
|
+
*
|
|
159
|
+
* @endpoint DELETE /api/v1/admin/hubs/{id}
|
|
160
|
+
*/
|
|
161
|
+
function useAdminDeleteHub(options) {
|
|
162
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
163
|
+
return (0, react_query_1.useMutation)({
|
|
164
|
+
mutationFn: async (id) => {
|
|
165
|
+
const client = (0, client_1.getApiClient)();
|
|
166
|
+
const response = await client.delete(`/api/v1/admin/hubs/${id}`);
|
|
167
|
+
return response.data;
|
|
168
|
+
},
|
|
169
|
+
onSuccess: () => {
|
|
170
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.hubs.list() });
|
|
171
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
172
|
+
},
|
|
173
|
+
...options,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// EVENT MUTATIONS
|
|
178
|
+
// ============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Update event (admin)
|
|
181
|
+
*
|
|
182
|
+
* @endpoint PUT /api/v1/admin/events/{id}
|
|
183
|
+
*/
|
|
184
|
+
function useAdminUpdateEvent(options) {
|
|
185
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
186
|
+
return (0, react_query_1.useMutation)({
|
|
187
|
+
mutationFn: async ({ id, data, }) => {
|
|
188
|
+
const client = (0, client_1.getApiClient)();
|
|
189
|
+
const response = await client.put(`/api/v1/admin/events/${id}`, data);
|
|
190
|
+
return response.data;
|
|
191
|
+
},
|
|
192
|
+
onSuccess: (_, variables) => {
|
|
193
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.events.detail(variables.id) });
|
|
194
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.events.list() });
|
|
195
|
+
},
|
|
196
|
+
...options,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Cancel event (admin)
|
|
201
|
+
*
|
|
202
|
+
* @endpoint POST /api/v1/admin/events/{id}/cancel
|
|
203
|
+
*/
|
|
204
|
+
function useAdminCancelEvent(options) {
|
|
205
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
206
|
+
return (0, react_query_1.useMutation)({
|
|
207
|
+
mutationFn: async ({ id, reason, }) => {
|
|
208
|
+
const client = (0, client_1.getApiClient)();
|
|
209
|
+
const response = await client.post(`/api/v1/admin/events/${id}/cancel`, { reason });
|
|
210
|
+
return response.data;
|
|
211
|
+
},
|
|
212
|
+
onSuccess: (_, variables) => {
|
|
213
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.events.detail(variables.id) });
|
|
214
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.events.list() });
|
|
215
|
+
},
|
|
216
|
+
...options,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// ============================================================================
|
|
220
|
+
// BUSINESS MUTATIONS
|
|
221
|
+
// ============================================================================
|
|
222
|
+
/**
|
|
223
|
+
* Verify business (admin)
|
|
224
|
+
*
|
|
225
|
+
* @endpoint POST /api/v1/admin/businesses/{id}/verify
|
|
226
|
+
*/
|
|
227
|
+
function useAdminVerifyBusiness(options) {
|
|
228
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
229
|
+
return (0, react_query_1.useMutation)({
|
|
230
|
+
mutationFn: async ({ id, data, }) => {
|
|
231
|
+
const client = (0, client_1.getApiClient)();
|
|
232
|
+
const response = await client.post(`/api/v1/admin/businesses/${id}/verify`, data);
|
|
233
|
+
return response.data;
|
|
234
|
+
},
|
|
235
|
+
onSuccess: (_, variables) => {
|
|
236
|
+
queryClient.invalidateQueries({
|
|
237
|
+
queryKey: admin_1.adminKeys.businesses.detail(variables.id),
|
|
238
|
+
});
|
|
239
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.businesses.list() });
|
|
240
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
241
|
+
},
|
|
242
|
+
...options,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Delete business (admin)
|
|
247
|
+
*
|
|
248
|
+
* @endpoint DELETE /api/v1/admin/businesses/{id}
|
|
249
|
+
*/
|
|
250
|
+
function useAdminDeleteBusiness(options) {
|
|
251
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
252
|
+
return (0, react_query_1.useMutation)({
|
|
253
|
+
mutationFn: async (id) => {
|
|
254
|
+
const client = (0, client_1.getApiClient)();
|
|
255
|
+
const response = await client.delete(`/api/v1/admin/businesses/${id}`);
|
|
256
|
+
return response.data;
|
|
257
|
+
},
|
|
258
|
+
onSuccess: () => {
|
|
259
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.businesses.list() });
|
|
260
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.dashboard() });
|
|
261
|
+
},
|
|
262
|
+
...options,
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
// ============================================================================
|
|
266
|
+
// CONTENT MUTATIONS
|
|
267
|
+
// ============================================================================
|
|
268
|
+
/**
|
|
269
|
+
* Create content (admin)
|
|
270
|
+
*
|
|
271
|
+
* @endpoint POST /api/v1/admin/content
|
|
272
|
+
*/
|
|
273
|
+
function useAdminCreateContent(options) {
|
|
274
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
275
|
+
return (0, react_query_1.useMutation)({
|
|
276
|
+
mutationFn: async (data) => {
|
|
277
|
+
const client = (0, client_1.getApiClient)();
|
|
278
|
+
const response = await client.post('/api/v1/admin/content', data);
|
|
279
|
+
return response.data;
|
|
280
|
+
},
|
|
281
|
+
onSuccess: () => {
|
|
282
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.content.list() });
|
|
283
|
+
},
|
|
284
|
+
...options,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Update content (admin)
|
|
289
|
+
*
|
|
290
|
+
* @endpoint PUT /api/v1/admin/content/{id}
|
|
291
|
+
*/
|
|
292
|
+
function useAdminUpdateContent(options) {
|
|
293
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
294
|
+
return (0, react_query_1.useMutation)({
|
|
295
|
+
mutationFn: async ({ id, data, }) => {
|
|
296
|
+
const client = (0, client_1.getApiClient)();
|
|
297
|
+
const response = await client.put(`/api/v1/admin/content/${id}`, data);
|
|
298
|
+
return response.data;
|
|
299
|
+
},
|
|
300
|
+
onSuccess: (_, variables) => {
|
|
301
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.content.detail(variables.id) });
|
|
302
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.content.list() });
|
|
303
|
+
},
|
|
304
|
+
...options,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Delete content (admin)
|
|
309
|
+
*
|
|
310
|
+
* @endpoint DELETE /api/v1/admin/content/{id}
|
|
311
|
+
*/
|
|
312
|
+
function useAdminDeleteContent(options) {
|
|
313
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
314
|
+
return (0, react_query_1.useMutation)({
|
|
315
|
+
mutationFn: async (id) => {
|
|
316
|
+
const client = (0, client_1.getApiClient)();
|
|
317
|
+
const response = await client.delete(`/api/v1/admin/content/${id}`);
|
|
318
|
+
return response.data;
|
|
319
|
+
},
|
|
320
|
+
onSuccess: () => {
|
|
321
|
+
queryClient.invalidateQueries({ queryKey: admin_1.adminKeys.content.list() });
|
|
322
|
+
},
|
|
323
|
+
...options,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7O0FBd0VILGdEQTJCQztBQU9ELGtEQTZCQztBQU9ELG9EQW1CQztBQU9ELGdEQWlCQztBQVdELDhDQWlCQztBQU9ELDhDQTBCQztBQU9ELDhDQWlCQztBQVdELGtEQTBCQztBQU9ELGtEQTZCQztBQVdELHdEQXdDQztBQU9ELHdEQW1CQztBQVdELHNEQXNCQztBQU9ELHNEQXFDQztBQU9ELHNEQWtCQztBQXhnQkQsdURBSytCO0FBQy9CLHNDQUF5QztBQUN6Qyw0Q0FBNkM7QUFzRDdDLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7O0dBSUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsT0FHQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUF5QixFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBZSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLFdBQVcsQ0FBQyxp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IFF1ZXJ5IG11dGF0aW9uIGhvb2tzIGZvciBhZG1pbi1yZWxhdGVkIHdyaXRlIG9wZXJhdGlvbnMuXG4gKiBUaGVzZSBob29rcyBoYW5kbGUgYWRtaW4gYWN0aW9ucyBsaWtlIHVzZXIgbWFuYWdlbWVudCwgY29udGVudCBtb2RlcmF0aW9uLFxuICogYW5kIGJ1c2luZXNzIHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBAbW9kdWxlIGFwaS9tdXRhdGlvbnMvYWRtaW5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VNdXRhdGlvbixcbiAgVXNlTXV0YXRpb25PcHRpb25zLFxuICBVc2VNdXRhdGlvblJlc3VsdCxcbiAgdXNlUXVlcnlDbGllbnQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgYWRtaW5LZXlzIH0gZnJvbSAnLi4vcXVlcmllcy9hZG1pbic7XG5pbXBvcnQgdHlwZSB7XG4gIFVzZXJSZXNwb25zZSxcbiAgSHViUmVzcG9uc2UsXG4gIEV2ZW50UmVzcG9uc2UsXG4gIEJ1c2luZXNzUmVzcG9uc2UsXG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIENyZWF0ZUh1YlJlcXVlc3QsXG4gIFVwZGF0ZUh1YlJlcXVlc3QsXG4gIFVwZGF0ZUV2ZW50UmVxdWVzdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVRVNUIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5VcGRhdGVVc2VyUmVxdWVzdCB7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbiAgaXNQcmVtaXVtPzogYm9vbGVhbjtcbiAgaXNTdXNwZW5kZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluQ3JlYXRlQ29udGVudFJlcXVlc3Qge1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBtZWRpYVVybD86IHN0cmluZztcbiAgdGh1bWJuYWlsVXJsPzogc3RyaW5nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgaXNQcmVtaXVtPzogYm9vbGVhbjtcbiAgaXNGZWF0dXJlZD86IGJvb2xlYW47XG4gIHNvcnRPcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZG1pblVwZGF0ZUNvbnRlbnRSZXF1ZXN0IGV4dGVuZHMgUGFydGlhbDxBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluVmVyaWZ5QnVzaW5lc3NSZXF1ZXN0IHtcbiAgaXNWZXJpZmllZDogYm9vbGVhbjtcbiAgbm90ZXM/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNFIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5BY3Rpb25SZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVNFUiBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBVcGRhdGUgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL2FkbWluL3VzZXJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFVzZXJSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5VcGRhdGVVc2VyUmVxdWVzdCB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VXNlclJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblVwZGF0ZVVzZXJSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogQWRtaW5VcGRhdGVVc2VyUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxVc2VyUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PFVzZXJSZXNwb25zZT4oYC9hcGkvdjEvYWRtaW4vdXNlcnMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogU3VzcGVuZCB1c2VyIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL2FkbWluL3VzZXJzL3tpZH0vc3VzcGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5TdXNwZW5kVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IHJlYXNvbj86IHN0cmluZyB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgcmVhc29uPzogc3RyaW5nIH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgcmVhc29uLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZWFzb24/OiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8QWRtaW5BY3Rpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi91c2Vycy8ke2lkfS9zdXNwZW5kYCxcbiAgICAgICAgeyByZWFzb24gfVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQWN0aXZhdGUgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi91c2Vycy97aWR9L2FjdGl2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkFjdGl2YXRlVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QWRtaW5BY3Rpb25SZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL3VzZXJzLyR7aWR9L2FjdGl2YXRlYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgaWQpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy51c2Vycy5kZXRhaWwoaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSB1c2VyIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vdXNlcnMve2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5EZWxldGVVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL3VzZXJzLyR7aWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVUIgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGh1YiAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi9odWJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNyZWF0ZUh1YihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEh1YlJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlSHViUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEh1YlJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlSHViUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlSHViUmVxdWVzdCk6IFByb21pc2U8SHViUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxIdWJSZXNwb25zZT4oJy9hcGkvdjEvYWRtaW4vaHVicycsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5odWJzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBodWIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQVVQgL2FwaS92MS9hZG1pbi9odWJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlSHViKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8SHViUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUh1YlJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEh1YlJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVIdWJSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlSHViUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxIdWJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8SHViUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL2h1YnMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5kZXRhaWwodmFyaWFibGVzLmlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5odWJzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBodWIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBERUxFVEUgL2FwaS92MS9hZG1pbi9odWJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluRGVsZXRlSHViKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL2h1YnMvJHtpZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlQgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXBkYXRlIGV2ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvYWRtaW4vZXZlbnRzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlRXZlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxFdmVudFJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVFdmVudFJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEV2ZW50UmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUV2ZW50UmVxdWVzdCB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IFVwZGF0ZUV2ZW50UmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxFdmVudFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dDxFdmVudFJlc3BvbnNlPihgL2FwaS92MS9hZG1pbi9ldmVudHMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZXZlbnRzLmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmV2ZW50cy5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDYW5jZWwgZXZlbnQgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vZXZlbnRzL3tpZH0vY2FuY2VsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNhbmNlbEV2ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgcmVhc29uPzogc3RyaW5nIH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyByZWFzb24/OiBzdHJpbmcgfT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICByZWFzb24sXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHJlYXNvbj86IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QWRtaW5BY3Rpb25SZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2V2ZW50cy8ke2lkfS9jYW5jZWxgLFxuICAgICAgICB7IHJlYXNvbiB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5ldmVudHMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZXZlbnRzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCVVNJTkVTUyBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJpZnkgYnVzaW5lc3MgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vYnVzaW5lc3Nlcy97aWR9L3ZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5WZXJpZnlCdXNpbmVzcyhcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFxuICAgICAgQnVzaW5lc3NSZXNwb25zZSxcbiAgICAgIEVycm9yLFxuICAgICAgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdCB9XG4gICAgPixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8XG4gIEJ1c2luZXNzUmVzcG9uc2UsXG4gIEVycm9yLFxuICB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVmVyaWZ5QnVzaW5lc3NSZXF1ZXN0IH1cbj4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxCdXNpbmVzc1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QnVzaW5lc3NSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2J1c2luZXNzZXMvJHtpZH0vdmVyaWZ5YCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIHF1ZXJ5S2V5OiBhZG1pbktleXMuYnVzaW5lc3Nlcy5kZXRhaWwodmFyaWFibGVzLmlkKSxcbiAgICAgIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmJ1c2luZXNzZXMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGJ1c2luZXNzIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vYnVzaW5lc3Nlcy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkRlbGV0ZUJ1c2luZXNzKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi9idXNpbmVzc2VzLyR7aWR9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuYnVzaW5lc3Nlcy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEVOVCBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgY29udGVudCAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi9jb250ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNyZWF0ZUNvbnRlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxMaWJyYXJ5Q29udGVudFJlc3BvbnNlLCBFcnJvciwgQWRtaW5DcmVhdGVDb250ZW50UmVxdWVzdD4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PExpYnJhcnlDb250ZW50UmVzcG9uc2UsIEVycm9yLCBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0KTogUHJvbWlzZTxMaWJyYXJ5Q29udGVudFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4oXG4gICAgICAgICcvYXBpL3YxL2FkbWluL2NvbnRlbnQnLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50Lmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb250ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvYWRtaW4vY29udGVudC97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pblVwZGF0ZUNvbnRlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxcbiAgICAgIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gICAgICBFcnJvcixcbiAgICAgIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5VcGRhdGVDb250ZW50UmVxdWVzdCB9XG4gICAgPixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8XG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIEVycm9yLFxuICB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVXBkYXRlQ29udGVudFJlcXVlc3QgfVxuPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IEFkbWluVXBkYXRlQ29udGVudFJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2NvbnRlbnQvJHtpZH1gLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50LmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmNvbnRlbnQubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGNvbnRlbnQgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBERUxFVEUgL2FwaS92MS9hZG1pbi9jb250ZW50L3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluRGVsZXRlQ29udGVudChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZTxBZG1pbkFjdGlvblJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvYWRtaW4vY29udGVudC8ke2lkfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmNvbnRlbnQubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
|