@ic-reactor/react 3.12.5 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -423
- package/dist/index.d.ts +259 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +470 -17
- package/dist/index.js.map +1 -1
- package/llms.txt +82 -54
- package/package.json +12 -28
- package/src/index.tsx +611 -0
- package/dist/auth/authentication-manager.d.ts +0 -123
- package/dist/auth/authentication-manager.d.ts.map +0 -1
- package/dist/auth/authentication-manager.js +0 -767
- package/dist/auth/authentication-manager.js.map +0 -1
- package/dist/auth/constants.d.ts +0 -24
- package/dist/auth/constants.d.ts.map +0 -1
- package/dist/auth/constants.js +0 -24
- package/dist/auth/constants.js.map +0 -1
- package/dist/auth/createIdentityAttributeHooks.d.ts +0 -14
- package/dist/auth/createIdentityAttributeHooks.d.ts.map +0 -1
- package/dist/auth/createIdentityAttributeHooks.js +0 -106
- package/dist/auth/createIdentityAttributeHooks.js.map +0 -1
- package/dist/auth/identity-attributes-manager.d.ts +0 -26
- package/dist/auth/identity-attributes-manager.d.ts.map +0 -1
- package/dist/auth/identity-attributes-manager.js +0 -107
- package/dist/auth/identity-attributes-manager.js.map +0 -1
- package/dist/auth/identity-attributes.d.ts +0 -19
- package/dist/auth/identity-attributes.d.ts.map +0 -1
- package/dist/auth/identity-attributes.js +0 -170
- package/dist/auth/identity-attributes.js.map +0 -1
- package/dist/auth/index.d.ts +0 -8
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -8
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/local-ii-probe.d.ts +0 -46
- package/dist/auth/local-ii-probe.d.ts.map +0 -1
- package/dist/auth/local-ii-probe.js +0 -102
- package/dist/auth/local-ii-probe.js.map +0 -1
- package/dist/auth/types.d.ts +0 -179
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -2
- package/dist/auth/types.js.map +0 -1
- package/dist/createActorHooks.d.ts +0 -52
- package/dist/createActorHooks.d.ts.map +0 -1
- package/dist/createActorHooks.js +0 -17
- package/dist/createActorHooks.js.map +0 -1
- package/dist/createInfiniteQuery.d.ts +0 -144
- package/dist/createInfiniteQuery.d.ts.map +0 -1
- package/dist/createInfiniteQuery.js +0 -174
- package/dist/createInfiniteQuery.js.map +0 -1
- package/dist/createMutation.d.ts +0 -30
- package/dist/createMutation.d.ts.map +0 -1
- package/dist/createMutation.js +0 -192
- package/dist/createMutation.js.map +0 -1
- package/dist/createQuery.d.ts +0 -30
- package/dist/createQuery.d.ts.map +0 -1
- package/dist/createQuery.js +0 -117
- package/dist/createQuery.js.map +0 -1
- package/dist/createSuspenseInfiniteQuery.d.ts +0 -147
- package/dist/createSuspenseInfiniteQuery.d.ts.map +0 -1
- package/dist/createSuspenseInfiniteQuery.js +0 -177
- package/dist/createSuspenseInfiniteQuery.js.map +0 -1
- package/dist/createSuspenseQuery.d.ts +0 -25
- package/dist/createSuspenseQuery.d.ts.map +0 -1
- package/dist/createSuspenseQuery.js +0 -111
- package/dist/createSuspenseQuery.js.map +0 -1
- package/dist/defineReactor.d.ts +0 -125
- package/dist/defineReactor.d.ts.map +0 -1
- package/dist/defineReactor.js +0 -180
- package/dist/defineReactor.js.map +0 -1
- package/dist/hooks/createAuthHooks.d.ts +0 -43
- package/dist/hooks/createAuthHooks.d.ts.map +0 -1
- package/dist/hooks/createAuthHooks.js +0 -131
- package/dist/hooks/createAuthHooks.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -21
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -24
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useActorInfiniteQuery.d.ts +0 -39
- package/dist/hooks/useActorInfiniteQuery.d.ts.map +0 -1
- package/dist/hooks/useActorInfiniteQuery.js +0 -56
- package/dist/hooks/useActorInfiniteQuery.js.map +0 -1
- package/dist/hooks/useActorMethod.d.ts +0 -115
- package/dist/hooks/useActorMethod.d.ts.map +0 -1
- package/dist/hooks/useActorMethod.js +0 -250
- package/dist/hooks/useActorMethod.js.map +0 -1
- package/dist/hooks/useActorMutation.d.ts +0 -48
- package/dist/hooks/useActorMutation.d.ts.map +0 -1
- package/dist/hooks/useActorMutation.js +0 -69
- package/dist/hooks/useActorMutation.js.map +0 -1
- package/dist/hooks/useActorQuery.d.ts +0 -32
- package/dist/hooks/useActorQuery.d.ts.map +0 -1
- package/dist/hooks/useActorQuery.js +0 -46
- package/dist/hooks/useActorQuery.js.map +0 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts +0 -39
- package/dist/hooks/useActorSuspenseInfiniteQuery.d.ts.map +0 -1
- package/dist/hooks/useActorSuspenseInfiniteQuery.js +0 -56
- package/dist/hooks/useActorSuspenseInfiniteQuery.js.map +0 -1
- package/dist/hooks/useActorSuspenseQuery.d.ts +0 -32
- package/dist/hooks/useActorSuspenseQuery.d.ts.map +0 -1
- package/dist/hooks/useActorSuspenseQuery.js +0 -47
- package/dist/hooks/useActorSuspenseQuery.js.map +0 -1
- package/dist/types.d.ts +0 -270
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -51
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -105
- package/dist/utils.js.map +0 -1
- package/dist/validation.d.ts +0 -131
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -125
- package/dist/validation.js.map +0 -1
- package/src/auth/authentication-manager.ts +0 -860
- package/src/auth/constants.ts +0 -32
- package/src/auth/createIdentityAttributeHooks.ts +0 -143
- package/src/auth/identity-attributes-manager.ts +0 -131
- package/src/auth/identity-attributes.ts +0 -270
- package/src/auth/index.ts +0 -7
- package/src/auth/local-ii-probe.ts +0 -147
- package/src/auth/types.ts +0 -200
- package/src/createActorHooks.ts +0 -220
- package/src/createInfiniteQuery.ts +0 -578
- package/src/createMutation.ts +0 -341
- package/src/createQuery.ts +0 -237
- package/src/createSuspenseInfiniteQuery.ts +0 -601
- package/src/createSuspenseQuery.ts +0 -234
- package/src/defineReactor.ts +0 -324
- package/src/hooks/createAuthHooks.ts +0 -189
- package/src/hooks/index.ts +0 -103
- package/src/hooks/useActorInfiniteQuery.ts +0 -205
- package/src/hooks/useActorMethod.ts +0 -507
- package/src/hooks/useActorMutation.ts +0 -205
- package/src/hooks/useActorQuery.ts +0 -124
- package/src/hooks/useActorSuspenseInfiniteQuery.ts +0 -205
- package/src/hooks/useActorSuspenseQuery.ts +0 -132
- package/src/index.ts +0 -23
- package/src/types.ts +0 -499
- package/src/utils.ts +0 -121
- package/src/validation.ts +0 -202
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { QueryKey, UseSuspenseInfiniteQueryResult, UseSuspenseInfiniteQueryOptions, InfiniteData } from "@tanstack/react-query";
|
|
2
|
-
import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
3
|
-
import { CallConfig } from "@icp-sdk/core/agent";
|
|
4
|
-
/**
|
|
5
|
-
* Parameters for useActorSuspenseInfiniteQuery hook.
|
|
6
|
-
* Extends react-query's UseSuspenseInfiniteQueryOptions with custom reactor params.
|
|
7
|
-
*/
|
|
8
|
-
export interface UseActorSuspenseInfiniteQueryParameters<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>> extends Omit<UseSuspenseInfiniteQueryOptions<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, ReactorReturnErr<Service, Method, Transform>, Selected, QueryKey, TPageParam>, "queryKey" | "queryFn" | "getNextPageParam" | "initialPageParam"> {
|
|
9
|
-
/** The reactor instance to use for method calls */
|
|
10
|
-
reactor: Reactor<Service, Transform>;
|
|
11
|
-
/** The method name to call on the canister */
|
|
12
|
-
functionName: Method;
|
|
13
|
-
/** Function to get args from page parameter */
|
|
14
|
-
getArgs: (pageParam: TPageParam) => ReactorArgs<Service, Method, Transform>;
|
|
15
|
-
/** Agent call configuration (effectiveCanisterId, etc.) */
|
|
16
|
-
callConfig?: CallConfig;
|
|
17
|
-
/** Custom query key (auto-generated if not provided) */
|
|
18
|
-
queryKey?: QueryKey;
|
|
19
|
-
/** Initial page parameter */
|
|
20
|
-
initialPageParam: TPageParam;
|
|
21
|
-
/** Function to determine next page parameter */
|
|
22
|
-
getNextPageParam: (lastPage: ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, allPages: ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
|
|
23
|
-
}
|
|
24
|
-
export type UseActorSuspenseInfiniteQueryConfig<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>> = Omit<UseActorSuspenseInfiniteQueryParameters<Service, Method, Transform, TPageParam, Selected>, "reactor">;
|
|
25
|
-
export type UseActorSuspenseInfiniteQueryResult<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>> = UseSuspenseInfiniteQueryResult<Selected, ReactorReturnErr<Service, Method, Transform>>;
|
|
26
|
-
/**
|
|
27
|
-
* Hook for executing suspense-enabled infinite/paginated query calls on a canister.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* const { data, fetchNextPage, hasNextPage } = useActorSuspenseInfiniteQuery({
|
|
31
|
-
* reactor,
|
|
32
|
-
* functionName: "getItems",
|
|
33
|
-
* getArgs: (pageParam) => [{ offset: pageParam, limit: 10 }],
|
|
34
|
-
* initialPageParam: 0,
|
|
35
|
-
* getNextPageParam: (lastPage) => lastPage.nextOffset,
|
|
36
|
-
* })
|
|
37
|
-
*/
|
|
38
|
-
export declare const useActorSuspenseInfiniteQuery: <Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", TPageParam = unknown, Selected = InfiniteData<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, TPageParam>>({ reactor, functionName, getArgs, callConfig, queryKey, ...options }: UseActorSuspenseInfiniteQueryParameters<Service, Method, Transform, TPageParam, Selected>) => UseActorSuspenseInfiniteQueryResult<Service, Method, Transform, TPageParam, Selected>;
|
|
39
|
-
//# sourceMappingURL=useActorSuspenseInfiniteQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActorSuspenseInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseInfiniteQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useMemo, useCallback } from "react";
|
|
2
|
-
import { useSuspenseInfiniteQuery, } from "@tanstack/react-query";
|
|
3
|
-
import { mergeFactoryQueryKey, normalizeQueryData } from "../utils.js";
|
|
4
|
-
/**
|
|
5
|
-
* Hook for executing suspense-enabled infinite/paginated query calls on a canister.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* const { data, fetchNextPage, hasNextPage } = useActorSuspenseInfiniteQuery({
|
|
9
|
-
* reactor,
|
|
10
|
-
* functionName: "getItems",
|
|
11
|
-
* getArgs: (pageParam) => [{ offset: pageParam, limit: 10 }],
|
|
12
|
-
* initialPageParam: 0,
|
|
13
|
-
* getNextPageParam: (lastPage) => lastPage.nextOffset,
|
|
14
|
-
* })
|
|
15
|
-
*/
|
|
16
|
-
export const useActorSuspenseInfiniteQuery = ({ reactor, functionName, getArgs, callConfig, queryKey, ...options }) => {
|
|
17
|
-
// Always pass queryKey through generateQueryKey so it is merged with the
|
|
18
|
-
// reactor/function identity. Using the custom key verbatim would cause cache
|
|
19
|
-
// collisions if two different actors or methods share the same key string.
|
|
20
|
-
const baseQueryKey = useMemo(() => reactor.generateQueryKey({
|
|
21
|
-
functionName,
|
|
22
|
-
// Fold the call arguments into the key. They live in the `getArgs`
|
|
23
|
-
// closure rather than in the config, so without this two hooks on the
|
|
24
|
-
// same method with different arguments share one cache entry and
|
|
25
|
-
// serve each other's pages.
|
|
26
|
-
queryKey: mergeFactoryQueryKey(queryKey, undefined, getArgs(options.initialPageParam)),
|
|
27
|
-
}, callConfig), [
|
|
28
|
-
queryKey,
|
|
29
|
-
reactor,
|
|
30
|
-
// `canisterId` is mutable reactor state that `setCanisterId` can change,
|
|
31
|
-
// while `reactor` itself stays the same object — so it has to be a
|
|
32
|
-
// dependency in its own right or the key stays pinned to the old canister
|
|
33
|
-
// while the queryFn already calls the new one.
|
|
34
|
-
reactor.canisterId?.toString(),
|
|
35
|
-
functionName,
|
|
36
|
-
callConfig,
|
|
37
|
-
getArgs,
|
|
38
|
-
options.initialPageParam,
|
|
39
|
-
]);
|
|
40
|
-
// Memoize queryFn to prevent recreation on every render
|
|
41
|
-
const queryFn = useCallback(async ({ pageParam }) => {
|
|
42
|
-
const args = getArgs(pageParam);
|
|
43
|
-
const result = await reactor.callMethod({
|
|
44
|
-
functionName,
|
|
45
|
-
args,
|
|
46
|
-
callConfig,
|
|
47
|
-
});
|
|
48
|
-
return normalizeQueryData(result);
|
|
49
|
-
}, [reactor, functionName, getArgs, callConfig]);
|
|
50
|
-
return useSuspenseInfiniteQuery({
|
|
51
|
-
queryKey: baseQueryKey,
|
|
52
|
-
queryFn,
|
|
53
|
-
...options,
|
|
54
|
-
}, reactor.queryClient);
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=useActorSuspenseInfiniteQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;AAW9B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAgFtE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAS3C,EACA,OAAO,EACP,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAG,OAAO,EAOX,EAMC,EAAE;IACF,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,OAAO,CAAC,gBAAgB,CACtB;QACE,YAAY;QACZ,mEAAmE;QACnE,sEAAsE;QACtE,iEAAiE;QACjE,4BAA4B;QAC5B,QAAQ,EAAE,oBAAoB,CAC5B,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAClC;KACF,EACD,UAAU,CACX,EACH;QACE,QAAQ;QACR,OAAO;QACP,yEAAyE;QACzE,mEAAmE;QACnE,0EAA0E;QAC1E,+CAA+C;QAC/C,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;QAC9B,YAAY;QACZ,UAAU;QACV,OAAO;QACP,OAAO,CAAC,gBAAgB;KACzB,CACF,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,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,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,CAOpB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { QueryKey, QueryObserverOptions, UseSuspenseQueryResult } from "@tanstack/react-query";
|
|
2
|
-
import { FunctionName, Reactor, TransformKey, ReactorArgs, ReactorReturnOk, ReactorQueryData, ReactorReturnErr } from "@ic-reactor/core";
|
|
3
|
-
import { CallConfig } from "@icp-sdk/core/agent";
|
|
4
|
-
export interface UseActorSuspenseQueryParameters<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", Selected = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>> extends Omit<QueryObserverOptions<ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, ReactorReturnErr<Service, Method, Transform>, Selected, ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>, QueryKey>, "queryKey" | "queryFn"> {
|
|
5
|
-
reactor: Reactor<Service, Transform>;
|
|
6
|
-
functionName: Method;
|
|
7
|
-
args?: ReactorArgs<Service, Method, Transform>;
|
|
8
|
-
callConfig?: CallConfig;
|
|
9
|
-
queryKey?: QueryKey;
|
|
10
|
-
}
|
|
11
|
-
export type UseActorSuspenseQueryConfig<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", Selected = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>> = Omit<UseActorSuspenseQueryParameters<Service, Method, Transform, Selected>, "reactor">;
|
|
12
|
-
export type UseActorSuspenseQueryResult<Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", Selected = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>> = UseSuspenseQueryResult<Selected, ReactorReturnErr<Service, Method, Transform>>;
|
|
13
|
-
/**
|
|
14
|
-
* Hook for executing suspense-enabled query calls on a canister.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* const { data } = useActorSuspenseQuery({
|
|
18
|
-
* reactor,
|
|
19
|
-
* functionName: "getUser",
|
|
20
|
-
* args: ["user-123"],
|
|
21
|
-
* })
|
|
22
|
-
*
|
|
23
|
-
* // With select transformation
|
|
24
|
-
* const { data } = useActorSuspenseQuery({
|
|
25
|
-
* reactor,
|
|
26
|
-
* functionName: "getUser",
|
|
27
|
-
* args: ["user-123"],
|
|
28
|
-
* select: (user) => user.name,
|
|
29
|
-
* })
|
|
30
|
-
*/
|
|
31
|
-
export declare const useActorSuspenseQuery: <Service, Method extends FunctionName<Service>, Transform extends TransformKey = "candid", Selected = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>>({ reactor, functionName, args, callConfig, queryKey: defaultQueryKey, ...options }: UseActorSuspenseQueryParameters<Service, Method, Transform, Selected>) => UseActorSuspenseQueryResult<Service, Method, Transform, Selected>;
|
|
32
|
-
//# sourceMappingURL=useActorSuspenseQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActorSuspenseQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseQuery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAER,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,+BAA+B,CAC9C,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CACxE,SAAQ,IAAI,CACZ,oBAAoB,CAClB,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5C,QAAQ,EACR,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAC7D,QAAQ,CACT,EACD,UAAU,GAAG,SAAS,CACvB;IACC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,MAAM,MAAM,2BAA2B,CACrC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,IACtE,IAAI,CACN,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EACrE,SAAS,CACV,CAAA;AAED,MAAM,MAAM,2BAA2B,CACrC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,IACtE,sBAAsB,CACxB,QAAQ,EACR,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7C,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,EACP,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,SAAS,YAAY,GAAG,QAAQ,EACzC,QAAQ,GAAG,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EACxE,oFAOC,+BAA+B,CAChC,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,CACT,KAAG,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAmCnE,CAAA"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useMemo } from "react";
|
|
2
|
-
import { useSuspenseQuery, } from "@tanstack/react-query";
|
|
3
|
-
/**
|
|
4
|
-
* Hook for executing suspense-enabled query calls on a canister.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const { data } = useActorSuspenseQuery({
|
|
8
|
-
* reactor,
|
|
9
|
-
* functionName: "getUser",
|
|
10
|
-
* args: ["user-123"],
|
|
11
|
-
* })
|
|
12
|
-
*
|
|
13
|
-
* // With select transformation
|
|
14
|
-
* const { data } = useActorSuspenseQuery({
|
|
15
|
-
* reactor,
|
|
16
|
-
* functionName: "getUser",
|
|
17
|
-
* args: ["user-123"],
|
|
18
|
-
* select: (user) => user.name,
|
|
19
|
-
* })
|
|
20
|
-
*/
|
|
21
|
-
export const useActorSuspenseQuery = ({ reactor, functionName, args, callConfig, queryKey: defaultQueryKey, ...options }) => {
|
|
22
|
-
// Memoize query options to prevent unnecessary re-computations
|
|
23
|
-
const { queryKey, queryFn } = useMemo(() => reactor.getQueryOptions({
|
|
24
|
-
callConfig,
|
|
25
|
-
functionName,
|
|
26
|
-
args,
|
|
27
|
-
queryKey: defaultQueryKey,
|
|
28
|
-
}),
|
|
29
|
-
// `canisterId` is mutable reactor state that `setCanisterId` can change,
|
|
30
|
-
// while `reactor` itself stays the same object — so it has to be a
|
|
31
|
-
// dependency in its own right or the key stays pinned to the old canister.
|
|
32
|
-
[
|
|
33
|
-
reactor,
|
|
34
|
-
reactor.canisterId?.toString(),
|
|
35
|
-
callConfig,
|
|
36
|
-
functionName,
|
|
37
|
-
args,
|
|
38
|
-
defaultQueryKey,
|
|
39
|
-
]);
|
|
40
|
-
return useSuspenseQuery({
|
|
41
|
-
// Suspense queries don't support skipToken, so cast the queryFn
|
|
42
|
-
queryFn: queryFn,
|
|
43
|
-
...options,
|
|
44
|
-
queryKey,
|
|
45
|
-
}, reactor.queryClient);
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=useActorSuspenseQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActorSuspenseQuery.js","sourceRoot":"","sources":["../../src/hooks/useActorSuspenseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAEL,gBAAgB,GAIjB,MAAM,uBAAuB,CAAA;AAsD9B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAKnC,EACA,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,QAAQ,EAAE,eAAe,EACzB,GAAG,OAAO,EAMX,EAAqE,EAAE;IACtE,+DAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CACnC,GAAG,EAAE,CACH,OAAO,CAAC,eAAe,CAAS;QAC9B,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,QAAQ,EAAE,eAAe;KAC1B,CAAC;IACJ,yEAAyE;IACzE,mEAAmE;IACnE,2EAA2E;IAC3E;QACE,OAAO;QACP,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE;QAC9B,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,eAAe;KAChB,CACF,CAAA;IAED,OAAO,gBAAgB,CACrB;QACE,gEAAgE;QAChE,OAAO,EAAE,OAGR;QACD,GAAG,OAAO;QACV,QAAQ;KACT,EACD,OAAO,CAAC,WAAW,CACpB,CAAA;AACH,CAAC,CAAA"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared type definitions for query factories (createActorQuery, createActorSuspenseQuery, etc.)
|
|
3
|
-
*/
|
|
4
|
-
import type { FunctionName, ReactorReturnOk, ReactorQueryData, ReactorReturnErr, ReactorArgs, BaseActor, TransformKey, TransformReturnRegistry, ErrResult, ActorMethodReturnType } from "@ic-reactor/core";
|
|
5
|
-
import { CanisterError } from "@ic-reactor/core";
|
|
6
|
-
import { CallConfig } from "@icp-sdk/core/agent";
|
|
7
|
-
import { QueryKey, QueryObserverOptions, UseQueryOptions, UseQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult, UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
|
|
8
|
-
export type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
9
|
-
/** The raw data type returned by the query function (before select) */
|
|
10
|
-
export type QueryFnData<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorQueryData<ReactorReturnOk<Service, Method, Transform>>;
|
|
11
|
-
/** The error type for queries */
|
|
12
|
-
export type QueryError<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> = ReactorReturnErr<Service, Method, Transform>;
|
|
13
|
-
/**
|
|
14
|
-
* Base configuration for query wrappers (shared between regular and suspense).
|
|
15
|
-
*
|
|
16
|
-
* @template Service - The actor interface type
|
|
17
|
-
* @template Method - The method name on the actor
|
|
18
|
-
* @template Transform - The transformation key (identity, display, etc.)
|
|
19
|
-
* @template Selected - The type returned after select transformation
|
|
20
|
-
*/
|
|
21
|
-
export interface BaseQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", Selected = QueryFnData<Service, Method, Transform>> extends Omit<QueryObserverOptions<QueryFnData<Service, Method, Transform>, ReactorReturnErr<Service, Method, Transform>, Selected, QueryFnData<Service, Method, Transform>, QueryKey>, "queryFn" | "queryKey"> {
|
|
22
|
-
/** The method to call on the canister */
|
|
23
|
-
functionName: Method;
|
|
24
|
-
/** Arguments to pass to the method (if any) */
|
|
25
|
-
args?: ReactorArgs<Service, Method, Transform>;
|
|
26
|
-
/** The query key to use for this query */
|
|
27
|
-
queryKey?: QueryKey;
|
|
28
|
-
/** How long data stays fresh before refetching (default: 5 min) */
|
|
29
|
-
staleTime?: number;
|
|
30
|
-
/** Transform the raw result before returning */
|
|
31
|
-
select?: (data: QueryFnData<Service, Method, Transform>) => Selected;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Configuration for createQuery (regular useQuery).
|
|
35
|
-
* Alias for BaseQueryConfig for clarity.
|
|
36
|
-
*/
|
|
37
|
-
export type QueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", Selected = QueryFnData<Service, Method, Transform>> = BaseQueryConfig<Service, Method, Transform, Selected>;
|
|
38
|
-
/**
|
|
39
|
-
* Configuration for createSuspenseQuery (useSuspenseQuery).
|
|
40
|
-
* Alias for BaseQueryConfig for clarity.
|
|
41
|
-
*/
|
|
42
|
-
export type SuspenseQueryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", Selected = QueryFnData<Service, Method, Transform>> = BaseQueryConfig<Service, Method, Transform, Selected>;
|
|
43
|
-
/**
|
|
44
|
-
* Configuration for createQueryFactory (args are provided at call time).
|
|
45
|
-
*/
|
|
46
|
-
export type QueryFactoryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", Selected = QueryFnData<Service, Method, Transform>> = Omit<QueryConfig<Service, Method, Transform, Selected>, "args">;
|
|
47
|
-
/**
|
|
48
|
-
* Configuration for createSuspenseQueryFactory (args are provided at call time).
|
|
49
|
-
*/
|
|
50
|
-
export type SuspenseQueryFactoryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", Selected = QueryFnData<Service, Method, Transform>> = Omit<SuspenseQueryConfig<Service, Method, Transform, Selected>, "args">;
|
|
51
|
-
/**
|
|
52
|
-
* useQuery hook with chained select support.
|
|
53
|
-
* - Without select: returns TSelected (from config.select)
|
|
54
|
-
* - With select: chains on top and returns TFinal
|
|
55
|
-
*
|
|
56
|
-
* Accepts all useQuery options from React Query documentation.
|
|
57
|
-
* Select is special: it chains on top of config.select.
|
|
58
|
-
*/
|
|
59
|
-
export interface UseQueryWithSelect<TQueryFnData, TSelected = TQueryFnData, TError = Error> {
|
|
60
|
-
(options?: Omit<UseQueryOptions<TQueryFnData, TError, TSelected>, "queryKey" | "queryFn"> & {
|
|
61
|
-
select?: undefined;
|
|
62
|
-
}): UseQueryResult<TSelected, TError>;
|
|
63
|
-
<TFinal = TSelected>(options: Omit<UseQueryOptions<TQueryFnData, TError, TFinal>, "queryKey" | "queryFn" | "select"> & {
|
|
64
|
-
select: (data: TSelected) => TFinal;
|
|
65
|
-
}): UseQueryResult<TFinal, TError>;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* useSuspenseQuery hook with chained select support.
|
|
69
|
-
* - Without select: returns TSelected (from config.select)
|
|
70
|
-
* - With select: chains on top and returns TFinal
|
|
71
|
-
*
|
|
72
|
-
* Accepts all useSuspenseQuery options from React Query documentation.
|
|
73
|
-
* Select is special: it chains on top of config.select.
|
|
74
|
-
* Data is always defined (never undefined).
|
|
75
|
-
* Does NOT support `enabled` option.
|
|
76
|
-
*/
|
|
77
|
-
export interface UseSuspenseQueryWithSelect<TQueryFnData, TSelected = TQueryFnData, TError = Error> {
|
|
78
|
-
(options?: Omit<UseSuspenseQueryOptions<TQueryFnData, TError, TSelected>, "queryKey" | "queryFn"> & {
|
|
79
|
-
select?: undefined;
|
|
80
|
-
}): UseSuspenseQueryResult<TSelected, TError>;
|
|
81
|
-
<TFinal = TSelected>(options: Omit<UseSuspenseQueryOptions<TQueryFnData, TError, TFinal>, "queryKey" | "queryFn" | "select"> & {
|
|
82
|
-
select: (data: TSelected) => TFinal;
|
|
83
|
-
}): UseSuspenseQueryResult<TFinal, TError>;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Base result interface shared between createQuery and createSuspenseQuery.
|
|
87
|
-
*
|
|
88
|
-
* @template TQueryFnData - The raw data type
|
|
89
|
-
* @template TSelected - The type after select transformation
|
|
90
|
-
* @template TError - The error type
|
|
91
|
-
*/
|
|
92
|
-
export interface BaseQueryResult<TQueryFnData, TSelected = TQueryFnData, _TError = Error> {
|
|
93
|
-
/** Fetch data in loader (uses ensureQueryData for cache-first) */
|
|
94
|
-
fetch: () => Promise<TSelected>;
|
|
95
|
-
/**
|
|
96
|
-
* Eagerly prefetch data into the cache without blocking.
|
|
97
|
-
* Useful for preloading data before navigating to a route.
|
|
98
|
-
*
|
|
99
|
-
* Unlike `fetch()`, this returns a void promise so it can be fire-and-forget.
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* // In a route hover handler
|
|
103
|
-
* button.addEventListener("mouseenter", () => userQuery.prefetch())
|
|
104
|
-
*/
|
|
105
|
-
prefetch: () => Promise<void>;
|
|
106
|
-
/** Invalidate the cache (refetches if query is active) */
|
|
107
|
-
invalidate: () => Promise<void>;
|
|
108
|
-
/** Get query key (for advanced React Query usage) */
|
|
109
|
-
getQueryKey: () => QueryKey;
|
|
110
|
-
/**
|
|
111
|
-
* Read data directly from cache without fetching.
|
|
112
|
-
* Returns undefined if data is not in cache.
|
|
113
|
-
*
|
|
114
|
-
* @template TFinal - Type returned after optional select transformation
|
|
115
|
-
* @param select - Optional select function to transform cached data further
|
|
116
|
-
* @returns Cached data with select applied, or undefined if not in cache
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* // Just get the cached data
|
|
120
|
-
* const user = userQuery.getCacheData()
|
|
121
|
-
*
|
|
122
|
-
* // With additional select transformation
|
|
123
|
-
* const name = userQuery.getCacheData((user) => user.name)
|
|
124
|
-
*/
|
|
125
|
-
getCacheData: {
|
|
126
|
-
(): TSelected | undefined;
|
|
127
|
-
<TFinal>(select: (data: TSelected) => TFinal): TFinal | undefined;
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* Write raw data directly into the cache (useful for optimistic updates).
|
|
131
|
-
* Accepts a new value or an updater function that receives the current cached raw data.
|
|
132
|
-
*
|
|
133
|
-
* Note: The value is stored as raw (pre-select) data. Any active `select`
|
|
134
|
-
* transformations are automatically re-applied by React Query on the next render.
|
|
135
|
-
*
|
|
136
|
-
* @example
|
|
137
|
-
* // Optimistic update before a mutation
|
|
138
|
-
* userQuery.setData({ id: "1", name: "Alice" })
|
|
139
|
-
*
|
|
140
|
-
* // Functional update
|
|
141
|
-
* counterQuery.setData((prev) => (prev ?? 0) + 1)
|
|
142
|
-
*/
|
|
143
|
-
setData: (updater: TQueryFnData | ((old: TQueryFnData | undefined) => TQueryFnData | undefined)) => TQueryFnData | undefined;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Result from createQuery
|
|
147
|
-
*
|
|
148
|
-
* Includes useQuery hook that:
|
|
149
|
-
* - Supports `enabled` option for conditional fetching
|
|
150
|
-
* - Data may be `undefined` during loading
|
|
151
|
-
* - Uses regular `useQuery` with manual loading state handling
|
|
152
|
-
*
|
|
153
|
-
* @template TQueryFnData - The raw data type
|
|
154
|
-
* @template TSelected - The type after select transformation
|
|
155
|
-
* @template TError - The error type
|
|
156
|
-
*/
|
|
157
|
-
export interface QueryResult<TQueryFnData, TSelected = TQueryFnData, TError = Error> extends BaseQueryResult<TQueryFnData, TSelected, TError> {
|
|
158
|
-
/** React hook for components - supports chained select and enabled option */
|
|
159
|
-
useQuery: UseQueryWithSelect<TQueryFnData, TSelected, TError>;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Result from createSuspenseQuery
|
|
163
|
-
*
|
|
164
|
-
* Includes useSuspenseQuery hook that:
|
|
165
|
-
* - Requires wrapping in <Suspense> boundary
|
|
166
|
-
* - Data is always defined (no undefined checks)
|
|
167
|
-
* - Does NOT support `enabled` option
|
|
168
|
-
*
|
|
169
|
-
* @template TQueryFnData - The raw data type
|
|
170
|
-
* @template TSelected - The type after select transformation
|
|
171
|
-
* @template TError - The error type
|
|
172
|
-
*/
|
|
173
|
-
export interface SuspenseQueryResult<TQueryFnData, TSelected = TQueryFnData, TError = Error> extends BaseQueryResult<TQueryFnData, TSelected, TError> {
|
|
174
|
-
/** React hook for components - data is always defined (wrap in Suspense) */
|
|
175
|
-
useSuspenseQuery: UseSuspenseQueryWithSelect<TQueryFnData, TSelected, TError>;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Configuration for createMutation and useActorMutation.
|
|
179
|
-
*
|
|
180
|
-
* @template TOnMutateResult - The value `onMutate` returns, which `onSuccess`,
|
|
181
|
-
* `onError` and `onSettled` receive. TypeScript infers it from `onMutate`.
|
|
182
|
-
*/
|
|
183
|
-
export interface MutationConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TOnMutateResult = unknown> extends Omit<UseMutationOptions<ReactorReturnOk<Service, Method, Transform>, ReactorReturnErr<Service, Method, Transform>, ReactorArgs<Service, Method, Transform>, TOnMutateResult>, "mutationFn"> {
|
|
184
|
-
/** The method to call on the canister */
|
|
185
|
-
functionName: Method;
|
|
186
|
-
/** Call configuration for the actor method */
|
|
187
|
-
callConfig?: CallConfig;
|
|
188
|
-
/**
|
|
189
|
-
* Queries to invalidate upon successful mutation.
|
|
190
|
-
*
|
|
191
|
-
* `undefined` entries are skipped, so the common
|
|
192
|
-
* `[maybeQuery?.getQueryKey()]` idiom is safe when the optional query object
|
|
193
|
-
* is absent.
|
|
194
|
-
*/
|
|
195
|
-
invalidateQueries?: (QueryKey | undefined)[];
|
|
196
|
-
/**
|
|
197
|
-
* Callback for canister-level business logic errors.
|
|
198
|
-
* Called when the canister returns a Result { Err: E } variant.
|
|
199
|
-
*
|
|
200
|
-
* This is separate from `onError` which handles all errors including
|
|
201
|
-
* network failures, agent errors, etc.
|
|
202
|
-
*
|
|
203
|
-
* @param error - The CanisterError containing the typed error value
|
|
204
|
-
* @param variables - The arguments passed to the mutation
|
|
205
|
-
*
|
|
206
|
-
* @example
|
|
207
|
-
* ```typescript
|
|
208
|
-
* createMutation(reactor, {
|
|
209
|
-
* functionName: "transfer",
|
|
210
|
-
* onCanisterError: (error, variables) => {
|
|
211
|
-
* // error.err contains the typed Err value
|
|
212
|
-
* // error.code contains the variant key (e.g., "InsufficientFunds")
|
|
213
|
-
* console.error(`Transfer failed: ${error.code}`, error.err)
|
|
214
|
-
* },
|
|
215
|
-
* })
|
|
216
|
-
* ```
|
|
217
|
-
*/
|
|
218
|
-
onCanisterError?: (error: CanisterError<TransformReturnRegistry<ErrResult<ActorMethodReturnType<Service[Method]>>, Service>[Transform]>, variables: ReactorArgs<Service, Method, Transform>) => void;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Configuration for createMutationFactory.
|
|
222
|
-
*/
|
|
223
|
-
export type MutationFactoryConfig<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TOnMutateResult = unknown> = Omit<MutationConfig<Service, Method, Transform, TOnMutateResult>, "onSuccess">;
|
|
224
|
-
/**
|
|
225
|
-
* Options for useMutation hook.
|
|
226
|
-
* Extends React Query's UseMutationOptions with invalidateQueries support.
|
|
227
|
-
*
|
|
228
|
-
* @template TOnMutateResult - The value `onMutate` returns, which `onSuccess`,
|
|
229
|
-
* `onError` and `onSettled` receive. TypeScript infers it from `onMutate`.
|
|
230
|
-
*/
|
|
231
|
-
export interface MutationHookOptions<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid", TOnMutateResult = unknown> extends Omit<UseMutationOptions<ReactorReturnOk<Service, Method, Transform>, ReactorReturnErr<Service, Method, Transform>, ReactorArgs<Service, Method, Transform>, TOnMutateResult>, "mutationFn"> {
|
|
232
|
-
/**
|
|
233
|
-
* Query keys to invalidate upon successful mutation.
|
|
234
|
-
* Use query.getQueryKey() to get the key from a query result.
|
|
235
|
-
*
|
|
236
|
-
* @example
|
|
237
|
-
* const balanceQuery = getIcpBalance(account)
|
|
238
|
-
* useMutation({
|
|
239
|
-
* invalidateQueries: [balanceQuery.getQueryKey()],
|
|
240
|
-
* })
|
|
241
|
-
*/
|
|
242
|
-
invalidateQueries?: (QueryKey | undefined)[];
|
|
243
|
-
/**
|
|
244
|
-
* Callback for canister-level business logic errors.
|
|
245
|
-
* Called when the canister returns a Result { Err: E } variant.
|
|
246
|
-
*
|
|
247
|
-
* @param error - The CanisterError containing the typed error value
|
|
248
|
-
* @param variables - The arguments passed to the mutation
|
|
249
|
-
*/
|
|
250
|
-
onCanisterError?: (error: CanisterError<TransformReturnRegistry<ErrResult<ActorMethodReturnType<Service[Method]>>, Service>[Transform]>, variables: ReactorArgs<Service, Method, Transform>) => void;
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Result from createMutation.
|
|
254
|
-
*/
|
|
255
|
-
export interface MutationResult<Service = BaseActor, Method extends FunctionName<Service> = FunctionName<Service>, Transform extends TransformKey = "candid"> {
|
|
256
|
-
/**
|
|
257
|
-
* React hook for the mutation.
|
|
258
|
-
* Accepts options to override/extend the factory config.
|
|
259
|
-
*
|
|
260
|
-
* @example
|
|
261
|
-
* // With invalidateQueries to auto-update balance after transfer
|
|
262
|
-
* const { mutate } = icpTransferMutation.useMutation({
|
|
263
|
-
* invalidateQueries: [userBalanceQuery], // Auto-invalidate after success!
|
|
264
|
-
* })
|
|
265
|
-
*/
|
|
266
|
-
useMutation: <TOnMutateResult = unknown>(options?: MutationHookOptions<Service, Method, Transform, TOnMutateResult>) => UseMutationResult<ReactorReturnOk<Service, Method, Transform>, ReactorReturnErr<Service, Method, Transform>, ReactorArgs<Service, Method, Transform>, TOnMutateResult>;
|
|
267
|
-
/** Execute the update call directly (outside of React) */
|
|
268
|
-
execute: (args: ReactorArgs<Service, Method, Transform>) => Promise<ReactorReturnOk<Service, Method, Transform>>;
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared internal utilities for query and mutation factories.
|
|
3
|
-
*/
|
|
4
|
-
import type { QueryKey } from "@tanstack/react-query";
|
|
5
|
-
import type { ReactorQueryData } from "@ic-reactor/core";
|
|
6
|
-
/**
|
|
7
|
-
* Internal query-key segment used to distinguish per-call factory args
|
|
8
|
-
* from the base query key. Not part of the public API.
|
|
9
|
-
*/
|
|
10
|
-
export declare const FACTORY_KEY_ARGS_QUERY_KEY = "__ic_reactor_factory_key_args";
|
|
11
|
-
/** Convert a direct reactor result into a value TanStack Query can cache. */
|
|
12
|
-
export declare const normalizeQueryData: <T>(value: T) => ReactorQueryData<T>;
|
|
13
|
-
/**
|
|
14
|
-
* Merge a base query key, optional per-call query key, and optional key-args
|
|
15
|
-
* into a single query key array.
|
|
16
|
-
*
|
|
17
|
-
* Used by createInfiniteQueryFactory and createSuspenseInfiniteQueryFactory to
|
|
18
|
-
* ensure each unique set of factory args produces a distinct cache entry.
|
|
19
|
-
*/
|
|
20
|
-
export declare function mergeFactoryQueryKey(baseQueryKey?: QueryKey, callQueryKey?: QueryKey, keyArgs?: unknown): QueryKey | undefined;
|
|
21
|
-
/**
|
|
22
|
-
* Build a chained select that applies the config-level select (if any) and then
|
|
23
|
-
* the hook-level select (if any).
|
|
24
|
-
*
|
|
25
|
-
* Returns the caller's own function untouched when only one of the two is
|
|
26
|
-
* present, and `undefined` when neither is — allocating a wrapper only for the
|
|
27
|
-
* genuinely chained case. Identity matters here: `QueryObserver` memoizes a
|
|
28
|
-
* select result on `options.select === previousSelectFn`, so a wrapper rebuilt
|
|
29
|
-
* on every render defeats that check. The select then re-runs each render, and
|
|
30
|
-
* for a select returning a non-plain value (a `Map`, a `Date`, a `Principal`)
|
|
31
|
-
* `replaceEqualDeep` cannot structurally share the result either, so `data`
|
|
32
|
-
* gets a fresh reference every render and a `useEffect([data])` that sets state
|
|
33
|
-
* becomes an unbounded loop.
|
|
34
|
-
*
|
|
35
|
-
* Callers should still memoize the result, since the chained case allocates.
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildChainedSelect<TData, TSelected, TFinal = TSelected>(configSelect: ((data: TData) => TSelected) | undefined, hookSelect: ((data: TSelected) => TFinal) | undefined): ((rawData: TData) => TSelected | TFinal) | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* Smallest useful LRU: a `Map` already iterates in insertion order, so
|
|
40
|
-
* re-inserting on read is enough to track recency.
|
|
41
|
-
*
|
|
42
|
-
* Eviction is safe — it costs memoization, never correctness. A query object is
|
|
43
|
-
* a closure over the reactor and config, so one rebuilt after eviction behaves
|
|
44
|
-
* identically; only its reference identity differs.
|
|
45
|
-
*/
|
|
46
|
-
export declare function createBoundedCache<V>(limit?: number): {
|
|
47
|
-
get(key: string): V | undefined;
|
|
48
|
-
set(key: string, value: V): void;
|
|
49
|
-
readonly size: number;
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAGxD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,kCAAkC,CAAA;AAEzE,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,gBAAgB,CAAC,CAAC,CACN,CAAA;AAE7D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,CAAC,EAAE,QAAQ,EACvB,YAAY,CAAC,EAAE,QAAQ,EACvB,OAAO,CAAC,EAAE,OAAO,GAChB,QAAQ,GAAG,SAAS,CAgBtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EACrE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,GAAG,SAAS,EACtD,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC,GAAG,SAAS,GACpD,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,SAAS,CAStD;AAaD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAE,MAA4B;aAI5D,MAAM,GAAG,CAAC,GAAG,SAAS;aAQtB,MAAM,SAAS,CAAC,GAAG,IAAI;mBAQpB,MAAM;EAIrB"}
|