@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,26 @@
|
|
|
1
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Grow90EnrollmentResponse, Grow90ProgressResponse, Grow90TodayResponse, Grow90StatsResponse } from '../types';
|
|
3
|
+
export declare const grow90Keys: {
|
|
4
|
+
all: readonly ["grow90"];
|
|
5
|
+
enrollment: () => readonly ["grow90", "enrollment"];
|
|
6
|
+
today: () => readonly ["grow90", "today"];
|
|
7
|
+
progress: () => readonly ["grow90", "progress"];
|
|
8
|
+
progressDay: (day: number) => readonly ["grow90", "progress", number];
|
|
9
|
+
stats: () => readonly ["grow90", "stats"];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Get current user's GROW90 enrollment
|
|
13
|
+
*/
|
|
14
|
+
export declare function useGrow90Enrollment(options?: Omit<UseQueryOptions<Grow90EnrollmentResponse | null>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Grow90EnrollmentResponse | null, Error>;
|
|
15
|
+
/**
|
|
16
|
+
* Get today's GROW90 content and progress
|
|
17
|
+
*/
|
|
18
|
+
export declare function useGrow90Today(options?: Omit<UseQueryOptions<Grow90TodayResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Grow90TodayResponse, Error>;
|
|
19
|
+
/**
|
|
20
|
+
* Get all GROW90 progress entries
|
|
21
|
+
*/
|
|
22
|
+
export declare function useGrow90Progress(options?: Omit<UseQueryOptions<Grow90ProgressResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Grow90ProgressResponse[], Error>;
|
|
23
|
+
/**
|
|
24
|
+
* Get GROW90 statistics
|
|
25
|
+
*/
|
|
26
|
+
export declare function useGrow90Stats(options?: Omit<UseQueryOptions<Grow90StatsResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<Grow90StatsResponse, Error>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.grow90Keys = void 0;
|
|
4
|
+
exports.useGrow90Enrollment = useGrow90Enrollment;
|
|
5
|
+
exports.useGrow90Today = useGrow90Today;
|
|
6
|
+
exports.useGrow90Progress = useGrow90Progress;
|
|
7
|
+
exports.useGrow90Stats = useGrow90Stats;
|
|
8
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
9
|
+
const client_1 = require("../client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// QUERY KEYS
|
|
12
|
+
// ============================================================================
|
|
13
|
+
exports.grow90Keys = {
|
|
14
|
+
all: ['grow90'],
|
|
15
|
+
enrollment: () => [...exports.grow90Keys.all, 'enrollment'],
|
|
16
|
+
today: () => [...exports.grow90Keys.all, 'today'],
|
|
17
|
+
progress: () => [...exports.grow90Keys.all, 'progress'],
|
|
18
|
+
progressDay: (day) => [...exports.grow90Keys.progress(), day],
|
|
19
|
+
stats: () => [...exports.grow90Keys.all, 'stats'],
|
|
20
|
+
};
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// QUERY HOOKS
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Get current user's GROW90 enrollment
|
|
26
|
+
*/
|
|
27
|
+
function useGrow90Enrollment(options) {
|
|
28
|
+
return (0, react_query_1.useQuery)({
|
|
29
|
+
queryKey: exports.grow90Keys.enrollment(),
|
|
30
|
+
queryFn: async () => {
|
|
31
|
+
const client = (0, client_1.getApiClient)();
|
|
32
|
+
const response = await client.get('/api/v1/grow90/me');
|
|
33
|
+
// API returns { data: {...}, meta: {...} }, extract the data
|
|
34
|
+
const enrollment = 'data' in response.data ? response.data.data : response.data;
|
|
35
|
+
return enrollment;
|
|
36
|
+
},
|
|
37
|
+
...options,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get today's GROW90 content and progress
|
|
42
|
+
*/
|
|
43
|
+
function useGrow90Today(options) {
|
|
44
|
+
return (0, react_query_1.useQuery)({
|
|
45
|
+
queryKey: exports.grow90Keys.today(),
|
|
46
|
+
queryFn: async () => {
|
|
47
|
+
const client = (0, client_1.getApiClient)();
|
|
48
|
+
const response = await client.get('/api/v1/grow90/today');
|
|
49
|
+
// API returns { data: {...}, meta: {...} }, extract the data
|
|
50
|
+
return response.data?.data || response.data;
|
|
51
|
+
},
|
|
52
|
+
...options,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get all GROW90 progress entries
|
|
57
|
+
*/
|
|
58
|
+
function useGrow90Progress(options) {
|
|
59
|
+
return (0, react_query_1.useQuery)({
|
|
60
|
+
queryKey: exports.grow90Keys.progress(),
|
|
61
|
+
queryFn: async () => {
|
|
62
|
+
const client = (0, client_1.getApiClient)();
|
|
63
|
+
const response = await client.get('/api/v1/grow90/progress');
|
|
64
|
+
// API returns { data: [...], meta: {...} }, extract the data
|
|
65
|
+
return response.data?.data || response.data;
|
|
66
|
+
},
|
|
67
|
+
...options,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get GROW90 statistics
|
|
72
|
+
*/
|
|
73
|
+
function useGrow90Stats(options) {
|
|
74
|
+
return (0, react_query_1.useQuery)({
|
|
75
|
+
queryKey: exports.grow90Keys.stats(),
|
|
76
|
+
queryFn: async () => {
|
|
77
|
+
const client = (0, client_1.getApiClient)();
|
|
78
|
+
const response = await client.get('/api/v1/grow90/stats');
|
|
79
|
+
// API returns { data: {...}, meta: {...} }, extract the data
|
|
80
|
+
return response.data?.data || response.data;
|
|
81
|
+
},
|
|
82
|
+
...options,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdzkwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9xdWVyaWVzL2dyb3c5MC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2QkEsa0RBY0M7QUFLRCx3Q0FhQztBQUtELDhDQWFDO0FBS0Qsd0NBYUM7QUFqR0QsdURBQWtFO0FBQ2xFLHNDQUF5QztBQVF6QywrRUFBK0U7QUFDL0UsYUFBYTtBQUNiLCtFQUErRTtBQUVsRSxRQUFBLFVBQVUsR0FBRztJQUN4QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQVU7SUFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxrQkFBVSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQVU7SUFDNUQsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxrQkFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQVU7SUFDbEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxrQkFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQVU7SUFDeEQsV0FBVyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsa0JBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQVU7SUFDdEUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxrQkFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQVU7Q0FDbkQsQ0FBQztBQUVGLCtFQUErRTtBQUMvRSxjQUFjO0FBQ2QsK0VBQStFO0FBRS9FOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLE9BQXdGO0lBRXhGLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGtCQUFVLENBQUMsVUFBVSxFQUFFO1FBQ2pDLE9BQU8sRUFBRSxLQUFLLElBQThDLEVBQUU7WUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdkQsNkRBQTZEO1lBQzdELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNoRixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixPQUE0RTtJQUU1RSxPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxrQkFBVSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLEVBQUUsS0FBSyxJQUFrQyxFQUFFO1lBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzFELDZEQUE2RDtZQUM3RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDOUMsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixPQUFpRjtJQUVqRixPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxrQkFBVSxDQUFDLFFBQVEsRUFBRTtRQUMvQixPQUFPLEVBQUUsS0FBSyxJQUF1QyxFQUFFO1lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELDZEQUE2RDtZQUM3RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDOUMsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsT0FBNEU7SUFFNUUsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsa0JBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDNUIsT0FBTyxFQUFFLEtBQUssSUFBa0MsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMxRCw2REFBNkQ7WUFDN0QsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlDLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBHcm93OTBFbnJvbGxtZW50UmVzcG9uc2UsXG4gIEdyb3c5MFByb2dyZXNzUmVzcG9uc2UsXG4gIEdyb3c5MFRvZGF5UmVzcG9uc2UsXG4gIEdyb3c5MFN0YXRzUmVzcG9uc2UsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgZ3JvdzkwS2V5cyA9IHtcbiAgYWxsOiBbJ2dyb3c5MCddIGFzIGNvbnN0LFxuICBlbnJvbGxtZW50OiAoKSA9PiBbLi4uZ3JvdzkwS2V5cy5hbGwsICdlbnJvbGxtZW50J10gYXMgY29uc3QsXG4gIHRvZGF5OiAoKSA9PiBbLi4uZ3JvdzkwS2V5cy5hbGwsICd0b2RheSddIGFzIGNvbnN0LFxuICBwcm9ncmVzczogKCkgPT4gWy4uLmdyb3c5MEtleXMuYWxsLCAncHJvZ3Jlc3MnXSBhcyBjb25zdCxcbiAgcHJvZ3Jlc3NEYXk6IChkYXk6IG51bWJlcikgPT4gWy4uLmdyb3c5MEtleXMucHJvZ3Jlc3MoKSwgZGF5XSBhcyBjb25zdCxcbiAgc3RhdHM6ICgpID0+IFsuLi5ncm93OTBLZXlzLmFsbCwgJ3N0YXRzJ10gYXMgY29uc3QsXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBHUk9XOTAgZW5yb2xsbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlR3JvdzkwRW5yb2xsbWVudChcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdyb3c5MEVucm9sbG1lbnRSZXNwb25zZSB8IG51bGw+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGdyb3c5MEtleXMuZW5yb2xsbWVudCgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEdyb3c5MEVucm9sbG1lbnRSZXNwb25zZSB8IG51bGw+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL2dyb3c5MC9tZScpO1xuICAgICAgLy8gQVBJIHJldHVybnMgeyBkYXRhOiB7Li4ufSwgbWV0YTogey4uLn0gfSwgZXh0cmFjdCB0aGUgZGF0YVxuICAgICAgY29uc3QgZW5yb2xsbWVudCA9ICdkYXRhJyBpbiByZXNwb25zZS5kYXRhID8gcmVzcG9uc2UuZGF0YS5kYXRhIDogcmVzcG9uc2UuZGF0YTtcbiAgICAgIHJldHVybiBlbnJvbGxtZW50O1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHRvZGF5J3MgR1JPVzkwIGNvbnRlbnQgYW5kIHByb2dyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHcm93OTBUb2RheShcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdyb3c5MFRvZGF5UmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGdyb3c5MEtleXMudG9kYXkoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxHcm93OTBUb2RheVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9ncm93OTAvdG9kYXknKTtcbiAgICAgIC8vIEFQSSByZXR1cm5zIHsgZGF0YTogey4uLn0sIG1ldGE6IHsuLi59IH0sIGV4dHJhY3QgdGhlIGRhdGFcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIEdST1c5MCBwcm9ncmVzcyBlbnRyaWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHcm93OTBQcm9ncmVzcyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdyb3c5MFByb2dyZXNzUmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogZ3JvdzkwS2V5cy5wcm9ncmVzcygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEdyb3c5MFByb2dyZXNzUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJy9hcGkvdjEvZ3JvdzkwL3Byb2dyZXNzJyk7XG4gICAgICAvLyBBUEkgcmV0dXJucyB7IGRhdGE6IFsuLi5dLCBtZXRhOiB7Li4ufSB9LCBleHRyYWN0IHRoZSBkYXRhXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IEdST1c5MCBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHcm93OTBTdGF0cyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdyb3c5MFN0YXRzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGdyb3c5MEtleXMuc3RhdHMoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxHcm93OTBTdGF0c1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9ncm93OTAvc3RhdHMnKTtcbiAgICAgIC8vIEFQSSByZXR1cm5zIHsgZGF0YTogey4uLn0sIG1ldGE6IHsuLi59IH0sIGV4dHJhY3QgdGhlIGRhdGFcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { HubResponse, HubMemberResponse } from '../types';
|
|
3
|
+
export declare const hubKeys: {
|
|
4
|
+
all: readonly ["hubs"];
|
|
5
|
+
lists: () => readonly ["hubs", "list"];
|
|
6
|
+
list: (filters?: HubListFilters) => readonly ["hubs", "list", HubListFilters | undefined];
|
|
7
|
+
details: () => readonly ["hubs", "detail"];
|
|
8
|
+
detail: (id: string) => readonly ["hubs", "detail", string];
|
|
9
|
+
bySlug: (slug: string) => readonly ["hubs", "slug", string];
|
|
10
|
+
myHubs: () => readonly ["hubs", "my-hubs"];
|
|
11
|
+
members: (id: string, filters?: MemberFilters) => readonly ["hubs", "detail", string, "members", MemberFilters | undefined];
|
|
12
|
+
membership: (id: string) => readonly ["hubs", "detail", string, "membership"];
|
|
13
|
+
};
|
|
14
|
+
export interface HubListFilters {
|
|
15
|
+
page?: number;
|
|
16
|
+
limit?: number;
|
|
17
|
+
cityId?: string;
|
|
18
|
+
search?: string;
|
|
19
|
+
isFeatured?: boolean;
|
|
20
|
+
visibility?: 'PUBLIC' | 'PRIVATE' | 'INVITE_ONLY';
|
|
21
|
+
}
|
|
22
|
+
export interface MemberFilters {
|
|
23
|
+
page?: number;
|
|
24
|
+
limit?: number;
|
|
25
|
+
role?: string;
|
|
26
|
+
status?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface PaginatedHubsResponse {
|
|
29
|
+
data: HubResponse[];
|
|
30
|
+
meta: {
|
|
31
|
+
total: number;
|
|
32
|
+
page: number;
|
|
33
|
+
limit: number;
|
|
34
|
+
totalPages: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface PaginatedMembersResponse {
|
|
38
|
+
data: HubMemberResponse[];
|
|
39
|
+
meta: {
|
|
40
|
+
total: number;
|
|
41
|
+
page: number;
|
|
42
|
+
limit: number;
|
|
43
|
+
totalPages: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface MembershipResponse {
|
|
47
|
+
isMember: boolean;
|
|
48
|
+
role?: 'OWNER' | 'ADMIN' | 'MEMBER';
|
|
49
|
+
status?: 'ACTIVE' | 'PENDING' | 'BANNED';
|
|
50
|
+
joinedAt?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all hubs with pagination and filters
|
|
54
|
+
*
|
|
55
|
+
* @param filters - Optional filters for hubs list
|
|
56
|
+
* @param options - React Query options
|
|
57
|
+
* @returns Query result with paginated hubs
|
|
58
|
+
*/
|
|
59
|
+
export declare function useHubs(filters?: HubListFilters, options?: Omit<UseQueryOptions<PaginatedHubsResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedHubsResponse, Error>;
|
|
60
|
+
/**
|
|
61
|
+
* Get hub by ID
|
|
62
|
+
*
|
|
63
|
+
* @param id - Hub ID
|
|
64
|
+
* @param options - React Query options
|
|
65
|
+
* @returns Query result with hub details
|
|
66
|
+
*/
|
|
67
|
+
export declare function useHub(id: string, options?: Omit<UseQueryOptions<HubResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
|
|
68
|
+
id: string;
|
|
69
|
+
name: string;
|
|
70
|
+
slug: string;
|
|
71
|
+
description?: Record<string, never>;
|
|
72
|
+
bannerImage?: Record<string, never>;
|
|
73
|
+
profileImage?: Record<string, never>;
|
|
74
|
+
cityId?: Record<string, never>;
|
|
75
|
+
address?: Record<string, never>;
|
|
76
|
+
locationLat?: Record<string, never>;
|
|
77
|
+
locationLong?: Record<string, never>;
|
|
78
|
+
whatsappGroup?: Record<string, never>;
|
|
79
|
+
instagramUrl?: Record<string, never>;
|
|
80
|
+
websiteUrl?: Record<string, never>;
|
|
81
|
+
visibility: "PUBLIC" | "PRIVATE" | "INVITE_ONLY";
|
|
82
|
+
requiresApproval: boolean;
|
|
83
|
+
maxMembers?: Record<string, never>;
|
|
84
|
+
isActive: boolean;
|
|
85
|
+
isFeatured: boolean;
|
|
86
|
+
memberCount: number;
|
|
87
|
+
eventCount: number;
|
|
88
|
+
createdAt: string;
|
|
89
|
+
}, Error>;
|
|
90
|
+
/**
|
|
91
|
+
* Get hub by slug
|
|
92
|
+
*
|
|
93
|
+
* @param slug - Hub slug
|
|
94
|
+
* @param options - React Query options
|
|
95
|
+
* @returns Query result with hub details
|
|
96
|
+
*/
|
|
97
|
+
export declare function useHubBySlug(slug: string, options?: Omit<UseQueryOptions<HubResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
|
|
98
|
+
id: string;
|
|
99
|
+
name: string;
|
|
100
|
+
slug: string;
|
|
101
|
+
description?: Record<string, never>;
|
|
102
|
+
bannerImage?: Record<string, never>;
|
|
103
|
+
profileImage?: Record<string, never>;
|
|
104
|
+
cityId?: Record<string, never>;
|
|
105
|
+
address?: Record<string, never>;
|
|
106
|
+
locationLat?: Record<string, never>;
|
|
107
|
+
locationLong?: Record<string, never>;
|
|
108
|
+
whatsappGroup?: Record<string, never>;
|
|
109
|
+
instagramUrl?: Record<string, never>;
|
|
110
|
+
websiteUrl?: Record<string, never>;
|
|
111
|
+
visibility: "PUBLIC" | "PRIVATE" | "INVITE_ONLY";
|
|
112
|
+
requiresApproval: boolean;
|
|
113
|
+
maxMembers?: Record<string, never>;
|
|
114
|
+
isActive: boolean;
|
|
115
|
+
isFeatured: boolean;
|
|
116
|
+
memberCount: number;
|
|
117
|
+
eventCount: number;
|
|
118
|
+
createdAt: string;
|
|
119
|
+
}, Error>;
|
|
120
|
+
/**
|
|
121
|
+
* Get hubs the current user is a member of
|
|
122
|
+
*
|
|
123
|
+
* @param options - React Query options
|
|
124
|
+
* @returns Query result with user's hubs
|
|
125
|
+
*/
|
|
126
|
+
export declare function useMyHubs(options?: Omit<UseQueryOptions<HubResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
|
|
127
|
+
id: string;
|
|
128
|
+
name: string;
|
|
129
|
+
slug: string;
|
|
130
|
+
description?: Record<string, never>;
|
|
131
|
+
bannerImage?: Record<string, never>;
|
|
132
|
+
profileImage?: Record<string, never>;
|
|
133
|
+
cityId?: Record<string, never>;
|
|
134
|
+
address?: Record<string, never>;
|
|
135
|
+
locationLat?: Record<string, never>;
|
|
136
|
+
locationLong?: Record<string, never>;
|
|
137
|
+
whatsappGroup?: Record<string, never>;
|
|
138
|
+
instagramUrl?: Record<string, never>;
|
|
139
|
+
websiteUrl?: Record<string, never>;
|
|
140
|
+
visibility: "PUBLIC" | "PRIVATE" | "INVITE_ONLY";
|
|
141
|
+
requiresApproval: boolean;
|
|
142
|
+
maxMembers?: Record<string, never>;
|
|
143
|
+
isActive: boolean;
|
|
144
|
+
isFeatured: boolean;
|
|
145
|
+
memberCount: number;
|
|
146
|
+
eventCount: number;
|
|
147
|
+
createdAt: string;
|
|
148
|
+
}[], Error>;
|
|
149
|
+
/**
|
|
150
|
+
* Get hub members with pagination and filters
|
|
151
|
+
*
|
|
152
|
+
* @param id - Hub ID
|
|
153
|
+
* @param filters - Optional filters for members list
|
|
154
|
+
* @param options - React Query options
|
|
155
|
+
* @returns Query result with paginated members
|
|
156
|
+
*/
|
|
157
|
+
export declare function useHubMembers(id: string, filters?: MemberFilters, options?: Omit<UseQueryOptions<PaginatedMembersResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedMembersResponse, Error>;
|
|
158
|
+
/**
|
|
159
|
+
* Get current user's membership status for a hub
|
|
160
|
+
*
|
|
161
|
+
* @param id - Hub ID
|
|
162
|
+
* @param options - React Query options
|
|
163
|
+
* @returns Query result with membership status
|
|
164
|
+
*/
|
|
165
|
+
export declare function useHubMembership(id: string, options?: Omit<UseQueryOptions<MembershipResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<MembershipResponse, Error>;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hubKeys = void 0;
|
|
4
|
+
exports.useHubs = useHubs;
|
|
5
|
+
exports.useHub = useHub;
|
|
6
|
+
exports.useHubBySlug = useHubBySlug;
|
|
7
|
+
exports.useMyHubs = useMyHubs;
|
|
8
|
+
exports.useHubMembers = useHubMembers;
|
|
9
|
+
exports.useHubMembership = useHubMembership;
|
|
10
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
11
|
+
const client_1 = require("../client");
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// QUERY KEYS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
exports.hubKeys = {
|
|
16
|
+
all: ['hubs'],
|
|
17
|
+
lists: () => [...exports.hubKeys.all, 'list'],
|
|
18
|
+
list: (filters) => [...exports.hubKeys.lists(), filters],
|
|
19
|
+
details: () => [...exports.hubKeys.all, 'detail'],
|
|
20
|
+
detail: (id) => [...exports.hubKeys.details(), id],
|
|
21
|
+
bySlug: (slug) => [...exports.hubKeys.all, 'slug', slug],
|
|
22
|
+
myHubs: () => [...exports.hubKeys.all, 'my-hubs'],
|
|
23
|
+
members: (id, filters) => [...exports.hubKeys.detail(id), 'members', filters],
|
|
24
|
+
membership: (id) => [...exports.hubKeys.detail(id), 'membership'],
|
|
25
|
+
};
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// QUERY HOOKS
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Get all hubs with pagination and filters
|
|
31
|
+
*
|
|
32
|
+
* @param filters - Optional filters for hubs list
|
|
33
|
+
* @param options - React Query options
|
|
34
|
+
* @returns Query result with paginated hubs
|
|
35
|
+
*/
|
|
36
|
+
function useHubs(filters, options) {
|
|
37
|
+
return (0, react_query_1.useQuery)({
|
|
38
|
+
queryKey: exports.hubKeys.list(filters),
|
|
39
|
+
queryFn: async () => {
|
|
40
|
+
const client = (0, client_1.getApiClient)();
|
|
41
|
+
const response = await client.get('/api/v1/hubs', { params: filters });
|
|
42
|
+
return response.data;
|
|
43
|
+
},
|
|
44
|
+
...options,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get hub by ID
|
|
49
|
+
*
|
|
50
|
+
* @param id - Hub ID
|
|
51
|
+
* @param options - React Query options
|
|
52
|
+
* @returns Query result with hub details
|
|
53
|
+
*/
|
|
54
|
+
function useHub(id, options) {
|
|
55
|
+
return (0, react_query_1.useQuery)({
|
|
56
|
+
queryKey: exports.hubKeys.detail(id),
|
|
57
|
+
queryFn: async () => {
|
|
58
|
+
const client = (0, client_1.getApiClient)();
|
|
59
|
+
const response = await client.get(`/api/v1/hubs/${id}`);
|
|
60
|
+
return response.data;
|
|
61
|
+
},
|
|
62
|
+
enabled: !!id && (options?.enabled !== false),
|
|
63
|
+
...options,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get hub by slug
|
|
68
|
+
*
|
|
69
|
+
* @param slug - Hub slug
|
|
70
|
+
* @param options - React Query options
|
|
71
|
+
* @returns Query result with hub details
|
|
72
|
+
*/
|
|
73
|
+
function useHubBySlug(slug, options) {
|
|
74
|
+
return (0, react_query_1.useQuery)({
|
|
75
|
+
queryKey: exports.hubKeys.bySlug(slug),
|
|
76
|
+
queryFn: async () => {
|
|
77
|
+
const client = (0, client_1.getApiClient)();
|
|
78
|
+
const response = await client.get(`/api/v1/hubs/slug/${slug}`);
|
|
79
|
+
return response.data;
|
|
80
|
+
},
|
|
81
|
+
enabled: !!slug && (options?.enabled !== false),
|
|
82
|
+
...options,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get hubs the current user is a member of
|
|
87
|
+
*
|
|
88
|
+
* @param options - React Query options
|
|
89
|
+
* @returns Query result with user's hubs
|
|
90
|
+
*/
|
|
91
|
+
function useMyHubs(options) {
|
|
92
|
+
return (0, react_query_1.useQuery)({
|
|
93
|
+
queryKey: exports.hubKeys.myHubs(),
|
|
94
|
+
queryFn: async () => {
|
|
95
|
+
const client = (0, client_1.getApiClient)();
|
|
96
|
+
const response = await client.get('/api/v1/hubs/my-hubs');
|
|
97
|
+
return response.data;
|
|
98
|
+
},
|
|
99
|
+
...options,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get hub members with pagination and filters
|
|
104
|
+
*
|
|
105
|
+
* @param id - Hub ID
|
|
106
|
+
* @param filters - Optional filters for members list
|
|
107
|
+
* @param options - React Query options
|
|
108
|
+
* @returns Query result with paginated members
|
|
109
|
+
*/
|
|
110
|
+
function useHubMembers(id, filters, options) {
|
|
111
|
+
return (0, react_query_1.useQuery)({
|
|
112
|
+
queryKey: exports.hubKeys.members(id, filters),
|
|
113
|
+
queryFn: async () => {
|
|
114
|
+
const client = (0, client_1.getApiClient)();
|
|
115
|
+
const response = await client.get(`/api/v1/hubs/${id}/members`, {
|
|
116
|
+
params: filters
|
|
117
|
+
});
|
|
118
|
+
return response.data;
|
|
119
|
+
},
|
|
120
|
+
enabled: !!id && (options?.enabled !== false),
|
|
121
|
+
...options,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get current user's membership status for a hub
|
|
126
|
+
*
|
|
127
|
+
* @param id - Hub ID
|
|
128
|
+
* @param options - React Query options
|
|
129
|
+
* @returns Query result with membership status
|
|
130
|
+
*/
|
|
131
|
+
function useHubMembership(id, options) {
|
|
132
|
+
return (0, react_query_1.useQuery)({
|
|
133
|
+
queryKey: exports.hubKeys.membership(id),
|
|
134
|
+
queryFn: async () => {
|
|
135
|
+
const client = (0, client_1.getApiClient)();
|
|
136
|
+
const response = await client.get(`/api/v1/hubs/${id}/membership`);
|
|
137
|
+
return response.data;
|
|
138
|
+
},
|
|
139
|
+
enabled: !!id && (options?.enabled !== false),
|
|
140
|
+
...options,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcXVlcmllcy9odWJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlGQSwwQkFhQztBQVNELHdCQWNDO0FBU0Qsb0NBY0M7QUFRRCw4QkFZQztBQVVELHNDQWlCQztBQVNELDRDQWNDO0FBbE5ELHVEQUFrRTtBQUNsRSxzQ0FBeUM7QUFHekMsK0VBQStFO0FBQy9FLGFBQWE7QUFDYiwrRUFBK0U7QUFFbEUsUUFBQSxPQUFPLEdBQUc7SUFDckIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFVO0lBQ3RCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVU7SUFDOUMsSUFBSSxFQUFFLENBQUMsT0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGVBQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQVU7SUFDMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBVTtJQUNsRCxNQUFNLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxlQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFVO0lBQzNELE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBVTtJQUNqRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFVO0lBQ2xELE9BQU8sRUFBRSxDQUFDLEVBQVUsRUFBRSxPQUF1QixFQUFFLEVBQUUsQ0FDL0MsQ0FBQyxHQUFHLGVBQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVTtJQUN0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Q0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQztRQUN0QyxPQUFPLEVBQUUsS0FBSyxJQUF1QyxFQUFFO1lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUU7Z0JBQzlELE1BQU0sRUFBRSxPQUFPO2FBQ2hCLENBQUMsQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLEtBQUssQ0FBQztRQUM3QyxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLEVBQVUsRUFDVixPQUEyRTtJQUUzRSxPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxlQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSyxJQUFpQyxFQUFFO1lBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNuRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sS0FBSyxLQUFLLENBQUM7UUFDN0MsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgSHViUmVzcG9uc2UsIEh1Yk1lbWJlclJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBLRVlTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBodWJLZXlzID0ge1xuICBhbGw6IFsnaHVicyddIGFzIGNvbnN0LFxuICBsaXN0czogKCkgPT4gWy4uLmh1YktleXMuYWxsLCAnbGlzdCddIGFzIGNvbnN0LFxuICBsaXN0OiAoZmlsdGVycz86IEh1Ykxpc3RGaWx0ZXJzKSA9PiBbLi4uaHViS2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLmh1YktleXMuYWxsLCAnZGV0YWlsJ10gYXMgY29uc3QsXG4gIGRldGFpbDogKGlkOiBzdHJpbmcpID0+IFsuLi5odWJLZXlzLmRldGFpbHMoKSwgaWRdIGFzIGNvbnN0LFxuICBieVNsdWc6IChzbHVnOiBzdHJpbmcpID0+IFsuLi5odWJLZXlzLmFsbCwgJ3NsdWcnLCBzbHVnXSBhcyBjb25zdCxcbiAgbXlIdWJzOiAoKSA9PiBbLi4uaHViS2V5cy5hbGwsICdteS1odWJzJ10gYXMgY29uc3QsXG4gIG1lbWJlcnM6IChpZDogc3RyaW5nLCBmaWx0ZXJzPzogTWVtYmVyRmlsdGVycykgPT5cbiAgICBbLi4uaHViS2V5cy5kZXRhaWwoaWQpLCAnbWVtYmVycycsIGZpbHRlcnNdIGFzIGNvbnN0LFxuICBtZW1iZXJzaGlwOiAoaWQ6IHN0cmluZykgPT4gWy4uLmh1YktleXMuZGV0YWlsKGlkKSwgJ21lbWJlcnNoaXAnXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHViTGlzdEZpbHRlcnMge1xuICBwYWdlPzogbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbiAgY2l0eUlkPzogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIGlzRmVhdHVyZWQ/OiBib29sZWFuO1xuICB2aXNpYmlsaXR5PzogJ1BVQkxJQycgfCAnUFJJVkFURScgfCAnSU5WSVRFX09OTFknO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lbWJlckZpbHRlcnMge1xuICBwYWdlPzogbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbiAgcm9sZT86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZEh1YnNSZXNwb25zZSB7XG4gIGRhdGE6IEh1YlJlc3BvbnNlW107XG4gIG1ldGE6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgfTtcbn1cblxuLy8gSHViTWVtYmVyUmVzcG9uc2UgaXMgaW1wb3J0ZWQgZnJvbSAnLi4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkTWVtYmVyc1Jlc3BvbnNlIHtcbiAgZGF0YTogSHViTWVtYmVyUmVzcG9uc2VbXTtcbiAgbWV0YToge1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lbWJlcnNoaXBSZXNwb25zZSB7XG4gIGlzTWVtYmVyOiBib29sZWFuO1xuICByb2xlPzogJ09XTkVSJyB8ICdBRE1JTicgfCAnTUVNQkVSJztcbiAgc3RhdHVzPzogJ0FDVElWRScgfCAnUEVORElORycgfCAnQkFOTkVEJztcbiAgam9pbmVkQXQ/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGFsbCBodWJzIHdpdGggcGFnaW5hdGlvbiBhbmQgZmlsdGVyc1xuICpcbiAqIEBwYXJhbSBmaWx0ZXJzIC0gT3B0aW9uYWwgZmlsdGVycyBmb3IgaHVicyBsaXN0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIFJlYWN0IFF1ZXJ5IG9wdGlvbnNcbiAqIEByZXR1cm5zIFF1ZXJ5IHJlc3VsdCB3aXRoIHBhZ2luYXRlZCBodWJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VIdWJzKFxuICBmaWx0ZXJzPzogSHViTGlzdEZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRIdWJzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGh1YktleXMubGlzdChmaWx0ZXJzKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQYWdpbmF0ZWRIdWJzUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL2h1YnMnLCB7IHBhcmFtczogZmlsdGVycyB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGh1YiBieSBJRFxuICpcbiAqIEBwYXJhbSBpZCAtIEh1YiBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBSZWFjdCBRdWVyeSBvcHRpb25zXG4gKiBAcmV0dXJucyBRdWVyeSByZXN1bHQgd2l0aCBodWIgZGV0YWlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSHViKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8SHViUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGh1YktleXMuZGV0YWlsKGlkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxIdWJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvaHVicy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWlkICYmIChvcHRpb25zPy5lbmFibGVkICE9PSBmYWxzZSksXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGh1YiBieSBzbHVnXG4gKlxuICogQHBhcmFtIHNsdWcgLSBIdWIgc2x1Z1xuICogQHBhcmFtIG9wdGlvbnMgLSBSZWFjdCBRdWVyeSBvcHRpb25zXG4gKiBAcmV0dXJucyBRdWVyeSByZXN1bHQgd2l0aCBodWIgZGV0YWlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSHViQnlTbHVnKFxuICBzbHVnOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxIdWJSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogaHViS2V5cy5ieVNsdWcoc2x1ZyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8SHViUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2h1YnMvc2x1Zy8ke3NsdWd9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc2x1ZyAmJiAob3B0aW9ucz8uZW5hYmxlZCAhPT0gZmFsc2UpLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBodWJzIHRoZSBjdXJyZW50IHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFJlYWN0IFF1ZXJ5IG9wdGlvbnNcbiAqIEByZXR1cm5zIFF1ZXJ5IHJlc3VsdCB3aXRoIHVzZXIncyBodWJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNeUh1YnMoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxIdWJSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBodWJLZXlzLm15SHVicygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEh1YlJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL2h1YnMvbXktaHVicycpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgaHViIG1lbWJlcnMgd2l0aCBwYWdpbmF0aW9uIGFuZCBmaWx0ZXJzXG4gKlxuICogQHBhcmFtIGlkIC0gSHViIElEXG4gKiBAcGFyYW0gZmlsdGVycyAtIE9wdGlvbmFsIGZpbHRlcnMgZm9yIG1lbWJlcnMgbGlzdFxuICogQHBhcmFtIG9wdGlvbnMgLSBSZWFjdCBRdWVyeSBvcHRpb25zXG4gKiBAcmV0dXJucyBRdWVyeSByZXN1bHQgd2l0aCBwYWdpbmF0ZWQgbWVtYmVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSHViTWVtYmVycyhcbiAgaWQ6IHN0cmluZyxcbiAgZmlsdGVycz86IE1lbWJlckZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRNZW1iZXJzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGh1YktleXMubWVtYmVycyhpZCwgZmlsdGVycyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkTWVtYmVyc1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9odWJzLyR7aWR9L21lbWJlcnNgLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVyc1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhaWQgJiYgKG9wdGlvbnM/LmVuYWJsZWQgIT09IGZhbHNlKSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgY3VycmVudCB1c2VyJ3MgbWVtYmVyc2hpcCBzdGF0dXMgZm9yIGEgaHViXG4gKlxuICogQHBhcmFtIGlkIC0gSHViIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFJlYWN0IFF1ZXJ5IG9wdGlvbnNcbiAqIEByZXR1cm5zIFF1ZXJ5IHJlc3VsdCB3aXRoIG1lbWJlcnNoaXAgc3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VIdWJNZW1iZXJzaGlwKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8TWVtYmVyc2hpcFJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBodWJLZXlzLm1lbWJlcnNoaXAoaWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPE1lbWJlcnNoaXBSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvaHVicy8ke2lkfS9tZW1iZXJzaGlwYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhaWQgJiYgKG9wdGlvbnM/LmVuYWJsZWQgIT09IGZhbHNlKSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Hooks
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all query hooks for API endpoints.
|
|
5
|
+
*/
|
|
6
|
+
export * from './admin';
|
|
7
|
+
export * from './auth';
|
|
8
|
+
export * from './bookings';
|
|
9
|
+
export * from './businesses';
|
|
10
|
+
export * from './events';
|
|
11
|
+
export * from './hubs';
|
|
12
|
+
export * from './library';
|
|
13
|
+
export * from './map';
|
|
14
|
+
export * from './notifications';
|
|
15
|
+
export * from './offers';
|
|
16
|
+
export * from './subscriptions';
|
|
17
|
+
export * from './support';
|
|
18
|
+
export * from './users';
|
|
19
|
+
export * from './jack';
|
|
20
|
+
export * from './ambassadors';
|
|
21
|
+
export * from './grow90';
|
|
22
|
+
export * from './matching';
|
|
23
|
+
export * from './event-chat';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Query Hooks
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all query hooks for API endpoints.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./admin"), exports);
|
|
23
|
+
__exportStar(require("./auth"), exports);
|
|
24
|
+
__exportStar(require("./bookings"), exports);
|
|
25
|
+
__exportStar(require("./businesses"), exports);
|
|
26
|
+
__exportStar(require("./events"), exports);
|
|
27
|
+
__exportStar(require("./hubs"), exports);
|
|
28
|
+
__exportStar(require("./library"), exports);
|
|
29
|
+
__exportStar(require("./map"), exports);
|
|
30
|
+
__exportStar(require("./notifications"), exports);
|
|
31
|
+
__exportStar(require("./offers"), exports);
|
|
32
|
+
__exportStar(require("./subscriptions"), exports);
|
|
33
|
+
__exportStar(require("./support"), exports);
|
|
34
|
+
__exportStar(require("./users"), exports);
|
|
35
|
+
__exportStar(require("./jack"), exports);
|
|
36
|
+
__exportStar(require("./ambassadors"), exports);
|
|
37
|
+
__exportStar(require("./grow90"), exports);
|
|
38
|
+
__exportStar(require("./matching"), exports);
|
|
39
|
+
__exportStar(require("./event-chat"), exports);
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwwQ0FBd0I7QUFDeEIseUNBQXVCO0FBQ3ZCLDZDQUEyQjtBQUMzQiwrQ0FBNkI7QUFDN0IsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsd0NBQXNCO0FBQ3RCLGtEQUFnQztBQUNoQywyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIseUNBQXVCO0FBQ3ZCLGdEQUE4QjtBQUM5QiwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUXVlcnkgSG9va3NcbiAqXG4gKiBSZS1leHBvcnRzIGFsbCBxdWVyeSBob29rcyBmb3IgQVBJIGVuZHBvaW50cy5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2FkbWluJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2tpbmdzJztcbmV4cG9ydCAqIGZyb20gJy4vYnVzaW5lc3Nlcyc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2h1YnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWJyYXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL29mZmVycyc7XG5leHBvcnQgKiBmcm9tICcuL3N1YnNjcmlwdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdXBwb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9qYWNrJztcbmV4cG9ydCAqIGZyb20gJy4vYW1iYXNzYWRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9ncm93OTAnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRjaGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWNoYXQnO1xuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { UseQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
export declare const jackKeys: {
|
|
3
|
+
all: readonly ["jack"];
|
|
4
|
+
conversations: () => readonly ["jack", "conversations"];
|
|
5
|
+
conversation: (id: string) => readonly ["jack", "conversation", string];
|
|
6
|
+
history: () => readonly ["jack", "history"];
|
|
7
|
+
};
|
|
8
|
+
export interface JackConversation {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
messageCount: number;
|
|
12
|
+
lastMessageAt: string | null;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
isArchived: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface JackMessage {
|
|
17
|
+
id: string;
|
|
18
|
+
conversationId: string;
|
|
19
|
+
role: 'USER' | 'ASSISTANT' | 'SYSTEM';
|
|
20
|
+
content: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
promptTokens?: number;
|
|
23
|
+
completionTokens?: number;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
}
|
|
26
|
+
export interface JackConversationWithMessages extends JackConversation {
|
|
27
|
+
messages: JackMessage[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get all conversations with Jack
|
|
31
|
+
*
|
|
32
|
+
* @param limit - Maximum conversations to return (default: 20)
|
|
33
|
+
* @param options - TanStack Query options
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* const { data: conversations } = useJackConversations();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function useJackConversations(limit?: number, options?: Omit<UseQueryOptions<JackConversation[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<JackConversation[], Error>;
|
|
41
|
+
/**
|
|
42
|
+
* Get a specific conversation with messages
|
|
43
|
+
*
|
|
44
|
+
* @param conversationId - The conversation ID
|
|
45
|
+
* @param options - TanStack Query options
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* const { data: conversation } = useJackConversation('conv-123');
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function useJackConversation(conversationId: string, options?: Omit<UseQueryOptions<JackConversationWithMessages | null>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<JackConversationWithMessages | null, Error>;
|
|
53
|
+
/**
|
|
54
|
+
* Get the most recent active conversation with Jack
|
|
55
|
+
*
|
|
56
|
+
* @param options - TanStack Query options
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* const { data: history } = useJackHistory();
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function useJackHistory(options?: Omit<UseQueryOptions<JackConversationWithMessages | null>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<JackConversationWithMessages | null, Error>;
|