@sudobility/shapeshyft_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 (49) hide show
  1. package/dist/hooks/index.d.ts +6 -0
  2. package/dist/hooks/index.d.ts.map +1 -0
  3. package/dist/hooks/index.js +6 -0
  4. package/dist/hooks/index.js.map +1 -0
  5. package/dist/hooks/useAiExecute.d.ts +12 -0
  6. package/dist/hooks/useAiExecute.d.ts.map +1 -0
  7. package/dist/hooks/useAiExecute.js +52 -0
  8. package/dist/hooks/useAiExecute.js.map +1 -0
  9. package/dist/hooks/useAnalytics.d.ts +13 -0
  10. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  11. package/dist/hooks/useAnalytics.js +46 -0
  12. package/dist/hooks/useAnalytics.js.map +1 -0
  13. package/dist/hooks/useEndpoints.d.ts +16 -0
  14. package/dist/hooks/useEndpoints.d.ts.map +1 -0
  15. package/dist/hooks/useEndpoints.js +157 -0
  16. package/dist/hooks/useEndpoints.js.map +1 -0
  17. package/dist/hooks/useKeys.d.ts +16 -0
  18. package/dist/hooks/useKeys.d.ts.map +1 -0
  19. package/dist/hooks/useKeys.js +154 -0
  20. package/dist/hooks/useKeys.js.map +1 -0
  21. package/dist/hooks/useProjects.d.ts +16 -0
  22. package/dist/hooks/useProjects.d.ts.map +1 -0
  23. package/dist/hooks/useProjects.js +157 -0
  24. package/dist/hooks/useProjects.js.map +1 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +5 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/network/ShapeshyftClient.d.ts +35 -0
  30. package/dist/network/ShapeshyftClient.d.ts.map +1 -0
  31. package/dist/network/ShapeshyftClient.js +166 -0
  32. package/dist/network/ShapeshyftClient.js.map +1 -0
  33. package/dist/network/index.d.ts +2 -0
  34. package/dist/network/index.d.ts.map +1 -0
  35. package/dist/network/index.js +2 -0
  36. package/dist/network/index.js.map +1 -0
  37. package/dist/types.d.ts +11 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +10 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/utils/index.d.ts +2 -0
  42. package/dist/utils/index.d.ts.map +1 -0
  43. package/dist/utils/index.js +2 -0
  44. package/dist/utils/index.js.map +1 -0
  45. package/dist/utils/shapeshyft-helpers.d.ts +7 -0
  46. package/dist/utils/shapeshyft-helpers.d.ts.map +1 -0
  47. package/dist/utils/shapeshyft-helpers.js +33 -0
  48. package/dist/utils/shapeshyft-helpers.js.map +1 -0
  49. package/package.json +60 -0
