@ic-reactor/react 3.0.3-beta.4 → 3.0.3

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 (50) hide show
  1. package/README.md +83 -14
  2. package/dist/createInfiniteQuery.d.ts +23 -10
  3. package/dist/createInfiniteQuery.d.ts.map +1 -1
  4. package/dist/createInfiniteQuery.js +24 -3
  5. package/dist/createInfiniteQuery.js.map +1 -1
  6. package/dist/createMutation.d.ts.map +1 -1
  7. package/dist/createMutation.js +11 -1
  8. package/dist/createMutation.js.map +1 -1
  9. package/dist/createSuspenseInfiniteQuery.d.ts +29 -5
  10. package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
  11. package/dist/createSuspenseInfiniteQuery.js +31 -3
  12. package/dist/createSuspenseInfiniteQuery.js.map +1 -1
  13. package/dist/hooks/index.d.ts +18 -6
  14. package/dist/hooks/index.d.ts.map +1 -1
  15. package/dist/hooks/index.js +15 -6
  16. package/dist/hooks/index.js.map +1 -1
  17. package/dist/hooks/useActorInfiniteQuery.d.ts +13 -11
  18. package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
  19. package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
  20. package/dist/hooks/useActorMethod.d.ts +20 -24
  21. package/dist/hooks/useActorMethod.d.ts.map +1 -1
  22. package/dist/hooks/useActorMethod.js +29 -18
  23. package/dist/hooks/useActorMethod.js.map +1 -1
  24. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +13 -10
  25. package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
  26. package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
  27. package/package.json +8 -7
  28. package/src/createActorHooks.ts +146 -0
  29. package/src/createAuthHooks.ts +137 -0
  30. package/src/createInfiniteQuery.ts +522 -0
  31. package/src/createMutation.ts +173 -0
  32. package/src/createQuery.ts +197 -0
  33. package/src/createSuspenseInfiniteQuery.ts +556 -0
  34. package/src/createSuspenseQuery.ts +215 -0
  35. package/src/hooks/index.ts +93 -0
  36. package/src/hooks/useActorInfiniteQuery.test.tsx +457 -0
  37. package/src/hooks/useActorInfiniteQuery.ts +134 -0
  38. package/src/hooks/useActorMethod.test.tsx +798 -0
  39. package/src/hooks/useActorMethod.ts +397 -0
  40. package/src/hooks/useActorMutation.test.tsx +220 -0
  41. package/src/hooks/useActorMutation.ts +124 -0
  42. package/src/hooks/useActorQuery.test.tsx +287 -0
  43. package/src/hooks/useActorQuery.ts +110 -0
  44. package/src/hooks/useActorSuspenseInfiniteQuery.test.tsx +472 -0
  45. package/src/hooks/useActorSuspenseInfiniteQuery.ts +137 -0
  46. package/src/hooks/useActorSuspenseQuery.test.tsx +254 -0
  47. package/src/hooks/useActorSuspenseQuery.ts +112 -0
  48. package/src/index.ts +21 -0
  49. package/src/types.ts +435 -0
  50. package/src/validation.ts +202 -0
@@ -1,23 +1,25 @@
1
- import { QueryKey, UseInfiniteQueryResult, InfiniteData } from "@tanstack/react-query";
1
+ import { QueryKey, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteData } from "@tanstack/react-query";
2
2
  import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
3
3
  import { CallConfig } from "@icp-sdk/core/agent";
