@sudobility/shapeshyft_client 0.0.54 → 0.0.56

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 (36) hide show
  1. package/dist/hooks/useAiExecute.d.ts.map +1 -1
  2. package/dist/hooks/useAiExecute.js +51 -60
  3. package/dist/hooks/useAiExecute.js.map +1 -1
  4. package/dist/hooks/useAnalytics.d.ts +6 -2
  5. package/dist/hooks/useAnalytics.d.ts.map +1 -1
  6. package/dist/hooks/useAnalytics.js +27 -33
  7. package/dist/hooks/useAnalytics.js.map +1 -1
  8. package/dist/hooks/useEndpoints.d.ts +10 -6
  9. package/dist/hooks/useEndpoints.d.ts.map +1 -1
  10. package/dist/hooks/useEndpoints.js +87 -121
  11. package/dist/hooks/useEndpoints.js.map +1 -1
  12. package/dist/hooks/useEntities.d.ts +18 -15
  13. package/dist/hooks/useEntities.d.ts.map +1 -1
  14. package/dist/hooks/useEntities.js +235 -332
  15. package/dist/hooks/useEntities.js.map +1 -1
  16. package/dist/hooks/useKeys.d.ts +9 -6
  17. package/dist/hooks/useKeys.d.ts.map +1 -1
  18. package/dist/hooks/useKeys.js +82 -117
  19. package/dist/hooks/useKeys.js.map +1 -1
  20. package/dist/hooks/useProjects.d.ts +12 -8
  21. package/dist/hooks/useProjects.d.ts.map +1 -1
  22. package/dist/hooks/useProjects.js +103 -157
  23. package/dist/hooks/useProjects.js.map +1 -1
  24. package/dist/hooks/useSettings.d.ts +6 -3
  25. package/dist/hooks/useSettings.d.ts.map +1 -1
  26. package/dist/hooks/useSettings.js +53 -56
  27. package/dist/hooks/useSettings.js.map +1 -1
  28. package/dist/hooks/useStorageConfig.d.ts +8 -5
  29. package/dist/hooks/useStorageConfig.d.ts.map +1 -1
  30. package/dist/hooks/useStorageConfig.js +93 -119
  31. package/dist/hooks/useStorageConfig.js.map +1 -1
  32. package/dist/types.d.ts +8 -6
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js +8 -6
  35. package/dist/types.js.map +1 -1
  36. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"useAiExecute.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AAMtC,MAAM,MAAM,QAAQ,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAK9D,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,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,SAAS,EAAE,CACT,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE7C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,WAAU,OAAe,KACxB,kBA2HF,CAAC"}
1
+ {"version":3,"file":"useAiExecute.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AAMtC,MAAM,MAAM,QAAQ,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAK9D,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,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,SAAS,EAAE,CACT,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE7C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAyBD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,WAAU,OAAe,KACxB,kBAsHF,CAAC"}
@@ -1,74 +1,65 @@
1
- import { useCallback, useMemo, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useMutation } from '@tanstack/react-query';
2
3
  import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
4
  export const useAiExecute = (networkClient, baseUrl, testMode = false) => {
4
5
  const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient, testMode }), [baseUrl, networkClient, testMode]);