@@ -0,0 +1,6 @@
1
+ export { useKeys, type UseKeysReturn } from './useKeys';
2
+ export { useProjects, type UseProjectsReturn } from './useProjects';
3
+ export { useEndpoints, type UseEndpointsReturn } from './useEndpoints';
4
+ export { useAnalytics, type UseAnalyticsReturn } from './useAnalytics';
5
+ export { useAiExecute, type UseAiExecuteReturn, type AiResult, } from './useAiExecute';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { useKeys } from './useKeys';
2
+ export { useProjects } from './useProjects';
3
+ export { useEndpoints } from './useEndpoints';
4
+ export { useAnalytics } from './useAnalytics';
5
+ export { useAiExecute, } from './useAiExecute';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,WAAW,EAA0B,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,YAAY,GAGb,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AiExecutionResponse, AiPayloadResponse, BaseResponse, HttpMethod, NetworkClient, Optional } from '@sudobility/shapeshyft_types';
2
+ export type AiResult = AiExecutionResponse | AiPayloadResponse;
3
+ export interface UseAiExecuteReturn {
4
+ result: Optional<AiResult>;
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ execute: (projectName: string, endpointName: string, input: unknown, method?: HttpMethod) => Promise<BaseResponse<AiResult>>;
8
+ clearError: () => void;
9
+ reset: () => void;
10
+ }
11
+ export declare const useAiExecute: (networkClient: NetworkClient, baseUrl: string) => UseAiExecuteReturn;
12
+ //# sourceMappingURL=useAiExecute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAiExecute.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AAMtC,MAAM,MAAM,QAAQ,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAK/D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,CACP,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,UAAU,KAChB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,kBA0EF,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
+ export const useAiExecute = (networkClient, baseUrl) => {
4
+ const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
5
+ const [result, setResult] = useState(null);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const execute = useCallback(async (projectName, endpointName, input, method = 'POST') => {
9
+ setIsLoading(true);
10
+ setError(null);
11
+ try {
12
+ const response = await client.executeAi(projectName, endpointName, input, method);
13
+ if (response.success && response.data) {
14
+ setResult(response.data);
15
+ }
16
+ else {
17
+ setError(response.error || 'AI execution failed');
18
+ }
19
+ return response;
20
+ }
21
+ catch (err) {
22
+ const errorMessage = err instanceof Error ? err.message : 'AI execution failed';
23
+ setError(errorMessage);
24
+ console.error('[useAiExecute] execute error:', errorMessage, err);
25
+ return {
26
+ success: false,
27
+ error: errorMessage,
28
+ timestamp: new Date().toISOString(),
29
+ };
30
+ }
31
+ finally {
32
+ setIsLoading(false);
33
+ }
34
+ }, [client]);
35
+ const clearError = useCallback(() => {
36
+ setError(null);
37
+ }, []);
38
+ const reset = useCallback(() => {
39
+ setResult(null);
40
+ setError(null);
41
+ setIsLoading(false);
42
+ }, []);
43
+ return useMemo(() => ({
44
+ result,
45
+ isLoading,
46
+ error,
47
+ execute,
48
+ clearError,
49
+ reset,
50
+ }), [result, isLoading, error, execute, clearError, reset]);
51
+ };
52
+ //# sourceMappingURL=useAiExecute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAiExecute.js","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA8B/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,aAA4B,EAC5B,OAAe,EACK,EAAE;IACtB,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EACtD,CAAC,OAAO,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAK3D,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EACH,WAAmB,EACnB,YAAoB,EACpB,KAAc,EACd,SAAqB,MAAM,EACM,EAAE;QACnC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CACrC,WAAW,EACX,YAAY,EACZ,KAAK,EACL,MAAM,CACP,CAAC;YACF,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC7D,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;QACN,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,KAAK;KACN,CAAC,EACF,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CACvD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { NetworkClient, Optional, UsageAnalyticsQueryParams } from '@sudobility/shapeshyft_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ import { type AnalyticsData } from '../network/ShapeshyftClient';
4
+ export interface UseAnalyticsReturn {
5
+ analytics: Optional<AnalyticsData>;
6
+ isLoading: boolean;
7
+ error: Optional<string>;
8
+ refresh: (userId: string, token: FirebaseIdToken, params?: UsageAnalyticsQueryParams) => Promise<void>;
9
+ clearError: () => void;
10
+ reset: () => void;
11
+ }
12
+ export declare const useAnalytics: (networkClient: NetworkClient, baseUrl: string) => UseAnalyticsReturn;
13
+ //# sourceMappingURL=useAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,6BAA6B,CAAC;AAKrC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,yBAAyB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,kBA8DF,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { ShapeshyftClient, } from '../network/ShapeshyftClient';
3
+ export const useAnalytics = (networkClient, baseUrl) => {
4
+ const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
5
+ const [analytics, setAnalytics] = useState(null);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const refresh = useCallback(async (userId, token, params) => {
9
+ setIsLoading(true);
10
+ setError(null);
11
+ try {
12
+ const response = await client.getAnalytics(userId, token, params);
13
+ if (response.success && response.data) {
14
+ setAnalytics(response.data);
15
+ }
16
+ else {
17
+ setError(response.error || 'Failed to fetch analytics');
18
+ }
19
+ }
20
+ catch (err) {
21
+ const errorMessage = err instanceof Error ? err.message : 'Failed to fetch analytics';
22
+ setError(errorMessage);
23
+ console.error('[useAnalytics] refresh error:', errorMessage, err);
24
+ }
25
+ finally {
26
+ setIsLoading(false);
27
+ }
28
+ }, [client]);
29
+ const clearError = useCallback(() => {
30
+ setError(null);
31
+ }, []);
32
+ const reset = useCallback(() => {
33
+ setAnalytics(null);
34
+ setError(null);
35
+ setIsLoading(false);
36
+ }, []);
37
+ return useMemo(() => ({
38
+ analytics,
39
+ isLoading,
40
+ error,
41
+ refresh,
42
+ clearError,
43
+ reset,
44
+ }), [analytics, isLoading, error, refresh, clearError, reset]);
45
+ };
46
+ //# sourceMappingURL=useAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOvD,OAAO,EAEL,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAwBrC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,aAA4B,EAC5B,OAAe,EACK,EAAE;IACtB,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EACtD,CAAC,OAAO,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAK3D,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EACH,MAAc,EACd,KAAsB,EACtB,MAAkC,EACnB,EAAE;QACjB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACnE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,KAAK;KACN,CAAC,EACF,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAC1D,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BaseResponse, Endpoint, EndpointCreateRequest, EndpointQueryParams, EndpointUpdateRequest, NetworkClient, Optional } from '@sudobility/shapeshyft_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface UseEndpointsReturn {
4
+ endpoints: Endpoint[];
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ refresh: (userId: string, projectId: string, token: FirebaseIdToken, params?: EndpointQueryParams) => Promise<void>;
8
+ getEndpoint: (userId: string, projectId: string, endpointId: string, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
9
+ createEndpoint: (userId: string, projectId: string, data: EndpointCreateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
10
+ updateEndpoint: (userId: string, projectId: string, endpointId: string, data: EndpointUpdateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
11
+ deleteEndpoint: (userId: string, projectId: string, endpointId: string, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
12
+ clearError: () => void;
13
+ reset: () => void;
14
+ }
15
+ export declare const useEndpoints: (networkClient: NetworkClient, baseUrl: string) => UseEndpointsReturn;
16
+ //# sourceMappingURL=useEndpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEndpoints.d.ts","sourceRoot":"","sources":["../../src/hooks/useEndpoints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,mBAAmB,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,kBAwQF,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
+ export const useEndpoints = (networkClient, baseUrl) => {
4
+ const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
5
+ const [endpoints, setEndpoints] = useState([]);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const [lastParams, setLastParams] = useState(null);
9
+ const refresh = useCallback(async (userId, projectId, token, params) => {
10
+ setIsLoading(true);
11
+ setError(null);
12
+ setLastParams(params);
13
+ try {
14
+ const response = await client.getEndpoints(userId, projectId, token, params);
15
+ if (response.success && response.data) {
16
+ setEndpoints(response.data);
17
+ }
18
+ else {
19
+ setError(response.error || 'Failed to fetch endpoints');
20
+ }
21
+ }
22
+ catch (err) {
23
+ const errorMessage = err instanceof Error ? err.message : 'Failed to fetch endpoints';
24
+ setError(errorMessage);
25
+ console.error('[useEndpoints] refresh error:', errorMessage, err);
26
+ }
27
+ finally {
28
+ setIsLoading(false);
29
+ }
30
+ }, [client]);
31
+ const getEndpoint = useCallback(async (userId, projectId, endpointId, token) => {
32
+ setIsLoading(true);
33
+ setError(null);
34
+ try {
35
+ const response = await client.getEndpoint(userId, projectId, endpointId, token);
36
+ return response;
37
+ }
38
+ catch (err) {
39
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get endpoint';
40
+ setError(errorMessage);
41
+ console.error('[useEndpoints] getEndpoint error:', errorMessage, err);
42
+ return {
43
+ success: false,
44
+ error: errorMessage,
45
+ timestamp: new Date().toISOString(),
46
+ };
47
+ }
48
+ finally {
49
+ setIsLoading(false);
50
+ }
51
+ }, [client]);
52
+ const createEndpoint = useCallback(async (userId, projectId, data, token) => {
53
+ setIsLoading(true);
54
+ setError(null);
55
+ try {
56
+ const response = await client.createEndpoint(userId, projectId, data, token);
57
+ if (response.success) {
58
+ await refresh(userId, projectId, token, lastParams ?? undefined);
59
+ }
60
+ return response;
61
+ }
62
+ catch (err) {
63
+ const errorMessage = err instanceof Error ? err.message : 'Failed to create endpoint';
64
+ setError(errorMessage);
65
+ console.error('[useEndpoints] createEndpoint error:', errorMessage, err);
66
+ return {
67
+ success: false,
68
+ error: errorMessage,
69
+ timestamp: new Date().toISOString(),
70
+ };
71
+ }
72
+ finally {
73
+ setIsLoading(false);
74
+ }
75
+ }, [client, refresh, lastParams]);
76
+ const updateEndpoint = useCallback(async (userId, projectId, endpointId, data, token) => {
77
+ setIsLoading(true);
78
+ setError(null);
79
+ try {
80
+ const response = await client.updateEndpoint(userId, projectId, endpointId, data, token);
81
+ if (response.success) {
82
+ await refresh(userId, projectId, token, lastParams ?? undefined);
83
+ }
84
+ return response;
85
+ }
86
+ catch (err) {
87
+ const errorMessage = err instanceof Error ? err.message : 'Failed to update endpoint';
88
+ setError(errorMessage);
89
+ console.error('[useEndpoints] updateEndpoint error:', errorMessage, err);
90
+ return {
91
+ success: false,
92
+ error: errorMessage,
93
+ timestamp: new Date().toISOString(),
94
+ };
95
+ }
96
+ finally {
97
+ setIsLoading(false);
98
+ }
99
+ }, [client, refresh, lastParams]);
100
+ const deleteEndpoint = useCallback(async (userId, projectId, endpointId, token) => {
101
+ setIsLoading(true);
102
+ setError(null);
103
+ try {
104
+ const response = await client.deleteEndpoint(userId, projectId, endpointId, token);
105
+ if (response.success) {
106
+ await refresh(userId, projectId, token, lastParams ?? undefined);
107
+ }
108
+ return response;
109
+ }
110
+ catch (err) {
111
+ const errorMessage = err instanceof Error ? err.message : 'Failed to delete endpoint';
112
+ setError(errorMessage);
113
+ console.error('[useEndpoints] deleteEndpoint error:', errorMessage, err);
114
+ return {
115
+ success: false,
116
+ error: errorMessage,
117
+ timestamp: new Date().toISOString(),
118
+ };
119
+ }
120
+ finally {
121
+ setIsLoading(false);
122
+ }
123
+ }, [client, refresh, lastParams]);
124
+ const clearError = useCallback(() => {
125
+ setError(null);
126
+ }, []);
127
+ const reset = useCallback(() => {
128
+ setEndpoints([]);
129
+ setError(null);
130
+ setIsLoading(false);
131
+ setLastParams(null);
132
+ }, []);
133
+ return useMemo(() => ({
134
+ endpoints,
135
+ isLoading,
136
+ error,
137
+ refresh,
138
+ getEndpoint,
139
+ createEndpoint,
140
+ updateEndpoint,
141
+ deleteEndpoint,
142
+ clearError,
143
+ reset,
144
+ }), [
145
+ endpoints,
146
+ isLoading,
147
+ error,
148
+ refresh,
149
+ getEndpoint,
150
+ createEndpoint,
151
+ updateEndpoint,
152
+ deleteEndpoint,
153
+ clearError,
154
+ reset,
155
+ ]);
156
+ };
157
+ //# sourceMappingURL=useEndpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEndpoints.js","sourceRoot":"","sources":["../../src/hooks/useEndpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BaseResponse, LlmApiKeyCreateRequest, LlmApiKeySafe, LlmApiKeyUpdateRequest, NetworkClient, Optional } from '@sudobility/shapeshyft_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface UseKeysReturn {
4
+ keys: LlmApiKeySafe[];
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ refresh: (userId: string, token: FirebaseIdToken) => Promise<void>;
8
+ getKey: (userId: string, keyId: string, token: FirebaseIdToken) => Promise<BaseResponse<LlmApiKeySafe>>;
9
+ createKey: (userId: string, data: LlmApiKeyCreateRequest, token: FirebaseIdToken) => Promise<BaseResponse<LlmApiKeySafe>>;
10
+ updateKey: (userId: string, keyId: string, data: LlmApiKeyUpdateRequest, token: FirebaseIdToken) => Promise<BaseResponse<LlmApiKeySafe>>;
11
+ deleteKey: (userId: string, keyId: string, token: FirebaseIdToken) => Promise<BaseResponse<LlmApiKeySafe>>;
12
+ clearError: () => void;
13
+ reset: () => void;
14
+ }
15
+ export declare const useKeys: (networkClient: NetworkClient, baseUrl: string) => UseKeysReturn;
16
+ //# sourceMappingURL=useKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeys.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeys.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,EAAE,CACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,CACT,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,CACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1C,SAAS,EAAE,CACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAE1C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,OAAO,GAClB,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,aAsNF,CAAC"}
@@ -0,0 +1,154 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
+ export const useKeys = (networkClient, baseUrl) => {
4
+ const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
5
+ const [keys, setKeys] = useState([]);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const refresh = useCallback(async (userId, token) => {
9
+ setIsLoading(true);
10
+ setError(null);
11
+ try {
12
+ const response = await client.getKeys(userId, token);
13
+ if (response.success && response.data) {
14
+ setKeys(response.data);
15
+ }
16
+ else {
17
+ setError(response.error || 'Failed to fetch keys');
18
+ }
19
+ }
20
+ catch (err) {
21
+ const errorMessage = err instanceof Error ? err.message : 'Failed to fetch keys';
22
+ setError(errorMessage);
23
+ console.error('[useKeys] refresh error:', errorMessage, err);
24
+ }
25
+ finally {
26
+ setIsLoading(false);
27
+ }
28
+ }, [client]);
29
+ const getKey = useCallback(async (userId, keyId, token) => {
30
+ setIsLoading(true);
31
+ setError(null);
32
+ try {
33
+ const response = await client.getKey(userId, keyId, token);
34
+ return response;
35
+ }
36
+ catch (err) {
37
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get key';
38
+ setError(errorMessage);
39
+ console.error('[useKeys] getKey error:', errorMessage, err);
40
+ return {
41
+ success: false,
42
+ error: errorMessage,
43
+ timestamp: new Date().toISOString(),
44
+ };
45
+ }
46
+ finally {
47
+ setIsLoading(false);
48
+ }
49
+ }, [client]);
50
+ const createKey = useCallback(async (userId, data, token) => {
51
+ setIsLoading(true);
52
+ setError(null);
53
+ try {
54
+ const response = await client.createKey(userId, data, token);
55
+ if (response.success) {
56
+ await refresh(userId, token);
57
+ }
58
+ return response;
59
+ }
60
+ catch (err) {
61
+ const errorMessage = err instanceof Error ? err.message : 'Failed to create key';
62
+ setError(errorMessage);
63
+ console.error('[useKeys] createKey error:', errorMessage, err);
64
+ return {
65
+ success: false,
66
+ error: errorMessage,
67
+ timestamp: new Date().toISOString(),
68
+ };
69
+ }
70
+ finally {
71
+ setIsLoading(false);
72
+ }
73
+ }, [client, refresh]);
74
+ const updateKey = useCallback(async (userId, keyId, data, token) => {
75
+ setIsLoading(true);
76
+ setError(null);
77
+ try {
78
+ const response = await client.updateKey(userId, keyId, data, token);
79
+ if (response.success) {
80
+ await refresh(userId, token);
81
+ }
82
+ return response;
83
+ }
84
+ catch (err) {
85
+ const errorMessage = err instanceof Error ? err.message : 'Failed to update key';
86
+ setError(errorMessage);
87
+ console.error('[useKeys] updateKey error:', errorMessage, err);
88
+ return {
89
+ success: false,
90
+ error: errorMessage,
91
+ timestamp: new Date().toISOString(),
92
+ };
93
+ }
94
+ finally {
95
+ setIsLoading(false);
96
+ }
97
+ }, [client, refresh]);
98
+ const deleteKey = useCallback(async (userId, keyId, token) => {
99
+ setIsLoading(true);
100
+ setError(null);
101
+ try {
102
+ const response = await client.deleteKey(userId, keyId, token);
103
+ if (response.success) {
104
+ await refresh(userId, token);
105
+ }
106
+ return response;
107
+ }
108
+ catch (err) {
109
+ const errorMessage = err instanceof Error ? err.message : 'Failed to delete key';
110
+ setError(errorMessage);
111
+ console.error('[useKeys] deleteKey error:', errorMessage, err);
112
+ return {
113
+ success: false,
114
+ error: errorMessage,
115
+ timestamp: new Date().toISOString(),
116
+ };
117
+ }
118
+ finally {
119
+ setIsLoading(false);
120
+ }
121
+ }, [client, refresh]);
122
+ const clearError = useCallback(() => {
123
+ setError(null);
124
+ }, []);
125
+ const reset = useCallback(() => {
126
+ setKeys([]);
127
+ setError(null);
128
+ setIsLoading(false);
129
+ }, []);
130
+ return useMemo(() => ({
131
+ keys,
132
+ isLoading,
133
+ error,
134
+ refresh,
135
+ getKey,
136
+ createKey,
137
+ updateKey,
138
+ deleteKey,
139
+ clearError,
140
+ reset,
141
+ }), [
142
+ keys,
143
+ isLoading,
144
+ error,
145
+ refresh,
146
+ getKey,
147
+ createKey,
148
+ updateKey,
149
+ deleteKey,
150
+ clearError,
151
+ reset,
152
+ ]);
153
+ };
154
+ //# 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,16 @@
1
+ import type { BaseResponse, NetworkClient, Optional, Project, ProjectCreateRequest, ProjectQueryParams, ProjectUpdateRequest } from '@sudobility/shapeshyft_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface UseProjectsReturn {
4
+ projects: Project[];
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ refresh: (userId: string, token: FirebaseIdToken, params?: ProjectQueryParams) => Promise<void>;
8
+ getProject: (userId: string, projectId: string, token: FirebaseIdToken) => Promise<BaseResponse<Project>>;
9
+ createProject: (userId: string, data: ProjectCreateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Project>>;
10
+ updateProject: (userId: string, projectId: string, data: ProjectUpdateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Project>>;
11
+ deleteProject: (userId: string, projectId: string, token: FirebaseIdToken) => Promise<BaseResponse<Project>>;
12
+ clearError: () => void;
13
+ reset: () => void;
14
+ }
15
+ export declare const useProjects: (networkClient: NetworkClient, baseUrl: string) => UseProjectsReturn;
16
+ //# sourceMappingURL=useProjects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjects.d.ts","sourceRoot":"","sources":["../../src/hooks/useProjects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,EAAE,CACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,aAAa,EAAE,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,aAAa,EAAE,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,aAAa,EAAE,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,WAAW,GACtB,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAkOF,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
+ export const useProjects = (networkClient, baseUrl) => {
4
+ const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
5
+ const [projects, setProjects] = useState([]);
6
+ const [isLoading, setIsLoading] = useState(false);
7
+ const [error, setError] = useState(null);
8
+ const [lastParams, setLastParams] = useState(null);
9
+ const refresh = useCallback(async (userId, token, params) => {
10
+ setIsLoading(true);
11
+ setError(null);
12
+ setLastParams(params);
13
+ try {
14
+ const response = await client.getProjects(userId, token, params);
15
+ if (response.success && response.data) {
16
+ setProjects(response.data);
17
+ }
18
+ else {
19
+ setError(response.error || 'Failed to fetch projects');
20
+ }
21
+ }
22
+ catch (err) {
23
+ const errorMessage = err instanceof Error ? err.message : 'Failed to fetch projects';
24
+ setError(errorMessage);
25
+ console.error('[useProjects] refresh error:', errorMessage, err);
26
+ }
27
+ finally {
28
+ setIsLoading(false);
29
+ }
30
+ }, [client]);
31
+ const getProject = useCallback(async (userId, projectId, token) => {
32
+ setIsLoading(true);
33
+ setError(null);
34
+ try {
35
+ const response = await client.getProject(userId, projectId, token);
36
+ return response;
37
+ }
38
+ catch (err) {
39
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get project';
40
+ setError(errorMessage);
41
+ console.error('[useProjects] getProject error:', errorMessage, err);
42
+ return {
43
+ success: false,
44
+ error: errorMessage,
45
+ timestamp: new Date().toISOString(),
46
+ };
47
+ }
48
+ finally {
49
+ setIsLoading(false);
50
+ }
51
+ }, [client]);
52
+ const createProject = useCallback(async (userId, data, token) => {
53
+ setIsLoading(true);
54
+ setError(null);
55
+ try {
56
+ const response = await client.createProject(userId, data, token);
57
+ if (response.success) {
58
+ await refresh(userId, token, lastParams ?? undefined);
59
+ }
60
+ return response;
61
+ }
62
+ catch (err) {
63
+ const errorMessage = err instanceof Error ? err.message : 'Failed to create project';
64
+ setError(errorMessage);
65
+ console.error('[useProjects] createProject error:', errorMessage, err);
66
+ return {
67
+ success: false,
68
+ error: errorMessage,
69
+ timestamp: new Date().toISOString(),
70
+ };
71
+ }
72
+ finally {
73
+ setIsLoading(false);
74
+ }
75
+ }, [client, refresh, lastParams]);
76
+ const updateProject = useCallback(async (userId, projectId, data, token) => {
77
+ setIsLoading(true);
78
+ setError(null);
79
+ try {
80
+ const response = await client.updateProject(userId, projectId, data, token);
81
+ if (response.success) {
82
+ await refresh(userId, token, lastParams ?? undefined);
83
+ }
84
+ return response;
85
+ }
86
+ catch (err) {
87
+ const errorMessage = err instanceof Error ? err.message : 'Failed to update project';
88
+ setError(errorMessage);
89
+ console.error('[useProjects] updateProject error:', errorMessage, err);
90
+ return {
91
+ success: false,
92
+ error: errorMessage,
93
+ timestamp: new Date().toISOString(),
94
+ };
95
+ }
96
+ finally {
97
+ setIsLoading(false);
98
+ }
99
+ }, [client, refresh, lastParams]);
100
+ const deleteProject = useCallback(async (userId, projectId, token) => {
101
+ setIsLoading(true);
102
+ setError(null);
103
+ try {
104
+ const response = await client.deleteProject(userId, projectId, token);
105
+ if (response.success) {
106
+ await refresh(userId, token, lastParams ?? undefined);
107
+ }
108
+ return response;
109
+ }
110
+ catch (err) {
111
+ const errorMessage = err instanceof Error ? err.message : 'Failed to delete project';
112
+ setError(errorMessage);
113
+ console.error('[useProjects] deleteProject error:', errorMessage, err);
114
+ return {
115
+ success: false,
116
+ error: errorMessage,
117
+ timestamp: new Date().toISOString(),
118
+ };
119
+ }
120
+ finally {
121
+ setIsLoading(false);
122
+ }
123
+ }, [client, refresh, lastParams]);
124
+ const clearError = useCallback(() => {
125
+ setError(null);
126
+ }, []);
127
+ const reset = useCallback(() => {
128
+ setProjects([]);
129
+ setError(null);
130
+ setIsLoading(false);
131
+ setLastParams(null);
132
+ }, []);
133
+ return useMemo(() => ({
134
+ projects,
135
+ isLoading,
136
+ error,
137
+ refresh,
138
+ getProject,
139
+ createProject,
140
+ updateProject,
141
+ deleteProject,
142
+ clearError,
143
+ reset,
144
+ }), [
145
+ projects,
146
+ isLoading,
147
+ error,
148
+ refresh,
149
+ getProject,
150
+ createProject,
151
+ updateProject,
152
+ deleteProject,
153
+ clearError,
154
+ reset,
155
+ ]);
156
+ };
157
+ //# sourceMappingURL=useProjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjects.js","sourceRoot":"","sources":["../../src/hooks/useProjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA6C/D,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,aAA4B,EAC5B,OAAe,EACI,EAAE;IACrB,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EACtD,CAAC,OAAO,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAY,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAG3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAC/B,QAAQ,CAA+B,IAAI,CAAC,CAAC;IAK/C,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EACH,MAAc,EACd,KAAsB,EACtB,MAA2B,EACZ,EAAE;QACjB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACjE,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,0BAA0B,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAClE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAKF,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EACH,MAAc,EACd,SAAiB,EACjB,KAAsB,EACU,EAAE;QAClC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC/D,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAKF,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EACH,MAAc,EACd,IAA0B,EAC1B,KAAsB,EACU,EAAE;QAClC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAClE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAC9B,CAAC;IAKF,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EACH,MAAc,EACd,SAAiB,EACjB,IAA0B,EAC1B,KAAsB,EACU,EAAE;QAClC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CACzC,MAAM,EACN,SAAS,EACT,IAAI,EACJ,KAAK,CACN,CAAC;YACF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAClE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAC9B,CAAC;IAKF,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EACH,MAAc,EACd,SAAiB,EACjB,KAAsB,EACU,EAAE;QAClC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACtE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAClE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAC9B,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,aAAa;QACb,aAAa;QACb,aAAa;QACb,UAAU;QACV,KAAK;KACN,CAAC,EACF;QACE,QAAQ;QACR,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,aAAa;QACb,aAAa;QACb,aAAa;QACb,UAAU;QACV,KAAK;KACN,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './network';
2
+ export * from './hooks';
3
+ export * from './utils';
4
+ export type { FirebaseIdToken } from './types';
5
+ export { QUERY_KEYS } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './network';
2
+ export * from './hooks';
3
+ export * from './utils';
4
+ export { QUERY_KEYS } from './types';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAIxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { AiExecutionResponse, AiPayloadResponse, BaseResponse, Endpoint, EndpointCreateRequest, EndpointQueryParams, EndpointUpdateRequest, LlmApiKeyCreateRequest, LlmApiKeySafe, LlmApiKeyUpdateRequest, NetworkClient, Project, ProjectCreateRequest, ProjectQueryParams, ProjectUpdateRequest, UsageAggregate, UsageAnalyticsQueryParams, UsageByDate, UsageByEndpoint } from '@sudobility/shapeshyft_types';
2
+ import type { FirebaseIdToken } from '../types';
3
+ export interface AnalyticsData {
4
+ aggregate: UsageAggregate;
5
+ by_endpoint: UsageByEndpoint[];
6
+ by_date: UsageByDate[];
7
+ }
8
+ export declare class ShapeshyftClient {
9
+ private readonly baseUrl;
10
+ private readonly networkClient;
11
+ constructor(config: {
12
+ baseUrl: string;
13
+ networkClient: NetworkClient;
14
+ });
15
+ getKeys(userId: string, token: FirebaseIdToken): Promise<BaseResponse<LlmApiKeySafe[]>>;
16
+ getKey(userId: string, keyId: string, token: FirebaseIdToken): Promise<BaseResponse<LlmApiKeySafe>>;
17
+ createKey(userId: string, data: LlmApiKeyCreateRequest, token: FirebaseIdToken): Promise<BaseResponse<LlmApiKeySafe>>;
18
+ updateKey(userId: string, keyId: string, data: LlmApiKeyUpdateRequest, token: FirebaseIdToken): Promise<BaseResponse<LlmApiKeySafe>>;
19
+ deleteKey(userId: string, keyId: string, token: FirebaseIdToken): Promise<BaseResponse<LlmApiKeySafe>>;
20
+ getProjects(userId: string, token: FirebaseIdToken, params?: ProjectQueryParams): Promise<BaseResponse<Project[]>>;
21
+ getProject(userId: string, projectId: string, token: FirebaseIdToken): Promise<BaseResponse<Project>>;
22
+ createProject(userId: string, data: ProjectCreateRequest, token: FirebaseIdToken): Promise<BaseResponse<Project>>;
23
+ updateProject(userId: string, projectId: string, data: ProjectUpdateRequest, token: FirebaseIdToken): Promise<BaseResponse<Project>>;
24
+ deleteProject(userId: string, projectId: string, token: FirebaseIdToken): Promise<BaseResponse<Project>>;
25
+ getEndpoints(userId: string, projectId: string, token: FirebaseIdToken, params?: EndpointQueryParams): Promise<BaseResponse<Endpoint[]>>;
26
+ getEndpoint(userId: string, projectId: string, endpointId: string, token: FirebaseIdToken): Promise<BaseResponse<Endpoint>>;
27
+ createEndpoint(userId: string, projectId: string, data: EndpointCreateRequest, token: FirebaseIdToken): Promise<BaseResponse<Endpoint>>;
28
+ updateEndpoint(userId: string, projectId: string, endpointId: string, data: EndpointUpdateRequest, token: FirebaseIdToken): Promise<BaseResponse<Endpoint>>;
29
+ deleteEndpoint(userId: string, projectId: string, endpointId: string, token: FirebaseIdToken): Promise<BaseResponse<Endpoint>>;
30
+ getAnalytics(userId: string, token: FirebaseIdToken, params?: UsageAnalyticsQueryParams): Promise<BaseResponse<AnalyticsData>>;
31
+ executeAiGet(projectName: string, endpointName: string, input: unknown): Promise<BaseResponse<AiExecutionResponse | AiPayloadResponse>>;
32
+ executeAiPost(projectName: string, endpointName: string, input: unknown): Promise<BaseResponse<AiExecutionResponse | AiPayloadResponse>>;
33
+ executeAi(projectName: string, endpointName: string, input: unknown, method?: 'GET' | 'POST'): Promise<BaseResponse<AiExecutionResponse | AiPayloadResponse>>;
34
+ }
35
+ //# sourceMappingURL=ShapeshyftClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShapeshyftClient.d.ts","sourceRoot":"","sources":["../../src/network/ShapeshyftClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import { buildQueryString, buildUrl, createAuthHeaders, createHeaders, handleApiError, } from '../utils/shapeshyft-helpers';
2
+ export class ShapeshyftClient {
3
+ constructor(config) {
4
+ this.baseUrl = config.baseUrl;
5
+ this.networkClient = config.networkClient;
6
+ }
7
+ async getKeys(userId, token) {
8
+ const headers = createAuthHeaders(token);
9
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/keys`), {
10
+ headers,
11
+ });
12
+ if (!response.ok || !response.data) {
13
+ throw handleApiError(response, 'get keys');
14
+ }
15
+ return response.data;
16
+ }
17
+ async getKey(userId, keyId, token) {
18
+ const headers = createAuthHeaders(token);
19
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/keys/${encodeURIComponent(keyId)}`), { headers });
20
+ if (!response.ok || !response.data) {
21
+ throw handleApiError(response, 'get key');
22
+ }
23
+ return response.data;
24
+ }
25
+ async createKey(userId, data, token) {
26
+ const headers = createAuthHeaders(token);
27
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/keys`), data, { headers });
28
+ if (!response.ok || !response.data) {
29
+ throw handleApiError(response, 'create key');
30
+ }
31
+ return response.data;
32
+ }
33
+ async updateKey(userId, keyId, data, token) {
34
+ const headers = createAuthHeaders(token);
35
+ const response = await this.networkClient.put(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/keys/${encodeURIComponent(keyId)}`), data, { headers });
36
+ if (!response.ok || !response.data) {
37
+ throw handleApiError(response, 'update key');
38
+ }
39
+ return response.data;
40
+ }
41
+ async deleteKey(userId, keyId, token) {
42
+ const headers = createAuthHeaders(token);
43
+ const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/keys/${encodeURIComponent(keyId)}`), { headers });
44
+ if (!response.ok || !response.data) {
45
+ throw handleApiError(response, 'delete key');
46
+ }
47
+ return response.data;
48
+ }
49
+ async getProjects(userId, token, params) {
50
+ const headers = createAuthHeaders(token);
51
+ const queryString = params ? buildQueryString(params) : '';
52
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects${queryString}`), { headers });
53
+ if (!response.ok || !response.data) {
54
+ throw handleApiError(response, 'get projects');
55
+ }
56
+ return response.data;
57
+ }
58
+ async getProject(userId, projectId, token) {
59
+ const headers = createAuthHeaders(token);
60
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}`), { headers });
61
+ if (!response.ok || !response.data) {
62
+ throw handleApiError(response, 'get project');
63
+ }
64
+ return response.data;
65
+ }
66
+ async createProject(userId, data, token) {
67
+ const headers = createAuthHeaders(token);
68
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects`), data, { headers });
69
+ if (!response.ok || !response.data) {
70
+ throw handleApiError(response, 'create project');
71
+ }
72
+ return response.data;
73
+ }
74
+ async updateProject(userId, projectId, data, token) {
75
+ const headers = createAuthHeaders(token);
76
+ const response = await this.networkClient.put(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}`), data, { headers });
77
+ if (!response.ok || !response.data) {
78
+ throw handleApiError(response, 'update project');
79
+ }
80
+ return response.data;
81
+ }
82
+ async deleteProject(userId, projectId, token) {
83
+ const headers = createAuthHeaders(token);
84
+ const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}`), { headers });
85
+ if (!response.ok || !response.data) {
86
+ throw handleApiError(response, 'delete project');
87
+ }
88
+ return response.data;
89
+ }
90
+ async getEndpoints(userId, projectId, token, params) {
91
+ const headers = createAuthHeaders(token);
92
+ const queryString = params ? buildQueryString(params) : '';
93
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}/endpoints${queryString}`), { headers });
94
+ if (!response.ok || !response.data) {
95
+ throw handleApiError(response, 'get endpoints');
96
+ }
97
+ return response.data;
98
+ }
99
+ async getEndpoint(userId, projectId, endpointId, token) {
100
+ const headers = createAuthHeaders(token);
101
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}/endpoints/${encodeURIComponent(endpointId)}`), { headers });
102
+ if (!response.ok || !response.data) {
103
+ throw handleApiError(response, 'get endpoint');
104
+ }
105
+ return response.data;
106
+ }
107
+ async createEndpoint(userId, projectId, data, token) {
108
+ const headers = createAuthHeaders(token);
109
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}/endpoints`), data, { headers });
110
+ if (!response.ok || !response.data) {
111
+ throw handleApiError(response, 'create endpoint');
112
+ }
113
+ return response.data;
114
+ }
115
+ async updateEndpoint(userId, projectId, endpointId, data, token) {
116
+ const headers = createAuthHeaders(token);
117
+ const response = await this.networkClient.put(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}/endpoints/${encodeURIComponent(endpointId)}`), data, { headers });
118
+ if (!response.ok || !response.data) {
119
+ throw handleApiError(response, 'update endpoint');
120
+ }
121
+ return response.data;
122
+ }
123
+ async deleteEndpoint(userId, projectId, endpointId, token) {
124
+ const headers = createAuthHeaders(token);
125
+ const response = await this.networkClient.delete(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/projects/${encodeURIComponent(projectId)}/endpoints/${encodeURIComponent(endpointId)}`), { headers });
126
+ if (!response.ok || !response.data) {
127
+ throw handleApiError(response, 'delete endpoint');
128
+ }
129
+ return response.data;
130
+ }
131
+ async getAnalytics(userId, token, params) {
132
+ const headers = createAuthHeaders(token);
133
+ const queryString = params ? buildQueryString(params) : '';
134
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/users/${encodeURIComponent(userId)}/analytics${queryString}`), { headers });
135
+ if (!response.ok || !response.data) {
136
+ throw handleApiError(response, 'get analytics');
137
+ }
138
+ return response.data;
139
+ }
140
+ async executeAiGet(projectName, endpointName, input) {
141
+ const headers = createHeaders();
142
+ const queryString = input
143
+ ? buildQueryString({ input: JSON.stringify(input) })
144
+ : '';
145
+ const response = await this.networkClient.get(buildUrl(this.baseUrl, `/api/v1/ai/${encodeURIComponent(projectName)}/${encodeURIComponent(endpointName)}${queryString}`), { headers });
146
+ if (!response.ok || !response.data) {
147
+ throw handleApiError(response, 'execute AI (GET)');
148
+ }
149
+ return response.data;
150
+ }
151
+ async executeAiPost(projectName, endpointName, input) {
152
+ const headers = createHeaders();
153
+ const response = await this.networkClient.post(buildUrl(this.baseUrl, `/api/v1/ai/${encodeURIComponent(projectName)}/${encodeURIComponent(endpointName)}`), { input }, { headers });
154
+ if (!response.ok || !response.data) {
155
+ throw handleApiError(response, 'execute AI (POST)');
156
+ }
157
+ return response.data;
158
+ }
159
+ async executeAi(projectName, endpointName, input, method = 'POST') {
160
+ if (method === 'GET') {
161
+ return this.executeAiGet(projectName, endpointName, input);
162
+ }
163
+ return this.executeAiPost(projectName, endpointName, input);
164
+ }
165
+ }
166
+ //# sourceMappingURL=ShapeshyftClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShapeshyftClient.js","sourceRoot":"","sources":["../../src/network/ShapeshyftClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ShapeshyftClient, type AnalyticsData } from './ShapeshyftClient';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ShapeshyftClient } from './ShapeshyftClient';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type FirebaseIdToken = string;
2
+ export declare const QUERY_KEYS: {
3
+ readonly keys: (userId: string) => readonly ["shapeshyft", "keys", string];
4
+ readonly key: (userId: string, keyId: string) => readonly ["shapeshyft", "keys", string, string];
5
+ readonly projects: (userId: string) => readonly ["shapeshyft", "projects", string];
6
+ readonly project: (userId: string, projectId: string) => readonly ["shapeshyft", "projects", string, string];
7
+ readonly endpoints: (userId: string, projectId: string) => readonly ["shapeshyft", "endpoints", string, string];
8
+ readonly endpoint: (userId: string, projectId: string, endpointId: string) => readonly ["shapeshyft", "endpoints", string, string, string];
9
+ readonly analytics: (userId: string) => readonly ["shapeshyft", "analytics", string];
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAKrC,eAAO,MAAM,UAAU;4BACN,MAAM;2BACP,MAAM,SAAS,MAAM;gCAEhB,MAAM;+BACP,MAAM,aAAa,MAAM;iCAEvB,MAAM,aAAa,MAAM;gCAE1B,MAAM,aAAa,MAAM,cAAc,MAAM;iCAE5C,MAAM;CAClB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ export const QUERY_KEYS = {
2
+ keys: (userId) => ['shapeshyft', 'keys', userId],
3
+ key: (userId, keyId) => ['shapeshyft', 'keys', userId, keyId],
4
+ projects: (userId) => ['shapeshyft', 'projects', userId],
5
+ project: (userId, projectId) => ['shapeshyft', 'projects', userId, projectId],
6
+ endpoints: (userId, projectId) => ['shapeshyft', 'endpoints', userId, projectId],
7
+ endpoint: (userId, projectId, endpointId) => ['shapeshyft', 'endpoints', userId, projectId, endpointId],
8
+ analytics: (userId) => ['shapeshyft', 'analytics', userId],
9
+ };
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAU;IACjE,GAAG,EAAE,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CACrC,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU;IAChD,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAU;IACzE,OAAO,EAAE,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAE,CAC7C,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAU;IACxD,SAAS,EAAE,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAE,CAC/C,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAU;IACzD,QAAQ,EAAE,CAAC,MAAc,EAAE,SAAiB,EAAE,UAAkB,EAAE,EAAE,CAClE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAU;IACrE,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAU;CACnE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createAuthHeaders, createHeaders, buildUrl, handleApiError, buildQueryString, } from './shapeshyft-helpers';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createAuthHeaders, createHeaders, buildUrl, handleApiError, buildQueryString, } from './shapeshyft-helpers';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { FirebaseIdToken } from '../types';
2
+ export declare function createAuthHeaders(token: FirebaseIdToken): Record<string, string>;
3
+ export declare function createHeaders(): Record<string, string>;
4
+ export declare function buildUrl(baseUrl: string, path: string): string;
5
+ export declare function handleApiError(response: unknown, operation: string): Error;
6
+ export declare function buildQueryString(params: object): string;
7
+ //# sourceMappingURL=shapeshyft-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeshyft-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/shapeshyft-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAKD,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKtD;AAKD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9D;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAK1E;AAKD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWvD"}
@@ -0,0 +1,33 @@
1
+ export function createAuthHeaders(token) {
2
+ return {
3
+ 'Content-Type': 'application/json',
4
+ Accept: 'application/json',
5
+ Authorization: `Bearer ${token}`,
6
+ };
7
+ }
8
+ export function createHeaders() {
9
+ return {
10
+ 'Content-Type': 'application/json',
11
+ Accept: 'application/json',
12
+ };
13
+ }
14
+ export function buildUrl(baseUrl, path) {
15
+ const cleanBase = baseUrl.replace(/\/$/, '');
16
+ return `${cleanBase}${path}`;
17
+ }
18
+ export function handleApiError(response, operation) {
19
+ const resp = response;
20
+ const errorMessage = resp?.data?.error || resp?.data?.message || 'Unknown error';
21
+ return new Error(`Failed to ${operation}: ${errorMessage}`);
22
+ }
23
+ export function buildQueryString(params) {
24
+ const queryParams = new URLSearchParams();
25
+ for (const [key, value] of Object.entries(params)) {
26
+ if (value !== undefined && value !== null) {
27
+ queryParams.append(key, String(value));
28
+ }
29
+ }
30
+ const queryString = queryParams.toString();
31
+ return queryString ? `?${queryString}` : '';
32
+ }
33
+ //# sourceMappingURL=shapeshyft-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeshyft-helpers.js","sourceRoot":"","sources":["../../src/utils/shapeshyft-helpers.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,iBAAiB,CAC/B,KAAsB;IAEtB,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,UAAU,KAAK,EAAE;KACjC,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAY;IAEpD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;AAC/B,CAAC;AAKD,MAAM,UAAU,cAAc,CAAC,QAAiB,EAAE,SAAiB;IACjE,MAAM,IAAI,GAAG,QAA2D,CAAC;IACzE,MAAM,YAAY,GAChB,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC;IAC9D,OAAO,IAAI,KAAK,CAAC,aAAa,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;AAC9D,CAAC;AAKD,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC3C,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@sudobility/shapeshyft_client",
3
+ "version": "0.0.1",
4
+ "description": "React client library for ShapeShyft API with TanStack Query hooks",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "publishConfig": {
9
+ "access": "restricted"
10
+ },
11
+ "files": [
12
+ "dist/**/*"
13
+ ],
14
+ "scripts": {
15
+ "build": "bunx tsc -p tsconfig.build.json",
16
+ "build:watch": "bunx tsc --watch",
17
+ "clean": "rm -rf dist",
18
+ "prepublishOnly": "bun run clean && bun run build",
19
+ "test": "bunx vitest",
20
+ "test:run": "bunx vitest run",
21
+ "lint": "bunx eslint src --ext .ts,.tsx",
22
+ "lint:fix": "bunx eslint src --ext .ts,.tsx --fix",
23
+ "format": "bunx prettier --write src/**/*.ts",
24
+ "format:check": "bunx prettier --check src/**/*.ts",
25
+ "typecheck": "bunx tsc --noEmit"
26
+ },
27
+ "keywords": [
28
+ "shapeshyft",
29
+ "llm",
30
+ "api-client",
31
+ "react",
32
+ "tanstack-query",
33
+ "typescript"
34
+ ],
35
+ "author": "John Huang",
36
+ "license": "MIT",
37
+ "peerDependencies": {
38
+ "@sudobility/shapeshyft_types": "latest",
39
+ "@sudobility/types": "^1.9.31",
40
+ "@tanstack/react-query": ">=5.0.0",
41
+ "react": ">=18.0.0"
42
+ },
43
+ "devDependencies": {
44
+ "@eslint/js": "^9.39.2",
45
+ "@sudobility/shapeshyft_types": "latest",
46
+ "@sudobility/types": "^1.9.31",
47
+ "@tanstack/react-query": "^5.90.5",
48
+ "@types/node": "^24.9.1",
49
+ "@types/react": "^19.2.2",
50
+ "@typescript-eslint/eslint-plugin": "^8.46.2",
51
+ "@typescript-eslint/parser": "^8.46.2",
52
+ "eslint": "^9.38.0",
53
+ "eslint-config-prettier": "^10.1.8",
54
+ "eslint-plugin-prettier": "^5.5.4",
55
+ "prettier": "^3.6.2",
56
+ "react": "^19.2.1",
57
+ "typescript": "^5.9.3",
58
+ "vitest": "^4.0.4"
59
+ }
60
+ }