4
- export interface UseActorInfiniteQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> {
4
+ /**
5
+ * Parameters for useActorInfiniteQuery hook.
6
+ * Extends react-query's UseInfiniteQueryOptions with custom reactor params.
7
+ */
8
+ export interface UseActorInfiniteQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>> extends Omit<UseInfiniteQueryOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, TSelected, QueryKey, TPageParam>, "queryKey" | "queryFn" | "getNextPageParam" | "initialPageParam"> {
9
+ /** The reactor instance to use for method calls */
5
10
  reactor: Reactor<A, T>;
11
+ /** The method name to call on the canister */
6
12
  functionName: M;
13
+ /** Function to get args from page parameter */
7
14
  getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>;
15
+ /** Agent call configuration (effectiveCanisterId, etc.) */
8
16
  callConfig?: CallConfig;
17
+ /** Custom query key (auto-generated if not provided) */
9
18
  queryKey?: QueryKey;
19
+ /** Initial page parameter */
10
20
  initialPageParam: TPageParam;
21
+ /** Function to determine next page parameter */
11
22
  getNextPageParam: (lastPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
12
- getPreviousPageParam?: (firstPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
13
- maxPages?: number;
14
- enabled?: boolean;
15
- staleTime?: number;
16
- gcTime?: number;
17
- refetchOnWindowFocus?: boolean;
18
- refetchOnMount?: boolean;
19
- refetchOnReconnect?: boolean;
20
- select?: (data: InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>) => InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>;
21
23
  }
22
24
  export type UseActorInfiniteQueryConfig<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = Omit<UseActorInfiniteQueryParameters<A, M, T, TPageParam>, "reactor">;
23
25
  export type UseActorInfiniteQueryResult<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = UseInfiniteQueryResult<InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>, ReactorReturnErr<A, M, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActorInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;;GAGG;AACH,MAAM,WAAW,+BAA+B,CAC9C,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,EACpB,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAC9D,SAAQ,IAAI,CACZ,uBAAuB,CACrB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,UAAU,CACX,EACD,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,kBAAkB,CACjE;IACC,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,CAAA;IACf,+CAA+C;IAC/C,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxD,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,6BAA6B;IAC7B,gBAAgB,EAAE,UAAU,CAAA;IAC5B,gDAAgD;IAChD,gBAAgB,EAAE,CAChB,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAClC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EACpC,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EAAE,KACxB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,MAAM,2BAA2B,CACrC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,IAClB,IAAI,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;AAEzE,MAAM,MAAM,2BAA2B,CACrC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,IAClB,sBAAsB,CACxB,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EAClD,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,GAChC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,EACpB,sEAOC,+BAA+B,CAChC,CAAC,EACD,CAAC,EACD,CAAC,EACD,UAAU,CACX,KAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CA4BlD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAGjB,MAAM,uBAAuB,CAAA;AAgE9B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAAoD,EAAE;IACrD,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAC5D,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAClC,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACgC,CAAA;AACvD,CAAC,CAAA"}
1
+ {"version":3,"file":"useActorInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AAqE9B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAAoD,EAAE;IACrD,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAC5D,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAClC,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACgC,CAAA;AACvD,CAAC,CAAA"}
@@ -1,10 +1,15 @@
1
- import { type UseQueryResult, type UseMutationResult, type QueryKey } from "@tanstack/react-query";
1
+ import { type UseQueryResult, type UseMutationResult, type QueryKey, type QueryObserverOptions } from "@tanstack/react-query";
2
2
  import { Reactor, BaseActor, FunctionName, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr, FunctionType } from "@ic-reactor/core";
3
3
  import { CallConfig } from "@icp-sdk/core/agent";
4
4
  /**
5
5
  * Configuration for useActorMethod hook.
6
+ * Extends react-query's QueryObserverOptions with custom reactor params.
7
+ *
8
+ * This is a unified hook that handles both query and mutation methods.
9
+ * Query-specific options (like refetchInterval) only apply to query methods.
10
+ * Mutation-specific options (like invalidateQueries) only apply to mutation methods.
6
11
  */
7
- export interface UseActorMethodParameters<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> {
12
+ export interface UseActorMethodParameters<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> extends Omit<QueryObserverOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, ReactorReturnOk<A, M, T>, ReactorReturnOk<A, M, T>, QueryKey>, "queryKey" | "queryFn"> {
8
13
  /** The reactor instance to use for method calls */
9
14
  reactor: Reactor<A, T>;
10
15
  /** The method name to call on the canister */
@@ -16,34 +21,26 @@ export interface UseActorMethodParameters<A = BaseActor, M extends FunctionName<
16
21
  /** Custom query key (auto-generated if not provided) */
17
22
  queryKey?: QueryKey;
18
23
  /**
19
- * For query methods: Whether to auto-fetch on mount (default: true)
20
- * For mutation methods: This is ignored
21
- */
22
- enabled?: boolean;
23
- /**
24
- * For query methods: How long data stays fresh before refetching (ms)
25
- * Default: 5 minutes
26
- */
27
- staleTime?: number;
28
- /**
29
- * For query methods: Refetch interval in milliseconds
30
- * Set to a number to enable polling
31
- */
32
- refetchInterval?: number | false;
33
- /**
34
- * Callback when the method call succeeds
24
+ * Callback when the method call succeeds.
25
+ * Works for both query and mutation methods.
35
26
  */
36
27
  onSuccess?: (data: ReactorReturnOk<A, M, T>) => void;
37
28
  /**
38
- * Callback when the method call fails
29
+ * Callback when the method call fails.
30
+ * Works for both query and mutation methods.
39
31
  */
40
32
  onError?: (error: ReactorReturnErr<A, M, T>) => void;
41
33
  /**
42
- * Query keys to invalidate after a successful mutation
43
- * Only applies to mutation methods
34
+ * Query keys to invalidate after a successful mutation.
35
+ * Only applies to mutation methods (updates).
44
36
  */
45
37
  invalidateQueries?: QueryKey[];
46
38
  }
39
+ /**
40
+ * Configuration type for bound useActorMethod hook (reactor omitted).
41
+ * For use with createActorHooks.
42
+ */
43
+ export type UseActorMethodConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = Omit<UseActorMethodParameters<A, M, T>, "reactor">;
47
44
  /**
48
45
  * Result type for useActorMethod hook.
49
46
  * Provides a unified interface for both query and mutation methods.
@@ -70,7 +67,7 @@ export interface UseActorMethodResult<A = BaseActor, M extends FunctionName<A> =
70
67
  * For queries: triggers a refetch
71
68
  * For mutations: executes the mutation with the provided args
72
69
  */
73
- call: (args?: ReactorArgs<A, M, T>) => Promise<ReactorReturnOk<A, M, T>>;
70
+ call: (args?: ReactorArgs<A, M, T>) => Promise<ReactorReturnOk<A, M, T> | undefined>;
74
71
  /**
75
72
  * Reset the state (clear data and error).
76
73
  * For queries: removes the query from cache
@@ -90,8 +87,7 @@ export interface UseActorMethodResult<A = BaseActor, M extends FunctionName<A> =
90
87
  * A unified hook for calling canister methods that automatically handles
91
88
  * both query and mutation methods based on the Candid interface.
92
89
  */
93
- export declare function useActorMethod<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid">({ reactor, functionName, args, callConfig, queryKey: customQueryKey, enabled, staleTime, // 5 minutes default
94
- refetchInterval, onSuccess, onError, invalidateQueries, }: UseActorMethodParameters<A, M, T>): UseActorMethodResult<A, M, T>;
90
+ export declare function useActorMethod<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid">({ reactor, functionName, args, callConfig, queryKey: customQueryKey, enabled, onSuccess, onError, invalidateQueries, ...queryOptions }: UseActorMethodParameters<A, M, T>): UseActorMethodResult<A, M, T>;
95
91
  /**
96
92
  * Creates a bound useMethod hook for a specific reactor instance.
97
93
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useActorMethod.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActorMethod.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@ import { useQuery, useMutation, } from "@tanstack/react-query";
4
4
  * A unified hook for calling canister methods that automatically handles
5
5
  * both query and mutation methods based on the Candid interface.
6
6
  */
7
- export function useActorMethod({ reactor, functionName, args, callConfig, queryKey: customQueryKey, enabled = true, staleTime = 5 * 60 * 1000, // 5 minutes default
8
- refetchInterval, onSuccess, onError, invalidateQueries, }) {
7
+ export function useActorMethod({ reactor, functionName, args, callConfig, queryKey: customQueryKey, enabled = true, onSuccess, onError, invalidateQueries, ...queryOptions }) {
9
8
  // Determine if this is a query method by checking the IDL
10
9
  const isQuery = useMemo(() => {
10
+ if (!reactor)
11
+ throw new Error("Reactor instance is required");
11
12
  return reactor.isQueryMethod(functionName);
12
13
  }, [reactor, functionName]);
13
14
  const functionType = isQuery ? "query" : "update";
@@ -41,13 +42,13 @@ refetchInterval, onSuccess, onError, invalidateQueries, }) {
41
42
  }
42
43
  },
43
44
  enabled: isQuery && enabled,
44
- staleTime,
45
- refetchInterval: refetchInterval || undefined,
45
+ ...queryOptions,
46
46
  }, reactor.queryClient);