5
- const [result, setResult] = useState(null);
6
- const [isLoading, setIsLoading] = useState(false);
7
- const [error, setError] = useState(null);
8
- const execute = useCallback(async (organizationPath, projectName, endpointName, input, method = 'POST', apiKey, timeout) => {
9
- setIsLoading(true);
10
- setError(null);
11
- try {
12
- const response = await client.executeAi(organizationPath, projectName, endpointName, input, method, apiKey, timeout);
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 getPrompt = useCallback(async (organizationPath, projectName, endpointName, input, apiKey, timeout) => {
36
- setIsLoading(true);
37
- setError(null);
38
- try {
39
- const response = await client.getAiPrompt(organizationPath, projectName, endpointName, input, apiKey, timeout);
40
- return response;
41
- }
42
- catch (err) {
43
- const errorMessage = err instanceof Error ? err.message : 'Failed to get prompt';
44
- setError(errorMessage);
45
- console.error('[useAiExecute] getPrompt error:', errorMessage, err);
46
- return {
47
- success: false,
48
- error: errorMessage,
49
- timestamp: new Date().toISOString(),
50
- };
51
- }
52
- finally {
53
- setIsLoading(false);
54
- }
55
- }, [client]);
6
+ const executeMutation = useMutation({
7
+ mutationFn: async (params) => {
8
+ return client.executeAi(params.organizationPath, params.projectName, params.endpointName, params.input, params.method, params.apiKey, params.timeout);
9
+ },
10
+ });
11
+ const promptMutation = useMutation({
12
+ mutationFn: async (params) => {
13
+ return client.getAiPrompt(params.organizationPath, params.projectName, params.endpointName, params.input, params.apiKey, params.timeout);
14
+ },
15
+ });
16
+ const execute = useCallback((organizationPath, projectName, endpointName, input, method = 'POST', apiKey, timeout) => executeMutation.mutateAsync({
17
+ organizationPath,
18
+ projectName,
19
+ endpointName,
20
+ input,
21
+ method,
22
+ apiKey,
23
+ timeout,
24
+ }), [executeMutation]);
25
+ const getPrompt = useCallback((organizationPath, projectName, endpointName, input, apiKey, timeout) => promptMutation.mutateAsync({
26
+ organizationPath,
27
+ projectName,
28
+ endpointName,
29
+ input,
30
+ apiKey,
31
+ timeout,
32
+ }), [promptMutation]);
33
+ const executeData = executeMutation.data;
34
+ const result = executeData?.success && executeData.data ? executeData.data : null;
35
+ const mutationError = executeMutation.error ?? promptMutation.error;
36
+ const apiError = executeData && !executeData.success ? executeData.error : null;
37
+ const error = mutationError instanceof Error ? mutationError.message : (apiError ?? null);
56
38
  const clearError = useCallback(() => {
57
- setError(null);
58
- }, []);
39
+ executeMutation.reset();
40
+ promptMutation.reset();
41
+ }, [executeMutation, promptMutation]);
59
42
  const reset = useCallback(() => {
60
- setResult(null);
61
- setError(null);
62
- setIsLoading(false);
63
- }, []);
43
+ executeMutation.reset();
44
+ promptMutation.reset();
45
+ }, [executeMutation, promptMutation]);
64
46
  return useMemo(() => ({
65
47
  result,
66
- isLoading,
48
+ isLoading: executeMutation.isPending || promptMutation.isPending,
67
49
  error,
68
50
  execute,
69
51
  getPrompt,
70
52
  clearError,
71
53
  reset,
72
- }), [result, isLoading, error, execute, getPrompt, clearError, reset]);
54
+ }), [
55
+ result,
56
+ executeMutation.isPending,
57
+ promptMutation.isPending,
58
+ error,
59
+ execute,
60
+ getPrompt,
61
+ clearError,
62
+ reset,
63
+ ]);
73
64
  };
74
65
  //# sourceMappingURL=useAiExecute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAiExecute.js","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAiExecute.js","sourceRoot":"","sources":["../../src/hooks/useAiExecute.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,13 @@ export interface UseAnalyticsReturn {
4
4
  analytics: Optional<AnalyticsResponse>;
5
5
  isLoading: boolean;
6
6
  error: Optional<string>;
7
- refresh: (userId: string, token: FirebaseIdToken, params?: UsageAnalyticsQueryParams) => Promise<void>;
7
+ refetch: () => void;
8
8
  clearError: () => void;
9
9
  reset: () => void;
10
10
  }
11
- export declare const useAnalytics: (networkClient: NetworkClient, baseUrl: string, testMode?: boolean) => UseAnalyticsReturn;
11
+ export declare const useAnalytics: (networkClient: NetworkClient, baseUrl: string, userId: string | null, token: FirebaseIdToken | null, options?: {
12
+ testMode?: boolean;
13
+ enabled?: boolean;
14
+ params?: UsageAnalyticsQueryParams;
15
+ }) => UseAnalyticsReturn;
12
16
  //# sourceMappingURL=useAnalytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACvC,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,EACf,WAAU,OAAe,KACxB,kBA8DF,CAAC"}
1
+ {"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOhD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,QAAQ,MAAM,GAAG,IAAI,EACrB,OAAO,eAAe,GAAG,IAAI,EAC7B,UAAU;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC,KACA,kBAyDF,CAAC"}
@@ -1,46 +1,40 @@
1
- import { useCallback, useMemo, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useQuery, useQueryClient } from '@tanstack/react-query';
2
3
  import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
