@ic-reactor/react 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -8
- package/dist/auth/authentication-manager.d.ts +66 -0
- package/dist/auth/authentication-manager.d.ts.map +1 -0
- package/dist/auth/authentication-manager.js +458 -0
- package/dist/auth/authentication-manager.js.map +1 -0
- package/dist/auth/constants.d.ts +18 -0
- package/dist/auth/constants.d.ts.map +1 -0
- package/dist/auth/constants.js +18 -0
- package/dist/auth/constants.js.map +1 -0
- package/dist/auth/createIdentityAttributeHooks.d.ts +14 -0
- package/dist/auth/createIdentityAttributeHooks.d.ts.map +1 -0
- package/dist/auth/createIdentityAttributeHooks.js +54 -0
- package/dist/auth/createIdentityAttributeHooks.js.map +1 -0
- package/dist/auth/identity-attributes-manager.d.ts +19 -0
- package/dist/auth/identity-attributes-manager.d.ts.map +1 -0
- package/dist/auth/identity-attributes-manager.js +94 -0
- package/dist/auth/identity-attributes-manager.js.map +1 -0
- package/dist/auth/identity-attributes.d.ts +19 -0
- package/dist/auth/identity-attributes.d.ts.map +1 -0
- package/dist/auth/identity-attributes.js +170 -0
- package/dist/auth/identity-attributes.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/types.d.ts +75 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/createActorHooks.d.ts +12 -12
- package/dist/createActorHooks.d.ts.map +1 -1
- package/dist/createActorHooks.js.map +1 -1
- package/dist/createInfiniteQuery.d.ts +32 -32
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +6 -6
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts +12 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +11 -0
- package/dist/createMutation.js.map +1 -1
- package/dist/createQuery.d.ts +12 -2
- package/dist/createQuery.d.ts.map +1 -1
- package/dist/createQuery.js +15 -5
- package/dist/createQuery.js.map +1 -1
- package/dist/createSuspenseInfiniteQuery.d.ts +31 -31
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +6 -6
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/createSuspenseQuery.d.ts +2 -2
- package/dist/createSuspenseQuery.d.ts.map +1 -1
- package/dist/createSuspenseQuery.js.map +1 -1
- package/dist/defineReactor.d.ts +74 -0
- package/dist/defineReactor.d.ts.map +1 -0
- package/dist/defineReactor.js +75 -0
- package/dist/defineReactor.js.map +1 -0
- package/dist/{createAuthHooks.d.ts → hooks/createAuthHooks.d.ts} +6 -13
- package/dist/hooks/createAuthHooks.d.ts.map +1 -0
- package/dist/{createAuthHooks.js → hooks/createAuthHooks.js} +12 -57
- package/dist/hooks/createAuthHooks.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts +9 -9
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js +3 -1
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMethod.d.ts +17 -17
- package/dist/hooks/useActorMethod.d.ts.map +1 -1
- package/dist/hooks/useActorMethod.js.map +1 -1
- package/dist/hooks/useActorMutation.d.ts +18 -7
- package/dist/hooks/useActorMutation.d.ts.map +1 -1
- package/dist/hooks/useActorMutation.js +11 -0
- package/dist/hooks/useActorMutation.js.map +1 -1
- package/dist/hooks/useActorQuery.d.ts +8 -8
- package/dist/hooks/useActorQuery.d.ts.map +1 -1
- package/dist/hooks/useActorQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +9 -9
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +3 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.d.ts +8 -8
- package/dist/hooks/useActorSuspenseQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseQuery.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +24 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +10 -2
- package/dist/utils.js.map +1 -1
- package/llms.txt +48 -0
- package/package.json +27 -21
- package/src/auth/authentication-manager.ts +519 -0
- package/src/auth/constants.ts +25 -0
- package/src/auth/createIdentityAttributeHooks.ts +83 -0
- package/src/auth/identity-attributes-manager.ts +127 -0
- package/src/auth/identity-attributes.ts +270 -0
- package/src/auth/index.ts +7 -0
- package/src/auth/types.ts +88 -0
- package/src/createActorHooks.ts +81 -49
- package/src/createInfiniteQuery.ts +153 -97
- package/src/createMutation.ts +34 -18
- package/src/createQuery.ts +92 -48
- package/src/createSuspenseInfiniteQuery.ts +165 -114
- package/src/createSuspenseQuery.ts +67 -41
- package/src/defineReactor.test.ts +70 -0
- package/src/defineReactor.ts +150 -0
- package/src/{createAuthHooks.ts → hooks/createAuthHooks.ts} +17 -98
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useActorInfiniteQuery.ts +44 -30
- package/src/hooks/useActorMethod.ts +62 -53
- package/src/hooks/useActorMutation.ts +47 -30
- package/src/hooks/useActorQuery.ts +36 -32
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +56 -30
- package/src/hooks/useActorSuspenseQuery.ts +42 -32
- package/src/index.ts +3 -1
- package/src/types.ts +76 -71
- package/src/utils.test.ts +14 -0
- package/src/utils.ts +15 -2
- package/dist/createAuthHooks.d.ts.map +0 -1
- package/dist/createAuthHooks.js.map +0 -1
|
@@ -21,32 +21,32 @@
|
|
|
21
21
|
* // Invalidate cache
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
|
-
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
|
|
24
|
+
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
25
25
|
import { QueryKey, InfiniteData, UseInfiniteQueryResult, UseInfiniteQueryOptions, InfiniteQueryObserverOptions } from "@tanstack/react-query";
|
|
26
26
|
import { CallConfig } from "@icp-sdk/core/agent";
|
|
27
27
|
import { NoInfer } from "./types";
|
|
28
|
-
type InfiniteQueryFactoryFn<
|
|
29
|
-
(getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
28
|
+
type InfiniteQueryFactoryFn<Service, Method extends FunctionName<Service>, Transform extends TransformKey, TPageParam, Selected> = {
|
|
29
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>): InfiniteQueryResult<InfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, InfiniteQueryError<Service, Method, Transform>>;
|
|
30
30
|
};
|
|
31
31
|
/** The raw page data type returned by the query function */
|
|
32
|
-
export type InfiniteQueryPageData<
|
|
32
|
+
export type InfiniteQueryPageData<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>;
|
|
33
33
|
/** The error type for infinite queries */
|
|
34
|
-
export type InfiniteQueryError<
|
|
34
|
+
export type InfiniteQueryError<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorReturnErr<Service, Method, Transform>;
|
|
35
35
|
/**
|
|
36
36
|
* Configuration for createActorInfiniteQuery.
|
|
37
37
|
* Extends InfiniteQueryObserverOptions to accept standard TanStack Query
|
|
38
38
|
* infinite-query options at the create level (e.g. refetchInterval,
|
|
39
39
|
* refetchOnMount, refetchOnWindowFocus, retry, gcTime, networkMode).
|
|
40
40
|
*
|
|
41
|
-
* @template
|
|
42
|
-
* @template
|
|
43
|
-
* @template
|
|
41
|
+
* @template Service - The actor interface type
|
|
42
|
+
* @template Method - The method name on the actor
|
|
43
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
44
44
|
* @template TPageParam - The type of the page parameter
|
|
45
|
-
* @template
|
|
45
|
+
* @template Selected - The type returned after select transformation
|
|
46
46
|
*/
|
|
47
|
-
export interface InfiniteQueryConfig<
|
|
47
|
+
export interface InfiniteQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>> extends Omit<InfiniteQueryObserverOptions<InfiniteQueryPageData<Service, Method, Transform>, InfiniteQueryError<Service, Method, Transform>, Selected, QueryKey, TPageParam>, "queryKey" | "queryFn"> {
|
|
48
48
|
/** The method to call on the canister */
|
|
49
|
-
functionName:
|
|
49
|
+
functionName: Method;
|
|
50
50
|
/** Call configuration for the actor method */
|
|
51
51
|
callConfig?: CallConfig;
|
|
52
52
|
/** Custom query key (optional, auto-generated if not provided) */
|
|
@@ -54,31 +54,31 @@ export interface InfiniteQueryConfig<A = BaseActor, M extends FunctionName<A> =
|
|
|
54
54
|
/** Initial page parameter */
|
|
55
55
|
initialPageParam: TPageParam;
|
|
56
56
|
/** Function to get args from page parameter */
|
|
57
|
-
getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
57
|
+
getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>;
|
|
58
58
|
/** Function to determine next page parameter */
|
|
59
|
-
getNextPageParam: (lastPage: InfiniteQueryPageData<
|
|
59
|
+
getNextPageParam: (lastPage: InfiniteQueryPageData<Service, Method, Transform>, allPages: InfiniteQueryPageData<Service, Method, Transform>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
60
60
|
/** Function to determine previous page parameter (for bi-directional) */
|
|
61
|
-
getPreviousPageParam?: (firstPage: InfiniteQueryPageData<
|
|
61
|
+
getPreviousPageParam?: (firstPage: InfiniteQueryPageData<Service, Method, Transform>, allPages: InfiniteQueryPageData<Service, Method, Transform>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Configuration for createActorInfiniteQueryFactory (without initialPageParam, getArgs determined at call time).
|
|
65
65
|
*/
|
|
66
|
-
export type InfiniteQueryFactoryConfig<
|
|
66
|
+
export type InfiniteQueryFactoryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>> = Omit<InfiniteQueryConfig<Service, Method, Transform, TPageParam, Selected>, "getArgs"> & {
|
|
67
67
|
/**
|
|
68
68
|
* Optional key-args derivation for factory calls.
|
|
69
69
|
* Receives the resolved args from `getArgs(initialPageParam)` and should return
|
|
70
70
|
* a stable serializable representation of the logical query identity
|
|
71
71
|
* (typically excluding pagination/cursor fields).
|
|
72
72
|
*/
|
|
73
|
-
getKeyArgs?: (args: ReactorArgs<
|
|
73
|
+
getKeyArgs?: (args: ReactorArgs<Service, Method, Transform>) => unknown;
|
|
74
74
|
};
|
|
75
75
|
/**
|
|
76
76
|
* useInfiniteQuery hook with chained select support.
|
|
77
77
|
*/
|
|
78
|
-
export interface UseInfiniteQueryWithSelect<TPageData, TPageParam,
|
|
79
|
-
(options?: Omit<UseInfiniteQueryOptions<TPageData, TError,
|
|
80
|
-
<TFinal =
|
|
81
|
-
select: (data:
|
|
78
|
+
export interface UseInfiniteQueryWithSelect<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
|
|
79
|
+
(options?: Omit<UseInfiniteQueryOptions<TPageData, TError, Selected, QueryKey, TPageParam>, "select" | "queryKey" | "queryFn" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam">): UseInfiniteQueryResult<Selected, TError>;
|
|
80
|
+
<TFinal = Selected>(options: Omit<UseInfiniteQueryOptions<TPageData, TError, TFinal, QueryKey, TPageParam>, "queryKey" | "queryFn" | "select" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam"> & {
|
|
81
|
+
select: (data: Selected) => TFinal;
|
|
82
82
|
}): UseInfiniteQueryResult<TFinal, TError>;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -86,14 +86,14 @@ export interface UseInfiniteQueryWithSelect<TPageData, TPageParam, TSelected = I
|
|
|
86
86
|
*
|
|
87
87
|
* @template TPageData - The raw page data type
|
|
88
88
|
* @template TPageParam - The page parameter type
|
|
89
|
-
* @template
|
|
89
|
+
* @template Selected - The type after select transformation
|
|
90
90
|
* @template TError - The error type
|
|
91
91
|
*/
|
|
92
|
-
export interface InfiniteQueryResult<TPageData, TPageParam,
|
|
92
|
+
export interface InfiniteQueryResult<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
|
|
93
93
|
/** Fetch first page in loader (uses ensureQueryData for cache-first) */
|
|
94
|
-
fetch: () => Promise<
|
|
94
|
+
fetch: () => Promise<Selected>;
|
|
95
95
|
/** React hook for components - supports pagination */
|
|
96
|
-
useInfiniteQuery: UseInfiniteQueryWithSelect<TPageData, TPageParam,
|
|
96
|
+
useInfiniteQuery: UseInfiniteQueryWithSelect<TPageData, TPageParam, Selected, TError>;
|
|
97
97
|
/** Invalidate the cache (refetches if query is active) */
|
|
98
98
|
invalidate: () => Promise<void>;
|
|
99
99
|
/** Get query key (for advanced React Query usage) */
|
|
@@ -103,20 +103,20 @@ export interface InfiniteQueryResult<TPageData, TPageParam, TSelected = Infinite
|
|
|
103
103
|
* Returns undefined if data is not in cache.
|
|
104
104
|
*/
|
|
105
105
|
getCacheData: {
|
|
106
|
-
():
|
|
107
|
-
<TFinal>(select: (data:
|
|
106
|
+
(): Selected | undefined;
|
|
107
|
+
<TFinal>(select: (data: Selected) => TFinal): TFinal | undefined;
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
export declare function createInfiniteQuery<
|
|
110
|
+
export declare function createInfiniteQuery<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>>(reactor: Reactor<Service, Transform>, config: InfiniteQueryConfig<NoInfer<Service>, Method, Transform, TPageParam, Selected>): InfiniteQueryResult<InfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, InfiniteQueryError<Service, Method, Transform>>;
|
|
111
111
|
/**
|
|
112
112
|
* Create an infinite query factory that accepts getArgs at call time.
|
|
113
113
|
* Useful when pagination logic varies by context.
|
|
114
114
|
*
|
|
115
|
-
* @template
|
|
116
|
-
* @template
|
|
117
|
-
* @template
|
|
115
|
+
* @template Service - The actor interface type
|
|
116
|
+
* @template Method - The method name on the actor
|
|
117
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
118
118
|
* @template TPageParam - The page parameter type
|
|
119
|
-
* @template
|
|
119
|
+
* @template Selected - The type returned after select transformation
|
|
120
120
|
*
|
|
121
121
|
* @param reactor - The Reactor instance
|
|
122
122
|
* @param config - Infinite query configuration (without getArgs)
|
|
@@ -137,6 +137,6 @@ export declare function createInfiniteQuery<A, T extends TransformKey, M extends
|
|
|
137
137
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
138
138
|
* const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
|
|
139
139
|
*/
|
|
140
|
-
export declare function createInfiniteQueryFactory<
|
|
140
|
+
export declare function createInfiniteQueryFactory<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<InfiniteQueryPageData<Service, Method, Transform>, TPageParam>>(reactor: Reactor<Service, Transform>, config: InfiniteQueryFactoryConfig<NoInfer<Service>, Method, Transform, TPageParam, Selected>): InfiniteQueryFactoryFn<Service, Method, Transform, TPageParam, Selected>;
|
|
141
141
|
export {};
|
|
142
142
|
//# sourceMappingURL=createInfiniteQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,QAAQ,EAER,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EAGvB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,KAAK,sBAAsB,CACzB,
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
24
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
25
|
-
import { mergeFactoryQueryKey } from "./utils";
|
|
25
|
+
import { mergeFactoryQueryKey, normalizeQueryData } from "./utils";
|
|
26
26
|
// ============================================================================
|
|
27
27
|
// Internal Implementation
|
|
28
28
|
// ============================================================================
|
|
@@ -45,7 +45,7 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
45
45
|
args,
|
|
46
46
|
callConfig,
|
|
47
47
|
});
|
|
48
|
-
return result;
|
|
48
|
+
return normalizeQueryData(result);
|
|
49
49
|
};
|
|
50
50
|
// Get infinite query options for fetchInfiniteQuery
|
|
51
51
|
const getInfiniteQueryOptions = () => ({
|
|
@@ -130,11 +130,11 @@ export function createInfiniteQuery(reactor, config) {
|
|
|
130
130
|
* Create an infinite query factory that accepts getArgs at call time.
|
|
131
131
|
* Useful when pagination logic varies by context.
|
|
132
132
|
*
|
|
133
|
-
* @template
|
|
134
|
-
* @template
|
|
135
|
-
* @template
|
|
133
|
+
* @template Service - The actor interface type
|
|
134
|
+
* @template Method - The method name on the actor
|
|
135
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
136
136
|
* @template TPageParam - The page parameter type
|
|
137
|
-
* @template
|
|
137
|
+
* @template Selected - The type returned after select transformation
|
|
138
138
|
*
|
|
139
139
|
* @param reactor - The Reactor instance
|
|
140
140
|
* @param config - Infinite query configuration (without getArgs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,OAAO,EAEL,gBAAgB,GAOjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAwNlE,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,uBAAuB,GAAG,CAU9B,OAAoC,EACpC,MAA6E,EAM7E,EAAE;IAKF,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EACzB,MAAM,EACN,GAAG,IAAI,EACR,GAAG,MAAM,CAAA;IAEV,mCAAmC;IACnC,MAAM,WAAW,GAAG,GAAa,EAAE;QACjC,OAAO,OAAO,CAAC,gBAAgB,CAC7B;YACE,YAAY;YACZ,QAAQ,EAAE,cAAc;SACzB,EACD,UAAU,CACX,CAAA;IACH,CAAC,CAAA;IAED,gDAAgD;IAChD,MAAM,OAAO,GAAG,KAAK,EACnB,OAAmD,EAC/B,EAAE;QACtB,8EAA8E;QAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAuB,CAAA;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACtC,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;QACF,OAAO,kBAAkB,CACvB,MAAqD,CACtD,CAAA;IACH,CAAC,CAAA;IAED,oDAAoD;IACpD,MAAM,uBAAuB,GAAG,GAM9B,EAAE,CAAC,CAAC;QACJ,QAAQ,EAAE,WAAW,EAAE;QACvB,OAAO;QACP,gBAAgB;QAChB,gBAAgB;KACjB,CAAC,CAAA;IAEF,+DAA+D;IAC/D,MAAM,KAAK,GAAG,KAAK,IAAuB,EAAE;QAC1C,oBAAoB;QACpB,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,CACtC,CAAA;QAE3B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAuB,CAAA;QAC/D,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,kBAAkB,CACzD,uBAAuB,EAAE,CAC1B,CAAA;QAED,wCAAwC;QACxC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA8B,CAAA;IAClE,CAAC,CAAA;IAED,iBAAiB;IACjB,MAAM,oBAAoB,GAKtB,CAAC,OAAY,EAAO,EAAE;QACxB,4DAA4D;QAC5D,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;YACpD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAClC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC,CAAA;QAED,OAAO,gBAAgB,CACrB;YACE,QAAQ,EAAE,WAAW,EAAE;YACvB,OAAO;YACP,gBAAgB;YAChB,gBAAgB;YAChB,oBAAoB;YACpB,QAAQ;YACR,SAAS;YACT,GAAG,IAAI;YACP,GAAG,OAAO;YACV,MAAM,EAAE,aAAa;SACf,EACR,OAAO,CAAC,WAAW,CACpB,CAAA;IACH,CAAC,CAAA;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;QAC9B,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAA;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAQ,CAAC,QAAkC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,CACpD,QAAQ,CACQ,CAAA;QAElB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,wCAAwC;QACxC,MAAM,YAAY,GAAG,CACnB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CACnC,CAAA;QAEb,kCAAkC;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAA;QAC/B,CAAC;QAED,OAAO,YAAY,CAAA;IACrB,CAAC,CAAA;IAED,OAAO;QACL,KAAK;QACL,gBAAgB,EAAE,oBAAoB;QACtC,UAAU;QACV,WAAW;QACX,YAAY;KACb,CAAA;AACH,CAAC,CAAA;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB,CAUjC,OAAoC,EACpC,MAMC;IAOD,OAAO,uBAAuB,CAC5B,OAAO,EACP,MAMC,CACF,CAAA;AACH,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,UAAU,0BAA0B,CAUxC,OAAoC,EACpC,MAMC;IAED,MAAM,OAAO,GAMT,CACF,OAA2E,EAC3E,EAAE;QACF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,CAAA;QAC/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAE1E,OAAO,uBAAuB,CAM5B,OAAO,EAAE;YACT,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CACjD,MAMC,CACF;YACD,QAAQ;YACR,OAAO;SACR,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/createMutation.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates unified mutation hooks for any canister method.
|
|
5
5
|
* Works with any Reactor instance.
|
|
6
|
+
* Use this when one mutation should support both React hooks and imperative
|
|
7
|
+
* execution outside React.
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* const transferMutation = createMutation(reactor, {
|
|
@@ -12,8 +14,17 @@
|
|
|
12
14
|
*
|
|
13
15
|
* // In component
|
|
14
16
|
* const { mutate, isPending } = transferMutation.useMutation()
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const transferMutation = createMutation(reactor, {
|
|
20
|
+
* functionName: "transfer",
|
|
21
|
+
* onCanisterError: (err) => console.error(err.code),
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* // Outside React (loader/service/script)
|
|
25
|
+
* await transferMutation.execute([{ to: "aaaaa-aa", amount: "1000" }])
|
|
15
26
|
*/
|
|
16
27
|
import type { Reactor, FunctionName, TransformKey } from "@ic-reactor/core";
|
|
17
28
|
import type { MutationConfig, MutationResult, NoInfer } from "./types";
|
|
18
|
-
export declare function createMutation<
|
|
29
|
+
export declare function createMutation<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>>(reactor: Reactor<Service, Transform>, config: MutationConfig<NoInfer<Service>, Method, Transform>): MutationResult<Service, Method, Transform>;
|
|
19
30
|
//# sourceMappingURL=createMutation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EAEZ,YAAY,EAEb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,OAAO,EACR,MAAM,SAAS,CAAA;AAsHhB,wBAAgB,cAAc,CAC5B,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAE5D,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,GAC1D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAK5C"}
|
package/dist/createMutation.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates unified mutation hooks for any canister method.
|
|
5
5
|
* Works with any Reactor instance.
|
|
6
|
+
* Use this when one mutation should support both React hooks and imperative
|
|
7
|
+
* execution outside React.
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* const transferMutation = createMutation(reactor, {
|
|
@@ -12,6 +14,15 @@
|
|
|
12
14
|
*
|
|
13
15
|
* // In component
|
|
14
16
|
* const { mutate, isPending } = transferMutation.useMutation()
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const transferMutation = createMutation(reactor, {
|
|
20
|
+
* functionName: "transfer",
|
|
21
|
+
* onCanisterError: (err) => console.error(err.code),
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* // Outside React (loader/service/script)
|
|
25
|
+
* await transferMutation.execute([{ to: "aaaaa-aa", amount: "1000" }])
|
|
15
26
|
*/
|
|
16
27
|
import { useMutation } from "@tanstack/react-query";
|
|
17
28
|
import { isCanisterError } from "@ic-reactor/core";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMutation.js","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createMutation.js","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"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"}
|
package/dist/createQuery.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates unified fetch/hook/invalidate functions for any canister method.
|
|
5
5
|
* Works with any Reactor instance.
|
|
6
|
+
* Use this when the same read operation must work both inside React components
|
|
7
|
+
* and outside React (loaders, actions, services, tests).
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* const userQuery = createQuery(todoManager, {
|
|
@@ -12,9 +14,17 @@
|
|
|
12
14
|
*
|
|
13
15
|
* // In component
|
|
14
16
|
* const { data: user } = userQuery.useQuery()
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const userQuery = createQuery(todoManager, { functionName: "get_user", args: ["alice"] })
|
|
20
|
+
*
|
|
21
|
+
* // Outside React (loader/service/script)
|
|
22
|
+
* await userQuery.fetch()
|
|
23
|
+
* const cached = userQuery.getCacheData()
|
|
24
|
+
* await userQuery.invalidate()
|
|
15
25
|
*/
|
|
16
26
|
import type { Reactor, FunctionName, ReactorArgs, TransformKey } from "@ic-reactor/core";
|
|
17
27
|
import type { QueryFnData, QueryError, QueryConfig, QueryResult, QueryFactoryConfig, NoInfer } from "./types";
|
|
18
|
-
export declare function createQuery<
|
|
19
|
-
export declare function createQueryFactory<
|
|
28
|
+
export declare function createQuery<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, Selected = QueryFnData<Service, Method, Transform>>(reactor: Reactor<Service, Transform>, config: QueryConfig<NoInfer<Service>, Method, Transform, Selected>): QueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>;
|
|
29
|
+
export declare function createQueryFactory<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, Selected = QueryFnData<Service, Method, Transform>>(reactor: Reactor<Service, Transform>, config: QueryFactoryConfig<NoInfer<Service>, Method, Transform, Selected>): (args: ReactorArgs<Service, Method, Transform>) => QueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>;
|
|
20
30
|
//# sourceMappingURL=createQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuery.d.ts","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createQuery.d.ts","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAA;AAOzB,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EAEX,WAAW,EACX,kBAAkB,EAClB,OAAO,EACR,MAAM,SAAS,CAAA;AAoHhB,wBAAgB,WAAW,CACzB,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAElD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GACjE,WAAW,CACZ,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACvC,QAAQ,EACR,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACvC,CAKA;AAMD,wBAAgB,kBAAkB,CAChC,OAAO,EACP,SAAS,SAAS,YAAY,EAC9B,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAC5D,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAElD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GACxE,CACD,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,KAC1C,WAAW,CACd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EACvC,QAAQ,EACR,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CACvC,CA8BA"}
|
package/dist/createQuery.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates unified fetch/hook/invalidate functions for any canister method.
|
|
5
5
|
* Works with any Reactor instance.
|
|
6
|
+
* Use this when the same read operation must work both inside React components
|
|
7
|
+
* and outside React (loaders, actions, services, tests).
|
|
6
8
|
*
|
|
7
9
|
* @example
|
|
8
10
|
* const userQuery = createQuery(todoManager, {
|
|
@@ -12,8 +14,16 @@
|
|
|
12
14
|
*
|
|
13
15
|
* // In component
|
|
14
16
|
* const { data: user } = userQuery.useQuery()
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const userQuery = createQuery(todoManager, { functionName: "get_user", args: ["alice"] })
|
|
20
|
+
*
|
|
21
|
+
* // Outside React (loader/service/script)
|
|
22
|
+
* await userQuery.fetch()
|
|
23
|
+
* const cached = userQuery.getCacheData()
|
|
24
|
+
* await userQuery.invalidate()
|
|
15
25
|
*/
|
|
16
|
-
import { useQuery } from "@tanstack/react-query";
|
|
26
|
+
import { useQuery, } from "@tanstack/react-query";
|
|
17
27
|
import { buildChainedSelect } from "./utils";
|
|
18
28
|
// ============================================================================
|
|
19
29
|
// Internal Implementation
|
|
@@ -38,7 +48,7 @@ const createQueryImpl = (reactor, config) => {
|
|
|
38
48
|
staleTime,
|
|
39
49
|
});
|
|
40
50
|
};
|
|
41
|
-
const useQueryHook = (options) => {
|
|
51
|
+
const useQueryHook = ((options) => {
|
|
42
52
|
const baseOptions = reactor.getQueryOptions(params);
|
|
43
53
|
return useQuery({
|
|
44
54
|
queryKey: baseOptions.queryKey,
|
|
@@ -48,17 +58,17 @@ const createQueryImpl = (reactor, config) => {
|
|
|
48
58
|
queryFn: baseOptions.queryFn,
|
|
49
59
|
select: buildChainedSelect(select, options?.select),
|
|
50
60
|
}, reactor.queryClient);
|
|
51
|
-
};
|
|
61
|
+
});
|
|
52
62
|
const invalidate = async () => {
|
|
53
63
|
await reactor.queryClient.invalidateQueries({ queryKey: getQueryKey() });
|
|
54
64
|
};
|
|
55
|
-
const getCacheData = (selectFn) => {
|
|
65
|
+
const getCacheData = ((selectFn) => {
|
|
56
66
|
const raw = reactor.getQueryData(params);
|
|
57
67
|
if (raw === undefined)
|
|
58
68
|
return undefined;
|
|
59
69
|
const selected = applySelect(raw);
|
|
60
70
|
return selectFn ? selectFn(selected) : selected;
|
|
61
|
-
};
|
|
71
|
+
});
|
|
62
72
|
const setData = (updater) => {
|
|
63
73
|
return reactor.queryClient.setQueryData(getQueryKey(), updater);
|
|
64
74
|
};
|
package/dist/createQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuery.js","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createQuery.js","sourceRoot":"","sources":["../src/createQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,60 +23,60 @@
|
|
|
23
23
|
* // Flatten all pages
|
|
24
24
|
* const allPosts = data.pages.flatMap(page => page.posts)
|
|
25
25
|
*/
|
|
26
|
-
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
|
|
26
|
+
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
27
27
|
import { QueryKey, InfiniteData, UseSuspenseInfiniteQueryResult, UseSuspenseInfiniteQueryOptions, InfiniteQueryObserverOptions } from "@tanstack/react-query";
|
|
28
28
|
import { CallConfig } from "@icp-sdk/core/agent";
|
|
29
29
|
import { NoInfer } from "./types";
|
|
30
30
|
type SuspenseInfiniteFactoryCallOptions = {
|
|
31
31
|
queryKey?: QueryKey;
|
|
32
32
|
};
|
|
33
|
-
type SuspenseInfiniteQueryFactoryFn<
|
|
34
|
-
(getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
35
|
-
(getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
33
|
+
type SuspenseInfiniteQueryFactoryFn<Service, Method extends FunctionName<Service>, Transform extends TransformKey, TPageParam, Selected> = {
|
|
34
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>): SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, SuspenseInfiniteQueryError<Service, Method, Transform>>;
|
|
35
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>, options?: SuspenseInfiniteFactoryCallOptions): SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, SuspenseInfiniteQueryError<Service, Method, Transform>>;
|
|
36
36
|
};
|
|
37
37
|
/** The raw page data type returned by the query function */
|
|
38
|
-
export type SuspenseInfiniteQueryPageData<
|
|
38
|
+
export type SuspenseInfiniteQueryPageData<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>;
|
|
39
39
|
/** The error type for infinite queries */
|
|
40
|
-
export type SuspenseInfiniteQueryError<
|
|
40
|
+
export type SuspenseInfiniteQueryError<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorReturnErr<Service, Method, Transform>;
|
|
41
41
|
/**
|
|
42
42
|
* Configuration for createActorSuspenseInfiniteQuery.
|
|
43
43
|
* Extends InfiniteQueryObserverOptions to accept all React Query options at the create level.
|
|
44
44
|
*
|
|
45
|
-
* @template
|
|
46
|
-
* @template
|
|
47
|
-
* @template
|
|
45
|
+
* @template Service - The actor interface type
|
|
46
|
+
* @template Method - The method name on the actor
|
|
47
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
48
48
|
* @template TPageParam - The type of the page parameter
|
|
49
|
-
* @template
|
|
49
|
+
* @template Selected - The type returned after select transformation
|
|
50
50
|
*/
|
|
51
|
-
export interface SuspenseInfiniteQueryConfig<
|
|
51
|
+
export interface SuspenseInfiniteQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam>> extends Omit<InfiniteQueryObserverOptions<SuspenseInfiniteQueryPageData<Service, Method, Transform>, SuspenseInfiniteQueryError<Service, Method, Transform>, Selected, QueryKey, TPageParam>, "queryKey" | "queryFn"> {
|
|
52
52
|
/** The method to call on the canister */
|
|
53
|
-
functionName:
|
|
53
|
+
functionName: Method;
|
|
54
54
|
/** Call configuration for the actor method */
|
|
55
55
|
callConfig?: CallConfig;
|
|
56
56
|
/** Custom query key (optional, auto-generated if not provided) */
|
|
57
57
|
queryKey?: QueryKey;
|
|
58
58
|
/** Function to get args from page parameter */
|
|
59
|
-
getArgs: (pageParam: TPageParam) => ReactorArgs<
|
|
59
|
+
getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>;
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Configuration for createActorSuspenseInfiniteQueryFactory (without getArgs; provided at call time).
|
|
63
63
|
*/
|
|
64
|
-
export type SuspenseInfiniteQueryFactoryConfig<
|
|
64
|
+
export type SuspenseInfiniteQueryFactoryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam>> = Omit<SuspenseInfiniteQueryConfig<Service, Method, Transform, TPageParam, Selected>, "getArgs"> & {
|
|
65
65
|
/**
|
|
66
66
|
* Optional key-args derivation for factory calls.
|
|
67
67
|
* Receives the resolved args from `getArgs(initialPageParam)` and should return
|
|
68
68
|
* a stable serializable representation of the logical query identity
|
|
69
69
|
* (typically excluding pagination/cursor fields).
|
|
70
70
|
*/
|
|
71
|
-
getKeyArgs?: (args: ReactorArgs<
|
|
71
|
+
getKeyArgs?: (args: ReactorArgs<Service, Method, Transform>) => unknown;
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
74
74
|
* useSuspenseInfiniteQuery hook with chained select support.
|
|
75
75
|
*/
|
|
76
|
-
export interface UseSuspenseInfiniteQueryWithSelect<TPageData, TPageParam,
|
|
77
|
-
(options?: Omit<UseSuspenseInfiniteQueryOptions<TPageData, TError,
|
|
78
|
-
<TFinal =
|
|
79
|
-
select: (data:
|
|
76
|
+
export interface UseSuspenseInfiniteQueryWithSelect<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
|
|
77
|
+
(options?: Omit<UseSuspenseInfiniteQueryOptions<TPageData, TError, Selected, QueryKey, TPageParam>, "select" | "queryKey" | "queryFn" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam">): UseSuspenseInfiniteQueryResult<Selected, TError>;
|
|
78
|
+
<TFinal = Selected>(options: Omit<UseSuspenseInfiniteQueryOptions<TPageData, TError, TFinal, QueryKey, TPageParam>, "queryKey" | "queryFn" | "select" | "initialPageParam" | "getNextPageParam" | "getPreviousPageParam"> & {
|
|
79
|
+
select: (data: Selected) => TFinal;
|
|
80
80
|
}): UseSuspenseInfiniteQueryResult<TFinal, TError>;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
@@ -84,14 +84,14 @@ export interface UseSuspenseInfiniteQueryWithSelect<TPageData, TPageParam, TSele
|
|
|
84
84
|
*
|
|
85
85
|
* @template TPageData - The raw page data type
|
|
86
86
|
* @template TPageParam - The page parameter type
|
|
87
|
-
* @template
|
|
87
|
+
* @template Selected - The type after select transformation
|
|
88
88
|
* @template TError - The error type
|
|
89
89
|
*/
|
|
90
|
-
export interface SuspenseInfiniteQueryResult<TPageData, TPageParam,
|
|
90
|
+
export interface SuspenseInfiniteQueryResult<TPageData, TPageParam, Selected = InfiniteData<TPageData, TPageParam>, TError = Error> {
|
|
91
91
|
/** Fetch first page in loader (uses ensureInfiniteQueryData for cache-first) */
|
|
92
|
-
fetch: () => Promise<
|
|
92
|
+
fetch: () => Promise<Selected>;
|
|
93
93
|
/** React hook for components - supports pagination */
|
|
94
|
-
useSuspenseInfiniteQuery: UseSuspenseInfiniteQueryWithSelect<TPageData, TPageParam,
|
|
94
|
+
useSuspenseInfiniteQuery: UseSuspenseInfiniteQueryWithSelect<TPageData, TPageParam, Selected, TError>;
|
|
95
95
|
/** Invalidate the cache (refetches if query is active) */
|
|
96
96
|
invalidate: () => Promise<void>;
|
|
97
97
|
/** Get query key (for advanced React Query usage) */
|
|
@@ -101,20 +101,20 @@ export interface SuspenseInfiniteQueryResult<TPageData, TPageParam, TSelected =
|
|
|
101
101
|
* Returns undefined if data is not in cache.
|
|
102
102
|
*/
|
|
103
103
|
getCacheData: {
|
|
104
|
-
():
|
|
105
|
-
<TFinal>(select: (data:
|
|
104
|
+
(): Selected | undefined;
|
|
105
|
+
<TFinal>(select: (data: Selected) => TFinal): TFinal | undefined;
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
|
-
export declare function createSuspenseInfiniteQuery<
|
|
108
|
+
export declare function createSuspenseInfiniteQuery<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam>>(reactor: Reactor<Service, Transform>, config: SuspenseInfiniteQueryConfig<NoInfer<Service>, Method, Transform, TPageParam, Selected>): SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam, Selected, SuspenseInfiniteQueryError<Service, Method, Transform>>;
|
|
109
109
|
/**
|
|
110
110
|
* Create a suspense infinite query factory that accepts getArgs at call time.
|
|
111
111
|
* Useful when pagination logic varies by context.
|
|
112
112
|
*
|
|
113
|
-
* @template
|
|
114
|
-
* @template
|
|
115
|
-
* @template
|
|
113
|
+
* @template Service - The actor interface type
|
|
114
|
+
* @template Method - The method name on the actor
|
|
115
|
+
* @template Transform - The transformation key (identity, display, etc.)
|
|
116
116
|
* @template TPageParam - The page parameter type
|
|
117
|
-
* @template
|
|
117
|
+
* @template Selected - The type returned after select transformation
|
|
118
118
|
*
|
|
119
119
|
* @param reactor - The Reactor instance
|
|
120
120
|
* @param config - Suspense infinite query configuration (without getArgs)
|
|
@@ -141,6 +141,6 @@ export declare function createSuspenseInfiniteQuery<A, T extends TransformKey, M
|
|
|
141
141
|
* { queryKey: ["v2"] }
|
|
142
142
|
* )
|
|
143
143
|
*/
|
|
144
|
-
export declare function createSuspenseInfiniteQueryFactory<
|
|
144
|
+
export declare function createSuspenseInfiniteQueryFactory<Service, Transform extends TransformKey, Method extends FunctionName<Service> = FunctionName<Service>, TPageParam = unknown, Selected = InfiniteData<SuspenseInfiniteQueryPageData<Service, Method, Transform>, TPageParam>>(reactor: Reactor<Service, Transform>, config: SuspenseInfiniteQueryFactoryConfig<NoInfer<Service>, Method, Transform, TPageParam, Selected>): SuspenseInfiniteQueryFactoryFn<Service, Method, Transform, TPageParam, Selected>;
|
|
145
145
|
export {};
|
|
146
146
|
//# sourceMappingURL=createSuspenseInfiniteQuery.d.ts.map
|