47
47
  // ============================================================================
48
48
  // Mutation Implementation
49
49
  // ============================================================================
50
50
  const mutationResult = useMutation({
51
+ mutationKey: queryKey,
51
52
  mutationFn: async (mutationArgs) => {
52
53
  const result = await reactor.callMethod({
53
54
  functionName,
@@ -76,34 +77,44 @@ refetchInterval, onSuccess, onError, invalidateQueries, }) {
76
77
  if (isQuery) {
77
78
  // For queries, refetch with new args if provided
78
79
  if (callArgs !== undefined) {
79
- // Call directly if args changed
80
- const result = await reactor.callMethod({
81
- functionName,
82
- args: callArgs,
83
- callConfig,
84
- });
85
- onSuccess?.(result);
86
- return result;
80
+ try {
81
+ const result = await reactor.queryClient.fetchQuery({
82
+ queryKey,
83
+ queryFn: () => reactor.callMethod({
84
+ functionName,
85
+ args: callArgs,
86
+ callConfig,
87
+ }),
88
+ staleTime: 0,
89
+ });
90
+ onSuccess?.(result);
91
+ return result;
92
+ }
93
+ catch (error) {
94
+ onError?.(error);
95
+ return undefined;
96
+ }
87
97
  }
88
98
  // Otherwise just refetch
89
- const refetchResult = await queryResult.refetch();
90
- if (refetchResult.error) {
91
- throw refetchResult.error;
92
- }
93
- return refetchResult.data;
99
+ const { data } = await queryResult.refetch();
100
+ return data;
94
101
  }
95
102
  else {
96
103
  // For mutations, execute with provided args
97
- return mutationResult.mutateAsync(callArgs);
104
+ return mutationResult
105
+ .mutateAsync(callArgs)
106
+ .catch(() => undefined);
98
107
  }
99
108
  }, [
100
109
  isQuery,
101
110
  reactor,
102
111
  functionName,
103
112
  callConfig,
113
+ queryKey,
104
114
  queryResult,
105
115
  mutationResult,
106
116
  onSuccess,
117
+ onError,
107
118
  ]);
108
119
  // ============================================================================
109
120
  // Reset Function
@@ -1 +1 @@
1
- {"version":3,"file":"useActorMethod.js","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActorMethod.js","sourceRoot":"","sources":["../../src/hooks/useActorMethod.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,25 @@
1
- import { QueryKey, UseSuspenseInfiniteQueryResult, InfiniteData } from "@tanstack/react-query";
1
+ import { QueryKey, UseSuspenseInfiniteQueryResult, UseSuspenseInfiniteQueryOptions, InfiniteData } from "@tanstack/react-query";
2
2
  import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
3
3
  import { CallConfig } from "@icp-sdk/core/agent";
4
- export interface UseActorSuspenseInfiniteQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> {
4
+ /**
5
+ * Parameters for useActorSuspenseInfiniteQuery hook.
6
+ * Extends react-query's UseSuspenseInfiniteQueryOptions with custom reactor params.
7
+ */
8
+ export interface UseActorSuspenseInfiniteQueryParameters<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>> extends Omit<UseSuspenseInfiniteQueryOptions<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>, TSelected, QueryKey, TPageParam>, "queryKey" | "queryFn" | "getNextPageParam" | "initialPageParam"> {
9
+ /** The reactor instance to use for method calls */
5
10
  reactor: Reactor<A, T>;
11
+ /** The method name to call on the canister */
6
12
  functionName: M;
13
+ /** Function to get args from page parameter */
7
14
  getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>;
15
+ /** Agent call configuration (effectiveCanisterId, etc.) */
8
16
  callConfig?: CallConfig;
17
+ /** Custom query key (auto-generated if not provided) */
9
18
  queryKey?: QueryKey;
19
+ /** Initial page parameter */
10
20
  initialPageParam: TPageParam;
21
+ /** Function to determine next page parameter */
11
22
  getNextPageParam: (lastPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
12
- getPreviousPageParam?: (firstPage: ReactorReturnOk<A, M, T>, allPages: ReactorReturnOk<A, M, T>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
13
- maxPages?: number;
14
- staleTime?: number;
15
- gcTime?: number;
16
- refetchOnWindowFocus?: boolean;
17
- refetchOnMount?: boolean;
18
- refetchOnReconnect?: boolean;
19
- select?: (data: InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>) => InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>;
20
23
  }
21
24
  export type UseActorSuspenseInfiniteQueryConfig<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = Omit<UseActorSuspenseInfiniteQueryParameters<A, M, T, TPageParam>, "reactor">;
22
25
  export type UseActorSuspenseInfiniteQueryResult<A, M extends FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown> = UseSuspenseInfiniteQueryResult<InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>, ReactorReturnErr<A, M, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,8BAA8B,EAC9B,+BAA+B,EAC/B,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;;GAGG;AACH,MAAM,WAAW,uCAAuC,CACtD,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,EACpB,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAC9D,SAAQ,IAAI,CACZ,+BAA+B,CAC7B,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzB,SAAS,EACT,QAAQ,EACR,UAAU,CACX,EACD,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,kBAAkB,CACjE;IACC,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,CAAA;IACf,+CAA+C;IAC/C,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxD,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,6BAA6B;IAC7B,gBAAgB,EAAE,UAAU,CAAA;IAC5B,gDAAgD;IAChD,gBAAgB,EAAE,CAChB,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAClC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EACpC,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EAAE,KACxB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,MAAM,mCAAmC,CAC7C,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,IAClB,IAAI,CACN,uCAAuC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAC5D,SAAS,CACV,CAAA;AAED,MAAM,MAAM,mCAAmC,CAC7C,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,IAClB,8BAA8B,CAChC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EAClD,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GACxC,CAAC,EACD,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EACzB,CAAC,SAAS,YAAY,GAAG,QAAQ,EACjC,UAAU,GAAG,OAAO,EACpB,sEAOC,uCAAuC,CACxC,CAAC,EACD,CAAC,EACD,CAAC,EACD,UAAU,CACX,KAAG,mCAAmC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CA4B1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActorSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,wBAAwB,GAGzB,MAAM,uBAAuB,CAAA;AAkE9B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAK3C,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAA4D,EAAE;IAC7D,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAC5D,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAClC,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,wBAAwB,CAC7B;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACwC,CAAA;AAC/D,CAAC,CAAA"}
1
+ {"version":3,"file":"useActorSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAEL,wBAAwB,GAIzB,MAAM,uBAAuB,CAAA;AAwE9B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAK3C,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAMX,EAA4D,EAAE;IAC7D,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAC5D,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAClC,CAAA;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,EAAE,SAAS,EAA6B,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAC7C,CAAA;IAED,OAAO,wBAAwB,CAC7B;QACE,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,GAAG,OAAO;KACJ,EACR,OAAO,CAAC,WAAW,CACwC,CAAA;AAC/D,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/react",
3
- "version": "3.0.3-beta.4",
3
+ "version": "3.0.3",
4
4
  "description": "IC Reactor React Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -16,6 +16,7 @@
16
16
  },
17
17
  "files": [
18
18
  "dist",
19
+ "src",
19
20
  "README.md"
20
21
  ],
21
22
  "repository": {
@@ -41,7 +42,7 @@
41
42
  "author": "Behrad Deylami",
42
43
  "license": "MIT",
43
44
  "dependencies": {
44
- "@ic-reactor/core": "^3.0.3-beta.4"
45
+ "@ic-reactor/core": "^3.0.3"
45
46
  },
46
47
  "peerDependencies": {
47
48
  "react": ">=18.0.0",
@@ -55,15 +56,15 @@
55
56
  "@tanstack/react-query": "^5.90",
56
57
  "@testing-library/dom": "^10.4.1",
57
58
  "@testing-library/jest-dom": "^6.9.1",
58
- "@testing-library/react": "^16.3.1",
59
- "@types/react": "^19.2.7",
59
+ "@testing-library/react": "^16.3.2",
60
+ "@types/react": "^19.2.14",
60
61
  "@types/react-dom": "^19.2.3",
61
62
  "fake-indexeddb": "^6.2.5",
62
- "jsdom": "^27.4.0",
63
+ "jsdom": "^28.1.0",
63
64
  "react": "^19.2.3",
64
65
  "react-dom": "^19.2.3",
65
66
  "size-limit": "^12.0.0",
66
- "vitest": "^4.0.17"
67
+ "vitest": "^4.0.18"
67
68
  },
68
69
  "size-limit": [
69
70
  {
@@ -83,6 +84,6 @@
83
84
  "build": "tsc",
84
85
  "test": "vitest run",
85
86
  "size": "size-limit",
86
- "analyze": "size-limit --why"
87
+ "analyze": "size-limit"
87
88
  }
88
89
  }
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Actor Hooks Factory - Creates a full set of React hooks for a reactor instance.
3
+ *
4
+ * This is the primary entry point for using the library in React applications.
5
+ * It generates type-safe hooks for:
6
+ * - Queries (useActorQuery)
7
+ * - Suspense Queries (useActorSuspenseQuery)
8
+ * - Infinite Queries (useActorInfiniteQuery)
9
+ * - Suspense Infinite Queries (useActorSuspenseInfiniteQuery)
10
+ * - Mutations (useActorMutation)
11
+ *
12
+ * @example
13
+ * const { useActorQuery, useActorMutation } = createActorHooks(reactor)
14
+ *
15
+ * // In component
16
+ * const { data } = useActorQuery({ functionName: 'get_user' })
17
+ * const { mutate } = useActorMutation({ functionName: 'update_user' })
18
+ */
19
+ import {
20
+ Reactor,
21
+ DisplayReactor,
22
+ ReactorReturnErr,
23
+ ReactorReturnOk,
24
+ BaseActor,
25
+ FunctionName,
26
+ TransformKey,
27
+ } from "@ic-reactor/core"
28
+ import {
29
+ UseQueryResult,
30
+ UseSuspenseQueryResult,
31
+ UseInfiniteQueryResult,
32
+ UseSuspenseInfiniteQueryResult,
33
+ UseMutationResult,
34
+ InfiniteData,
35
+ } from "@tanstack/react-query"
36
+ import { createQuery } from "./createQuery"
37
+ import { createSuspenseQuery } from "./createSuspenseQuery"
38
+ import { createInfiniteQuery, InfiniteQueryConfig } from "./createInfiniteQuery"
39
+ import {
40
+ createSuspenseInfiniteQuery,
41
+ SuspenseInfiniteQueryConfig,
42
+ } from "./createSuspenseInfiniteQuery"
43
+ import { createMutation } from "./createMutation"
44
+ import {
45
+ useActorMethod,
46
+ UseActorMethodParameters,
47
+ } from "./hooks/useActorMethod"
48
+ import { QueryConfig, SuspenseQueryConfig, MutationConfig } from "./types"
49
+
50
+ export type ActorHooks<A, T extends TransformKey> = {
51
+ useActorQuery: {
52
+ <M extends FunctionName<A>>(
53
+ config: QueryConfig<A, M, T, ReactorReturnOk<A, M, T>>
54
+ ): UseQueryResult<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>>
55
+ <M extends FunctionName<A>, TData>(
56
+ config: QueryConfig<A, M, T, TData>
57
+ ): UseQueryResult<TData, ReactorReturnErr<A, M, T>>
58
+ }
59
+
60
+ useActorSuspenseQuery: {
61
+ <M extends FunctionName<A>>(
62
+ config: SuspenseQueryConfig<A, M, T, ReactorReturnOk<A, M, T>>
63
+ ): UseSuspenseQueryResult<
64
+ ReactorReturnOk<A, M, T>,
65
+ ReactorReturnErr<A, M, T>
66
+ >
67
+ <M extends FunctionName<A>, TData>(
68
+ config: SuspenseQueryConfig<A, M, T, TData>
69
+ ): UseSuspenseQueryResult<TData, ReactorReturnErr<A, M, T>>
70
+ }
71
+
72
+ useActorInfiniteQuery: <M extends FunctionName<A>, TPageParam = unknown>(
73
+ config: InfiniteQueryConfig<A, M, T, TPageParam>
74
+ ) => UseInfiniteQueryResult<
75
+ InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>,
76
+ ReactorReturnErr<A, M, T>
77
+ >
78
+
79
+ useActorSuspenseInfiniteQuery: <
80
+ M extends FunctionName<A>,
81
+ TPageParam = unknown,
82
+ >(
83
+ config: SuspenseInfiniteQueryConfig<A, M, T, TPageParam>
84
+ ) => UseSuspenseInfiniteQueryResult<
85
+ InfiniteData<ReactorReturnOk<A, M, T>, TPageParam>,
86
+ ReactorReturnErr<A, M, T>
87
+ >
88
+
89
+ useActorMutation: <M extends FunctionName<A>>(
90
+ config: MutationConfig<A, M, T>
91
+ ) => UseMutationResult<ReactorReturnOk<A, M, T>, ReactorReturnErr<A, M, T>>
92
+
93
+ useActorMethod: <M extends FunctionName<A>>(
94
+ config: Omit<UseActorMethodParameters<A, M, T>, "reactor">
95
+ ) => ReturnType<typeof useActorMethod<A, M, T>>
96
+ }
97
+
98
+ export function createActorHooks<A>(
99
+ reactor: DisplayReactor<A>
100
+ ): ActorHooks<A, "display">
101
+
102
+ export function createActorHooks<
103
+ A = BaseActor,
104
+ T extends TransformKey = "candid",
105
+ >(reactor: Reactor<A, T>): ActorHooks<A, T>
106
+
107
+ export function createActorHooks<A, T extends TransformKey>(
108
+ reactor: Reactor<A, T>
109
+ ): ActorHooks<A, T> {
110
+ return {
111
+ useActorQuery: ((config: any) => {
112
+ const { select, ...options } = config
113
+ return createQuery(reactor, config).useQuery(options)
114
+ }) as ActorHooks<A, T>["useActorQuery"],
115
+
116
+ useActorSuspenseQuery: ((config: any) => {
117
+ const { select, ...options } = config
118
+ return createSuspenseQuery(reactor, config).useSuspenseQuery(options)
119
+ }) as ActorHooks<A, T>["useActorSuspenseQuery"],
120
+
121
+ useActorInfiniteQuery: ((config) => {
122
+ const { select, ...options } = config
123
+ return createInfiniteQuery(reactor, config).useInfiniteQuery(options)
124
+ }) as ActorHooks<A, T>["useActorInfiniteQuery"],
125
+
126
+ useActorSuspenseInfiniteQuery: ((config) => {
127
+ const { select, ...options } = config
128
+ return createSuspenseInfiniteQuery(
129
+ reactor,
130
+ config
131
+ ).useSuspenseInfiniteQuery(options)
132
+ }) as ActorHooks<A, T>["useActorSuspenseInfiniteQuery"],
133
+
134
+ useActorMutation: ((config) => {
135
+ const { onSuccess, invalidateQueries, ...options } = config
136
+ return createMutation(reactor, config).useMutation(options)
137
+ }) as ActorHooks<A, T>["useActorMutation"],
138
+
139
+ useActorMethod: (config) =>
140
+ useActorMethod({ ...config, reactor } as UseActorMethodParameters<
141
+ A,
142
+ any,
143
+ T
144
+ >),
145
+ }
146
+ }