@sudobility/shaperouter_client 0.0.1

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.
Files changed (70) hide show
  1. package/README.md +51 -0
  2. package/dist/hooks/index.d.ts +11 -0
  3. package/dist/hooks/index.d.ts.map +1 -0
  4. package/dist/hooks/index.js +11 -0
  5. package/dist/hooks/index.js.map +1 -0
  6. package/dist/hooks/useAiExecute.d.ts +13 -0
  7. package/dist/hooks/useAiExecute.d.ts.map +1 -0
  8. package/dist/hooks/useAiExecute.js +66 -0
  9. package/dist/hooks/useAiExecute.js.map +1 -0
  10. package/dist/hooks/useAnalytics.d.ts +16 -0
  11. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  12. package/dist/hooks/useAnalytics.js +42 -0
  13. package/dist/hooks/useAnalytics.js.map +1 -0
  14. package/dist/hooks/useEndpoints.d.ts +20 -0
  15. package/dist/hooks/useEndpoints.d.ts.map +1 -0
  16. package/dist/hooks/useEndpoints.js +133 -0
  17. package/dist/hooks/useEndpoints.js.map +1 -0
  18. package/dist/hooks/useEntities.d.ts +32 -0
  19. package/dist/hooks/useEntities.d.ts.map +1 -0
  20. package/dist/hooks/useEntities.js +330 -0
  21. package/dist/hooks/useEntities.js.map +1 -0
  22. package/dist/hooks/useKeys.d.ts +19 -0
  23. package/dist/hooks/useKeys.d.ts.map +1 -0
  24. package/dist/hooks/useKeys.js +129 -0
  25. package/dist/hooks/useKeys.js.map +1 -0
  26. package/dist/hooks/useProjects.d.ts +22 -0
  27. package/dist/hooks/useProjects.d.ts.map +1 -0
  28. package/dist/hooks/useProjects.js +166 -0
  29. package/dist/hooks/useProjects.js.map +1 -0
  30. package/dist/hooks/useProviders.d.ts +18 -0
  31. package/dist/hooks/useProviders.d.ts.map +1 -0
  32. package/dist/hooks/useProviders.js +60 -0
  33. package/dist/hooks/useProviders.js.map +1 -0
  34. package/dist/hooks/useSettings.d.ts +16 -0
  35. package/dist/hooks/useSettings.d.ts.map +1 -0
  36. package/dist/hooks/useSettings.js +72 -0
  37. package/dist/hooks/useSettings.js.map +1 -0
  38. package/dist/hooks/useStorageConfig.d.ts +19 -0
  39. package/dist/hooks/useStorageConfig.d.ts.map +1 -0
  40. package/dist/hooks/useStorageConfig.js +131 -0
  41. package/dist/hooks/useStorageConfig.js.map +1 -0
  42. package/dist/hooks/useUserApiKeys.d.ts +18 -0
  43. package/dist/hooks/useUserApiKeys.d.ts.map +1 -0
  44. package/dist/hooks/useUserApiKeys.js +107 -0
  45. package/dist/hooks/useUserApiKeys.js.map +1 -0
  46. package/dist/index.d.ts +6 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +5 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/network/ShapeRouterClient.d.ts +72 -0
  51. package/dist/network/ShapeRouterClient.d.ts.map +1 -0
  52. package/dist/network/ShapeRouterClient.js +461 -0
  53. package/dist/network/ShapeRouterClient.js.map +1 -0
  54. package/dist/network/index.d.ts +3 -0
  55. package/dist/network/index.d.ts.map +1 -0
  56. package/dist/network/index.js +2 -0
  57. package/dist/network/index.js.map +1 -0
  58. package/dist/types.d.ts +52 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +24 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/index.d.ts +2 -0
  63. package/dist/utils/index.d.ts.map +1 -0
  64. package/dist/utils/index.js +2 -0
  65. package/dist/utils/index.js.map +1 -0
  66. package/dist/utils/shaperouter-helpers.d.ts +18 -0
  67. package/dist/utils/shaperouter-helpers.d.ts.map +1 -0
  68. package/dist/utils/shaperouter-helpers.js +53 -0
  69. package/dist/utils/shaperouter-helpers.js.map +1 -0
  70. package/package.json +70 -0
