@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.
- package/README.md +83 -14
- package/dist/createInfiniteQuery.d.ts +23 -10
- package/dist/createInfiniteQuery.d.ts.map +1 -1
- package/dist/createInfiniteQuery.js +24 -3
- package/dist/createInfiniteQuery.js.map +1 -1
- package/dist/createMutation.d.ts.map +1 -1
- package/dist/createMutation.js +11 -1
- package/dist/createMutation.js.map +1 -1
- package/dist/createSuspenseInfiniteQuery.d.ts +29 -5
- package/dist/createSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/createSuspenseInfiniteQuery.js +31 -3
- package/dist/createSuspenseInfiniteQuery.js.map +1 -1
- package/dist/hooks/index.d.ts +18 -6
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +15 -6
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts +13 -11
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorInfiniteQuery.js.map +1 -1
- package/dist/hooks/useActorMethod.d.ts +20 -24
- package/dist/hooks/useActorMethod.d.ts.map +1 -1
- package/dist/hooks/useActorMethod.js +29 -18
- package/dist/hooks/useActorMethod.js.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +13 -10
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +1 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +1 -1
- package/package.json +8 -7
- package/src/createActorHooks.ts +146 -0
- package/src/createAuthHooks.ts +137 -0
- package/src/createInfiniteQuery.ts +522 -0
- package/src/createMutation.ts +173 -0
- package/src/createQuery.ts +197 -0
- package/src/createSuspenseInfiniteQuery.ts +556 -0
- package/src/createSuspenseQuery.ts +215 -0
- package/src/hooks/index.ts +93 -0
- package/src/hooks/useActorInfiniteQuery.test.tsx +457 -0
- package/src/hooks/useActorInfiniteQuery.ts +134 -0
- package/src/hooks/useActorMethod.test.tsx +798 -0
- package/src/hooks/useActorMethod.ts +397 -0
- package/src/hooks/useActorMutation.test.tsx +220 -0
- package/src/hooks/useActorMutation.ts +124 -0
- package/src/hooks/useActorQuery.test.tsx +287 -0
- package/src/hooks/useActorQuery.ts +110 -0
- package/src/hooks/useActorSuspenseInfiniteQuery.test.tsx +472 -0
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +137 -0
- package/src/hooks/useActorSuspenseQuery.test.tsx +254 -0
- package/src/hooks/useActorSuspenseQuery.ts +112 -0
- package/src/index.ts +21 -0
- package/src/types.ts +435 -0
- package/src/validation.ts +202 -0
package/README.md
CHANGED
|
@@ -48,17 +48,18 @@ import { idlFactory, type _SERVICE } from "./declarations/my_canister"
|
|
|
48
48
|
// Create query client for caching
|
|
49
49
|
export const queryClient = new QueryClient()
|
|
50
50
|
|
|
51
|
+
// Create client manager (handles identity and agent)
|
|
51
52
|
// Create client manager (handles identity and agent)
|
|
52
53
|
export const clientManager = new ClientManager({
|
|
53
54
|
queryClient,
|
|
54
|
-
|
|
55
|
+
withCanisterEnv: true, // Reads canister IDs from environment/cookies
|
|
55
56
|
})
|
|
56
57
|
|
|
57
58
|
// Create reactor for your canister
|
|
58
59
|
export const backend = new Reactor<_SERVICE>({
|
|
59
60
|
clientManager,
|
|
60
61
|
idlFactory,
|
|
61
|
-
|
|
62
|
+
name: "backend", // Required: explicit name for the reactor
|
|
62
63
|
})
|
|
63
64
|
```
|
|
64
65
|
|
|
@@ -124,14 +125,14 @@ function Greeting() {
|
|
|
124
125
|
|
|
125
126
|
### Reactor vs DisplayReactor
|
|
126
127
|
|
|
127
|
-
| Feature | `Reactor` | `DisplayReactor`
|
|
128
|
-
| ------------- | ---------------- |
|
|
129
|
-
| Types | Raw Candid types | Display-friendly types
|
|
130
|
-
| BigInt | `bigint` | `string`
|
|
131
|
-
| Principal | `Principal` | `string`
|
|
132
|
-
| Vec nat8 | `Uint8Array` | <=
|
|
133
|
-
| Result | Unwrapped | Unwrapped
|
|
134
|
-
| Form-friendly | No | Yes
|
|
128
|
+
| Feature | `Reactor` | `DisplayReactor` |
|
|
129
|
+
| ------------- | ---------------- | ---------------------------- |
|
|
130
|
+
| Types | Raw Candid types | Display-friendly types |
|
|
131
|
+
| BigInt | `bigint` | `string` |
|
|
132
|
+
| Principal | `Principal` | `string` |
|
|
133
|
+
| Vec nat8 | `Uint8Array` | <= 512 bytes: `string` (hex) |
|
|
134
|
+
| Result | Unwrapped | Unwrapped |
|
|
135
|
+
| Form-friendly | No | Yes |
|
|
135
136
|
|
|
136
137
|
```typescript
|
|
137
138
|
import { DisplayReactor } from "@ic-reactor/react"
|
|
@@ -209,6 +210,10 @@ const { data, fetchNextPage, hasNextPage } = useActorInfiniteQuery({
|
|
|
209
210
|
})
|
|
210
211
|
```
|
|
211
212
|
|
|
213
|
+
`createInfiniteQuery(...)` and `createInfiniteQueryFactory(...)` support standard
|
|
214
|
+
TanStack Query infinite-query options at the create level, including
|
|
215
|
+
`refetchInterval`, `refetchOnMount`, `refetchOnWindowFocus`, `retry`, and `gcTime`.
|
|
216
|
+
|
|
212
217
|
## Mutation Examples
|
|
213
218
|
|
|
214
219
|
### Basic Mutation
|
|
@@ -256,10 +261,74 @@ export const getBalance = createSuspenseQueryFactory(backend, {
|
|
|
256
261
|
select: (balance) => `${balance} tokens`,
|
|
257
262
|
})
|
|
258
263
|
|
|
259
|
-
// In component -
|
|
260
|
-
const
|
|
261
|
-
|
|
264
|
+
// In component - create the query instance with args at call time
|
|
265
|
+
const balanceQuery = getBalance([{ owner: userPrincipal, subaccount: [] }])
|
|
266
|
+
const { data } = balanceQuery.useSuspenseQuery()
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Infinite Query Factory (Route/Search Params Safe)
|
|
270
|
+
|
|
271
|
+
Use `getKeyArgs` in the factory config to derive a stable logical identity from
|
|
272
|
+
the first-page args, and keep pagination cursors inside `getArgs(pageParam)`.
|
|
273
|
+
This prevents cache collisions when loaders rerun with different search params.
|
|
274
|
+
|
|
275
|
+
```tsx
|
|
276
|
+
import { createInfiniteQueryFactory } from "@ic-reactor/react"
|
|
277
|
+
|
|
278
|
+
type TodoSearch = {
|
|
279
|
+
filter: "all" | "active" | "completed"
|
|
280
|
+
q: string
|
|
281
|
+
sort: "newest" | "oldest"
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export const makeTodoListQuery = createInfiniteQueryFactory(todoReactor, {
|
|
285
|
+
functionName: "list_todos",
|
|
286
|
+
initialPageParam: 0,
|
|
287
|
+
getKeyArgs: (args) => {
|
|
288
|
+
const [request] = args
|
|
289
|
+
return [
|
|
290
|
+
{
|
|
291
|
+
filter: request.filter,
|
|
292
|
+
q: request.q,
|
|
293
|
+
sort: request.sort,
|
|
294
|
+
},
|
|
295
|
+
]
|
|
296
|
+
},
|
|
297
|
+
getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
262
298
|
})
|
|
299
|
+
|
|
300
|
+
// TanStack Router loader/search-param flow
|
|
301
|
+
export async function loader({ context, deps }: any) {
|
|
302
|
+
const search = deps.search as TodoSearch
|
|
303
|
+
|
|
304
|
+
const todosQuery = makeTodoListQuery((cursor) => [
|
|
305
|
+
{
|
|
306
|
+
cursor,
|
|
307
|
+
limit: 20,
|
|
308
|
+
filter: search.filter,
|
|
309
|
+
q: search.q,
|
|
310
|
+
sort: search.sort,
|
|
311
|
+
},
|
|
312
|
+
])
|
|
313
|
+
|
|
314
|
+
await todosQuery.fetch()
|
|
315
|
+
return { queryKey: todosQuery.getQueryKey() }
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
function TodosPage({ search }: { search: TodoSearch }) {
|
|
319
|
+
const todosQuery = makeTodoListQuery((cursor) => [
|
|
320
|
+
{
|
|
321
|
+
cursor,
|
|
322
|
+
limit: 20,
|
|
323
|
+
filter: search.filter,
|
|
324
|
+
q: search.q,
|
|
325
|
+
sort: search.sort,
|
|
326
|
+
},
|
|
327
|
+
])
|
|
328
|
+
|
|
329
|
+
const { data, fetchNextPage, hasNextPage } = todosQuery.useInfiniteQuery()
|
|
330
|
+
return null
|
|
331
|
+
}
|
|
263
332
|
```
|
|
264
333
|
|
|
265
334
|
## Advanced: Direct Reactor Usage
|
|
@@ -310,7 +379,7 @@ import {
|
|
|
310
379
|
|
|
311
380
|
## Documentation
|
|
312
381
|
|
|
313
|
-
For comprehensive guides and API reference, visit the [documentation site](https://
|
|
382
|
+
For comprehensive guides and API reference, visit the [documentation site](https://ic-reactor.b3pay.net/v3).
|
|
314
383
|
|
|
315
384
|
## License
|
|
316
385
|
|
|
@@ -22,15 +22,21 @@
|
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
24
|
import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, ReactorReturnOk, ReactorReturnErr } from "@ic-reactor/core";
|
|
25
|
-
import { QueryKey, InfiniteData, UseInfiniteQueryResult, UseInfiniteQueryOptions } from "@tanstack/react-query";
|
|
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<A, M extends FunctionName<A>, T extends TransformKey, TPageParam, TSelected> = {
|
|
29
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>): InfiniteQueryResult<InfiniteQueryPageData<A, M, T>, TPageParam, TSelected, InfiniteQueryError<A, M, T>>;
|
|
30
|
+
};
|
|
28
31
|
/** The raw page data type returned by the query function */
|
|
29
32
|
export type InfiniteQueryPageData<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = ReactorReturnOk<A, M, T>;
|
|
30
33
|
/** The error type for infinite queries */
|
|
31
34
|
export type InfiniteQueryError<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = ReactorReturnErr<A, M, T>;
|
|
32
35
|
/**
|
|
33
36
|
* Configuration for createActorInfiniteQuery.
|
|
37
|
+
* Extends InfiniteQueryObserverOptions to accept standard TanStack Query
|
|
38
|
+
* infinite-query options at the create level (e.g. refetchInterval,
|
|
39
|
+
* refetchOnMount, refetchOnWindowFocus, retry, gcTime, networkMode).
|
|
34
40
|
*
|
|
35
41
|
* @template A - The actor interface type
|
|
36
42
|
* @template M - The method name on the actor
|
|
@@ -38,7 +44,7 @@ export type InfiniteQueryError<A = BaseActor, M extends FunctionName<A> = Functi
|
|
|
38
44
|
* @template TPageParam - The type of the page parameter
|
|
39
45
|
* @template TSelected - The type returned after select transformation
|
|
40
46
|
*/
|
|
41
|
-
export interface InfiniteQueryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>> {
|
|
47
|
+
export interface InfiniteQueryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>> extends Omit<InfiniteQueryObserverOptions<InfiniteQueryPageData<A, M, T>, InfiniteQueryError<A, M, T>, TSelected, QueryKey, TPageParam>, "queryKey" | "queryFn"> {
|
|
42
48
|
/** The method to call on the canister */
|
|
43
49
|
functionName: M;
|
|
44
50
|
/** Call configuration for the actor method */
|
|
@@ -53,17 +59,19 @@ export interface InfiniteQueryConfig<A = BaseActor, M extends FunctionName<A> =
|
|
|
53
59
|
getNextPageParam: (lastPage: InfiniteQueryPageData<A, M, T>, allPages: InfiniteQueryPageData<A, M, T>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
54
60
|
/** Function to determine previous page parameter (for bi-directional) */
|
|
55
61
|
getPreviousPageParam?: (firstPage: InfiniteQueryPageData<A, M, T>, allPages: InfiniteQueryPageData<A, M, T>[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
56
|
-
/** Maximum number of pages to keep in cache */
|
|
57
|
-
maxPages?: number;
|
|
58
|
-
/** How long data stays fresh before becoming stale (default: 5 min) */
|
|
59
|
-
staleTime?: number;
|
|
60
|
-
/** Transform the raw InfiniteData result before returning */
|
|
61
|
-
select?: (data: InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>) => TSelected;
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Configuration for createActorInfiniteQueryFactory (without initialPageParam, getArgs determined at call time).
|
|
65
65
|
*/
|
|
66
|
-
export type InfiniteQueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>> = Omit<InfiniteQueryConfig<A, M, T, TPageParam, TSelected>, "getArgs"
|
|
66
|
+
export type InfiniteQueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>> = Omit<InfiniteQueryConfig<A, M, T, TPageParam, TSelected>, "getArgs"> & {
|
|
67
|
+
/**
|
|
68
|
+
* Optional key-args derivation for factory calls.
|
|
69
|
+
* Receives the resolved args from `getArgs(initialPageParam)` and should return
|
|
70
|
+
* a stable serializable representation of the logical query identity
|
|
71
|
+
* (typically excluding pagination/cursor fields).
|
|
72
|
+
*/
|
|
73
|
+
getKeyArgs?: (args: ReactorArgs<A, M, T>) => unknown;
|
|
74
|
+
};
|
|
67
75
|
/**
|
|
68
76
|
* useInfiniteQuery hook with chained select support.
|
|
69
77
|
*/
|
|
@@ -118,6 +126,10 @@ export declare function createInfiniteQuery<A, T extends TransformKey, M extends
|
|
|
118
126
|
* const getPostsQuery = createActorInfiniteQueryFactory(reactor, {
|
|
119
127
|
* functionName: "get_posts",
|
|
120
128
|
* initialPageParam: 0,
|
|
129
|
+
* getKeyArgs: (args) => {
|
|
130
|
+
* const [{ userId }] = args
|
|
131
|
+
* return [{ userId }]
|
|
132
|
+
* },
|
|
121
133
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
122
134
|
* })
|
|
123
135
|
*
|
|
@@ -125,5 +137,6 @@ export declare function createInfiniteQuery<A, T extends TransformKey, M extends
|
|
|
125
137
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
126
138
|
* const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
|
|
127
139
|
*/
|
|
128
|
-
export declare function createInfiniteQueryFactory<A, T extends TransformKey, M extends FunctionName<A> = FunctionName<A>, TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>>(reactor: Reactor<A, T>, config: InfiniteQueryFactoryConfig<NoInfer<A>, M, T, TPageParam, TSelected>):
|
|
140
|
+
export declare function createInfiniteQueryFactory<A, T extends TransformKey, M extends FunctionName<A> = FunctionName<A>, TPageParam = unknown, TSelected = InfiniteData<InfiniteQueryPageData<A, M, T>, TPageParam>>(reactor: Reactor<A, T>, config: InfiniteQueryFactoryConfig<NoInfer<A>, M, T, TPageParam, TSelected>): InfiniteQueryFactoryFn<A, M, T, TPageParam, TSelected>;
|
|
141
|
+
export {};
|
|
129
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,
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,11 +22,22 @@
|
|
|
22
22
|
* postsQuery.invalidate()
|
|
23
23
|
*/
|
|
24
24
|
import { useInfiniteQuery, } from "@tanstack/react-query";
|
|
25
|
+
const FACTORY_KEY_ARGS_QUERY_KEY = "__ic_reactor_factory_key_args";
|
|
26
|
+
const mergeFactoryQueryKey = (baseQueryKey, keyArgs) => {
|
|
27
|
+
const merged = [];
|
|
28
|
+
if (baseQueryKey) {
|
|
29
|
+
merged.push(...baseQueryKey);
|
|
30
|
+
}
|
|
31
|
+
if (keyArgs !== undefined) {
|
|
32
|
+
merged.push({ [FACTORY_KEY_ARGS_QUERY_KEY]: keyArgs });
|
|
33
|
+
}
|
|
34
|
+
return merged.length > 0 ? merged : undefined;
|
|
35
|
+
};
|
|
25
36
|
// ============================================================================
|
|
26
37
|
// Internal Implementation
|
|
27
38
|
// ============================================================================
|
|
28
39
|
const createInfiniteQueryImpl = (reactor, config) => {
|
|
29
|
-
const { functionName, callConfig, queryKey: customQueryKey, initialPageParam, getArgs, getNextPageParam, getPreviousPageParam, maxPages, staleTime = 5 * 60 * 1000, select, } = config;
|
|
40
|
+
const { functionName, callConfig, queryKey: customQueryKey, initialPageParam, getArgs, getNextPageParam, getPreviousPageParam, maxPages, staleTime = 5 * 60 * 1000, select, ...rest } = config;
|
|
30
41
|
// Get query key from actor manager
|
|
31
42
|
const getQueryKey = () => {
|
|
32
43
|
return reactor.generateQueryKey({
|
|
@@ -83,6 +94,7 @@ const createInfiniteQueryImpl = (reactor, config) => {
|
|
|
83
94
|
getPreviousPageParam,
|
|
84
95
|
maxPages,
|
|
85
96
|
staleTime,
|
|
97
|
+
...rest,
|
|
86
98
|
...options,
|
|
87
99
|
select: chainedSelect,
|
|
88
100
|
}, reactor.queryClient);
|
|
@@ -142,6 +154,10 @@ export function createInfiniteQuery(reactor, config) {
|
|
|
142
154
|
* const getPostsQuery = createActorInfiniteQueryFactory(reactor, {
|
|
143
155
|
* functionName: "get_posts",
|
|
144
156
|
* initialPageParam: 0,
|
|
157
|
+
* getKeyArgs: (args) => {
|
|
158
|
+
* const [{ userId }] = args
|
|
159
|
+
* return [{ userId }]
|
|
160
|
+
* },
|
|
145
161
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
146
162
|
* })
|
|
147
163
|
*
|
|
@@ -150,11 +166,16 @@ export function createInfiniteQuery(reactor, config) {
|
|
|
150
166
|
* const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
|
|
151
167
|
*/
|
|
152
168
|
export function createInfiniteQueryFactory(reactor, config) {
|
|
153
|
-
|
|
169
|
+
const factory = (getArgs) => {
|
|
170
|
+
const initialArgs = getArgs(config.initialPageParam);
|
|
171
|
+
const keyArgs = config.getKeyArgs?.(initialArgs) ?? initialArgs;
|
|
172
|
+
const queryKey = mergeFactoryQueryKey(config.queryKey, keyArgs);
|
|
154
173
|
return createInfiniteQueryImpl(reactor, {
|
|
155
|
-
...config,
|
|
174
|
+
...(({ getKeyArgs: _getKeyArgs, ...rest }) => rest)(config),
|
|
175
|
+
queryKey,
|
|
156
176
|
getArgs,
|
|
157
177
|
});
|
|
158
178
|
};
|
|
179
|
+
return factory;
|
|
159
180
|
}
|
|
160
181
|
//# sourceMappingURL=createInfiniteQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,EAEL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createInfiniteQuery.js","sourceRoot":"","sources":["../src/createInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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;
|
|
1
|
+
{"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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;AAqIhB,wBAAgB,cAAc,CAC5B,CAAC,EACD,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAE3C,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACvC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAEzB"}
|
package/dist/createMutation.js
CHANGED
|
@@ -22,17 +22,27 @@ const createMutationImpl = (reactor, config) => {
|
|
|
22
22
|
const { functionName, callConfig, invalidateQueries: factoryInvalidateQueries, onSuccess: factoryOnSuccess, onCanisterError: factoryOnCanisterError, onError: factoryOnError, ...factoryOptions } = config;
|
|
23
23
|
// Direct execution function
|
|
24
24
|
const execute = async (args) => {
|
|
25
|
-
|
|
25
|
+
const result = await reactor.callMethod({
|
|
26
26
|
functionName,
|
|
27
27
|
args,
|
|
28
28
|
callConfig,
|
|
29
29
|
});
|
|
30
|
+
if (factoryInvalidateQueries) {
|
|
31
|
+
await Promise.all(factoryInvalidateQueries.map((queryKey) => {
|
|
32
|
+
return reactor.queryClient.invalidateQueries({ queryKey });
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
30
36
|
};
|
|
31
37
|
// Hook implementation
|
|
32
38
|
const useMutationHook = (options) => {
|
|
39
|
+
const baseOptions = reactor.getQueryOptions({
|
|
40
|
+
functionName,
|
|
41
|
+
});
|
|
33
42
|
// Extract our custom options
|
|
34
43
|
const { invalidateQueries: hookInvalidateQueries, onCanisterError: hookOnCanisterError, ...restOptions } = options || {};
|
|
35
44
|
return useMutation({
|
|
45
|
+
mutationKey: baseOptions.queryKey,
|
|
36
46
|
...factoryOptions,
|
|
37
47
|
...restOptions,
|
|
38
48
|
mutationFn: execute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMutation.js","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAQnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAQlD,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,CAKzB,OAAsB,EACtB,MAA+B,EACN,EAAE;IAC3B,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,sBAAsB,EACvC,OAAO,EAAE,cAAc,EACvB,GAAG,cAAc,EAClB,GAAG,MAAM,CAAA;IAEV,4BAA4B;IAC5B,MAAM,OAAO,GAAG,KAAK,EACnB,IAA0B,EACS,EAAE;QACrC,
|
|
1
|
+
{"version":3,"file":"createMutation.js","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAQnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAQlD,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,CAKzB,OAAsB,EACtB,MAA+B,EACN,EAAE;IAC3B,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,sBAAsB,EACvC,OAAO,EAAE,cAAc,EACvB,GAAG,cAAc,EAClB,GAAG,MAAM,CAAA;IAEV,4BAA4B;IAC5B,MAAM,OAAO,GAAG,KAAK,EACnB,IAA0B,EACS,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACtC,YAAY;YACZ,IAAI;YACJ,UAAU;SACX,CAAC,CAAA;QAEF,IAAI,wBAAwB,EAAE,CAAC;YAC7B,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxC,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC5D,CAAC,CAAC,CACH,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,sBAAsB;IACtB,MAAM,eAAe,GAAG,CAAC,OAAsC,EAAE,EAAE;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;YAC1C,YAAY;SACb,CAAC,CAAA;QACF,6BAA6B;QAC7B,MAAM,EACJ,iBAAiB,EAAE,qBAAqB,EACxC,eAAe,EAAE,mBAAmB,EACpC,GAAG,WAAW,EACf,GAAG,OAAO,IAAI,EAAE,CAAA;QAEjB,OAAO,WAAW,CAChB;YACE,WAAW,EAAE,WAAW,CAAC,QAAQ;YACjC,GAAG,cAAc;YACjB,GAAG,WAAW;YACd,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;gBAC3B,4CAA4C;gBAC5C,IAAI,wBAAwB,EAAE,CAAC;oBAC7B,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACxC,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;oBAC5D,CAAC,CAAC,CACH,CAAA;gBACH,CAAC;gBAED,yCAAyC;gBACzC,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,MAAM,OAAO,CAAC,GAAG,CACf,qBAAqB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACrC,IAAI,QAAQ,EAAE,CAAC;4BACb,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;wBAC5D,CAAC;wBACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;oBAC1B,CAAC,CAAC,CACH,CAAA;gBACH,CAAC;gBAED,4BAA4B;gBAC5B,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAA;gBACjC,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,WAAW,EAAE,SAAS,EAAE,CAAC;oBAC3B,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;gBAC/C,4DAA4D;gBAC5D,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,wCAAwC;oBACxC,IAAI,sBAAsB,EAAE,CAAC;wBAC3B,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;oBAC1C,CAAC;oBACD,qCAAqC;oBACrC,IAAI,mBAAmB,EAAE,CAAC;wBACxB,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAED,iDAAiD;gBACjD,IAAI,cAAc,EAAE,CAAC;oBACnB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;gBACrD,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;oBACzB,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC1D,CAAC;YACH,CAAC;SACF,EACD,OAAO,CAAC,WAAW,CACpB,CAAA;IACH,CAAC,CAAA;IAED,OAAO;QACL,WAAW,EAAE,eAAe;QAC5B,OAAO;KACR,CAAA;AACH,CAAC,CAAA;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,UAAU,cAAc,CAK5B,OAAsB,EACtB,MAAwC;IAExC,OAAO,kBAAkB,CAAC,OAAO,EAAE,MAAiC,CAAC,CAAA;AACvE,CAAC"}
|
|
@@ -27,6 +27,13 @@ import type { Reactor, FunctionName, ReactorArgs, BaseActor, TransformKey, React
|
|
|
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
|
+
type SuspenseInfiniteFactoryCallOptions = {
|
|
31
|
+
queryKey?: QueryKey;
|
|
32
|
+
};
|
|
33
|
+
type SuspenseInfiniteQueryFactoryFn<A, M extends FunctionName<A>, T extends TransformKey, TPageParam, TSelected> = {
|
|
34
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>): SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam, TSelected, SuspenseInfiniteQueryError<A, M, T>>;
|
|
35
|
+
(getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>, options?: SuspenseInfiniteFactoryCallOptions): SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam, TSelected, SuspenseInfiniteQueryError<A, M, T>>;
|
|
36
|
+
};
|
|
30
37
|
/** The raw page data type returned by the query function */
|
|
31
38
|
export type SuspenseInfiniteQueryPageData<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid"> = ReactorReturnOk<A, M, T>;
|
|
32
39
|
/** The error type for infinite queries */
|
|
@@ -52,9 +59,17 @@ export interface SuspenseInfiniteQueryConfig<A = BaseActor, M extends FunctionNa
|
|
|
52
59
|
getArgs: (pageParam: TPageParam) => ReactorArgs<A, M, T>;
|
|
53
60
|
}
|
|
54
61
|
/**
|
|
55
|
-
* Configuration for createActorSuspenseInfiniteQueryFactory (without
|
|
62
|
+
* Configuration for createActorSuspenseInfiniteQueryFactory (without getArgs; provided at call time).
|
|
56
63
|
*/
|
|
57
|
-
export type SuspenseInfiniteQueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam>> = Omit<SuspenseInfiniteQueryConfig<A, M, T, TPageParam, TSelected>, "getArgs"
|
|
64
|
+
export type SuspenseInfiniteQueryFactoryConfig<A = BaseActor, M extends FunctionName<A> = FunctionName<A>, T extends TransformKey = "candid", TPageParam = unknown, TSelected = InfiniteData<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam>> = Omit<SuspenseInfiniteQueryConfig<A, M, T, TPageParam, TSelected>, "getArgs"> & {
|
|
65
|
+
/**
|
|
66
|
+
* Optional key-args derivation for factory calls.
|
|
67
|
+
* Receives the resolved args from `getArgs(initialPageParam)` and should return
|
|
68
|
+
* a stable serializable representation of the logical query identity
|
|
69
|
+
* (typically excluding pagination/cursor fields).
|
|
70
|
+
*/
|
|
71
|
+
getKeyArgs?: (args: ReactorArgs<A, M, T>) => unknown;
|
|
72
|
+
};
|
|
58
73
|
/**
|
|
59
74
|
* useSuspenseInfiniteQuery hook with chained select support.
|
|
60
75
|
*/
|
|
@@ -109,14 +124,23 @@ export declare function createSuspenseInfiniteQuery<A, T extends TransformKey, M
|
|
|
109
124
|
* const getPostsQuery = createActorSuspenseInfiniteQueryFactory(reactor, {
|
|
110
125
|
* functionName: "get_posts",
|
|
111
126
|
* initialPageParam: 0,
|
|
127
|
+
* getKeyArgs: (args) => {
|
|
128
|
+
* const [{ userId }] = args
|
|
129
|
+
* return [{ userId }]
|
|
130
|
+
* },
|
|
112
131
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
113
132
|
* })
|
|
114
133
|
*
|
|
115
134
|
* // Create query with specific args builder
|
|
116
135
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
117
136
|
* const { data, fetchNextPage } = userPostsQuery.useSuspenseInfiniteQuery()
|
|
137
|
+
*
|
|
138
|
+
* // Optional: append a manual query-key suffix in addition to auto key args
|
|
139
|
+
* const scopedPostsQuery = getPostsQuery(
|
|
140
|
+
* (cursor) => [{ userId, cursor, limit: 10 }],
|
|
141
|
+
* { queryKey: ["v2"] }
|
|
142
|
+
* )
|
|
118
143
|
*/
|
|
119
|
-
export declare function createSuspenseInfiniteQueryFactory<A, T extends TransformKey, M extends FunctionName<A> = FunctionName<A>, TPageParam = unknown, TSelected = InfiniteData<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam>>(reactor: Reactor<A, T>, config: SuspenseInfiniteQueryFactoryConfig<NoInfer<A>, M, T, TPageParam, TSelected>):
|
|
120
|
-
|
|
121
|
-
}) => SuspenseInfiniteQueryResult<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam, TSelected, SuspenseInfiniteQueryError<A, M, T>>;
|
|
144
|
+
export declare function createSuspenseInfiniteQueryFactory<A, T extends TransformKey, M extends FunctionName<A> = FunctionName<A>, TPageParam = unknown, TSelected = InfiniteData<SuspenseInfiniteQueryPageData<A, M, T>, TPageParam>>(reactor: Reactor<A, T>, config: SuspenseInfiniteQueryFactoryConfig<NoInfer<A>, M, T, TPageParam, TSelected>): SuspenseInfiniteQueryFactoryFn<A, M, T, TPageParam, TSelected>;
|
|
145
|
+
export {};
|
|
122
146
|
//# sourceMappingURL=createSuspenseInfiniteQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;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,8BAA8B,EAC9B,+BAA+B,EAG/B,4BAA4B,EAC7B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"createSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,20 @@
|
|
|
24
24
|
* const allPosts = data.pages.flatMap(page => page.posts)
|
|
25
25
|
*/
|
|
26
26
|
import { useSuspenseInfiniteQuery, } from "@tanstack/react-query";
|
|
27
|
+
const FACTORY_KEY_ARGS_QUERY_KEY = "__ic_reactor_factory_key_args";
|
|
28
|
+
const mergeFactoryQueryKey = (baseQueryKey, callQueryKey, keyArgs) => {
|
|
29
|
+
const merged = [];
|
|
30
|
+
if (baseQueryKey) {
|
|
31
|
+
merged.push(...baseQueryKey);
|
|
32
|
+
}
|
|
33
|
+
if (callQueryKey) {
|
|
34
|
+
merged.push(...callQueryKey);
|
|
35
|
+
}
|
|
36
|
+
if (keyArgs !== undefined) {
|
|
37
|
+
merged.push({ [FACTORY_KEY_ARGS_QUERY_KEY]: keyArgs });
|
|
38
|
+
}
|
|
39
|
+
return merged.length > 0 ? merged : undefined;
|
|
40
|
+
};
|
|
27
41
|
// ============================================================================
|
|
28
42
|
// Internal Implementation
|
|
29
43
|
// ============================================================================
|
|
@@ -141,20 +155,34 @@ export function createSuspenseInfiniteQuery(reactor, config) {
|
|
|
141
155
|
* const getPostsQuery = createActorSuspenseInfiniteQueryFactory(reactor, {
|
|
142
156
|
* functionName: "get_posts",
|
|
143
157
|
* initialPageParam: 0,
|
|
158
|
+
* getKeyArgs: (args) => {
|
|
159
|
+
* const [{ userId }] = args
|
|
160
|
+
* return [{ userId }]
|
|
161
|
+
* },
|
|
144
162
|
* getNextPageParam: (lastPage) => lastPage.nextCursor,
|
|
145
163
|
* })
|
|
146
164
|
*
|
|
147
165
|
* // Create query with specific args builder
|
|
148
166
|
* const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
|
|
149
167
|
* const { data, fetchNextPage } = userPostsQuery.useSuspenseInfiniteQuery()
|
|
168
|
+
*
|
|
169
|
+
* // Optional: append a manual query-key suffix in addition to auto key args
|
|
170
|
+
* const scopedPostsQuery = getPostsQuery(
|
|
171
|
+
* (cursor) => [{ userId, cursor, limit: 10 }],
|
|
172
|
+
* { queryKey: ["v2"] }
|
|
173
|
+
* )
|
|
150
174
|
*/
|
|
151
175
|
export function createSuspenseInfiniteQueryFactory(reactor, config) {
|
|
152
|
-
|
|
176
|
+
const factory = (getArgs, options) => {
|
|
177
|
+
const initialArgs = getArgs(config.initialPageParam);
|
|
178
|
+
const keyArgs = config.getKeyArgs?.(initialArgs) ?? initialArgs;
|
|
179
|
+
const queryKey = mergeFactoryQueryKey(config.queryKey, options?.queryKey, keyArgs);
|
|
153
180
|
return createSuspenseInfiniteQueryImpl(reactor, {
|
|
154
|
-
...config,
|
|
155
|
-
|
|
181
|
+
...(({ getKeyArgs: _getKeyArgs, ...rest }) => rest)(config),
|
|
182
|
+
queryKey,
|
|
156
183
|
getArgs,
|
|
157
184
|
});
|
|
158
185
|
};
|
|
186
|
+
return factory;
|
|
159
187
|
}
|
|
160
188
|
//# sourceMappingURL=createSuspenseInfiniteQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,EAEL,wBAAwB,GAOzB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"createSuspenseInfiniteQuery.js","sourceRoot":"","sources":["../src/createSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
export { useActorQuery as useReactorQuery } from "./useActorQuery";
|
|
2
|
-
export { useActorMutation as useReactorMutation } from "./useActorMutation";
|
|
3
|
-
export { useActorSuspenseQuery as useReactorSuspenseQuery } from "./useActorSuspenseQuery";
|
|
4
|
-
export { useActorInfiniteQuery as useReactorInfiniteQuery } from "./useActorInfiniteQuery";
|
|
5
|
-
export { useActorSuspenseInfiniteQuery as useReactorSuspenseInfiniteQuery } from "./useActorSuspenseInfiniteQuery";
|
|
6
|
-
export { useActorMethod, useActorMethod as useReactorMethod, } from "./useActorMethod";
|
|
1
|
+
export { useActorQuery as useReactorQuery } from "./useActorQuery.js";
|
|
2
|
+
export { useActorMutation as useReactorMutation } from "./useActorMutation.js";
|
|
3
|
+
export { useActorSuspenseQuery as useReactorSuspenseQuery } from "./useActorSuspenseQuery.js";
|
|
4
|
+
export { useActorInfiniteQuery as useReactorInfiniteQuery } from "./useActorInfiniteQuery.js";
|
|
5
|
+
export { useActorSuspenseInfiniteQuery as useReactorSuspenseInfiniteQuery } from "./useActorSuspenseInfiniteQuery.js";
|
|
6
|
+
export { useActorMethod, useActorMethod as useReactorMethod, createActorMethodHooks, } from "./useActorMethod.js";
|
|
7
|
+
export type { UseActorQueryParameters as UseReactorQueryParameters, UseActorQueryResult as UseReactorQueryResult, } from "./useActorQuery.js";
|
|
8
|
+
export type { UseActorMutationParameters as UseReactorMutationParameters, UseActorMutationResult as UseReactorMutationResult, } from "./useActorMutation.js";
|
|
9
|
+
export type { UseActorSuspenseQueryParameters as UseReactorSuspenseQueryParameters, UseActorSuspenseQueryResult as UseReactorSuspenseQueryResult, } from "./useActorSuspenseQuery.js";
|
|
10
|
+
export type { UseActorInfiniteQueryParameters as UseReactorInfiniteQueryParameters, UseActorInfiniteQueryResult as UseReactorInfiniteQueryResult, } from "./useActorInfiniteQuery.js";
|
|
11
|
+
export type { UseActorSuspenseInfiniteQueryParameters as UseReactorSuspenseInfiniteQueryParameters, UseActorSuspenseInfiniteQueryResult as UseReactorSuspenseInfiniteQueryResult, } from "./useActorSuspenseInfiniteQuery.js";
|
|
12
|
+
export type { UseActorMethodParameters as UseReactorMethodParameters, UseActorMethodResult as UseReactorMethodResult, } from "./useActorMethod.js";
|
|
13
|
+
export type { UseActorQueryConfig as UseActorQueryParameters, UseActorQueryResult, } from "./useActorQuery.js";
|
|
14
|
+
export type { UseActorMutationConfig as UseActorMutationParameters, UseActorMutationResult, } from "./useActorMutation.js";
|
|
15
|
+
export type { UseActorSuspenseQueryConfig as UseActorSuspenseQueryParameters, UseActorSuspenseQueryResult, } from "./useActorSuspenseQuery.js";
|
|
16
|
+
export type { UseActorInfiniteQueryConfig as UseActorInfiniteQueryParameters, UseActorInfiniteQueryResult, } from "./useActorInfiniteQuery.js";
|
|
17
|
+
export type { UseActorSuspenseInfiniteQueryConfig as UseActorSuspenseInfiniteQueryParameters, UseActorSuspenseInfiniteQueryResult, } from "./useActorSuspenseInfiniteQuery.js";
|
|
18
|
+
export type { UseActorMethodConfig as UseActorMethodParameters, UseActorMethodResult, } from "./useActorMethod.js";
|
|
7
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGrE,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG9E,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAG7F,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAGrH,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAM5B,YAAY,EACV,uBAAuB,IAAI,yBAAyB,EACpD,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,0BAA0B,IAAI,4BAA4B,EAC1D,sBAAsB,IAAI,wBAAwB,GACnD,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,+BAA+B,IAAI,iCAAiC,EACpE,2BAA2B,IAAI,6BAA6B,GAC7D,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,+BAA+B,IAAI,iCAAiC,EACpE,2BAA2B,IAAI,6BAA6B,GAC7D,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,uCAAuC,IAAI,yCAAyC,EACpF,mCAAmC,IAAI,qCAAqC,GAC7E,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EACV,wBAAwB,IAAI,0BAA0B,EACtD,oBAAoB,IAAI,sBAAsB,GAC/C,MAAM,qBAAqB,CAAA;AAM5B,YAAY,EACV,mBAAmB,IAAI,uBAAuB,EAC9C,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,sBAAsB,IAAI,0BAA0B,EACpD,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,2BAA2B,IAAI,+BAA+B,EAC9D,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,2BAA2B,IAAI,+BAA+B,EAC9D,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,YAAY,EACV,mCAAmC,IAAI,uCAAuC,EAC9E,mCAAmC,GACpC,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EACV,oBAAoB,IAAI,wBAAwB,EAChD,oBAAoB,GACrB,MAAM,qBAAqB,CAAA"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Hooks
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// useActorQuery / useReactorQuery
|
|
5
|
+
export { useActorQuery as useReactorQuery } from "./useActorQuery.js";
|
|
6
|
+
// useActorMutation / useReactorMutation
|
|
7
|
+
export { useActorMutation as useReactorMutation } from "./useActorMutation.js";
|
|
8
|
+
// useActorSuspenseQuery / useReactorSuspenseQuery
|
|
9
|
+
export { useActorSuspenseQuery as useReactorSuspenseQuery } from "./useActorSuspenseQuery.js";
|
|
10
|
+
// useActorInfiniteQuery / useReactorInfiniteQuery
|
|
11
|
+
export { useActorInfiniteQuery as useReactorInfiniteQuery } from "./useActorInfiniteQuery.js";
|
|
12
|
+
// useActorSuspenseInfiniteQuery / useReactorSuspenseInfiniteQuery
|
|
13
|
+
export { useActorSuspenseInfiniteQuery as useReactorSuspenseInfiniteQuery } from "./useActorSuspenseInfiniteQuery.js";
|
|
14
|
+
// useActorMethod / useReactorMethod
|
|
15
|
+
export { useActorMethod, useActorMethod as useReactorMethod, createActorMethodHooks, } from "./useActorMethod.js";
|
|
7
16
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,kCAAkC;AAClC,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAErE,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE9E,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAE7F,kEAAkE;AAClE,OAAO,EAAE,6BAA6B,IAAI,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AAErH,oCAAoC;AACpC,OAAO,EACL,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,sBAAsB,GACvB,MAAM,qBAAqB,CAAA"}
|