- export const useAnalytics = (networkClient, baseUrl, testMode = false) => {
4
+ import { QUERY_KEYS } from '../types';
5
+ export const useAnalytics = (networkClient, baseUrl, userId, token, options) => {
6
+ const testMode = options?.testMode ?? false;
7
+ const enabled = (options?.enabled ?? true) && !!userId && !!token;
4
8
  const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient, testMode }), [baseUrl, networkClient, testMode]);
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);
9
+ const queryClient = useQueryClient();
10
+ const { data, isLoading, error: queryError, refetch, } = useQuery({
11
+ queryKey: QUERY_KEYS.analytics(userId ?? ''),
12
+ queryFn: async () => {
13
+ const response = await client.getAnalytics(userId, token, options?.params);
14
+ if (!response.success || !response.data) {
15
+ throw new Error(response.error || 'Failed to fetch analytics');
15
16
  }
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]);
17
+ return response.data;
18
+ },
19
+ enabled,
20
+ staleTime: 5 * 60 * 1000,
21
+ gcTime: 30 * 60 * 1000,
22
+ });
23
+ const error = queryError instanceof Error ? queryError.message : null;
29
24
  const clearError = useCallback(() => {
30
- setError(null);
31
25
  }, []);
32
26
  const reset = useCallback(() => {
33
- setAnalytics(null);
34
- setError(null);
35
- setIsLoading(false);
36
- }, []);
27
+ if (userId) {
28
+ queryClient.resetQueries({ queryKey: QUERY_KEYS.analytics(userId) });
29
+ }
30
+ }, [queryClient, userId]);
37
31
  return useMemo(() => ({
38
- analytics,
32
+ analytics: data ?? null,
39
33
  isLoading,
40
34
  error,
41
- refresh,
35
+ refetch,
42
36
  clearError,
43
37
  reset,
44
- }), [analytics, isLoading, error, refresh, clearError, reset]);
38
+ }), [data, isLoading, error, refetch, clearError, reset]);
45
39
  };
46
40
  //# sourceMappingURL=useAnalytics.js.map