@@ -0,0 +1,330 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
+ import { ShapeRouterClient } from '../network/ShapeRouterClient';
4
+ import { QUERY_KEYS } from '../types';
5
+ const EMPTY_ENTITIES = [];
6
+ const EMPTY_MEMBERS = [];
7
+ const EMPTY_INVITATIONS = [];
8
+ export const useEntities = (networkClient, baseUrl, token, entitySlug, options) => {
9
+ const testMode = options?.testMode ?? false;
10
+ const enabled = (options?.enabled ?? true) && !!token;
11
+ const entityEnabled = enabled && !!entitySlug;
12
+ const client = useMemo(() => new ShapeRouterClient({ baseUrl, networkClient, testMode }), [baseUrl, networkClient, testMode]);
13
+ const queryClient = useQueryClient();
14
+ const { data: entitiesData, isLoading: entitiesLoading, error: entitiesError, refetch: refetchEntities, } = useQuery({
15
+ queryKey: QUERY_KEYS.entities(),
16
+ queryFn: async () => {
17
+ if (!token)
18
+ throw new Error('Missing required params');
19
+ const response = await client.getEntities(token);
20
+ if (!response.success || !response.data) {
21
+ throw new Error(response.error || 'Failed to fetch entities');
22
+ }
23
+ return response.data;
24
+ },
25
+ enabled,
26
+ staleTime: 5 * 60 * 1000,
27
+ gcTime: 30 * 60 * 1000,
28
+ });
29
+ const { data: membersData, isLoading: membersLoading, refetch: refetchMembers, } = useQuery({
30
+ queryKey: QUERY_KEYS.entityMembers(entitySlug ?? ''),
31
+ queryFn: async () => {
32
+ if (!entitySlug || !token)
33
+ throw new Error('Missing required params');
34
+ const response = await client.getEntityMembers(entitySlug, token);
35
+ if (!response.success || !response.data) {
36
+ throw new Error(response.error || 'Failed to fetch members');
37
+ }
38
+ return response.data;
39
+ },
40
+ enabled: entityEnabled,
41
+ staleTime: 5 * 60 * 1000,
42
+ gcTime: 30 * 60 * 1000,
43
+ });
44
+ const { data: invitationsData, isLoading: invitationsLoading, refetch: refetchInvitations, } = useQuery({
45
+ queryKey: QUERY_KEYS.entityInvitations(entitySlug ?? ''),
46
+ queryFn: async () => {
47
+ if (!entitySlug || !token)
48
+ throw new Error('Missing required params');
49
+ const response = await client.getEntityInvitations(entitySlug, token);
50
+ if (!response.success || !response.data) {
51
+ throw new Error(response.error || 'Failed to fetch invitations');
52
+ }
53
+ return response.data;
54
+ },
55
+ enabled: entityEnabled,
56
+ staleTime: 5 * 60 * 1000,
57
+ gcTime: 30 * 60 * 1000,
58
+ });
59
+ const { data: myInvitationsData, isLoading: myInvitationsLoading, refetch: refetchMyInvitations, } = useQuery({
60
+ queryKey: QUERY_KEYS.myInvitations(),
61
+ queryFn: async () => {
62
+ if (!token)
63
+ throw new Error('Missing required params');
64
+ const response = await client.getMyInvitations(token);
65
+ if (!response.success || !response.data) {
66
+ throw new Error(response.error || 'Failed to fetch my invitations');
67
+ }
68
+ return response.data;
69
+ },
70
+ enabled,
71
+ staleTime: 5 * 60 * 1000,
72
+ gcTime: 30 * 60 * 1000,
73
+ });
74
+ const createEntityMutation = useMutation({
75
+ mutationFn: async (data) => {
76
+ if (!token)
77
+ throw new Error('Missing required params');
78
+ return client.createEntity(data, token);
79
+ },
80
+ onSuccess: response => {
81
+ if (response.success) {
82
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.entities() });
83
+ }
84
+ },
85
+ });
86
+ const updateEntityMutation = useMutation({
87
+ mutationFn: async ({ slug, data, }) => {
88
+ if (!token)
89
+ throw new Error('Missing required params');
90
+ return client.updateEntity(slug, data, token);
91
+ },
92
+ onSuccess: response => {
93
+ if (response.success) {
94
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.entities() });
95
+ }
96
+ },
97
+ });
98
+ const deleteEntityMutation = useMutation({
99
+ mutationFn: async (slug) => {
100
+ if (!token)
101
+ throw new Error('Missing required params');
102
+ return client.deleteEntity(slug, token);
103
+ },
104
+ onSuccess: response => {
105
+ if (response.success) {
106
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.entities() });
107
+ }
108
+ },
109
+ });
110
+ const updateMemberRoleMutation = useMutation({
111
+ mutationFn: async ({ memberId, role, }) => {
112
+ if (!entitySlug || !token)
113
+ throw new Error('Missing required params');
114
+ return client.updateEntityMemberRole(entitySlug, memberId, role, token);
115
+ },
116
+ onSuccess: response => {
117
+ if (response.success && entitySlug) {
118
+ queryClient.invalidateQueries({
119
+ queryKey: QUERY_KEYS.entityMembers(entitySlug),
120
+ });
121
+ }
122
+ },
123
+ });
124
+ const removeMemberMutation = useMutation({
125
+ mutationFn: async (memberId) => {
126
+ if (!entitySlug || !token)
127
+ throw new Error('Missing required params');
128
+ return client.removeEntityMember(entitySlug, memberId, token);
129
+ },
130
+ onSuccess: response => {
131
+ if (response.success && entitySlug) {
132
+ queryClient.invalidateQueries({
133
+ queryKey: QUERY_KEYS.entityMembers(entitySlug),
134
+ });
135
+ }
136
+ },
137
+ });
138
+ const createInvitationMutation = useMutation({
139
+ mutationFn: async (data) => {
140
+ if (!entitySlug || !token)
141
+ throw new Error('Missing required params');
142
+ return client.createEntityInvitation(entitySlug, data, token);
143
+ },
144
+ onSuccess: response => {
145
+ if (response.success && entitySlug) {
146
+ queryClient.invalidateQueries({
147
+ queryKey: QUERY_KEYS.entityInvitations(entitySlug),
148
+ });
149
+ }
150
+ },
151
+ });
152
+ const cancelInvitationMutation = useMutation({
153
+ mutationFn: async (invitationId) => {
154
+ if (!entitySlug || !token)
155
+ throw new Error('Missing required params');
156
+ return client.cancelEntityInvitation(entitySlug, invitationId, token);
157
+ },
158
+ onSuccess: response => {
159
+ if (response.success && entitySlug) {
160
+ queryClient.invalidateQueries({
161
+ queryKey: QUERY_KEYS.entityInvitations(entitySlug),
162
+ });
163
+ }
164
+ },
165
+ });
166
+ const acceptInvitationMutation = useMutation({
167
+ mutationFn: async (invitationToken) => {
168
+ if (!token)
169
+ throw new Error('Missing required params');
170
+ return client.acceptInvitation(invitationToken, token);
171
+ },
172
+ onSuccess: response => {
173
+ if (response.success) {
174
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.myInvitations() });
175
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.entities() });
176
+ }
177
+ },
178
+ });
179
+ const declineInvitationMutation = useMutation({
180
+ mutationFn: async (invitationToken) => {
181
+ if (!token)
182
+ throw new Error('Missing required params');
183
+ return client.declineInvitation(invitationToken, token);
184
+ },
185
+ onSuccess: response => {
186
+ if (response.success) {
187
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.myInvitations() });
188
+ }
189
+ },
190
+ });
191
+ const getEntity = useCallback(async (slug) => {
192
+ if (!token)
193
+ throw new Error('Missing required params');
194
+ try {
195
+ return await client.getEntity(slug, token);
196
+ }
197
+ catch (err) {
198
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get entity';
199
+ return {
200
+ success: false,
201
+ error: errorMessage,
202
+ timestamp: new Date().toISOString(),
203
+ };
204
+ }
205
+ }, [client, token]);
206
+ const createEntity = useCallback((data) => createEntityMutation.mutateAsync(data), [createEntityMutation]);
207
+ const updateEntity = useCallback((slug, data) => updateEntityMutation.mutateAsync({ slug, data }), [updateEntityMutation]);
208
+ const deleteEntity = useCallback((slug) => deleteEntityMutation.mutateAsync(slug), [deleteEntityMutation]);
209
+ const updateMemberRole = useCallback((memberId, role) => updateMemberRoleMutation.mutateAsync({ memberId, role }), [updateMemberRoleMutation]);
210
+ const removeMember = useCallback((memberId) => removeMemberMutation.mutateAsync(memberId), [removeMemberMutation]);
211
+ const createInvitation = useCallback((data) => createInvitationMutation.mutateAsync(data), [createInvitationMutation]);
212
+ const cancelInvitation = useCallback((invitationId) => cancelInvitationMutation.mutateAsync(invitationId), [cancelInvitationMutation]);
213
+ const acceptInvitation = useCallback((invitationToken) => acceptInvitationMutation.mutateAsync(invitationToken), [acceptInvitationMutation]);
214
+ const declineInvitation = useCallback((invitationToken) => declineInvitationMutation.mutateAsync(invitationToken), [declineInvitationMutation]);
215
+ const isLoading = entitiesLoading ||
216
+ membersLoading ||
217
+ invitationsLoading ||
218
+ myInvitationsLoading ||
219
+ createEntityMutation.isPending ||
220
+ updateEntityMutation.isPending ||
221
+ deleteEntityMutation.isPending ||
222
+ updateMemberRoleMutation.isPending ||
223
+ removeMemberMutation.isPending ||
224
+ createInvitationMutation.isPending ||
225
+ cancelInvitationMutation.isPending ||
226
+ acceptInvitationMutation.isPending ||
227
+ declineInvitationMutation.isPending;
228
+ const queryError = entitiesError;
229
+ const mutationError = createEntityMutation.error ??
230
+ updateEntityMutation.error ??
231
+ deleteEntityMutation.error ??
232
+ updateMemberRoleMutation.error ??
233
+ removeMemberMutation.error ??
234
+ createInvitationMutation.error ??
235
+ cancelInvitationMutation.error ??
236
+ acceptInvitationMutation.error ??
237
+ declineInvitationMutation.error;
238
+ const error = queryError instanceof Error
239
+ ? queryError.message
240
+ : mutationError instanceof Error
241
+ ? mutationError.message
242
+ : null;
243
+ const clearError = useCallback(() => {
244
+ createEntityMutation.reset();
245
+ updateEntityMutation.reset();
246
+ deleteEntityMutation.reset();
247
+ updateMemberRoleMutation.reset();
248
+ removeMemberMutation.reset();
249
+ createInvitationMutation.reset();
250
+ cancelInvitationMutation.reset();
251
+ acceptInvitationMutation.reset();
252
+ declineInvitationMutation.reset();
253
+ }, [
254
+ createEntityMutation,
255
+ updateEntityMutation,
256
+ deleteEntityMutation,
257
+ updateMemberRoleMutation,
258
+ removeMemberMutation,
259
+ createInvitationMutation,
260
+ cancelInvitationMutation,
261
+ acceptInvitationMutation,
262
+ declineInvitationMutation,
263
+ ]);
264
+ const reset = useCallback(() => {
265
+ queryClient.removeQueries({ queryKey: QUERY_KEYS.entities() });
266
+ queryClient.removeQueries({ queryKey: QUERY_KEYS.myInvitations() });
267
+ if (entitySlug) {
268
+ queryClient.removeQueries({
269
+ queryKey: QUERY_KEYS.entityMembers(entitySlug),
270
+ });
271
+ queryClient.removeQueries({
272
+ queryKey: QUERY_KEYS.entityInvitations(entitySlug),
273
+ });
274
+ }
275
+ clearError();
276
+ }, [queryClient, entitySlug, clearError]);
277
+ const currentEntity = useMemo(() => entitySlug
278
+ ? ((entitiesData ?? []).find(e => e.entitySlug === entitySlug) ?? null)
279
+ : null, [entitiesData, entitySlug]);
280
+ return useMemo(() => ({
281
+ entities: entitiesData ?? EMPTY_ENTITIES,
282
+ currentEntity,
283
+ members: membersData ?? EMPTY_MEMBERS,
284
+ invitations: invitationsData ?? EMPTY_INVITATIONS,
285
+ myInvitations: myInvitationsData ?? EMPTY_INVITATIONS,
286
+ isLoading,
287
+ error,
288
+ refetchEntities,
289
+ getEntity,
290
+ createEntity,
291
+ updateEntity,
292
+ deleteEntity,
293
+ refetchMembers,
294
+ updateMemberRole,
295
+ removeMember,
296
+ refetchInvitations,
297
+ createInvitation,
298
+ cancelInvitation,
299
+ refetchMyInvitations,
300
+ acceptInvitation,
301
+ declineInvitation,
302
+ clearError,
303
+ reset,
304
+ }), [
305
+ entitiesData,
306
+ currentEntity,
307
+ membersData,
308
+ invitationsData,
309
+ myInvitationsData,
310
+ isLoading,
311
+ error,
312
+ refetchEntities,
313
+ getEntity,
314
+ createEntity,
315
+ updateEntity,
316
+ deleteEntity,
317
+ refetchMembers,
318
+ updateMemberRole,
319
+ removeMember,
320
+ refetchInvitations,
321
+ createInvitation,
322
+ cancelInvitation,
323
+ refetchMyInvitations,
324
+ acceptInvitation,
325
+ declineInvitation,
326
+ clearError,
327
+ reset,
328
+ ]);
329
+ };
330
+ //# sourceMappingURL=useEntities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEntities.js","sourceRoot":"","sources":["../../src/hooks/useEntities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { BaseResponse, LlmApiKeyCreateRequest, LlmApiKeySafe, LlmApiKeyUpdateRequest, NetworkClient, Optional } from '@sudobility/shaperouter_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface UseKeysReturn {
4
+ keys: LlmApiKeySafe[];
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ refetch: () => void;
8
+ getKey: (keyId: string) => Promise<BaseResponse<LlmApiKeySafe>>;
9
+ createKey: (data: LlmApiKeyCreateRequest) => Promise<BaseResponse<LlmApiKeySafe>>;
10
+ updateKey: (keyId: string, data: LlmApiKeyUpdateRequest) => Promise<BaseResponse<LlmApiKeySafe>>;
11
+ deleteKey: (keyId: string) => Promise<BaseResponse<LlmApiKeySafe>>;
12
+ clearError: () => void;
13
+ reset: () => void;
14
+ }
15
+ export declare const useKeys: (networkClient: NetworkClient, baseUrl: string, entitySlug: string | null, token: FirebaseIdToken | null, options?: {
16
+ testMode?: boolean;
17
+ enabled?: boolean;
18
+ }) => UseKeysReturn;
19
+ //# sourceMappingURL=useKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeys.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAUhD,MAAM,WAAW,aAAa;IAE5B,IAAI,EAAE,aAAa,EAAE,CAAC;IAEtB,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGxB,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAEhE,SAAS,EAAE,CACT,IAAI,EAAE,sBAAsB,KACzB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1C,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,sBAAsB,KACzB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnE,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AA+BD,eAAO,MAAM,OAAO,GAClB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,YAAY,MAAM,GAAG,IAAI,EACzB,OAAO,eAAe,GAAG,IAAI,EAC7B,UAAU;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KACA,aAkKF,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
+ import { ShapeRouterClient } from '../network/ShapeRouterClient';
4
+ import { QUERY_KEYS } from '../types';
5
+ const EMPTY_KEYS = [];
6
+ export const useKeys = (networkClient, baseUrl, entitySlug, token, options) => {
7
+ const testMode = options?.testMode ?? false;
8
+ const enabled = (options?.enabled ?? true) && !!entitySlug && !!token;
9
+ const client = useMemo(() => new ShapeRouterClient({ baseUrl, networkClient, testMode }), [baseUrl, networkClient, testMode]);
10
+ const queryClient = useQueryClient();
11
+ const { data, isLoading, error: queryError, refetch, } = useQuery({
12
+ queryKey: QUERY_KEYS.keys(entitySlug ?? ''),
13
+ queryFn: async () => {
14
+ if (!entitySlug || !token)
15
+ throw new Error('Missing required params');
16
+ const response = await client.getKeys(entitySlug, token);
17
+ if (!response.success || !response.data) {
18
+ throw new Error(response.error || 'Failed to fetch keys');
19
+ }
20
+ return response.data;
21
+ },
22
+ enabled,
23
+ staleTime: 5 * 60 * 1000,
24
+ gcTime: 30 * 60 * 1000,
25
+ });
26
+ const invalidateKeys = useCallback(() => {
27
+ if (entitySlug) {
28
+ queryClient.invalidateQueries({ queryKey: QUERY_KEYS.keys(entitySlug) });
29
+ }
30
+ }, [queryClient, entitySlug]);
31
+ const createMutation = useMutation({
32
+ mutationFn: async (data) => {
33
+ if (!entitySlug || !token)
34
+ throw new Error('Missing required params');
35
+ return client.createKey(entitySlug, data, token);
36
+ },
37
+ onSuccess: response => {
38
+ if (response.success)
39
+ invalidateKeys();
40
+ },
41
+ });
42
+ const updateMutation = useMutation({
43
+ mutationFn: async ({ keyId, data, }) => {
44
+ if (!entitySlug || !token)
45
+ throw new Error('Missing required params');
46
+ return client.updateKey(entitySlug, keyId, data, token);
47
+ },
48
+ onSuccess: response => {
49
+ if (response.success)
50
+ invalidateKeys();
51
+ },
52
+ });
53
+ const deleteMutation = useMutation({
54
+ mutationFn: async (keyId) => {
55
+ if (!entitySlug || !token)
56
+ throw new Error('Missing required params');
57
+ return client.deleteKey(entitySlug, keyId, token);
58
+ },
59
+ onSuccess: response => {
60
+ if (response.success)
61
+ invalidateKeys();
62
+ },
63
+ });
64
+ const getKey = useCallback(async (keyId) => {
65
+ if (!entitySlug || !token)
66
+ throw new Error('Missing required params');
67
+ try {
68
+ return await client.getKey(entitySlug, keyId, token);
69
+ }
70
+ catch (err) {
71
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get key';
72
+ return {
73
+ success: false,
74
+ error: errorMessage,
75
+ timestamp: new Date().toISOString(),
76
+ };
77
+ }
78
+ }, [client, entitySlug, token]);
79
+ const createKey = useCallback((data) => createMutation.mutateAsync(data), [createMutation]);
80
+ const updateKey = useCallback((keyId, data) => updateMutation.mutateAsync({ keyId, data }), [updateMutation]);
81
+ const deleteKey = useCallback((keyId) => deleteMutation.mutateAsync(keyId), [deleteMutation]);
82
+ const mutationError = createMutation.error ?? updateMutation.error ?? deleteMutation.error;
83
+ const error = queryError instanceof Error
84
+ ? queryError.message
85
+ : mutationError instanceof Error
86
+ ? mutationError.message
87
+ : null;
88
+ const clearError = useCallback(() => {
89
+ createMutation.reset();
90
+ updateMutation.reset();
91
+ deleteMutation.reset();
92
+ }, [createMutation, updateMutation, deleteMutation]);
93
+ const reset = useCallback(() => {
94
+ if (entitySlug) {
95
+ queryClient.removeQueries({ queryKey: QUERY_KEYS.keys(entitySlug) });
96
+ }
97
+ clearError();
98
+ }, [queryClient, entitySlug, clearError]);
99
+ return useMemo(() => ({
100
+ keys: data ?? EMPTY_KEYS,
101
+ isLoading: isLoading ||
102
+ createMutation.isPending ||
103
+ updateMutation.isPending ||
104
+ deleteMutation.isPending,
105
+ error,
106
+ refetch,
107
+ getKey,
108
+ createKey,
109
+ updateKey,
110
+ deleteKey,
111
+ clearError,
112
+ reset,
113
+ }), [
114
+ data,
115
+ isLoading,
116
+ createMutation.isPending,
117
+ updateMutation.isPending,
118
+ deleteMutation.isPending,
119
+ error,
120
+ refetch,
121
+ getKey,
122
+ createKey,
123
+ updateKey,
124
+ deleteKey,
125
+ clearError,
126
+ reset,
127
+ ]);
128
+ };
129
+ //# sourceMappingURL=useKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeys.js","sourceRoot":"","sources":["../../src/hooks/useKeys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { BaseResponse, GetApiKeyResponse, NetworkClient, Optional, Project, ProjectCreateRequest, ProjectQueryParams, ProjectUpdateRequest, RefreshApiKeyResponse } from '@sudobility/shaperouter_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface UseProjectsReturn {
4
+ projects: Project[];
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ refetch: () => void;
8
+ getProject: (projectId: string) => Promise<BaseResponse<Project>>;
9
+ createProject: (data: ProjectCreateRequest) => Promise<BaseResponse<Project>>;
10
+ updateProject: (projectId: string, data: ProjectUpdateRequest) => Promise<BaseResponse<Project>>;
11
+ deleteProject: (projectId: string) => Promise<BaseResponse<Project>>;
12
+ getProjectApiKey: (projectId: string) => Promise<BaseResponse<GetApiKeyResponse>>;
13
+ refreshProjectApiKey: (projectId: string) => Promise<BaseResponse<RefreshApiKeyResponse>>;
14
+ clearError: () => void;
15
+ reset: () => void;
16
+ }
17
+ export declare const useProjects: (networkClient: NetworkClient, baseUrl: string, entitySlug: string | null, token: FirebaseIdToken | null, options?: {
18
+ testMode?: boolean;
19
+ enabled?: boolean;
20
+ params?: ProjectQueryParams;
21
+ }) => UseProjectsReturn;
22
+ //# sourceMappingURL=useProjects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjects.d.ts","sourceRoot":"","sources":["../../src/hooks/useProjects.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAUhD,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGxB,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAElE,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9E,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,KACvB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAErE,gBAAgB,EAAE,CAChB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE9C,oBAAoB,EAAE,CACpB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAGlD,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAgCD,eAAO,MAAM,WAAW,GACtB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,YAAY,MAAM,GAAG,IAAI,EACzB,OAAO,eAAe,GAAG,IAAI,EAC7B,UAAU;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,KACA,iBAkNF,CAAC"}