@spotsdev/sdk 1.4.0 → 1.5.2
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/dist/index.cjs +2166 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1656 -0
- package/dist/index.d.ts +1655 -36
- package/dist/index.js +2021 -64
- package/dist/index.js.map +1 -0
- package/package.json +22 -6
- package/src/api/entities.ts +171 -170
- package/src/api/mutations/products.ts +18 -2
- package/src/api/queries/index.ts +4 -0
- package/src/api/queries/payments.ts +67 -0
- package/dist/api/client.d.ts +0 -12
- package/dist/api/client.js +0 -72
- package/dist/api/entities.d.ts +0 -305
- package/dist/api/entities.js +0 -13
- package/dist/api/mutations/clubs.d.ts +0 -47
- package/dist/api/mutations/clubs.js +0 -97
- package/dist/api/mutations/conversations.d.ts +0 -45
- package/dist/api/mutations/conversations.js +0 -114
- package/dist/api/mutations/index.d.ts +0 -14
- package/dist/api/mutations/index.js +0 -40
- package/dist/api/mutations/notifications.d.ts +0 -38
- package/dist/api/mutations/notifications.js +0 -64
- package/dist/api/mutations/orders.d.ts +0 -73
- package/dist/api/mutations/orders.js +0 -114
- package/dist/api/mutations/posts.d.ts +0 -123
- package/dist/api/mutations/posts.js +0 -242
- package/dist/api/mutations/products.d.ts +0 -81
- package/dist/api/mutations/products.js +0 -98
- package/dist/api/mutations/redemptions.d.ts +0 -33
- package/dist/api/mutations/redemptions.js +0 -63
- package/dist/api/mutations/spots.d.ts +0 -93
- package/dist/api/mutations/spots.js +0 -167
- package/dist/api/mutations/users.d.ts +0 -73
- package/dist/api/mutations/users.js +0 -175
- package/dist/api/queries/auth.d.ts +0 -37
- package/dist/api/queries/auth.js +0 -61
- package/dist/api/queries/clubs.d.ts +0 -52
- package/dist/api/queries/clubs.js +0 -116
- package/dist/api/queries/conversations.d.ts +0 -52
- package/dist/api/queries/conversations.js +0 -83
- package/dist/api/queries/index.d.ts +0 -28
- package/dist/api/queries/index.js +0 -69
- package/dist/api/queries/misc.d.ts +0 -30
- package/dist/api/queries/misc.js +0 -91
- package/dist/api/queries/notifications.d.ts +0 -34
- package/dist/api/queries/notifications.js +0 -62
- package/dist/api/queries/orders.d.ts +0 -45
- package/dist/api/queries/orders.js +0 -93
- package/dist/api/queries/posts.d.ts +0 -92
- package/dist/api/queries/posts.js +0 -233
- package/dist/api/queries/products.d.ts +0 -48
- package/dist/api/queries/products.js +0 -87
- package/dist/api/queries/spots.d.ts +0 -93
- package/dist/api/queries/spots.js +0 -250
- package/dist/api/queries/templates.d.ts +0 -39
- package/dist/api/queries/templates.js +0 -81
- package/dist/api/queries/users.d.ts +0 -104
- package/dist/api/queries/users.js +0 -235
- package/dist/api/queries/wallet.d.ts +0 -109
- package/dist/api/queries/wallet.js +0 -136
- package/dist/api/services/index.d.ts +0 -2
- package/dist/api/services/index.js +0 -8
- package/dist/api/services/marketplace.d.ts +0 -129
- package/dist/api/services/marketplace.js +0 -168
- package/dist/api/types.d.ts +0 -57
- package/dist/api/types.js +0 -33
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Users Query Hooks
|
|
3
|
-
*
|
|
4
|
-
* TanStack Query hooks for user-related operations.
|
|
5
|
-
*/
|
|
6
|
-
import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
|
|
7
|
-
import { type Club, type FavoriteSpot, type Post, type Spot, type SpotsSummaryResponse, type SpotSubscription, type User } from '../types';
|
|
8
|
-
export declare const userKeys: {
|
|
9
|
-
all: readonly ["users"];
|
|
10
|
-
me: () => readonly ["users", "me"];
|
|
11
|
-
stats: () => readonly ["users", "me", "stats"];
|
|
12
|
-
spotsSummary: () => readonly ["users", "me", "spots-summary"];
|
|
13
|
-
activity: (limit?: number) => readonly ["users", "me", "activity", number | undefined];
|
|
14
|
-
posts: (params?: {
|
|
15
|
-
page?: number;
|
|
16
|
-
limit?: number;
|
|
17
|
-
}) => readonly ["users", "me", "posts", {
|
|
18
|
-
page?: number;
|
|
19
|
-
limit?: number;
|
|
20
|
-
} | undefined];
|
|
21
|
-
clubs: () => readonly ["users", "me", "clubs"];
|
|
22
|
-
subscriptions: () => readonly ["users", "me", "subscriptions"];
|
|
23
|
-
blocked: () => readonly ["users", "me", "blocked"];
|
|
24
|
-
ownedSpots: () => readonly ["users", "me", "owned-spots"];
|
|
25
|
-
favorites: () => readonly ["users", "me", "favorites"];
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Get current user's profile
|
|
29
|
-
*
|
|
30
|
-
* @endpoint GET /users/me
|
|
31
|
-
*/
|
|
32
|
-
export declare function useCurrentUser(options?: Omit<UseQueryOptions<User>, 'queryKey' | 'queryFn'>): UseQueryResult<User>;
|
|
33
|
-
/**
|
|
34
|
-
* Get current user's stats
|
|
35
|
-
*
|
|
36
|
-
* @endpoint GET /users/me/stats
|
|
37
|
-
* @deprecated This endpoint doesn't exist in the API. Use useUserSpotsSummary instead.
|
|
38
|
-
*/
|
|
39
|
-
export declare function useUserStats(options?: Omit<UseQueryOptions<{
|
|
40
|
-
posts: number;
|
|
41
|
-
responses: number;
|
|
42
|
-
upvotes: number;
|
|
43
|
-
}>, 'queryKey' | 'queryFn'>): UseQueryResult<{
|
|
44
|
-
posts: number;
|
|
45
|
-
responses: number;
|
|
46
|
-
upvotes: number;
|
|
47
|
-
}>;
|
|
48
|
-
/**
|
|
49
|
-
* Get current user's spots summary with activity indicators
|
|
50
|
-
*
|
|
51
|
-
* Returns list of spots where user has posted, with:
|
|
52
|
-
* - Post count per spot
|
|
53
|
-
* - Unread messages count
|
|
54
|
-
* - Pending responses count
|
|
55
|
-
* - Last activity timestamp
|
|
56
|
-
*
|
|
57
|
-
* @endpoint GET /users/me/spots-summary
|
|
58
|
-
*/
|
|
59
|
-
export declare function useUserSpotsSummary(options?: Omit<UseQueryOptions<SpotsSummaryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotsSummaryResponse>;
|
|
60
|
-
/**
|
|
61
|
-
* Get current user's activity
|
|
62
|
-
*
|
|
63
|
-
* @endpoint GET /users/me/activity
|
|
64
|
-
*/
|
|
65
|
-
export declare function useUserActivity(limit?: number, options?: Omit<UseQueryOptions<unknown[]>, 'queryKey' | 'queryFn'>): UseQueryResult<unknown[]>;
|
|
66
|
-
/**
|
|
67
|
-
* Get current user's posts
|
|
68
|
-
*
|
|
69
|
-
* @endpoint GET /user/me/posts
|
|
70
|
-
*/
|
|
71
|
-
export declare function useUserPosts(params?: {
|
|
72
|
-
page?: number;
|
|
73
|
-
limit?: number;
|
|
74
|
-
}, options?: Omit<UseQueryOptions<Post[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Post[]>;
|
|
75
|
-
/**
|
|
76
|
-
* Get current user's clubs
|
|
77
|
-
*
|
|
78
|
-
* @endpoint GET /user/me/clubs
|
|
79
|
-
*/
|
|
80
|
-
export declare function useUserClubs(options?: Omit<UseQueryOptions<Club[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Club[]>;
|
|
81
|
-
/**
|
|
82
|
-
* Get current user's spot subscriptions
|
|
83
|
-
*
|
|
84
|
-
* @endpoint GET /user/me/subscriptions
|
|
85
|
-
*/
|
|
86
|
-
export declare function useUserSubscriptions(options?: Omit<UseQueryOptions<SpotSubscription[]>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotSubscription[]>;
|
|
87
|
-
/**
|
|
88
|
-
* Get blocked users list
|
|
89
|
-
*
|
|
90
|
-
* @endpoint GET /user/me/blocked
|
|
91
|
-
*/
|
|
92
|
-
export declare function useBlockedUsers(options?: Omit<UseQueryOptions<User[]>, 'queryKey' | 'queryFn'>): UseQueryResult<User[]>;
|
|
93
|
-
/**
|
|
94
|
-
* Get current user's owned spots (for business owners)
|
|
95
|
-
*
|
|
96
|
-
* @endpoint GET /users/me/owned-spots
|
|
97
|
-
*/
|
|
98
|
-
export declare function useOwnedSpots(options?: Omit<UseQueryOptions<Spot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot[]>;
|
|
99
|
-
/**
|
|
100
|
-
* Get current user's favorite spots
|
|
101
|
-
*
|
|
102
|
-
* @endpoint GET /users/me/favorites
|
|
103
|
-
*/
|
|
104
|
-
export declare function useUserFavorites(options?: Omit<UseQueryOptions<FavoriteSpot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<FavoriteSpot[]>;
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Users Query Hooks
|
|
4
|
-
*
|
|
5
|
-
* TanStack Query hooks for user-related operations.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.userKeys = void 0;
|
|
9
|
-
exports.useCurrentUser = useCurrentUser;
|
|
10
|
-
exports.useUserStats = useUserStats;
|
|
11
|
-
exports.useUserSpotsSummary = useUserSpotsSummary;
|
|
12
|
-
exports.useUserActivity = useUserActivity;
|
|
13
|
-
exports.useUserPosts = useUserPosts;
|
|
14
|
-
exports.useUserClubs = useUserClubs;
|
|
15
|
-
exports.useUserSubscriptions = useUserSubscriptions;
|
|
16
|
-
exports.useBlockedUsers = useBlockedUsers;
|
|
17
|
-
exports.useOwnedSpots = useOwnedSpots;
|
|
18
|
-
exports.useUserFavorites = useUserFavorites;
|
|
19
|
-
const react_query_1 = require("@tanstack/react-query");
|
|
20
|
-
const client_1 = require("../client");
|
|
21
|
-
// Helper to extract array data from API response
|
|
22
|
-
// API can return either { data: T[] } or { data: { data: T[], meta?: {...} } }
|
|
23
|
-
function extractArrayData(data) {
|
|
24
|
-
if (Array.isArray(data)) {
|
|
25
|
-
return data;
|
|
26
|
-
}
|
|
27
|
-
if (data && typeof data === 'object' && 'data' in data) {
|
|
28
|
-
const nested = data.data;
|
|
29
|
-
if (Array.isArray(nested)) {
|
|
30
|
-
return nested;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
// ============================================================================
|
|
36
|
-
// QUERY KEYS
|
|
37
|
-
// ============================================================================
|
|
38
|
-
exports.userKeys = {
|
|
39
|
-
all: ['users'],
|
|
40
|
-
me: () => [...exports.userKeys.all, 'me'],
|
|
41
|
-
stats: () => [...exports.userKeys.me(), 'stats'],
|
|
42
|
-
spotsSummary: () => [...exports.userKeys.me(), 'spots-summary'],
|
|
43
|
-
activity: (limit) => [...exports.userKeys.me(), 'activity', limit],
|
|
44
|
-
posts: (params) => [...exports.userKeys.me(), 'posts', params],
|
|
45
|
-
clubs: () => [...exports.userKeys.me(), 'clubs'],
|
|
46
|
-
subscriptions: () => [...exports.userKeys.me(), 'subscriptions'],
|
|
47
|
-
blocked: () => [...exports.userKeys.me(), 'blocked'],
|
|
48
|
-
ownedSpots: () => [...exports.userKeys.me(), 'owned-spots'],
|
|
49
|
-
favorites: () => [...exports.userKeys.me(), 'favorites'],
|
|
50
|
-
};
|
|
51
|
-
// ============================================================================
|
|
52
|
-
// QUERY HOOKS
|
|
53
|
-
// ============================================================================
|
|
54
|
-
/**
|
|
55
|
-
* Get current user's profile
|
|
56
|
-
*
|
|
57
|
-
* @endpoint GET /users/me
|
|
58
|
-
*/
|
|
59
|
-
function useCurrentUser(options) {
|
|
60
|
-
return (0, react_query_1.useQuery)({
|
|
61
|
-
queryKey: exports.userKeys.me(),
|
|
62
|
-
queryFn: async () => {
|
|
63
|
-
console.log('[SDK-USERS] Fetching /users/me...');
|
|
64
|
-
const client = (0, client_1.getApiClient)();
|
|
65
|
-
try {
|
|
66
|
-
const response = await client.get('/users/me');
|
|
67
|
-
console.log('[SDK-USERS] Success:', response.status);
|
|
68
|
-
return response.data.data;
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
const axiosError = error;
|
|
72
|
-
console.log('[SDK-USERS] Error:', axiosError.response?.status, 'URL:', axiosError.config?.baseURL, axiosError.config?.url);
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
...options,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get current user's stats
|
|
81
|
-
*
|
|
82
|
-
* @endpoint GET /users/me/stats
|
|
83
|
-
* @deprecated This endpoint doesn't exist in the API. Use useUserSpotsSummary instead.
|
|
84
|
-
*/
|
|
85
|
-
function useUserStats(options) {
|
|
86
|
-
return (0, react_query_1.useQuery)({
|
|
87
|
-
queryKey: exports.userKeys.stats(),
|
|
88
|
-
queryFn: async () => {
|
|
89
|
-
const client = (0, client_1.getApiClient)();
|
|
90
|
-
const response = await client.get('/users/me/stats');
|
|
91
|
-
return response.data.data;
|
|
92
|
-
},
|
|
93
|
-
...options,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get current user's spots summary with activity indicators
|
|
98
|
-
*
|
|
99
|
-
* Returns list of spots where user has posted, with:
|
|
100
|
-
* - Post count per spot
|
|
101
|
-
* - Unread messages count
|
|
102
|
-
* - Pending responses count
|
|
103
|
-
* - Last activity timestamp
|
|
104
|
-
*
|
|
105
|
-
* @endpoint GET /users/me/spots-summary
|
|
106
|
-
*/
|
|
107
|
-
function useUserSpotsSummary(options) {
|
|
108
|
-
return (0, react_query_1.useQuery)({
|
|
109
|
-
queryKey: exports.userKeys.spotsSummary(),
|
|
110
|
-
queryFn: async () => {
|
|
111
|
-
const client = (0, client_1.getApiClient)();
|
|
112
|
-
const response = await client.get('/users/me/spots-summary');
|
|
113
|
-
return response.data.data;
|
|
114
|
-
},
|
|
115
|
-
...options,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get current user's activity
|
|
120
|
-
*
|
|
121
|
-
* @endpoint GET /users/me/activity
|
|
122
|
-
*/
|
|
123
|
-
function useUserActivity(limit = 10, options) {
|
|
124
|
-
return (0, react_query_1.useQuery)({
|
|
125
|
-
queryKey: exports.userKeys.activity(limit),
|
|
126
|
-
queryFn: async () => {
|
|
127
|
-
const client = (0, client_1.getApiClient)();
|
|
128
|
-
const response = await client.get(`/users/me/activity?limit=${limit}`);
|
|
129
|
-
return extractArrayData(response.data.data);
|
|
130
|
-
},
|
|
131
|
-
...options,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get current user's posts
|
|
136
|
-
*
|
|
137
|
-
* @endpoint GET /user/me/posts
|
|
138
|
-
*/
|
|
139
|
-
function useUserPosts(params, options) {
|
|
140
|
-
return (0, react_query_1.useQuery)({
|
|
141
|
-
queryKey: exports.userKeys.posts(params),
|
|
142
|
-
queryFn: async () => {
|
|
143
|
-
const client = (0, client_1.getApiClient)();
|
|
144
|
-
const queryParams = new URLSearchParams();
|
|
145
|
-
if (params?.page)
|
|
146
|
-
queryParams.set('page', String(params.page));
|
|
147
|
-
if (params?.limit)
|
|
148
|
-
queryParams.set('limit', String(params.limit));
|
|
149
|
-
const response = await client.get(`/user/me/posts?${queryParams}`);
|
|
150
|
-
return extractArrayData(response.data.data);
|
|
151
|
-
},
|
|
152
|
-
...options,
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Get current user's clubs
|
|
157
|
-
*
|
|
158
|
-
* @endpoint GET /user/me/clubs
|
|
159
|
-
*/
|
|
160
|
-
function useUserClubs(options) {
|
|
161
|
-
return (0, react_query_1.useQuery)({
|
|
162
|
-
queryKey: exports.userKeys.clubs(),
|
|
163
|
-
queryFn: async () => {
|
|
164
|
-
const client = (0, client_1.getApiClient)();
|
|
165
|
-
const response = await client.get('/user/me/clubs');
|
|
166
|
-
return extractArrayData(response.data.data);
|
|
167
|
-
},
|
|
168
|
-
...options,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Get current user's spot subscriptions
|
|
173
|
-
*
|
|
174
|
-
* @endpoint GET /user/me/subscriptions
|
|
175
|
-
*/
|
|
176
|
-
function useUserSubscriptions(options) {
|
|
177
|
-
return (0, react_query_1.useQuery)({
|
|
178
|
-
queryKey: exports.userKeys.subscriptions(),
|
|
179
|
-
queryFn: async () => {
|
|
180
|
-
const client = (0, client_1.getApiClient)();
|
|
181
|
-
const response = await client.get('/user/me/subscriptions');
|
|
182
|
-
return extractArrayData(response.data.data);
|
|
183
|
-
},
|
|
184
|
-
...options,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get blocked users list
|
|
189
|
-
*
|
|
190
|
-
* @endpoint GET /user/me/blocked
|
|
191
|
-
*/
|
|
192
|
-
function useBlockedUsers(options) {
|
|
193
|
-
return (0, react_query_1.useQuery)({
|
|
194
|
-
queryKey: exports.userKeys.blocked(),
|
|
195
|
-
queryFn: async () => {
|
|
196
|
-
const client = (0, client_1.getApiClient)();
|
|
197
|
-
const response = await client.get('/user/me/blocked');
|
|
198
|
-
return extractArrayData(response.data.data);
|
|
199
|
-
},
|
|
200
|
-
...options,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Get current user's owned spots (for business owners)
|
|
205
|
-
*
|
|
206
|
-
* @endpoint GET /users/me/owned-spots
|
|
207
|
-
*/
|
|
208
|
-
function useOwnedSpots(options) {
|
|
209
|
-
return (0, react_query_1.useQuery)({
|
|
210
|
-
queryKey: exports.userKeys.ownedSpots(),
|
|
211
|
-
queryFn: async () => {
|
|
212
|
-
const client = (0, client_1.getApiClient)();
|
|
213
|
-
const response = await client.get('/users/me/owned-spots');
|
|
214
|
-
return extractArrayData(response.data.data);
|
|
215
|
-
},
|
|
216
|
-
...options,
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get current user's favorite spots
|
|
221
|
-
*
|
|
222
|
-
* @endpoint GET /users/me/favorites
|
|
223
|
-
*/
|
|
224
|
-
function useUserFavorites(options) {
|
|
225
|
-
return (0, react_query_1.useQuery)({
|
|
226
|
-
queryKey: exports.userKeys.favorites(),
|
|
227
|
-
queryFn: async () => {
|
|
228
|
-
const client = (0, client_1.getApiClient)();
|
|
229
|
-
const response = await client.get('/users/me/favorites');
|
|
230
|
-
return extractArrayData(response.data.data);
|
|
231
|
-
},
|
|
232
|
-
...options,
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvdXNlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQStESCx3Q0E2QkM7QUFRRCxvQ0FrQkM7QUFhRCxrREFjQztBQU9ELDBDQWVDO0FBT0Qsb0NBa0JDO0FBT0Qsb0NBWUM7QUFPRCxvREFjQztBQU9ELDBDQWFDO0FBT0Qsc0NBY0M7QUFPRCw0Q0FjQztBQXBTRCx1REFJOEI7QUFFOUIsc0NBQXNDO0FBWXRDLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFDL0UsU0FBUyxnQkFBZ0IsQ0FBSSxJQUFhO0lBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUNELElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUksSUFBd0IsQ0FBQyxJQUFJLENBQUE7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBRWxFLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBVTtJQUN2QixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBVTtJQUMxQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQ2pELFlBQVksRUFBRSxHQUFH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Z0JBQWdCLENBQzlCLE9BQXVFO0lBRXZFLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsU0FBUyxFQUFFO1FBQzlCLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQTtZQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLHFCQUFxQixDQUN0QixDQUFBO1lBQ0QsT0FBTyxnQkFBZ0IsQ0FBZSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2VycyBRdWVyeSBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciB1c2VyLXJlbGF0ZWQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VRdWVyeSxcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7XG4gIHR5cGUgQXBpUmVzcG9uc2UsXG4gIHR5cGUgQ2x1YixcbiAgdHlwZSBGYXZvcml0ZVNwb3QsXG4gIHR5cGUgUG9zdCxcbiAgdHlwZSBTcG90LFxuICB0eXBlIFNwb3RzU3VtbWFyeVJlc3BvbnNlLFxuICB0eXBlIFNwb3RTdWJzY3JpcHRpb24sXG4gIHR5cGUgVXNlcixcbn0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vIEhlbHBlciB0byBleHRyYWN0IGFycmF5IGRhdGEgZnJvbSBBUEkgcmVzcG9uc2Vcbi8vIEFQSSBjYW4gcmV0dXJuIGVpdGhlciB7IGRhdGE6IFRbXSB9IG9yIHsgZGF0YTogeyBkYXRhOiBUW10sIG1ldGE/OiB7Li4ufSB9IH1cbmZ1bmN0aW9uIGV4dHJhY3RBcnJheURhdGE8VD4oZGF0YTogdW5rbm93bik6IFRbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGRhdGEpIHtcbiAgICBjb25zdCBuZXN0ZWQgPSAoZGF0YSBhcyB7ZGF0YTogdW5rbm93bn0pLmRhdGFcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXN0ZWQpKSB7XG4gICAgICByZXR1cm4gbmVzdGVkXG4gICAgfVxuICB9XG4gIHJldHVybiBbXVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBLRVlTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCB1c2VyS2V5cyA9IHtcbiAgYWxsOiBbJ3VzZXJzJ10gYXMgY29uc3QsXG4gIG1lOiAoKSA9PiBbLi4udXNlcktleXMuYWxsLCAnbWUnXSBhcyBjb25zdCxcbiAgc3RhdHM6ICgpID0+IFsuLi51c2VyS2V5cy5tZSgpLCAnc3RhdHMnXSBhcyBjb25zdCxcbiAgc3BvdHNTdW1tYXJ5OiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ3Nwb3RzLXN1bW1hcnknXSBhcyBjb25zdCxcbiAgYWN0aXZpdHk6IChsaW1pdD86IG51bWJlcikgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdhY3Rpdml0eScsIGxpbWl0XSBhcyBjb25zdCxcbiAgcG9zdHM6IChwYXJhbXM/OiB7cGFnZT86IG51bWJlcjsgbGltaXQ/OiBudW1iZXJ9KSA9PlxuICAgIFsuLi51c2VyS2V5cy5tZSgpLCAncG9zdHMnLCBwYXJhbXNdIGFzIGNvbnN0LFxuICBjbHViczogKCkgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdjbHVicyddIGFzIGNvbnN0LFxuICBzdWJzY3JpcHRpb25zOiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ3N1YnNjcmlwdGlvbnMnXSBhcyBjb25zdCxcbiAgYmxvY2tlZDogKCkgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdibG9ja2VkJ10gYXMgY29uc3QsXG4gIG93bmVkU3BvdHM6ICgpID0+IFsuLi51c2VyS2V5cy5tZSgpLCAnb3duZWQtc3BvdHMnXSBhcyBjb25zdCxcbiAgZmF2b3JpdGVzOiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ2Zhdm9yaXRlcyddIGFzIGNvbnN0LFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBwcm9maWxlXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUN1cnJlbnRVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VXNlcj4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8VXNlcj4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdbU0RLLVVTRVJTXSBGZXRjaGluZyAvdXNlcnMvbWUuLi4nKVxuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxVc2VyPj4oJy91c2Vycy9tZScpXG4gICAgICAgIGNvbnNvbGUubG9nKCdbU0RLLVVTRVJTXSBTdWNjZXNzOicsIHJlc3BvbnNlLnN0YXR1cylcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IGVycm9yIGFzIHtcbiAgICAgICAgICByZXNwb25zZT86IHtzdGF0dXM6IG51bWJlcn1cbiAgICAgICAgICBjb25maWc/OiB7dXJsOiBzdHJpbmc7IGJhc2VVUkw/OiBzdHJpbmd9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgJ1tTREstVVNFUlNdIEVycm9yOicsXG4gICAgICAgICAgYXhpb3NFcnJvci5yZXNwb25zZT8uc3RhdHVzLFxuICAgICAgICAgICdVUkw6JyxcbiAgICAgICAgICBheGlvc0Vycm9yLmNvbmZpZz8uYmFzZVVSTCxcbiAgICAgICAgICBheGlvc0Vycm9yLmNvbmZpZz8udXJsLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBzdGF0c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL3N0YXRzXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGVuZHBvaW50IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIEFQSS4gVXNlIHVzZVVzZXJTcG90c1N1bW1hcnkgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJTdGF0cyhcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlUXVlcnlPcHRpb25zPHtwb3N0czogbnVtYmVyOyByZXNwb25zZXM6IG51bWJlcjsgdXB2b3RlczogbnVtYmVyfT4sXG4gICAgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJ1xuICA+LFxuKTogVXNlUXVlcnlSZXN1bHQ8e3Bvc3RzOiBudW1iZXI7IHJlc3BvbnNlczogbnVtYmVyOyB1cHZvdGVzOiBudW1iZXJ9PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLnN0YXRzKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID1cbiAgICAgICAgYXdhaXQgY2xpZW50LmdldDxcbiAgICAgICAgICBBcGlSZXNwb25zZTx7cG9zdHM6IG51bWJlcjsgcmVzcG9uc2VzOiBudW1iZXI7IHVwdm90ZXM6IG51bWJlcn0+XG4gICAgICAgID4oJy91c2Vycy9tZS9zdGF0cycpXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBzcG90cyBzdW1tYXJ5IHdpdGggYWN0aXZpdHkgaW5kaWNhdG9yc1xuICpcbiAqIFJldHVybnMgbGlzdCBvZiBzcG90cyB3aGVyZSB1c2VyIGhhcyBwb3N0ZWQsIHdpdGg6XG4gKiAtIFBvc3QgY291bnQgcGVyIHNwb3RcbiAqIC0gVW5yZWFkIG1lc3NhZ2VzIGNvdW50XG4gKiAtIFBlbmRpbmcgcmVzcG9uc2VzIGNvdW50XG4gKiAtIExhc3QgYWN0aXZpdHkgdGltZXN0YW1wXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWUvc3BvdHMtc3VtbWFyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXNlclNwb3RzU3VtbWFyeShcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFNwb3RzU3VtbWFyeVJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90c1N1bW1hcnlSZXNwb25zZT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5zcG90c1N1bW1hcnkoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFNwb3RzU3VtbWFyeVJlc3BvbnNlPj4oXG4gICAgICAgICcvdXNlcnMvbWUvc3BvdHMtc3VtbWFyeScsXG4gICAgICApXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBhY3Rpdml0eVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL2FjdGl2aXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVc2VyQWN0aXZpdHkoXG4gIGxpbWl0OiBudW1iZXIgPSAxMCxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPHVua25vd25bXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8dW5rbm93bltdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmFjdGl2aXR5KGxpbWl0KSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC91c2Vycy9tZS9hY3Rpdml0eT9saW1pdD0ke2xpbWl0fWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTx1bmtub3duPihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBwb3N0c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvcG9zdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJQb3N0cyhcbiAgcGFyYW1zPzoge3BhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBvc3RbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLnBvc3RzKHBhcmFtcyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvdXNlci9tZS9wb3N0cz8ke3F1ZXJ5UGFyYW1zfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxQb3N0PihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBjbHVic1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvY2x1YnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJDbHVicyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPENsdWJbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8Q2x1YltdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmNsdWJzKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oJy91c2VyL21lL2NsdWJzJylcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPENsdWI+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIHNwb3Qgc3Vic2NyaXB0aW9uc1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvc3Vic2NyaXB0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXNlclN1YnNjcmlwdGlvbnMoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90U3Vic2NyaXB0aW9uW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFNwb3RTdWJzY3JpcHRpb25bXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5zdWJzY3JpcHRpb25zKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgICcvdXNlci9tZS9zdWJzY3JpcHRpb25zJyxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFNwb3RTdWJzY3JpcHRpb24+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGJsb2NrZWQgdXNlcnMgbGlzdFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvYmxvY2tlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQmxvY2tlZFVzZXJzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VXNlcltdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxVc2VyW10+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogdXNlcktleXMuYmxvY2tlZCgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KCcvdXNlci9tZS9ibG9ja2VkJylcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFVzZXI+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIG93bmVkIHNwb3RzIChmb3IgYnVzaW5lc3Mgb3duZXJzKVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL293bmVkLXNwb3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VPd25lZFNwb3RzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8U3BvdFtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90W10+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogdXNlcktleXMub3duZWRTcG90cygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICAnL3VzZXJzL21lL293bmVkLXNwb3RzJyxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIGZhdm9yaXRlIHNwb3RzXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWUvZmF2b3JpdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVc2VyRmF2b3JpdGVzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8RmF2b3JpdGVTcG90W10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PEZhdm9yaXRlU3BvdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmZhdm9yaXRlcygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICAnL3VzZXJzL21lL2Zhdm9yaXRlcycsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxGYXZvcml0ZVNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet Query Hooks
|
|
3
|
-
*
|
|
4
|
-
* TanStack Query hooks for wallet and redemption operations.
|
|
5
|
-
*/
|
|
6
|
-
import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
|
|
7
|
-
export type RedemptionStatus = 'PENDING' | 'REDEEMED' | 'EXPIRED' | 'CANCELLED' | 'VOID';
|
|
8
|
-
export interface WalletProduct {
|
|
9
|
-
id: string;
|
|
10
|
-
name: string;
|
|
11
|
-
type: string;
|
|
12
|
-
imageUrl: string | null;
|
|
13
|
-
}
|
|
14
|
-
export interface WalletOrderItem {
|
|
15
|
-
product: WalletProduct;
|
|
16
|
-
quantity: number;
|
|
17
|
-
unitPrice: number;
|
|
18
|
-
}
|
|
19
|
-
export interface WalletOrder {
|
|
20
|
-
id: string;
|
|
21
|
-
orderNumber: string;
|
|
22
|
-
spotId: string;
|
|
23
|
-
createdAt: string;
|
|
24
|
-
spot: {
|
|
25
|
-
id: string;
|
|
26
|
-
name: string;
|
|
27
|
-
slug: string;
|
|
28
|
-
address: string | null;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
export interface WalletRedemption {
|
|
32
|
-
id: string;
|
|
33
|
-
qrCode: string;
|
|
34
|
-
qrCodeUrl: string | null;
|
|
35
|
-
status: RedemptionStatus;
|
|
36
|
-
validFrom: string;
|
|
37
|
-
validUntil: string;
|
|
38
|
-
redeemedAt: string | null;
|
|
39
|
-
createdAt: string;
|
|
40
|
-
orderItem: WalletOrderItem & {
|
|
41
|
-
order: WalletOrder;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export interface RedemptionLookup extends WalletRedemption {
|
|
45
|
-
redeemedBy: {
|
|
46
|
-
id: string;
|
|
47
|
-
name: string;
|
|
48
|
-
} | null;
|
|
49
|
-
spot: {
|
|
50
|
-
id: string;
|
|
51
|
-
name: string;
|
|
52
|
-
} | null;
|
|
53
|
-
orderItem: WalletOrderItem & {
|
|
54
|
-
order: WalletOrder & {
|
|
55
|
-
user: {
|
|
56
|
-
id: string;
|
|
57
|
-
name: string | null;
|
|
58
|
-
avatarUrl: string | null;
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
export interface WalletHistoryResponse {
|
|
64
|
-
data: WalletRedemption[];
|
|
65
|
-
meta: {
|
|
66
|
-
total: number;
|
|
67
|
-
page: number;
|
|
68
|
-
limit: number;
|
|
69
|
-
totalPages: number;
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export declare const walletKeys: {
|
|
73
|
-
all: readonly ["wallet"];
|
|
74
|
-
active: () => readonly ["wallet", "active"];
|
|
75
|
-
history: (page?: number) => readonly ["wallet", "history", number | undefined];
|
|
76
|
-
redemptions: () => readonly ["redemptions"];
|
|
77
|
-
lookup: (qrCode: string) => readonly ["redemptions", "lookup", string];
|
|
78
|
-
spotRedemptions: (spotId: string, page?: number) => readonly ["redemptions", "spot", string, number | undefined];
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Get user's active wallet items (pending redemptions)
|
|
82
|
-
*
|
|
83
|
-
* @endpoint GET /wallet
|
|
84
|
-
*/
|
|
85
|
-
export declare function useWallet(options?: Omit<UseQueryOptions<WalletRedemption[]>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletRedemption[]>;
|
|
86
|
-
/**
|
|
87
|
-
* Get user's wallet history (all redemptions)
|
|
88
|
-
*
|
|
89
|
-
* @endpoint GET /wallet/history
|
|
90
|
-
*/
|
|
91
|
-
export declare function useWalletHistory(params?: {
|
|
92
|
-
page?: number;
|
|
93
|
-
limit?: number;
|
|
94
|
-
}, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
|
|
95
|
-
/**
|
|
96
|
-
* Lookup redemption by QR code (for scanner)
|
|
97
|
-
*
|
|
98
|
-
* @endpoint GET /redemptions/lookup/:qrCode
|
|
99
|
-
*/
|
|
100
|
-
export declare function useRedemptionLookup(qrCode: string, options?: Omit<UseQueryOptions<RedemptionLookup>, 'queryKey' | 'queryFn'>): UseQueryResult<RedemptionLookup>;
|
|
101
|
-
/**
|
|
102
|
-
* Get spot's redemption history (for spot owner)
|
|
103
|
-
*
|
|
104
|
-
* @endpoint GET /spots/:spotId/redemptions
|
|
105
|
-
*/
|
|
106
|
-
export declare function useSpotRedemptions(spotId: string, params?: {
|
|
107
|
-
page?: number;
|
|
108
|
-
limit?: number;
|
|
109
|
-
}, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Wallet Query Hooks
|
|
4
|
-
*
|
|
5
|
-
* TanStack Query hooks for wallet and redemption operations.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.walletKeys = void 0;
|
|
9
|
-
exports.useWallet = useWallet;
|
|
10
|
-
exports.useWalletHistory = useWalletHistory;
|
|
11
|
-
exports.useRedemptionLookup = useRedemptionLookup;
|
|
12
|
-
exports.useSpotRedemptions = useSpotRedemptions;
|
|
13
|
-
const react_query_1 = require("@tanstack/react-query");
|
|
14
|
-
const client_1 = require("../client");
|
|
15
|
-
// ============================================================================
|
|
16
|
-
// HELPER FUNCTIONS
|
|
17
|
-
// ============================================================================
|
|
18
|
-
function extractArrayData(data) {
|
|
19
|
-
if (Array.isArray(data)) {
|
|
20
|
-
return data;
|
|
21
|
-
}
|
|
22
|
-
if (data && typeof data === 'object' && 'data' in data) {
|
|
23
|
-
const nested = data.data;
|
|
24
|
-
if (Array.isArray(nested)) {
|
|
25
|
-
return nested;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
function extractObjectData(data) {
|
|
31
|
-
if (data &&
|
|
32
|
-
typeof data === 'object' &&
|
|
33
|
-
'data' in data &&
|
|
34
|
-
!Array.isArray(data)) {
|
|
35
|
-
const nested = data.data;
|
|
36
|
-
if (nested &&
|
|
37
|
-
typeof nested === 'object' &&
|
|
38
|
-
'data' in nested &&
|
|
39
|
-
!Array.isArray(nested)) {
|
|
40
|
-
return nested.data;
|
|
41
|
-
}
|
|
42
|
-
return nested;
|
|
43
|
-
}
|
|
44
|
-
return data;
|
|
45
|
-
}
|
|
46
|
-
// ============================================================================
|
|
47
|
-
// QUERY KEYS
|
|
48
|
-
// ============================================================================
|
|
49
|
-
exports.walletKeys = {
|
|
50
|
-
all: ['wallet'],
|
|
51
|
-
active: () => [...exports.walletKeys.all, 'active'],
|
|
52
|
-
history: (page) => [...exports.walletKeys.all, 'history', page],
|
|
53
|
-
redemptions: () => ['redemptions'],
|
|
54
|
-
lookup: (qrCode) => [...exports.walletKeys.redemptions(), 'lookup', qrCode],
|
|
55
|
-
spotRedemptions: (spotId, page) => [...exports.walletKeys.redemptions(), 'spot', spotId, page],
|
|
56
|
-
};
|
|
57
|
-
// ============================================================================
|
|
58
|
-
// QUERY HOOKS
|
|
59
|
-
// ============================================================================
|
|
60
|
-
/**
|
|
61
|
-
* Get user's active wallet items (pending redemptions)
|
|
62
|
-
*
|
|
63
|
-
* @endpoint GET /wallet
|
|
64
|
-
*/
|
|
65
|
-
function useWallet(options) {
|
|
66
|
-
return (0, react_query_1.useQuery)({
|
|
67
|
-
queryKey: exports.walletKeys.active(),
|
|
68
|
-
queryFn: async () => {
|
|
69
|
-
const client = (0, client_1.getApiClient)();
|
|
70
|
-
const response = await client.get('/wallet');
|
|
71
|
-
return extractArrayData(response.data.data);
|
|
72
|
-
},
|
|
73
|
-
...options,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Get user's wallet history (all redemptions)
|
|
78
|
-
*
|
|
79
|
-
* @endpoint GET /wallet/history
|
|
80
|
-
*/
|
|
81
|
-
function useWalletHistory(params, options) {
|
|
82
|
-
return (0, react_query_1.useQuery)({
|
|
83
|
-
queryKey: exports.walletKeys.history(params?.page),
|
|
84
|
-
queryFn: async () => {
|
|
85
|
-
const client = (0, client_1.getApiClient)();
|
|
86
|
-
const queryParams = new URLSearchParams();
|
|
87
|
-
if (params?.page)
|
|
88
|
-
queryParams.set('page', String(params.page));
|
|
89
|
-
if (params?.limit)
|
|
90
|
-
queryParams.set('limit', String(params.limit));
|
|
91
|
-
const response = await client.get(`/wallet/history?${queryParams}`);
|
|
92
|
-
return extractObjectData(response.data.data);
|
|
93
|
-
},
|
|
94
|
-
...options,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Lookup redemption by QR code (for scanner)
|
|
99
|
-
*
|
|
100
|
-
* @endpoint GET /redemptions/lookup/:qrCode
|
|
101
|
-
*/
|
|
102
|
-
function useRedemptionLookup(qrCode, options) {
|
|
103
|
-
return (0, react_query_1.useQuery)({
|
|
104
|
-
queryKey: exports.walletKeys.lookup(qrCode),
|
|
105
|
-
queryFn: async () => {
|
|
106
|
-
const client = (0, client_1.getApiClient)();
|
|
107
|
-
const response = await client.get(`/redemptions/lookup/${qrCode}`);
|
|
108
|
-
return extractObjectData(response.data.data);
|
|
109
|
-
},
|
|
110
|
-
enabled: !!qrCode && qrCode.length > 0,
|
|
111
|
-
...options,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Get spot's redemption history (for spot owner)
|
|
116
|
-
*
|
|
117
|
-
* @endpoint GET /spots/:spotId/redemptions
|
|
118
|
-
*/
|
|
119
|
-
function useSpotRedemptions(spotId, params, options) {
|
|
120
|
-
return (0, react_query_1.useQuery)({
|
|
121
|
-
queryKey: exports.walletKeys.spotRedemptions(spotId, params?.page),
|
|
122
|
-
queryFn: async () => {
|
|
123
|
-
const client = (0, client_1.getApiClient)();
|
|
124
|
-
const queryParams = new URLSearchParams();
|
|
125
|
-
if (params?.page)
|
|
126
|
-
queryParams.set('page', String(params.page));
|
|
127
|
-
if (params?.limit)
|
|
128
|
-
queryParams.set('limit', String(params.limit));
|
|
129
|
-
const response = await client.get(`/spots/${spotId}/redemptions?${queryParams}`);
|
|
130
|
-
return extractObjectData(response.data.data);
|
|
131
|
-
},
|
|
132
|
-
enabled: !!spotId,
|
|
133
|
-
...options,
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9xdWVyaWVzL3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBb0pILDhCQVlDO0FBT0QsNENBa0JDO0FBT0Qsa0RBZ0JDO0FBT0QsZ0RBb0JDO0FBek9ELHVEQUk4QjtBQUU5QixzQ0FBc0M7QUErRXRDLCtFQUErRTtBQUMvRSxtQkFBbUI7QUFDbkIsK0VBQStFO0FBRS9FLFNBQVMsZ0JBQWdCLENBQUksSUFBYTtJQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZELE1BQU0sTUFBTSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFJLElBQWE7SUFDekMsSUFDRSxJQUFJO1FBQ0osT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixNQUFNLElBQUksSUFBSTtRQUNkLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDcEIsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQ0UsTUFBTTtZQUNOLE9BQU8sTUFBTSxLQUFLLFFBQVE7WUFDMUIsTUFBTSxJQUFJLE1BQU07WUFDaEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUN0QixDQUFDO1lBQ0QsT0FBUSxN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QUMsQ0FBQTtRQUNyRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdhbGxldCBRdWVyeSBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciB3YWxsZXQgYW5kIHJlZGVtcHRpb24gb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VRdWVyeSxcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7dHlwZSBBcGlSZXNwb25zZX0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFJlZGVtcHRpb25TdGF0dXMgPSAnUEVORElORycgfCAnUkVERUVNRUQnIHwgJ0VYUElSRUQnIHwgJ0NBTkNFTExFRCcgfCAnVk9JRCdcblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRQcm9kdWN0IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogc3RyaW5nXG4gIGltYWdlVXJsOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0T3JkZXJJdGVtIHtcbiAgcHJvZHVjdDogV2FsbGV0UHJvZHVjdFxuICBxdWFudGl0eTogbnVtYmVyXG4gIHVuaXRQcmljZTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0T3JkZXIge1xuICBpZDogc3RyaW5nXG4gIG9yZGVyTnVtYmVyOiBzdHJpbmdcbiAgc3BvdElkOiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBzdHJpbmdcbiAgc3BvdDoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBzbHVnOiBzdHJpbmdcbiAgICBhZGRyZXNzOiBzdHJpbmcgfCBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRSZWRlbXB0aW9uIHtcbiAgaWQ6IHN0cmluZ1xuICBxckNvZGU6IHN0cmluZ1xuICBxckNvZGVVcmw6IHN0cmluZyB8IG51bGxcbiAgc3RhdHVzOiBSZWRlbXB0aW9uU3RhdHVzXG4gIHZhbGlkRnJvbTogc3RyaW5nXG4gIHZhbGlkVW50aWw6IHN0cmluZ1xuICByZWRlZW1lZEF0OiBzdHJpbmcgfCBudWxsXG4gIGNyZWF0ZWRBdDogc3RyaW5nXG4gIG9yZGVySXRlbTogV2FsbGV0T3JkZXJJdGVtICYge1xuICAgIG9yZGVyOiBXYWxsZXRPcmRlclxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkZW1wdGlvbkxvb2t1cCBleHRlbmRzIFdhbGxldFJlZGVtcHRpb24ge1xuICByZWRlZW1lZEJ5OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9IHwgbnVsbFxuICBzcG90OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9IHwgbnVsbFxuICBvcmRlckl0ZW06IFdhbGxldE9yZGVySXRlbSAmIHtcbiAgICBvcmRlcjogV2FsbGV0T3JkZXIgJiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIGlkOiBzdHJpbmdcbiAgICAgICAgbmFtZTogc3RyaW5nIHwgbnVsbFxuICAgICAgICBhdmF0YXJVcmw6IHN0cmluZyB8IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRIaXN0b3J5UmVzcG9uc2Uge1xuICBkYXRhOiBXYWxsZXRSZWRlbXB0aW9uW11cbiAgbWV0YToge1xuICAgIHRvdGFsOiBudW1iZXJcbiAgICBwYWdlOiBudW1iZXJcbiAgICBsaW1pdDogbnVtYmVyXG4gICAgdG90YWxQYWdlczogbnVtYmVyXG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBleHRyYWN0QXJyYXlEYXRhPFQ+KGRhdGE6IHVua25vd24pOiBUW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBkYXRhKSB7XG4gICAgY29uc3QgbmVzdGVkID0gKGRhdGEgYXMge2RhdGE6IHVua25vd259KS5kYXRhXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkKSkge1xuICAgICAgcmV0dXJuIG5lc3RlZFxuICAgIH1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuZnVuY3Rpb24gZXh0cmFjdE9iamVjdERhdGE8VD4oZGF0YTogdW5rbm93bik6IFQge1xuICBpZiAoXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdkYXRhJyBpbiBkYXRhICYmXG4gICAgIUFycmF5LmlzQXJyYXkoZGF0YSlcbiAgKSB7XG4gICAgY29uc3QgbmVzdGVkID0gKGRhdGEgYXMge2RhdGE6IHVua25vd259KS5kYXRhXG4gICAgaWYgKFxuICAgICAgbmVzdGVkICYmXG4gICAgICB0eXBlb2YgbmVzdGVkID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2RhdGEnIGluIG5lc3RlZCAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkobmVzdGVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIChuZXN0ZWQgYXMge2RhdGE6IFR9KS5kYXRhXG4gICAgfVxuICAgIHJldHVybiBuZXN0ZWQgYXMgVFxuICB9XG4gIHJldHVybiBkYXRhIGFzIFRcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3Qgd2FsbGV0S2V5cyA9IHtcbiAgYWxsOiBbJ3dhbGxldCddIGFzIGNvbnN0LFxuICBhY3RpdmU6ICgpID0+IFsuLi53YWxsZXRLZXlzLmFsbCwgJ2FjdGl2ZSddIGFzIGNvbnN0LFxuICBoaXN0b3J5OiAocGFnZT86IG51bWJlcikgPT4gWy4uLndhbGxldEtleXMuYWxsLCAnaGlzdG9yeScsIHBhZ2VdIGFzIGNvbnN0LFxuICByZWRlbXB0aW9uczogKCkgPT4gWydyZWRlbXB0aW9ucyddIGFzIGNvbnN0LFxuICBsb29rdXA6IChxckNvZGU6IHN0cmluZykgPT4gWy4uLndhbGxldEtleXMucmVkZW1wdGlvbnMoKSwgJ2xvb2t1cCcsIHFyQ29kZV0gYXMgY29uc3QsXG4gIHNwb3RSZWRlbXB0aW9uczogKHNwb3RJZDogc3RyaW5nLCBwYWdlPzogbnVtYmVyKSA9PlxuICAgIFsuLi53YWxsZXRLZXlzLnJlZGVtcHRpb25zKCksICdzcG90Jywgc3BvdElkLCBwYWdlXSBhcyBjb25zdCxcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgdXNlcidzIGFjdGl2ZSB3YWxsZXQgaXRlbXMgKHBlbmRpbmcgcmVkZW1wdGlvbnMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvd2FsbGV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VXYWxsZXQoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxXYWxsZXRSZWRlbXB0aW9uW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFdhbGxldFJlZGVtcHRpb25bXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB3YWxsZXRLZXlzLmFjdGl2ZSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFdhbGxldFJlZGVtcHRpb25bXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oJy93YWxsZXQnKVxuICAgICAgcmV0dXJuIGV4dHJhY3RBcnJheURhdGE8V2FsbGV0UmVkZW1wdGlvbj4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgdXNlcidzIHdhbGxldCBoaXN0b3J5IChhbGwgcmVkZW1wdGlvbnMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvd2FsbGV0L2hpc3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVdhbGxldEhpc3RvcnkoXG4gIHBhcmFtcz86IHtwYWdlPzogbnVtYmVyOyBsaW1pdD86IG51bWJlcn0sXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFdhbGxldEhpc3RvcnlSZXNwb25zZT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB3YWxsZXRLZXlzLmhpc3RvcnkocGFyYW1zPy5wYWdlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSlcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPj4oXG4gICAgICAgIGAvd2FsbGV0L2hpc3Rvcnk/JHtxdWVyeVBhcmFtc31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIGV4dHJhY3RPYmplY3REYXRhPFdhbGxldEhpc3RvcnlSZXNwb25zZT4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBMb29rdXAgcmVkZW1wdGlvbiBieSBRUiBjb2RlIChmb3Igc2Nhbm5lcilcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9yZWRlbXB0aW9ucy9sb29rdXAvOnFyQ29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkZW1wdGlvbkxvb2t1cChcbiAgcXJDb2RlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxSZWRlbXB0aW9uTG9va3VwPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxSZWRlbXB0aW9uTG9va3VwPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHdhbGxldEtleXMubG9va3VwKHFyQ29kZSksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UmVkZW1wdGlvbkxvb2t1cD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvcmVkZW1wdGlvbnMvbG9va3VwLyR7cXJDb2RlfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdE9iamVjdERhdGE8UmVkZW1wdGlvbkxvb2t1cD4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFxckNvZGUgJiYgcXJDb2RlLmxlbmd0aCA+IDAsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgc3BvdCdzIHJlZGVtcHRpb24gaGlzdG9yeSAoZm9yIHNwb3Qgb3duZXIpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvc3BvdHMvOnNwb3RJZC9yZWRlbXB0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdFJlZGVtcHRpb25zKFxuICBzcG90SWQ6IHN0cmluZyxcbiAgcGFyYW1zPzoge3BhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFdhbGxldEhpc3RvcnlSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHdhbGxldEtleXMuc3BvdFJlZGVtcHRpb25zKHNwb3RJZCwgcGFyYW1zPy5wYWdlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSlcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPj4oXG4gICAgICAgIGAvc3BvdHMvJHtzcG90SWR9L3JlZGVtcHRpb25zPyR7cXVlcnlQYXJhbXN9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0T2JqZWN0RGF0YTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.paymentsService = exports.ordersService = exports.productsService = void 0;
|
|
4
|
-
var marketplace_1 = require("./marketplace");
|
|
5
|
-
Object.defineProperty(exports, "productsService", { enumerable: true, get: function () { return marketplace_1.productsService; } });
|
|
6
|
-
Object.defineProperty(exports, "ordersService", { enumerable: true, get: function () { return marketplace_1.ordersService; } });
|
|
7
|
-
Object.defineProperty(exports, "paymentsService", { enumerable: true, get: function () { return marketplace_1.paymentsService; } });
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRjtBQUF2RSw4R0FBQSxlQUFlLE9BQUE7QUFBRSw0R0FBQSxhQUFhLE9BQUE7QUFBRSw4R0FBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcm9kdWN0c1NlcnZpY2UsIG9yZGVyc1NlcnZpY2UsIHBheW1lbnRzU2VydmljZSB9IGZyb20gJy4vbWFya2V0cGxhY2UnO1xuZXhwb3J0IHR5cGUge1xuICBDcmVhdGVQcm9kdWN0SW5wdXQsXG4gIFVwZGF0ZVByb2R1Y3RJbnB1dCxcbiAgQ3JlYXRlT3JkZXJJbnB1dCxcbn0gZnJvbSAnLi9tYXJrZXRwbGFjZSc7XG4iXX0=
|