@@ -1 +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;AAQvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAwB/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,aAA4B,EAC5B,OAAe,EACf,WAAoB,KAAK,EACL,EAAE;IACtB,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAChE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CACnC,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA8B,IAAI,CAAC,CAAC;IAC9E,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"}
1
+ {"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAoBtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,aAA4B,EAC5B,OAAe,EACf,MAAqB,EACrB,KAA6B,EAC7B,OAIC,EACmB,EAAE;IACtB,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;IAElE,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAChE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CACnC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,EAAE,UAAU,EACjB,OAAO,GACR,GAAG,QAAQ,CAAC;QACX,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CACxC,MAAO,EACP,KAAM,EACN,OAAO,EAAE,MAAM,CAChB,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO;QACP,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;IAEpC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAE1B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,IAAI,IAAI,IAAI;QACvB,SAAS;QACT,KAAK;QACL,OAAO;QACP,UAAU;QACV,KAAK;KACN,CAAC,EACF,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CACrD,CAAC;AACJ,CAAC,CAAC"}
@@ -4,13 +4,17 @@ export interface UseEndpointsReturn {
4
4
  endpoints: Endpoint[];
5
5
  isLoading: boolean;
6
6
  error: Optional<string>;
7
- refresh: (entitySlug: string, projectId: string, token: FirebaseIdToken, params?: EndpointQueryParams) => Promise<void>;
8
- getEndpoint: (entitySlug: string, projectId: string, endpointId: string, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
9
- createEndpoint: (entitySlug: string, projectId: string, data: EndpointCreateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
10
- updateEndpoint: (entitySlug: string, projectId: string, endpointId: string, data: EndpointUpdateRequest, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
11
- deleteEndpoint: (entitySlug: string, projectId: string, endpointId: string, token: FirebaseIdToken) => Promise<BaseResponse<Endpoint>>;
7
+ refetch: () => void;
8
+ getEndpoint: (endpointId: string) => Promise<BaseResponse<Endpoint>>;
9
+ createEndpoint: (data: EndpointCreateRequest) => Promise<BaseResponse<Endpoint>>;
10
+ updateEndpoint: (endpointId: string, data: EndpointUpdateRequest) => Promise<BaseResponse<Endpoint>>;
11
+ deleteEndpoint: (endpointId: string) => Promise<BaseResponse<Endpoint>>;
12
12
  clearError: () => void;
13
13
  reset: () => void;
14
14
  }
15
- export declare const useEndpoints: (networkClient: NetworkClient, baseUrl: string, testMode?: boolean) => UseEndpointsReturn;
15
+ export declare const useEndpoints: (networkClient: NetworkClient, baseUrl: string, entitySlug: string | null, projectId: string | null, token: FirebaseIdToken | null, options?: {
16
+ testMode?: boolean;
17
+ enabled?: boolean;
18
+ params?: EndpointQueryParams;
19
+ }) => UseEndpointsReturn;
16
20
  //# sourceMappingURL=useEndpoints.d.ts.map
@@ -1 +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,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,mBAAmB,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,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,UAAU,EAAE,MAAM,EAClB,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,EACf,WAAU,OAAe,KACxB,kBAwQF,CAAC"}
1
+ {"version":3,"file":"useEndpoints.d.ts","sourceRoot":"","sources":["../../src/hooks/useEndpoints.ts"],"names":[],"mappings":"AAEA,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;AAUhD,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,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,cAAc,EAAE,CACd,IAAI,EAAE,qBAAqB,KACxB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,qBAAqB,KACxB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAMD,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,YAAY,MAAM,GAAG,IAAI,EACzB,WAAW,MAAM,GAAG,IAAI,EACxB,OAAO,eAAe,GAAG,IAAI,EAC7B,UAAU;IACR,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B,KACA,kBAkLF,CAAC"}
@@ -1,140 +1,103 @@
1
- import { useCallback, useMemo, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
2
3
  import { ShapeshyftClient } from '../network/ShapeshyftClient';
3
- export const useEndpoints = (networkClient, baseUrl, testMode = false) => {
4
+ import { QUERY_KEYS } from '../types';
5
+ const EMPTY_ENDPOINTS = [];
6
+ export const useEndpoints = (networkClient, baseUrl, entitySlug, projectId, token, options) => {
7
+ const testMode = options?.testMode ?? false;
8
+ const enabled = (options?.enabled ?? true) && !!entitySlug && !!projectId && !!token;
4
9
  const client = useMemo(() => new ShapeshyftClient({ baseUrl, networkClient, testMode }), [baseUrl, networkClient, testMode]);
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 (entitySlug, projectId, token, params) => {
10
- setIsLoading(true);
11
- setError(null);
12
- setLastParams(params);
13
- try {
14
- const response = await client.getEndpoints(entitySlug, projectId, token, params);
15
- if (response.success && response.data) {
16
- setEndpoints(response.data);
17
- }
18
- else {
19
- setError(response.error || 'Failed to fetch endpoints');
10
+ const queryClient = useQueryClient();
11
+ const { data, isLoading, error: queryError, refetch, } = useQuery({
12
+ queryKey: QUERY_KEYS.endpoints(entitySlug ?? '', projectId ?? ''),
13
+ queryFn: async () => {
14
+ const response = await client.getEndpoints(entitySlug, projectId, token, options?.params);
15
+ if (!response.success || !response.data) {
16
+ throw new Error(response.error || 'Failed to fetch endpoints');
20
17
  }
18
+ return response.data;
19
+ },
20
+ enabled,
21
+ staleTime: 5 * 60 * 1000,
22
+ gcTime: 30 * 60 * 1000,
23
+ });
24
+ const invalidateEndpoints = useCallback(() => {
25
+ if (entitySlug && projectId) {
26
+ queryClient.invalidateQueries({
27
+ queryKey: QUERY_KEYS.endpoints(entitySlug, projectId),
28
+ });
21
29
  }
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 (entitySlug, projectId, endpointId, token) => {
32
- setIsLoading(true);
33
- setError(null);
30
+ }, [queryClient, entitySlug, projectId]);
31
+ const createMutation = useMutation({
32
+ mutationFn: async (data) => {
33
+ return client.createEndpoint(entitySlug, projectId, data, token);
34
+ },
35
+ onSuccess: response => {
36
+ if (response.success)
37
+ invalidateEndpoints();
38
+ },
39
+ });
40
+ const updateMutation = useMutation({
41
+ mutationFn: async ({ endpointId, data, }) => {
42
+ return client.updateEndpoint(entitySlug, projectId, endpointId, data, token);
43
+ },
44
+ onSuccess: response => {
45
+ if (response.success)
46
+ invalidateEndpoints();
47
+ },
48
+ });
49
+ const deleteMutation = useMutation({
50
+ mutationFn: async (endpointId) => {
51
+ return client.deleteEndpoint(entitySlug, projectId, endpointId, token);
52
+ },
53
+ onSuccess: response => {
54
+ if (response.success)
55
+ invalidateEndpoints();
56
+ },
57
+ });
58
+ const getEndpoint = useCallback(async (endpointId) => {
34
59
  try {
35
- const response = await client.getEndpoint(entitySlug, projectId, endpointId, token);
36
- return response;
60
+ return await client.getEndpoint(entitySlug, projectId, endpointId, token);
37
61
  }
38
62
  catch (err) {
39
63
  const errorMessage = err instanceof Error ? err.message : 'Failed to get endpoint';
40
- setError(errorMessage);
41
- console.error('[useEndpoints] getEndpoint error:', errorMessage, err);
42
64
  return {
43
65
  success: false,
44
66
  error: errorMessage,
45
67
  timestamp: new Date().toISOString(),
46
68
  };
47
69
  }
48
- finally {
49
- setIsLoading(false);
50
- }
51
- }, [client]);
52
- const createEndpoint = useCallback(async (entitySlug, projectId, data, token) => {
53
- setIsLoading(true);
54
- setError(null);
55
- try {
56
- const response = await client.createEndpoint(entitySlug, projectId, data, token);
57
- if (response.success) {
58
- await refresh(entitySlug, 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 (entitySlug, projectId, endpointId, data, token) => {
77
- setIsLoading(true);
78
- setError(null);
79
- try {
80
- const response = await client.updateEndpoint(entitySlug, projectId, endpointId, data, token);
81
- if (response.success) {
82
- await refresh(entitySlug, 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 (entitySlug, projectId, endpointId, token) => {
101
- setIsLoading(true);
102
- setError(null);
103
- try {
104
- const response = await client.deleteEndpoint(entitySlug, projectId, endpointId, token);
105
- if (response.success) {
106
- await refresh(entitySlug, 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]);
70
+ }, [client, entitySlug, projectId, token]);
71
+ const createEndpoint = useCallback((data) => createMutation.mutateAsync(data), [createMutation]);
72
+ const updateEndpoint = useCallback((endpointId, data) => updateMutation.mutateAsync({ endpointId, data }), [updateMutation]);
73
+ const deleteEndpoint = useCallback((endpointId) => deleteMutation.mutateAsync(endpointId), [deleteMutation]);
74
+ const mutationError = createMutation.error ?? updateMutation.error ?? deleteMutation.error;
75
+ const error = queryError instanceof Error
76
+ ? queryError.message
77
+ : mutationError instanceof Error
78
+ ? mutationError.message
79
+ : null;
124
80
  const clearError = useCallback(() => {
125
- setError(null);
126
- }, []);
81
+ createMutation.reset();
82
+ updateMutation.reset();
83
+ deleteMutation.reset();
84
+ }, [createMutation, updateMutation, deleteMutation]);
127
85
  const reset = useCallback(() => {
128
- setEndpoints([]);
129
- setError(null);
130
- setIsLoading(false);
131
- setLastParams(null);
132
- }, []);
86
+ if (entitySlug && projectId) {
87
+ queryClient.removeQueries({
88
+ queryKey: QUERY_KEYS.endpoints(entitySlug, projectId),
89
+ });
90
+ }
91
+ clearError();
92
+ }, [queryClient, entitySlug, projectId, clearError]);
133
93
  return useMemo(() => ({
134
- endpoints,
135
- isLoading,
94
+ endpoints: data ?? EMPTY_ENDPOINTS,
95
+ isLoading: isLoading ||
96
+ createMutation.isPending ||
97
+ updateMutation.isPending ||
98
+ deleteMutation.isPending,
136
99
  error,
137
- refresh,
100
+ refetch,
138
101
  getEndpoint,
139
102
  createEndpoint,
140
103
  updateEndpoint,
@@ -142,10 +105,13 @@ export const useEndpoints = (networkClient, baseUrl, testMode = false) => {
142
105
  clearError,
143
106
  reset,
144
107
  }), [
145
- endpoints,
108
+ data,
146
109
  isLoading,
110
+ createMutation.isPending,
111
+ updateMutation.isPending,
112
+ deleteMutation.isPending,
147
113
  error,
148
- refresh,
114
+ refetch,
149
115
  getEndpoint,
150
116
  createEndpoint,
151
117
  updateEndpoint,
@@ -1 +1 @@
1
- {"version":3,"file":"useEndpoints.js","sourceRoot":"","sources":["../../src/hooks/useEndpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useEndpoints.js","sourceRoot":"","sources":["../../src/hooks/useEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAW9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,eAAe,GAAe,EAAE,CAAC;AA6BvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,aAA4B,EAC5B,OAAe,EACf,UAAyB,EACzB,SAAwB,EACxB,KAA6B,EAC7B,OAIC,EACmB,EAAE;IACtB,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC5C,MAAM,OAAO,GACX,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC;IAEvE,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAChE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CACnC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,EAAE,UAAU,EACjB,OAAO,GACR,GAAG,QAAQ,CAAC;QACX,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,SAAS,IAAI,EAAE,CAAC;QACjE,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CACxC,UAAW,EACX,SAAU,EACV,KAAM,EACN,OAAO,EAAE,MAAM,CAChB,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO;QACP,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACxB,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,UAAU,EAAE,KAAK,EAAE,IAA2B,EAAE,EAAE;YAChD,OAAO,MAAM,CAAC,cAAc,CAAC,UAAW,EAAE,SAAU,EAAE,IAAI,EAAE,KAAM,CAAC,CAAC;QACtE,CAAC;QACD,SAAS,EAAE,QAAQ,CAAC,EAAE;YACpB,IAAI,QAAQ,CAAC,OAAO;gBAAE,mBAAmB,EAAE,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,UAAU,EAAE,KAAK,EAAE,EACjB,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,cAAc,CAC1B,UAAW,EACX,SAAU,EACV,UAAU,EACV,IAAI,EACJ,KAAM,CACP,CAAC;QACJ,CAAC;QACD,SAAS,EAAE,QAAQ,CAAC,EAAE;YACpB,IAAI,QAAQ,CAAC,OAAO;gBAAE,mBAAmB,EAAE,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAC;QACjC,UAAU,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE;YACvC,OAAO,MAAM,CAAC,cAAc,CAAC,UAAW,EAAE,SAAU,EAAE,UAAU,EAAE,KAAM,CAAC,CAAC;QAC5E,CAAC;QACD,SAAS,EAAE,QAAQ,CAAC,EAAE;YACpB,IAAI,QAAQ,CAAC,OAAO;gBAAE,mBAAmB,EAAE,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,UAAkB,EAAmC,EAAE;QAC5D,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,WAAW,CAC7B,UAAW,EACX,SAAU,EACV,UAAU,EACV,KAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAChE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CACvC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,IAA2B,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EACjE,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,UAAkB,EAAE,IAA2B,EAAE,EAAE,CAClD,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAClD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,UAAkB,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,EAC9D,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,MAAM,aAAa,GACjB,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC;IACvE,MAAM,KAAK,GACT,UAAU,YAAY,KAAK;QACzB,CAAC,CAAC,UAAU,CAAC,OAAO;QACpB,CAAC,CAAC,aAAa,YAAY,KAAK;YAC9B,CAAC,CAAC,aAAa,CAAC,OAAO;YACvB,CAAC,CAAC,IAAI,CAAC;IAEb,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,WAAW,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,CAAC;IACf,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAErD,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,IAAI,IAAI,eAAe;QAClC,SAAS,EACP,SAAS;YACT,cAAc,CAAC,SAAS;YACxB,cAAc,CAAC,SAAS;YACxB,cAAc,CAAC,SAAS;QAC1B,KAAK;QACL,OAAO;QACP,WAAW;QACX,cAAc;QACd,cAAc;QACd,cAAc;QACd,UAAU;QACV,KAAK;KACN,CAAC,EACF;QACE,IAAI;QACJ,SAAS;QACT,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,SAAS;QACxB,cAAc,CAAC,SAAS;QACxB,KAAK;QACL,OAAO;QACP,WAAW;QACX,cAAc;QACd,cAAc;QACd,cAAc;QACd,UAAU;QACV,KAAK;KACN,CACF,CAAC;AACJ,CAAC,CAAC"}